rev |
line source |
claudinei@990
|
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
claudinei@990
|
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
claudinei@990
|
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt">
|
claudinei@990
|
4 <head>
|
claudinei@990
|
5 <title>SliTaz - Espaço dos Desenvolvedores</title>
|
claudinei@990
|
6 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
|
claudinei@990
|
7 <meta name="description" content="SliTaz GNU/Linux project information overview" />
|
claudinei@990
|
8 <meta name="keywords" lang="pt" content="sobre slitaz, gnu, linux, mini distro, livecd" />
|
claudinei@990
|
9 <meta name="robots" content="index, follow, all" />
|
claudinei@990
|
10 <meta name="modified" content="2011-03-26 00:30:00" />
|
claudinei@990
|
11 <meta name="author" content="Claudinei Pereira" />
|
claudinei@990
|
12 <link rel="shortcut icon" href="../../favicon.ico" />
|
claudinei@990
|
13 <link rel="stylesheet" type="text/css" href="../../slitaz.css" />
|
claudinei@990
|
14 </head>
|
claudinei@990
|
15 <body>
|
claudinei@990
|
16
|
claudinei@990
|
17 <?php include("../../lib/html/header.pt.html"); ?>
|
claudinei@990
|
18
|
claudinei@990
|
19 <!-- Block -->
|
claudinei@990
|
20 <div id="block">
|
claudinei@990
|
21
|
claudinei@990
|
22 <?php include("../../lib/html/nav.pt.html"); ?>
|
claudinei@990
|
23
|
claudinei@990
|
24 <!-- Information/image -->
|
claudinei@990
|
25 <div id="block_info">
|
claudinei@990
|
26 <h4>Desenvolvimento</h4>
|
claudinei@990
|
27 <p>
|
claudinei@990
|
28 Utilitários, linhas mestras e serviços utilizados para
|
claudinei@990
|
29 desenvolver o SliTaz.
|
claudinei@990
|
30 </p>
|
claudinei@990
|
31 <p>
|
claudinei@990
|
32 <img src="../../images/users.png" alt="users.png" />
|
claudinei@990
|
33 Utilize também o <a href="http://scn.slitaz.org/">SCN</a>
|
claudinei@990
|
34 (SliTaz Community Network) e a
|
claudinei@990
|
35 <a href="../mailing-list.php">lista de discussão</a>.
|
claudinei@990
|
36 </p>
|
claudinei@990
|
37 </div>
|
claudinei@990
|
38 </div>
|
claudinei@990
|
39
|
claudinei@990
|
40 <!-- Language -->
|
claudinei@990
|
41 <div id="lang">
|
claudinei@990
|
42 <a href="../../i18n.php">
|
claudinei@990
|
43 <img src="../../images/locale.png" alt="locale.png" /></a>
|
claudinei@990
|
44 <a href="../../de/devel/">Deutsch</a>
|
claudinei@990
|
45 <a href="../../en/devel/">English</a>
|
claudinei@990
|
46 <a href="../../fr/devel/">Français</a>
|
claudinei@990
|
47 </div>
|
claudinei@990
|
48
|
claudinei@990
|
49 <!-- Content -->
|
claudinei@990
|
50 <div id="content">
|
claudinei@990
|
51
|
claudinei@990
|
52 <h2>Espaço dos Desenvolvedores do SliTaz</h2>
|
claudinei@990
|
53
|
claudinei@990
|
54 <ul>
|
claudinei@990
|
55 <li><a href="#kiss">KISS e respeito aos padrões.</a></li>
|
claudinei@990
|
56 <li><a href="#tank">Build host & home.</a></li>
|
claudinei@990
|
57 <li><a href="#repos">Repositórios Mercurial.</a></li>
|
claudinei@990
|
58 <li><a href="#gui">Interface gráfica em GTK e Web/CGI</a></li>
|
claudinei@990
|
59 <li><a href="#iconv">Implementação da função iconv().</a></li>
|
claudinei@990
|
60 <li><a href="#pkgs">Pacotes Tazpkg.</a></li>
|
claudinei@990
|
61 <li><a href="#website">Gerenciamento do Website.</a></li>
|
claudinei@990
|
62 </ul>
|
claudinei@990
|
63
|
claudinei@990
|
64 <a name="kiss"></a>
|
claudinei@990
|
65 <h2>KISS e respeito aos padrões</h2>
|
claudinei@990
|
66 <p>
|
claudinei@990
|
67 "Keep it Simple", ou seja, tentamos manter as coisas simples: respeito
|
claudinei@990
|
68 aos padrões, planejamento cuidadoso e documentação escrita de alta
|
claudinei@990
|
69 qualidade, fornecimento de um sistema robusto e estável e um sistema de
|
claudinei@990
|
70 arquivos (<em>rootfs</em>) no LiveCD leve o suficiente para ser executado
|
claudinei@990
|
71 em máquinas que tenham ao menos 128 mb de memória RAM. Também usamos
|
claudinei@990
|
72 aplicativos baseados em GTK+2, Dialog, scripts SHell ou PHP. A idéia
|
claudinei@990
|
73 é não nos repetirmos e deixar o sistema básico leve e pequeno.
|
claudinei@990
|
74 </p>
|
claudinei@990
|
75
|
claudinei@990
|
76 <a name="tank"></a>
|
claudinei@990
|
77 <h2>Tank - Build host & home</h2>
|
claudinei@990
|
78 <p>
|
claudinei@990
|
79 Cada participante do projeto pode obter uma conta no servidor do projeto
|
claudinei@990
|
80 com acesso seguro, espaço em disco, um diretório público e acesso a todas
|
claudinei@990
|
81 as ferramentas de desenvolvimento. Os desenvolvendores podem compilar
|
claudinei@990
|
82 pacotes e os mantenedores dos mirrors podem gerenciar as sincronizações.
|
claudinei@990
|
83 O Tank também hospeda o website, o boot via web e os repositórios
|
claudinei@990
|
84 mercurial:
|
claudinei@990
|
85 <a href="http://tank.slitaz.org/">tank.slitaz.org</a>
|
claudinei@990
|
86 </p>
|
claudinei@990
|
87 <p>
|
claudinei@990
|
88 Instruções para a utilização deste servidor estão descritas no "Livro de
|
claudinei@990
|
89 Receitas" (cookbook):
|
claudinei@990
|
90 <a href="http://doc.slitaz.org/pt:cookbook:buildhost">SliTaz Build Host (tank)</a>.
|
claudinei@990
|
91 </p>
|
claudinei@990
|
92
|
claudinei@990
|
93 <a name="repos"></a>
|
claudinei@990
|
94 <h2>Repositórios Mercurial</h2>
|
claudinei@990
|
95 <p>
|
claudinei@990
|
96 Os repositórios Mercurial ou Hg do SliTaz podem ser listados ou clonados por
|
claudinei@990
|
97 qualquer um na URL: <a href="http://hg.slitaz.org/">http://hg.slitaz.org/</a>.
|
claudinei@990
|
98 Pessoas com acesso de escrita podem acessar diretamente pelo endereço
|
claudinei@990
|
99 <code>repos.slitaz.org</code> que necessita de autenticação.
|
claudinei@990
|
100 O Mercurial usa Python e é instalável com o comando:
|
claudinei@990
|
101 <code>tazpkg get-install mercurial</code>
|
claudinei@990
|
102 </p>
|
claudinei@990
|
103 <h3>~/.hgrc</h3>
|
claudinei@990
|
104 <p>
|
claudinei@990
|
105 Antes de sua primeira transferência no servidor, assegure-se de que possui
|
claudinei@990
|
106 o arquivo de configuração do Hg correto com seu nome e endereço de e-mail
|
claudinei@990
|
107 e lembre-se de checar que você não está acessando como usuário root.
|
claudinei@990
|
108 Exemplo de arquivo ~/.hgrc:
|
claudinei@990
|
109 </p>
|
claudinei@990
|
110 <pre class="script">
|
claudinei@990
|
111 [ui]
|
claudinei@990
|
112 username = FirstName LastName <you@example.org>
|
claudinei@990
|
113 </pre>
|
claudinei@990
|
114 <h4>Clonar, modificar, transferir e finalizar</h4>
|
claudinei@990
|
115 <p>
|
claudinei@990
|
116 Clonar (clone) um repositório, exemplo para slitaz-doc:
|
claudinei@990
|
117 </p>
|
claudinei@990
|
118 <pre>
|
claudinei@990
|
119 $ hg clone http://repos.slitaz.org/wok
|
claudinei@990
|
120 </pre>
|
claudinei@990
|
121 <p>
|
claudinei@990
|
122 Mude de diretório para slitaz-doc, note que você deve estar no repositório
|
claudinei@990
|
123 para poder utilizar os comandos "hg". Para marcar todos os logs ou somente o
|
claudinei@990
|
124 último log:
|
claudinei@990
|
125 </p>
|
claudinei@990
|
126 <pre>
|
claudinei@990
|
127 $ hg log
|
claudinei@990
|
128 $ hg head
|
claudinei@990
|
129 </pre>
|
claudinei@990
|
130 <p>
|
claudinei@990
|
131 Modifique um ou mais arquivos e transfira (commit):
|
claudinei@990
|
132 </p>
|
claudinei@990
|
133 <pre>
|
claudinei@990
|
134 $ hg add
|
claudinei@990
|
135 $ hg status
|
claudinei@990
|
136 $ hg commit -m "Log message..."
|
claudinei@990
|
137 $ hg log
|
claudinei@990
|
138 </pre>
|
claudinei@990
|
139 <p>
|
claudinei@990
|
140 Note que você pode usar o comando <code>rollback</code> para desfazer a última
|
claudinei@990
|
141 transação. Antes de finalizar (push) as mudanças no servidor é seguro executar
|
claudinei@990
|
142 o comando pull ao menos uma vez:
|
claudinei@990
|
143 </p>
|
claudinei@990
|
144 <pre>
|
claudinei@990
|
145 $ hg pull
|
claudinei@990
|
146 $ hg push
|
claudinei@990
|
147 </pre>
|
claudinei@990
|
148 <p>
|
claudinei@990
|
149 Está feito, suas mudanças, código ou correções estão agora no servidor
|
claudinei@990
|
150 </p>
|
claudinei@990
|
151
|
claudinei@990
|
152 <h4>Comandos Úteis</h4>
|
claudinei@990
|
153 <p>
|
claudinei@990
|
154 Comandos do mercurial (hg) que podem ser usados.
|
claudinei@990
|
155 </p>
|
claudinei@990
|
156 <ul>
|
claudinei@990
|
157 <li><code>hg help</code> : Mostra uma lista completa dos comandos.</li>
|
claudinei@990
|
158 <li><code>hg rollback</code> : Desfaz a última ação (commit, pull,
|
claudinei@990
|
159 push).</li>
|
claudinei@990
|
160 <li><code>hg log <package></code> : Mostra o log de um pacote.</li>
|
claudinei@990
|
161 <li><code>hg head</code> : Mostra o último log.</li>
|
claudinei@990
|
162 </ul>
|
claudinei@990
|
163
|
claudinei@990
|
164 <a name="gui"</a>
|
claudinei@990
|
165 <h2>Interface Gráfica - C/GTK, Yad, Vala/Genie e WEB/GCI</h2>
|
claudinei@990
|
166 <p>
|
claudinei@990
|
167 Há várias maneiras de criar interfáces gráficas para o usuário para a
|
claudinei@990
|
168 distribuição. No início do projeto até a versão 3.0, usamos principalmente
|
claudinei@990
|
169 o GTKDialog, o que nos permitia criar interfaces razoavelmente complexas
|
claudinei@990
|
170 em GTK, ao mesmo tempo que pudemos usar uma linguagem de script que
|
claudinei@990
|
171 era executada sem a necessidade de ser compilada. Porém, o GTKDialog
|
claudinei@990
|
172 não é mais mantido pelos desenvolvedores, e está desatualizado, então
|
claudinei@990
|
173 tivemos que mudar para o Yad para criar algumas caixas de diálogo simples.
|
claudinei@990
|
174 Para todos as ferramentas de administração, pacotes e configuração
|
claudinei@990
|
175 próprias da distribuição, agora usamos o TazPanel, que é uma interface
|
claudinei@990
|
176 WEB/CGI escrita em xHTML5 e CSS3.
|
claudinei@990
|
177 </p>
|
claudinei@990
|
178 <p>
|
claudinei@990
|
179 O Yad é simples, porém não nos permite criar interfaces muito complexas,
|
claudinei@990
|
180 então outra maneira teve de ser abordada. A vantagem de uma linguagem
|
claudinei@990
|
181 de script é o fato de não precisar ser compilada e ser codificada em
|
claudinei@990
|
182 tempo real, porém isso significa em programas que rodam com um pouco menos
|
claudinei@990
|
183 de performance. Escrever programas na Linguagem C é complexo e atrai
|
claudinei@990
|
184 menos desenvolvedores, porque linguagens de script são mais atrativas
|
claudinei@990
|
185 para aqueles que desejam contribuir, tal como o SHell Script, que é
|
claudinei@990
|
186 fácil de compreender e manter. Deste modo, com uma linguagem de programação
|
claudinei@990
|
187 script uma interface WEB/CGI ou em GTK, podemos manter nossas linhas
|
claudinei@990
|
188 mestras e atrair desenvolvedores.
|
claudinei@990
|
189 </p>
|
claudinei@990
|
190 <p>
|
claudinei@990
|
191 Há muitas linguagens que usam GTK, como Genie, Vala ou GTKaml. Mas é
|
claudinei@990
|
192 preciso manter em mente que elas não são tão populares quanto o C ou GTK
|
claudinei@990
|
193 e não são tão fáceis de aprender e usar (para interfaces simples, melhor é
|
claudinei@990
|
194 utilizar scripts SHell para tarefas corriqueiras). Pode-se usar o Vala,
|
claudinei@990
|
195 porém note o seguinte exemplo, que é o código necessário para criar uma
|
claudinei@990
|
196 simples caixa de diálogo, e possui 14 linhas de código:
|
claudinei@990
|
197 </p>
|
claudinei@990
|
198 <pre>
|
claudinei@990
|
199 #include <gtk/gtk.h>;
|
claudinei@990
|
200 int main(int argc, char *argv[])
|
claudinei@990
|
201 {
|
claudinei@990
|
202 GtkWidget *window;
|
claudinei@990
|
203
|
claudinei@990
|
204 gtk_init(&argc, &argv);
|
claudinei@990
|
205 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
claudinei@990
|
206 g_signal_connect (G_OBJETCT (window), "destroy",
|
claudinei@990
|
207 G_CALLBACK (gtk_main_quit), NULL);
|
claudinei@990
|
208
|
claudinei@990
|
209 gtk_widget_show(window);
|
claudinei@990
|
210 gtk_main();
|
claudinei@990
|
211 return 0;'
|
claudinei@990
|
212 }
|
claudinei@990
|
213 </pre>
|
claudinei@990
|
214 <p>
|
claudinei@990
|
215 Caso queira contribuir, e não está certo qual linguagem usar, mande uma
|
claudinei@990
|
216 mensagem para a lista de discussão. Para pequenas interface gráficas,
|
claudinei@990
|
217 utilize o TazBox como exemplo, que pode ser encontrado no repositório
|
claudinei@990
|
218 slitaz-tools, que também possui pequenas interfaces gráficas, como a
|
claudinei@990
|
219 responsável pelo logout do usuário. O primeiro utilitário do SliTaz a
|
claudinei@990
|
220 ser escrito em Linguagem C pura, com GTK, é o TazWeb, e ele pode ser
|
claudinei@990
|
221 utilizado como exemplo na utilização da função system() para incluir
|
claudinei@990
|
222 comandos do sistema em uma interface. Esta ferramente utiliza
|
claudinei@990
|
223 wget para downloads e sed para adicionar favoritos.
|
claudinei@990
|
224 </p>
|
claudinei@990
|
225 <p>
|
claudinei@990
|
226 Scripts em Yad devem seguir as linhas mestras de codificação para a
|
claudinei@990
|
227 distribuição:
|
claudinei@990
|
228 <a href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/README">
|
claudinei@990
|
229 README</a> e o
|
claudinei@990
|
230 <a href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/tazyad">
|
claudinei@990
|
231 código de exemplo</a>.
|
claudinei@990
|
232 </p>
|
claudinei@990
|
233
|
claudinei@990
|
234 <a name="iconv"></a>
|
claudinei@990
|
235 <h2>Implementação da função iconv()</h2>
|
claudinei@990
|
236 <p>
|
claudinei@990
|
237 O SliTaz utiliza a função iconv() fornecida pela biblioteca glibc do
|
claudinei@990
|
238 projeto GNU - alguns pacotes que necessitam da função <code>libiconv</code>
|
claudinei@990
|
239 devem usar a versão fornecida pela glibc (<code>glibc-locale</code>). Note
|
claudinei@990
|
240 que já não há mais um pacote libiconv (1.2 MB) no SliTaz.
|
claudinei@990
|
241 </p>
|
claudinei@990
|
242
|
claudinei@990
|
243 <a name="pkgs"></a>
|
claudinei@990
|
244 <h2>Pacotes Tazpkg</h2>
|
claudinei@990
|
245 <p>
|
claudinei@990
|
246 Os pacotes tazpkg no SliTaz são automaticamente criados via o
|
claudinei@990
|
247 <a href="http://cook.slitaz.org/">robô de compilação</a> e receitas
|
claudinei@990
|
248 no wok. O Livro de Receitas descreve o
|
claudinei@990
|
249 <a href="http://doc.slitaz.org/pt:cookbook:wok">uso das ferramentas</a>
|
claudinei@990
|
250 e o formato das <a href="http://doc.slitaz.org/pt:cookbook:receipt">receitas</a>.
|
claudinei@990
|
251 Informações sobre o comando cook e sobre criação de arquivos receipt são
|
claudinei@990
|
252 necessários para a criação de pacotes.
|
claudinei@990
|
253 </p>
|
claudinei@990
|
254 <p>
|
claudinei@990
|
255 Em termos de escolha de pacote, a idéia é oferecer o pacote por tarefa ou
|
claudinei@990
|
256 funcionalidade, isto é, a mais leve aplicação em seu campo e sem duplicações.
|
claudinei@990
|
257 Note que a atual seleção de pacotes não é imutável, se você souber de uma
|
claudinei@990
|
258 alternativa mais leve, com mais funcionalidades ou mais <em>sexy</em> por apenas
|
claudinei@990
|
259 alguns KB a mais, sugira na lista de discussão. Atenção redobrada é prestada
|
claudinei@990
|
260 aos pacotes do LiveCD: eles devem ser "limpos", removendo-se dependências
|
claudinei@990
|
261 desnecessárias e opções do compilador. Em geral os pacotes candidatos a fazer
|
claudinei@990
|
262 parte do LiveCD são discutidos na lista.
|
claudinei@990
|
263 </p>
|
claudinei@990
|
264 <p>
|
claudinei@990
|
265 Antes de você começar a compilar e a criar pacotes para o SliTaz, certifique-se
|
claudinei@990
|
266 que o trabalho ainda não existe na relação do wok disponível no mirror principal
|
claudinei@990
|
267 do SliTaz. Não se esqueça que os membros da lista podem te ajudar e que a
|
claudinei@990
|
268 documentação do <a href="http://doc.slitaz.org/pt:cookbook:wok">wok e ferramentas</a>
|
claudinei@990
|
269 existe para te guiar nos primeiros passos.
|
claudinei@990
|
270 </p>
|
claudinei@990
|
271
|
claudinei@990
|
272 <a name="pkgs-naming"></a>
|
claudinei@990
|
273 <h3>Nomes de Pacotes</h3>
|
claudinei@990
|
274 <p>
|
claudinei@990
|
275 Na maioria dos casos o nome do pacote é o mesmo do código fonte, exceto
|
claudinei@990
|
276 para os módulos das linguagens Python, Perl, PHP, Ruby e Lua. Por exemplo,
|
claudinei@990
|
277 o pacote que fornece o sistema de templates Kid, escrito em Python e XML,
|
claudinei@990
|
278 é nomeado: <code>python-kid</code>.
|
claudinei@990
|
279 </p>
|
claudinei@990
|
280
|
claudinei@990
|
281 <a name="website"></a>
|
claudinei@990
|
282 <h2>Gerenciamento do website e manuais</h2>
|
claudinei@990
|
283 <p>
|
claudinei@990
|
284 O website e os manuais (Manual do SliTaz, Livro de Receitas) são
|
claudinei@990
|
285 gerenciados pelo repositório mercurial, podendo ser clonados da
|
claudinei@990
|
286 seguinte maneira:
|
claudinei@990
|
287 </p>
|
claudinei@990
|
288 <pre>
|
claudinei@990
|
289 $ hg clone http://hg.slitaz.org/website
|
claudinei@990
|
290 Ou, se você tiver as permissões necessárias:
|
claudinei@990
|
291 $ hg clone http://repos.slitaz.org/website
|
claudinei@990
|
292 </pre>
|
claudinei@990
|
293
|
claudinei@990
|
294 <a name="xhtml"></a>
|
claudinei@990
|
295 <h3>Estilo para codificação de xHTML</h3>
|
claudinei@990
|
296 <p>
|
claudinei@990
|
297 As páginas nos diferentes <em>manuais</em> são codificadas em xHTML 1.0
|
claudinei@990
|
298 transitional. As cores para o corpo da página (<code>body</code>) e para
|
claudinei@990
|
299 os títulos são definidas diretamente de forma a permitir que os links
|
claudinei@990
|
300 sejam facilmente identificáveis. Os títulos de primeiro nível são usados
|
claudinei@990
|
301 apenas uma vez, no topo da página, os de segundo nível são usados para
|
claudinei@990
|
302 nomear as seções e os de terceiro e quarto nível para as subseções. Se
|
claudinei@990
|
303 uma lista é usada para os tópicos, usando âncoras para as diferentes seções,
|
claudinei@990
|
304 é posta logo no início da página, após o título da mesma.
|
claudinei@990
|
305 Parágrafos são colocados dentro das tags <code><p></p></code>.
|
claudinei@990
|
306 Para indentação, usa-se tabulações (tabs), de forma a manter-se a semântica
|
claudinei@990
|
307 e para diminuir espaço em termos de octetos (bytes). Para mostrar trechos
|
claudinei@990
|
308 de código, como o nome de um comando dentro de um parágrafo,
|
claudinei@990
|
309 <code><code></code> é o método recomendado. Para mostrar a saida
|
claudinei@990
|
310 de comandos ou comandos a serem digitados em um terminal, usa-se
|
claudinei@990
|
311 <code><pre></code>. Exemplo:
|
claudinei@990
|
312 </p>
|
claudinei@990
|
313 <pre>
|
claudinei@990
|
314 $ comando
|
claudinei@990
|
315 </pre>
|
claudinei@990
|
316 <p>
|
claudinei@990
|
317 Para mostrar texto que pode ser copiado e colado, como scripts, peças de
|
claudinei@990
|
318 código, arquivos de configuração, etc, também se usa a tag
|
claudinei@990
|
319 <code><pre></code>, em conjunto com a classe CSS chamada "script".
|
claudinei@990
|
320 Exemplo:
|
claudinei@990
|
321 </p>
|
claudinei@990
|
322 <pre class="script">
|
claudinei@990
|
323 <pre class="script">
|
claudinei@990
|
324
|
claudinei@990
|
325 code...
|
claudinei@990
|
326
|
claudinei@990
|
327 </pre>
|
claudinei@990
|
328 </pre>
|
claudinei@990
|
329 <p>
|
claudinei@990
|
330 Texto <em>enfatizado</em> é colocado dentro da tag <code><em></code>
|
claudinei@990
|
331 e links internos são relativos. É recomendável checar a validade do código
|
claudinei@990
|
332 xHTML por meio do <em>validador</em> online da W3C.
|
claudinei@990
|
333 </p>
|
claudinei@990
|
334
|
claudinei@990
|
335 <h2>Diff e patch</h2>
|
claudinei@990
|
336 <p>
|
claudinei@990
|
337 As utilidades <code>diff</code> e <code>patch</code> são ferramentas de linha
|
claudinei@990
|
338 de comando para criação e implementação de diferenças entre dois arquivos. Esta
|
claudinei@990
|
339 técnica é freqüentemente usada para colaboração e as mudanças feitas no arquivo
|
claudinei@990
|
340 original podem ser extraídas facilmente. Para criar um arquivo <code>diff</code>
|
claudinei@990
|
341 legível aos humanos em um simples editor de textos, você deve fornecer a opção
|
claudinei@990
|
342 <code>-u</code> :
|
claudinei@990
|
343 </p>
|
claudinei@990
|
344 <pre>
|
claudinei@990
|
345 $ diff -u file.orig file.new > file.diff
|
claudinei@990
|
346 </pre>
|
claudinei@990
|
347 <p>
|
claudinei@990
|
348 Para aplicar um patch:
|
claudinei@990
|
349 </p>
|
claudinei@990
|
350 <pre>
|
claudinei@990
|
351 $ patch file.orig file.diff
|
claudinei@990
|
352 </pre>
|
claudinei@990
|
353
|
claudinei@990
|
354 <!-- End of content -->
|
claudinei@990
|
355 </div>
|
claudinei@990
|
356
|
claudinei@990
|
357 <?php include("../../lib/html/footer.pt.html"); ?>
|
claudinei@990
|
358
|
claudinei@990
|
359 </body>
|
claudinei@990
|
360 </html>
|