Blog: Janeiro 2017

Textile Comandos Guia Rápido

Textile Comandos Guia Rápido. O principais comandos para editar um arquivo textile. Use estes comandos para criar um arquivo textile.

  Escrevendo em Textile





  A single paragraph.

Followed by another.

  formata em:



  A single paragraph. 


    Followed by another.  



        I am <b>very</b> serious.

<pre> I am <b>very</b> serious. </pre>

        formata em:



        I am very serious. 

          I am &lt;b&gt;very&lt;/b&gt; serious.






        I spoke.

And none replied.

        formata em:



        I spoke. And none replied.





        "Observe!"



        formata em:



        “Observe!”





        Observe -- very nice!



        formata em:



        Observe—very nice!





        Observe - tiny and brief.



        formata em:



        Observe – tiny and brief.





        Observe...



        formata em:



        Observe…





        Observe: 2 x 2.



        formata em:



        Observe: 2×2.





        one(TM), two(R), three(C).



        formata em:



        one™, two®, three©.





        Quick Block Modifiers





        h1. Header 1



        formata em:




          Header 1






        h2. Header 2



        formata em:




          Header 2






        h3. Header 3



        formata em:




          Header 3






        An old text

bq. A block quotation.

Any old text

        formata em:



        An old text 



            A block quotation.




          Any old text  



              This is covered elsewhere[1].



              formata em:



              This is covered elsewhere1.





              fn1. Down here, in fact.



              formata em:




                1 Down here, in fact.






              Quick Phrase Modifiers





              I _believe_ every word.



              formata em:



              I believe every word.





              And then? She *fell*!



              formata em:



              And then? She fell!





              I __know__.

I really know.

              formata em:



              I know. I really know.





              ??Cat's Cradle?? by Vonnegut



              formata em:



              Cat’s Cradle by Vonnegut





              Convert with @r.to_html@



              formata em:



              Convert with r.to_html





              I'm -sure- not sure.



              formata em:



              I’m sure not sure.





              You are a +pleasant+ child.



              formata em:



              You are a pleasant child.





              a ^2^ + b ^2^ = c ^2^



              formata em:



              a 2 + b 2 = c 2





              log ~2~ x



              formata em:



              log 2 x





              I'm %unaware% of most soft drinks.



              formata em:



              I’m unaware of most soft drinks.





              I'm %{color:red}unaware%

of most soft drinks.

              formata em:



              I’m unaware of most soft drinks.





              Attributes





              p(example1). An example



              formata em:




                An example






              p(#big-red). Red here



              formata em:




                Red here






              p(example1#big-red2). Red here



              formata em:




                Red here






              p{color:blue;margin:30px}. Spacey blue



              formata em:



              Spacey blue





              p[fr]. rouge



              formata em:




                rouge






              I seriously *{color:red}blushed*

when I (big)sprouted that corn stalk from my %[es]cabeza%.

              formata em:



              I seriously blushed when I sprouted that corn stalk from my cabeza.





              p&lt;. align left



              formata em:



              align left





              p&gt;. align right



              formata em:



              align right





              p=. centered



              formata em:



              centered





              p&lt;&gt;. justified



              formata em:



              justified





              p(. left ident 1em



              formata em:



              left ident 1em





              p((. left ident 2em



              formata em:



              left ident 2em





              p))). right ident 3em



              formata em:



              right ident 3em





              h2()&gt;. Bingo.



              formata em:




                Bingo.






              h3()&gt;[no]{color:red}. Bingo



              formata em:




                Bingo






              &lt;pre&gt;

<code> a.gsub!( /</, '' ) </code> </pre>

              formata em:

a.gsub!( /</, '' )

              &ltpre> 


                h3. Sidebar



                &#8220;Hobix&#8221;:http://hobix.com/ &#8220;Ruby&#8221;:http://ruby-lang.org/







                The main text of the page goes here and will stay to the left of the sidebar.  


                  formata em:





                      Sidebar



                      Hobix Ruby




                    The main text of the page goes here and will stay to the left of the sidebar.  



                        Lists





                        # A first item

A second item

A third

                        formata em:





                            A first item


                            A second item


                            A third







                        # Fuel could be:

Coal

Gasoline

Electricity

Humans need only:

Water

Protein

                        formata em:





                            Fuel could be: 

                                Coal


                                Gasoline


                                Electricity





                            Humans need only: 

                                Water


                                Protein









                        * A first item

* A second item * A third

                        formata em:





                            A first item


                            A second item


                            A third







                        * Fuel could be:

** Coal ** Gasoline ** Electricity * Humans need only: ** Water ** Protein

                        formata em:





                            Fuel could be: 

                                Coal


                                Gasoline


                                Electricity





                            Humans need only: 

                                Water


                                Protein









                        External References





                        I searched "Google":http://google.com.



                        formata em:



                        I searched Google.





                        I am crazy about "Hobix":hobix

and "it's":hobix "all":hobix I ever "link to":hobix!

[hobix]http://hobix.com

                        formata em:



                        I am crazy about Hobix and it’s all I ever link to!





                        !http://redcloth.org/hobix.com/textile/sample.jpg!



                        formata em:









                        !openwindow1.gif(Bunny.)!



                        formata em:









                        !openwindow1.gif!:http://hobix.com/



                        formata em:









                        !&gt;obake.gif!

And others sat all round the small machine and paid it to sing to them.

                        formata em:






                          And others sat all round the small machine and paid it to sing to them.  



                              We use CSS(Cascading Style Sheets).



                              formata em:



                              We use CSS.





                              Tables





                              | name | age | sex |

| joan | 24 | f | | archie | 29 | m | | bella | 45 | f |

                              formata em:






                                    name



                                    age



                                    sex





                                    joan



                                    24



                                    f





                                    archie



                                    29



                                    m





                                    bella



                                    45



                                    f








                              |_. name |_. age |_. sex |

| joan | 24 | f | | archie | 29 | m | | bella | 45 | f |

                              formata em:






                                    name



                                    age



                                    sex





                                    joan



                                    24



                                    f





                                    archie



                                    29



                                    m





                                    bella



                                    45



                                    f








                              |_. attribute list |

|<. align left | |>. align right| |=. center | |<>. justify | |^. valign top | |~. bottom |

                              formata em:






                                    attribute list





                                    align left





                                    align right





                                    center





                                    justify





                                    valign top





                                    bottom








                              |\2. spans two cols |

| col 1 | col 2 |

                              formata em:






                                    spans two cols





                                    col 1



                                    col 2








                              |/3. spans 3 rows | a |

| b | | c |

                              formata em:






                                    spans 3 rows



                                    a





                                    b





                                    c








                              |{background:#ddd}. Grey cell|



                              formata em:






                                    Grey cell








                              table{border:1px solid black}.

|This|is|a|row| |This|is|a|row|

                              formata em:






                                    This



                                    is



                                    a



                                    row





                                    This



                                    is



                                    a



                                    row








                              |This|is|a|row|

{background:#ddd}. |This|is|grey|row|

                              formata em:






                                    This



                                    is



                                    a



                                    row





                                    This



                                    is



                                    grey



                                    row







                            Leia também um guia de referência completa do textile http://redcloth.org/hobix.com/textile/

Formatação de texto em Textile

Formatação de texto em Textile. Para elementos como cabeçalhos, negrito, tabelas, listas e vários comandos HTML pode ser usado a sintaxe Textile escrita mais rápida e eficiente. Consulte outras publicações no blog para informações de uso de mais funcionalidades. Alguns exemplos são apresentados a seguir por serem mais recorrentes na escrita.

Formatação de texto em Textile

 

Acrônimo

JPL(Jean-Philippe Lang)

Exibe:

JPL

Estilo de fonte

* *negrito*
* _itálico_
* *_negrito itálico_*
* +sublinhado+
* -riscado-
* Texto ^sobrescrito^
* Texto ~subscrito~
* @Monoespaçado em linha@
* normal *negrito* _itálico_ normal;E=mc ^2^
* normal*negrito*_itálico_normal;E=mc^2^
* Escapando: *negrito* _itálico_ @monoespaçado@ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alternativa usando códigos HTML: &#42;negrito&#42; &#95;itálico&#95; &#64;monoespaçado&#64;
* *algumas linhas*      algum "link":http://www.redmine.org
* *algumas linhas*      algum "link":http://www.redmine.org

Exibição:

  • negrito
  • itálico
  • negrito itálico
  • sublinhado
  • riscado
  • Texto sobrescrito
  • Texto subscrito
  • Monoespaçado
  • normal negrito itálico normal;E=mc 2
  • normalnegrito_itálico_normal;E=mc2
  • Escaping: *negrito* _itálico_ @monoespaçado@       Alternativa usando códigos HTML: *negrito* _itálico_ @monoespaçado@
  • algumas linhas algum "link":http://www.redmine.org

  • algumas linhas algum link

Cores

* %{color:red}vermelho% %{color:green}verde% %{color:yellow}amarelo% %{color:#82B6E1}azul%
* %{color:red}vermelho%%{color:green}verde%%{color:yellow}amarelo%%{color:#82B6E1}azul%
* %{background:lightgreen}Fundo verde-claro% %{background:yellow}Fundo amarelo%
* %{background:lightgreen}Fundo verde-claro%%{background:yellow}Fundo amarelo%

Exibição:

  • vermelho verde amarelo azul
  • vermelhoverdeamareloazul
  • Fundo verde-claro Fundo amarelo
  • Fundo verde-claroFundo amarelo

Imagens

  • !image_url! exibe imagem localizada em image_url (textile syntax)
  • !>image_url! imagem alinhada à direita
  • !image_url(Image title)! exibe imagem com atributo alt/title
  • !image_url!:URL exibe imagem localiza em image_url com link embutido

Se você tiver uma imagem anexada na página wiki, pode ser inserida informando o nome do arquivo: !attached_image.png!

Você também pode aplicar estilo CSS na image da mesma forma ao estilizar SPANs. O código !{width: 100%}attached_image.png! irá ajustar a imagem conforme largura do elemento pai.

Cabeçalhos

h1. Título

h2. Subtítulo

h3. Subtítulo

Redmine atribui uma âncora para cada um desses títulos, assim você pode linká-los com “#Heading”, “#Subheading” e assim por diante.

Parágrafos

p. alinhado à esquerda

  p(. identado à equerda em 1em

    p((. identado à equerda em  2em
    bem como as seguintes linhas

                                                                                   p>. alinhado à direita

                                                                        p)))>. identado à direita em 3em

                           p=. Parágrafo centralizado.

Linha horizontal

----

Exibição:


Pré-definido

Para escapar sintaxe wiki

<pre> Seu texto não será negrito </pre>

Exibição:

Seu texto não será negrito

Citações

Inicie o parágrafo com bq.:

bq. Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
To go live, all you need to add is a database and a web server.

Exibição:

Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.

To go live, all you need to add is a database and a web server.

Você também pode usar > no inicio de cada linha e empilhá-los para citações aninhadas:

>> Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern. >> To go live, all you need to add is a database and a web server. > Great!

Exibição:

Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.

To go live, all you need to add is a database and a web server.

Great!

Listas não-ordenadas

  • Item 1
  • Item 2 ** Item 21 ** Item 22
  • Item 3

exibição:

  • Item 1
  • Item 2
    • Item 21
    • Item 22
  • Item 3

Listas ordenadas

Item 1

Item 2

Item 3

Item 3.1

Item 3.2

exibição:

  1. Item 1
  2. Item 2
  3. Item 3
    1. Item 3.1
    2. Item 3.2

Tabelas

|.UserID |.Nome |.Grupo |. lista atributos | |Iniciando com | uma | simples |linha | |\3=.TI |<. alinha esquerda | |1 |Artur Pirozhkov |/2.Users |>. alinha direita | |2 |Vasya Rogov |=. centraliza | |3 |John Smith |Admin (root) |^. alinha topo | |4 |- |Ninguém (anônimo) |~. alinha base |

displays (all multiple spaces are replaced by 1 space):

  UserID



  Nome



  Grupo



  lista atributos





  Iniciando com



  uma



  simples



  linha





  TI



  alinha esquerda





  1



  Artur Pirozhkov



  Users



  alinha direita





  2



  Vasya Rogov



  centraliza





  3



  John Smith



  Admin (root)



  alinha topo





  4



  &#8211;



  Ninguém (anônimo)



  alinha base

Se você quiser inserir o caracter | (pipe) dentro da tabela (ex.: links Wiki), deve-se prevenir que o textile os interprete:

  Entrada



  Saída





  |



  |

Tabela de conteúdo (TOC)

{{toc}} => toc alinhado à esquerda
{{>toc}} => toc alinhado à direita

Observe que a tag do TOC precisa de uma linha vazia antes e depois da mesma.

Exemplo:

h1. TítuloUm

h2. subtítulo

{{toc}}

h2. outro subtítulo

Textile

O Textile é uma linguagem de marcação própria para hypertexto do tipo Markup. É simples e fácil de usar, sendo muito mais prática do que o HTML. Assim como no Markdown (uma outra linguagem de marcação – veja um post sobre o Markdown aqui), o Textile permite que você se concentre no conteúdo que está escrevendo, e não na linguagem em si. Linguagens como o HTML, requerem que você saiba exatamente quais são as tags que devem ser utilizadas, obrigando o programador a se concentrar muito mais nas estruturas da linguagem do que no conteúdo em sí. É claro que ninguém escreve textos utilizando as tags do HTML, e é por isso que as linguagem de marcação, como o Textile, existem.

O CMS Textpattern usa esta linguagem na publicação. Também que está acostumado a usar a IDE Eclipse usa esta linguagem.

Textile Principais Comandos

Quick block modifiers:

Header: hn.

Blockquote: bq.

Footnote: fnn.

Numeric list: #

Bulleted list: *

Quick phrase modifiers:

_emphasis_

*strong*

??citation??

-deleted text-

+inserted text+

^superscript^

%span%

To apply attributes:

(class)

(#id)

{style}

[language]

To align blocks:

< right > left

= center

justify

To insert a table:

|a|table|row|

|a|table|row|

To insert a link:

“linktext”:url

To insert an image:

!imageurl!

To define an acronym:

ABC(Always Be Closing)

Notepad++ Textile

Baixe o arquivo da linguagem em https://github.com/yangqiang/textile_npp e adicione ao Notepad++. Facilitará bastante a escrita.

Acesse http://redcloth.org/hobix.com/textile/


Como mover blog Tumblr para Wordpress

Como mover blog Tumblr para WordPress. Mudar o blog inteiro para WordPress em um único click use o app web. Todos os artigos de post e pages serão convertido em .xml WordPress.

Acesse http://tumblr2wordpress.jar.io

basta colocar o nome do blog Tumblr para ter o arquivo WordPress XML (WXR)completo. A boa vantagem deste método é que você pode guardar o arquivo como backup.

Como mover blog Tumblr para WordPress

Migrar do Tumblr para o WordPress é um processo simples, já que a ferramenta possui recurso nativo para importação. Não é preciso copiar manualmente o conteúdo e nem mesmo qualquer conhecimento técnico.

Acesse o seu blog WordPress em FERRAMENTAS, click em importar XML e pronto.

Se preferir o contrário migrar do WORDPRESS para o TUMBLR acesse: http://wordpress2tumblr.jar.io


Converter arquivos Blogger para Wordpress

Converter arquivos Blogger para WordPress. Às vezes para transferir arquivos xml do WordPress para Blogger, ou vice-versa, o indicado é usar os apps web conversores:

Baixe seu arquivo .xml e converta para uma ou outra plataforma conforme seu interesse.

Converter Blogger para WordPress

http://blogger2wordpress.appspot.com/

Converter WordPress para Blogger

http://wordpress2blogger.appspot.com/

Converter WordPress para Blogger

Já se você quer fazer backup do tumblr para wordpress use o app web


SVN Subversion Principais Comandos

SVN Subversion Principais Comandos. Principais Comandos svn, aqui alguns comandos do Subversion. Para utilizado em ambiente Windows, é necessário que seja instalado o cliente Subversion em linha de comando. Na Bireme, é utilizado comumente o TortoiseSVN ao invés da linha de comando, quando se trabalha com Windows, o cliente por linha de comando precisa ser instalado separadamente.

SVN checkout

É utilizado para descarregar o código do projeto, mantendo o versionamento. Dessa forma, é possível manter o código atualizado, enviar novas atualizações, ver diferenças entre versões de arquivos, entre outras funcionalidades que podem ser encontradas no manual do Subversion.

No exemplo a seguir, é feito o checkout da versão do BVS-Site que está em desenvolvimento para uma pasta chamada bvs-trunk:

$ svn co svn://svn.reddes.bvsalud.org/bvs-site/bvs-site/trunk/ bvs-trunk

Revision keywords

HEAD A última (ou “mais recente”) revisão no repositório. (svn co svn://path -r HEAD)

BASE O número de revisão de um item em uma cópia de trabalho. Se o item tiver sido modificado localmente, a “versão BASE” refere-se à forma como o item estaria sem estas modificações locais. (svn log –revision BASE:HEAD)

COMMITED A revisão mais recente anterior, ou igual a, BASE, na qual o item foi modificado. (svn log –revision COMMITTED path)

PREV A revisão imediatamente anterior à última revisão na qual o item foi modificado. Tecnicamente, isto se resume a COMMITTED-1. (svn log –revision PREV path)

SVN update

É utilizado para atualizar o código fonte local com o código fonte existente no repositório do Subversion. O update pode ser realizado sobre arquivo ou diretórios. Caso feito sobre um diretório, serão atualizados também todos arquivos deste diretório e subdiretórios.

O seguinte comando atualiza o arquivo index.php em bvs-trunk/htdocs:

$ svn update bvs-trunk/htdocs/index.php

O seguinte comando atualiza toda a pasta do projeto:

$ svn update bvs-trunk

SVN add & del

São os comando usados para adicionar e excluir arquivos (respectivamente) no subversion.

$ svn add bvs-trunk/htdocs/info.php

ou

$ svn del bvs-trunk/htdocs/info.php

SVN commit

Quando se modifica arquivo e deseja-se que a moficação seja aplicada também no repositório, é utiliza o comando commit, que envia ao servidor todas as alterações ocorridas no código local. Caso feito sobre um diretório, serão enviados também todos arquivos deste diretório e subdiretórios que tenham alguma modificação, ou que tenha sido adicionado.

O seguinte comando envia o arquivo index.php em bvs-trunk/htdocs:

$ svn ci bvs-trunk/htdocs/index.php

O seguinte comando envia ao servidor todos os arquivos da pasta do projeto:

$ svn ci bvs-trunk -m “Uma mensagem para descrever este commit”

Pode ser preciso autenticação para para se enviar um arquivo para o repositório. Quando este for o caso, pode-se utilizar os parâmetros –username e –password. Assim, o comando acima ficaria da seguinte forma:

$ svn ci bvs-trunk --username=fabio --password=f4b1O -m "Descrição para do commit"

Para os que trabalham com o Trac, é possível ter a interação entre os tickets abertos e as mensagens escritas para o commit. Pode-se, por exemplo, fechar um ticket através de um commit. O exemplo a seguir fecha o ticket de número 3.

$ svn ci bvs-trunk -m "resolve *3"

SVN log

Para viasualizar o log de dos commits realizados asta usar os comandos:

$ svn log bvs-trunk/htdocs/index.php

SVN revert

Nem sempre se quer que as alterções feitas seja enviadas para o repositório. Existem casos que é desejado desfazer as alterações feitas localmente. Para isso se utiliza o comando revert, que como os anteriores, pode ser aplicado sobre arquivos ou pastas.

O seguinte comando reverte as alteraç?s do arquivo index.php em bvs-trunk/htdocs:

$ svn revert bvs-trunk/htdocs/index.php

O seguinte comando reverte as alterações de todos os arquivos da pasta do projeto:

$ svn revert --recursive bvs-trunk

Importante: Não é possível desfazer o revert. Depois de feito, todas as alterações são perdidas!

status

Lista todas as diferenças existentes entre o código fonte local e o existente no repositório. Maiores informações sobre o significado das abreviações presentes no resultado podem ser encontradas digitando o seguinte:

SVN help status

Mostra o estado do arquivo index.php em bvs-trunk/htdocs local, em relação ao servidor:

$ svn status bvs-trunk/htdocs/index.php

Lista o estado de todos arquivos e pastas locais em relação ao servidor:

$ svn status bvs-trunk

SVN diff

Exibe as diferenças dos arquivos modificados com os arquivos presente no repositório. Esta ferramenta pode ser usada para criar patches. Isto pode ser feito criando um arquivo contendo diferença de todos arquivos modificados no projeto, da seguinte forma:

$ svn diff htdocs/admin/editor.php > editor.patch

Após esse comando, vai ser gerado um arquivo com as diferenças entre o arquivo editor.php local e o editor.php do repositório. Para este caso, o conteúdo do arquivo gerado é o seguinte:

Index: htdocs/admin/editor/editor.php

--- htdocs/admin/editor/editor.php (revisão 3110) +++ htdocs/admin/editor/editor.php (cópia de trabalho) @@ -57,7 +57,7 @@

Este patch pode ser aplicado em outro local que também tenha o código fonte, de preferência versionado e sob mesma revisão, do BVS-Site. A aplicação pode ser feita da seguinte forma:

$ patch -p0 < editor.patch

Visualizar diferenças da copia local com uma revisão especifica:

$ svn diff htdocs/admin/editor.php --revision 10 > editor.patch

SVN propset

Este comando adiciona propriedades a arquivos e pastas versionados, para ajudar a gerenciar melhor os arquivos dentro da cópia local do código fonte.

svn:ignore

Diz ao Subversion não versionar arquivos com esta propriedade.

Faz com que nenhum arquivo adicionado em bases/site/rss seja versionado:

$ svn propset svn:ignore * $ svn commit .

Retira arquivo bvs-site-conf.php do versionamento:

$ svn del bvs-trunk/htdocs/bvs-site-conf.php $ svn propset svn:ignore bvs-trunk/htdocs/bvs-site-conf.php $ svn commit bvs-trunk/htdocs

A propriedade é criada no escopo da pasta. Por isso faz-se commit da pasta e não do arquivo.

svn:mime-type

Esta propriedade é muito útil quando se usa o Trac. A maioria dos projetos da Bireme contém código e documentos escrito com o conjunto de caracteres ISO-8859-1. Quando estes documentos são vizualizados no Trac, acontecem alguns problema com acentos e caracteres especiais, pois o Trac assume que todo documento seja UTF-8 quando algo diferente não for especificado na propriedade svn:mime-type.

Diz ao SVN que o CHANGES.txt é um arquivo texto e com caracteres mapeados no ISO-8859-1.

$ svn propset svn:mime-type "text/plain;charset=iso-8859-1" bvs-trunk/CHANGES.txt

SVN info

Imprime informações dos arquivos locais.

$ svn info path

SVN import

Importa arquivos de um path local para o repositório.

$ svn import –m “message” local_path svn_path

SVN export

Exporta a arvore de diretórios.

$ svn export svn_path

Recupera a última versão do repositório sem os arquivos de controle de versão (.svn).

SVN list

Lista diretórios no repositório

$ svn list svn_path

Lista diretórios no repositorio (ls unix)

$ svn list --versobe svn_path

SVN blame

Mostra autor e revisão (annotate, praise e ann).

``SVN Subversion Principais Comandos. Principais Comandos svn, aqui alguns comandos do Subversion. Para utilizado em ambiente Windows, é necessário que seja instalado o cliente Subversion em linha de comando. Na Bireme, é utilizado comumente o TortoiseSVN ao invés da linha de comando, quando se trabalha com Windows, o cliente por linha de comando precisa ser instalado separadamente.

SVN checkout

É utilizado para descarregar o código do projeto, mantendo o versionamento. Dessa forma, é possível manter o código atualizado, enviar novas atualizações, ver diferenças entre versões de arquivos, entre outras funcionalidades que podem ser encontradas no manual do Subversion.

No exemplo a seguir, é feito o checkout da versão do BVS-Site que está em desenvolvimento para uma pasta chamada bvs-trunk:

$ svn co svn://svn.reddes.bvsalud.org/bvs-site/bvs-site/trunk/ bvs-trunk

Revision keywords

HEAD A última (ou “mais recente”) revisão no repositório. (svn co svn://path -r HEAD)

BASE O número de revisão de um item em uma cópia de trabalho. Se o item tiver sido modificado localmente, a “versão BASE” refere-se à forma como o item estaria sem estas modificações locais. (svn log –revision BASE:HEAD)

COMMITED A revisão mais recente anterior, ou igual a, BASE, na qual o item foi modificado. (svn log –revision COMMITTED path)

PREV A revisão imediatamente anterior à última revisão na qual o item foi modificado. Tecnicamente, isto se resume a COMMITTED-1. (svn log –revision PREV path)

SVN update

É utilizado para atualizar o código fonte local com o código fonte existente no repositório do Subversion. O update pode ser realizado sobre arquivo ou diretórios. Caso feito sobre um diretório, serão atualizados também todos arquivos deste diretório e subdiretórios.

O seguinte comando atualiza o arquivo index.php em bvs-trunk/htdocs:

$ svn update bvs-trunk/htdocs/index.php

O seguinte comando atualiza toda a pasta do projeto:

$ svn update bvs-trunk

SVN add & del

São os comando usados para adicionar e excluir arquivos (respectivamente) no subversion.

$ svn add bvs-trunk/htdocs/info.php

ou

$ svn del bvs-trunk/htdocs/info.php

SVN commit

Quando se modifica arquivo e deseja-se que a moficação seja aplicada também no repositório, é utiliza o comando commit, que envia ao servidor todas as alterações ocorridas no código local. Caso feito sobre um diretório, serão enviados também todos arquivos deste diretório e subdiretórios que tenham alguma modificação, ou que tenha sido adicionado.

O seguinte comando envia o arquivo index.php em bvs-trunk/htdocs:

$ svn ci bvs-trunk/htdocs/index.php

O seguinte comando envia ao servidor todos os arquivos da pasta do projeto:

$ svn ci bvs-trunk -m “Uma mensagem para descrever este commit”

Pode ser preciso autenticação para para se enviar um arquivo para o repositório. Quando este for o caso, pode-se utilizar os parâmetros –username e –password. Assim, o comando acima ficaria da seguinte forma:

$ svn ci bvs-trunk --username=fabio --password=f4b1O -m "Descrição para do commit"

Para os que trabalham com o Trac, é possível ter a interação entre os tickets abertos e as mensagens escritas para o commit. Pode-se, por exemplo, fechar um ticket através de um commit. O exemplo a seguir fecha o ticket de número 3.

$ svn ci bvs-trunk -m "resolve *3"

SVN log

Para viasualizar o log de dos commits realizados asta usar os comandos:

$ svn log bvs-trunk/htdocs/index.php

SVN revert

Nem sempre se quer que as alterções feitas seja enviadas para o repositório. Existem casos que é desejado desfazer as alterações feitas localmente. Para isso se utiliza o comando revert, que como os anteriores, pode ser aplicado sobre arquivos ou pastas.

O seguinte comando reverte as alteraç?s do arquivo index.php em bvs-trunk/htdocs:

$ svn revert bvs-trunk/htdocs/index.php

O seguinte comando reverte as alterações de todos os arquivos da pasta do projeto:

$ svn revert --recursive bvs-trunk

Importante: Não é possível desfazer o revert. Depois de feito, todas as alterações são perdidas!

status

Lista todas as diferenças existentes entre o código fonte local e o existente no repositório. Maiores informações sobre o significado das abreviações presentes no resultado podem ser encontradas digitando o seguinte:

SVN help status

Mostra o estado do arquivo index.php em bvs-trunk/htdocs local, em relação ao servidor:

$ svn status bvs-trunk/htdocs/index.php

Lista o estado de todos arquivos e pastas locais em relação ao servidor:

$ svn status bvs-trunk

SVN diff

Exibe as diferenças dos arquivos modificados com os arquivos presente no repositório. Esta ferramenta pode ser usada para criar patches. Isto pode ser feito criando um arquivo contendo diferença de todos arquivos modificados no projeto, da seguinte forma:

$ svn diff htdocs/admin/editor.php > editor.patch

Após esse comando, vai ser gerado um arquivo com as diferenças entre o arquivo editor.php local e o editor.php do repositório. Para este caso, o conteúdo do arquivo gerado é o seguinte:

Index: htdocs/admin/editor/editor.php

--- htdocs/admin/editor/editor.php (revisão 3110) +++ htdocs/admin/editor/editor.php (cópia de trabalho) @@ -57,7 +57,7 @@

Este patch pode ser aplicado em outro local que também tenha o código fonte, de preferência versionado e sob mesma revisão, do BVS-Site. A aplicação pode ser feita da seguinte forma:

$ patch -p0 < editor.patch

Visualizar diferenças da copia local com uma revisão especifica:

$ svn diff htdocs/admin/editor.php --revision 10 > editor.patch

SVN propset

Este comando adiciona propriedades a arquivos e pastas versionados, para ajudar a gerenciar melhor os arquivos dentro da cópia local do código fonte.

svn:ignore

Diz ao Subversion não versionar arquivos com esta propriedade.

Faz com que nenhum arquivo adicionado em bases/site/rss seja versionado:

$ svn propset svn:ignore * $ svn commit .

Retira arquivo bvs-site-conf.php do versionamento:

$ svn del bvs-trunk/htdocs/bvs-site-conf.php $ svn propset svn:ignore bvs-trunk/htdocs/bvs-site-conf.php $ svn commit bvs-trunk/htdocs

A propriedade é criada no escopo da pasta. Por isso faz-se commit da pasta e não do arquivo.

svn:mime-type

Esta propriedade é muito útil quando se usa o Trac. A maioria dos projetos da Bireme contém código e documentos escrito com o conjunto de caracteres ISO-8859-1. Quando estes documentos são vizualizados no Trac, acontecem alguns problema com acentos e caracteres especiais, pois o Trac assume que todo documento seja UTF-8 quando algo diferente não for especificado na propriedade svn:mime-type.

Diz ao SVN que o CHANGES.txt é um arquivo texto e com caracteres mapeados no ISO-8859-1.

$ svn propset svn:mime-type "text/plain;charset=iso-8859-1" bvs-trunk/CHANGES.txt

SVN info

Imprime informações dos arquivos locais.

$ svn info path

SVN import

Importa arquivos de um path local para o repositório.

$ svn import –m “message” local_path svn_path

SVN export

Exporta a arvore de diretórios.

$ svn export svn_path

Recupera a última versão do repositório sem os arquivos de controle de versão (.svn).

SVN list

Lista diretórios no repositório

$ svn list svn_path

Lista diretórios no repositorio (ls unix)

$ svn list --versobe svn_path

SVN blame

Mostra autor e revisão (annotate, praise e ann).

``

Mostra autor e revisão especificando a revisão.

```SVN Subversion Principais Comandos. Principais Comandos svn, aqui alguns comandos do Subversion. Para utilizado em ambiente Windows, é necessário que seja instalado o cliente Subversion em linha de comando. Na Bireme, é utilizado comumente o TortoiseSVN ao invés da linha de comando, quando se trabalha com Windows, o cliente por linha de comando precisa ser instalado separadamente.

SVN checkout

É utilizado para descarregar o código do projeto, mantendo o versionamento. Dessa forma, é possível manter o código atualizado, enviar novas atualizações, ver diferenças entre versões de arquivos, entre outras funcionalidades que podem ser encontradas no manual do Subversion.

No exemplo a seguir, é feito o checkout da versão do BVS-Site que está em desenvolvimento para uma pasta chamada bvs-trunk:

$ svn co svn://svn.reddes.bvsalud.org/bvs-site/bvs-site/trunk/ bvs-trunk

Revision keywords

HEAD A última (ou “mais recente”) revisão no repositório. (svn co svn://path -r HEAD)

BASE O número de revisão de um item em uma cópia de trabalho. Se o item tiver sido modificado localmente, a “versão BASE” refere-se à forma como o item estaria sem estas modificações locais. (svn log –revision BASE:HEAD)

COMMITED A revisão mais recente anterior, ou igual a, BASE, na qual o item foi modificado. (svn log –revision COMMITTED path)

PREV A revisão imediatamente anterior à última revisão na qual o item foi modificado. Tecnicamente, isto se resume a COMMITTED-1. (svn log –revision PREV path)

SVN update

É utilizado para atualizar o código fonte local com o código fonte existente no repositório do Subversion. O update pode ser realizado sobre arquivo ou diretórios. Caso feito sobre um diretório, serão atualizados também todos arquivos deste diretório e subdiretórios.

O seguinte comando atualiza o arquivo index.php em bvs-trunk/htdocs:

$ svn update bvs-trunk/htdocs/index.php

O seguinte comando atualiza toda a pasta do projeto:

$ svn update bvs-trunk

SVN add & del

São os comando usados para adicionar e excluir arquivos (respectivamente) no subversion.

$ svn add bvs-trunk/htdocs/info.php

ou

$ svn del bvs-trunk/htdocs/info.php

SVN commit

Quando se modifica arquivo e deseja-se que a moficação seja aplicada também no repositório, é utiliza o comando commit, que envia ao servidor todas as alterações ocorridas no código local. Caso feito sobre um diretório, serão enviados também todos arquivos deste diretório e subdiretórios que tenham alguma modificação, ou que tenha sido adicionado.

O seguinte comando envia o arquivo index.php em bvs-trunk/htdocs:

$ svn ci bvs-trunk/htdocs/index.php

O seguinte comando envia ao servidor todos os arquivos da pasta do projeto:

$ svn ci bvs-trunk -m “Uma mensagem para descrever este commit”

Pode ser preciso autenticação para para se enviar um arquivo para o repositório. Quando este for o caso, pode-se utilizar os parâmetros –username e –password. Assim, o comando acima ficaria da seguinte forma:

$ svn ci bvs-trunk --username=fabio --password=f4b1O -m "Descrição para do commit"

Para os que trabalham com o Trac, é possível ter a interação entre os tickets abertos e as mensagens escritas para o commit. Pode-se, por exemplo, fechar um ticket através de um commit. O exemplo a seguir fecha o ticket de número 3.

$ svn ci bvs-trunk -m "resolve *3"

SVN log

Para viasualizar o log de dos commits realizados asta usar os comandos:

$ svn log bvs-trunk/htdocs/index.php

SVN revert

Nem sempre se quer que as alterções feitas seja enviadas para o repositório. Existem casos que é desejado desfazer as alterações feitas localmente. Para isso se utiliza o comando revert, que como os anteriores, pode ser aplicado sobre arquivos ou pastas.

O seguinte comando reverte as alteraç?s do arquivo index.php em bvs-trunk/htdocs:

$ svn revert bvs-trunk/htdocs/index.php

O seguinte comando reverte as alterações de todos os arquivos da pasta do projeto:

$ svn revert --recursive bvs-trunk

Importante: Não é possível desfazer o revert. Depois de feito, todas as alterações são perdidas!

status

Lista todas as diferenças existentes entre o código fonte local e o existente no repositório. Maiores informações sobre o significado das abreviações presentes no resultado podem ser encontradas digitando o seguinte:

SVN help status

Mostra o estado do arquivo index.php em bvs-trunk/htdocs local, em relação ao servidor:

$ svn status bvs-trunk/htdocs/index.php

Lista o estado de todos arquivos e pastas locais em relação ao servidor:

$ svn status bvs-trunk

SVN diff

Exibe as diferenças dos arquivos modificados com os arquivos presente no repositório. Esta ferramenta pode ser usada para criar patches. Isto pode ser feito criando um arquivo contendo diferença de todos arquivos modificados no projeto, da seguinte forma:

$ svn diff htdocs/admin/editor.php > editor.patch

Após esse comando, vai ser gerado um arquivo com as diferenças entre o arquivo editor.php local e o editor.php do repositório. Para este caso, o conteúdo do arquivo gerado é o seguinte:

Index: htdocs/admin/editor/editor.php

--- htdocs/admin/editor/editor.php (revisão 3110) +++ htdocs/admin/editor/editor.php (cópia de trabalho) @@ -57,7 +57,7 @@

Este patch pode ser aplicado em outro local que também tenha o código fonte, de preferência versionado e sob mesma revisão, do BVS-Site. A aplicação pode ser feita da seguinte forma:

$ patch -p0 < editor.patch

Visualizar diferenças da copia local com uma revisão especifica:

$ svn diff htdocs/admin/editor.php --revision 10 > editor.patch

SVN propset

Este comando adiciona propriedades a arquivos e pastas versionados, para ajudar a gerenciar melhor os arquivos dentro da cópia local do código fonte.

svn:ignore

Diz ao Subversion não versionar arquivos com esta propriedade.

Faz com que nenhum arquivo adicionado em bases/site/rss seja versionado:

$ svn propset svn:ignore * $ svn commit .

Retira arquivo bvs-site-conf.php do versionamento:

$ svn del bvs-trunk/htdocs/bvs-site-conf.php $ svn propset svn:ignore bvs-trunk/htdocs/bvs-site-conf.php $ svn commit bvs-trunk/htdocs

A propriedade é criada no escopo da pasta. Por isso faz-se commit da pasta e não do arquivo.

svn:mime-type

Esta propriedade é muito útil quando se usa o Trac. A maioria dos projetos da Bireme contém código e documentos escrito com o conjunto de caracteres ISO-8859-1. Quando estes documentos são vizualizados no Trac, acontecem alguns problema com acentos e caracteres especiais, pois o Trac assume que todo documento seja UTF-8 quando algo diferente não for especificado na propriedade svn:mime-type.

Diz ao SVN que o CHANGES.txt é um arquivo texto e com caracteres mapeados no ISO-8859-1.

$ svn propset svn:mime-type "text/plain;charset=iso-8859-1" bvs-trunk/CHANGES.txt

SVN info

Imprime informações dos arquivos locais.

$ svn info path

SVN import

Importa arquivos de um path local para o repositório.

$ svn import –m “message” local_path svn_path

SVN export

Exporta a arvore de diretórios.

$ svn export svn_path

Recupera a última versão do repositório sem os arquivos de controle de versão (.svn).

SVN list

Lista diretórios no repositório

$ svn list svn_path

Lista diretórios no repositorio (ls unix)

$ svn list --versobe svn_path

SVN blame

Mostra autor e revisão (annotate, praise e ann).

``SVN Subversion Principais Comandos. Principais Comandos svn, aqui alguns comandos do Subversion. Para utilizado em ambiente Windows, é necessário que seja instalado o cliente Subversion em linha de comando. Na Bireme, é utilizado comumente o TortoiseSVN ao invés da linha de comando, quando se trabalha com Windows, o cliente por linha de comando precisa ser instalado separadamente.

SVN checkout

É utilizado para descarregar o código do projeto, mantendo o versionamento. Dessa forma, é possível manter o código atualizado, enviar novas atualizações, ver diferenças entre versões de arquivos, entre outras funcionalidades que podem ser encontradas no manual do Subversion.

No exemplo a seguir, é feito o checkout da versão do BVS-Site que está em desenvolvimento para uma pasta chamada bvs-trunk:

$ svn co svn://svn.reddes.bvsalud.org/bvs-site/bvs-site/trunk/ bvs-trunk

Revision keywords

HEAD A última (ou “mais recente”) revisão no repositório. (svn co svn://path -r HEAD)

BASE O número de revisão de um item em uma cópia de trabalho. Se o item tiver sido modificado localmente, a “versão BASE” refere-se à forma como o item estaria sem estas modificações locais. (svn log –revision BASE:HEAD)

COMMITED A revisão mais recente anterior, ou igual a, BASE, na qual o item foi modificado. (svn log –revision COMMITTED path)

PREV A revisão imediatamente anterior à última revisão na qual o item foi modificado. Tecnicamente, isto se resume a COMMITTED-1. (svn log –revision PREV path)

SVN update

É utilizado para atualizar o código fonte local com o código fonte existente no repositório do Subversion. O update pode ser realizado sobre arquivo ou diretórios. Caso feito sobre um diretório, serão atualizados também todos arquivos deste diretório e subdiretórios.

O seguinte comando atualiza o arquivo index.php em bvs-trunk/htdocs:

$ svn update bvs-trunk/htdocs/index.php

O seguinte comando atualiza toda a pasta do projeto:

$ svn update bvs-trunk

SVN add & del

São os comando usados para adicionar e excluir arquivos (respectivamente) no subversion.

$ svn add bvs-trunk/htdocs/info.php

ou

$ svn del bvs-trunk/htdocs/info.php

SVN commit

Quando se modifica arquivo e deseja-se que a moficação seja aplicada também no repositório, é utiliza o comando commit, que envia ao servidor todas as alterações ocorridas no código local. Caso feito sobre um diretório, serão enviados também todos arquivos deste diretório e subdiretórios que tenham alguma modificação, ou que tenha sido adicionado.

O seguinte comando envia o arquivo index.php em bvs-trunk/htdocs:

$ svn ci bvs-trunk/htdocs/index.php

O seguinte comando envia ao servidor todos os arquivos da pasta do projeto:

$ svn ci bvs-trunk -m “Uma mensagem para descrever este commit”

Pode ser preciso autenticação para para se enviar um arquivo para o repositório. Quando este for o caso, pode-se utilizar os parâmetros –username e –password. Assim, o comando acima ficaria da seguinte forma:

$ svn ci bvs-trunk --username=fabio --password=f4b1O -m "Descrição para do commit"

Para os que trabalham com o Trac, é possível ter a interação entre os tickets abertos e as mensagens escritas para o commit. Pode-se, por exemplo, fechar um ticket através de um commit. O exemplo a seguir fecha o ticket de número 3.

$ svn ci bvs-trunk -m "resolve *3"

SVN log

Para viasualizar o log de dos commits realizados asta usar os comandos:

$ svn log bvs-trunk/htdocs/index.php

SVN revert

Nem sempre se quer que as alterções feitas seja enviadas para o repositório. Existem casos que é desejado desfazer as alterações feitas localmente. Para isso se utiliza o comando revert, que como os anteriores, pode ser aplicado sobre arquivos ou pastas.

O seguinte comando reverte as alteraç?s do arquivo index.php em bvs-trunk/htdocs:

$ svn revert bvs-trunk/htdocs/index.php

O seguinte comando reverte as alterações de todos os arquivos da pasta do projeto:

$ svn revert --recursive bvs-trunk

Importante: Não é possível desfazer o revert. Depois de feito, todas as alterações são perdidas!

status

Lista todas as diferenças existentes entre o código fonte local e o existente no repositório. Maiores informações sobre o significado das abreviações presentes no resultado podem ser encontradas digitando o seguinte:

SVN help status

Mostra o estado do arquivo index.php em bvs-trunk/htdocs local, em relação ao servidor:

$ svn status bvs-trunk/htdocs/index.php

Lista o estado de todos arquivos e pastas locais em relação ao servidor:

$ svn status bvs-trunk

SVN diff

Exibe as diferenças dos arquivos modificados com os arquivos presente no repositório. Esta ferramenta pode ser usada para criar patches. Isto pode ser feito criando um arquivo contendo diferença de todos arquivos modificados no projeto, da seguinte forma:

$ svn diff htdocs/admin/editor.php > editor.patch

Após esse comando, vai ser gerado um arquivo com as diferenças entre o arquivo editor.php local e o editor.php do repositório. Para este caso, o conteúdo do arquivo gerado é o seguinte:

Index: htdocs/admin/editor/editor.php

--- htdocs/admin/editor/editor.php (revisão 3110) +++ htdocs/admin/editor/editor.php (cópia de trabalho) @@ -57,7 +57,7 @@

Este patch pode ser aplicado em outro local que também tenha o código fonte, de preferência versionado e sob mesma revisão, do BVS-Site. A aplicação pode ser feita da seguinte forma:

$ patch -p0 < editor.patch

Visualizar diferenças da copia local com uma revisão especifica:

$ svn diff htdocs/admin/editor.php --revision 10 > editor.patch

SVN propset

Este comando adiciona propriedades a arquivos e pastas versionados, para ajudar a gerenciar melhor os arquivos dentro da cópia local do código fonte.

svn:ignore

Diz ao Subversion não versionar arquivos com esta propriedade.

Faz com que nenhum arquivo adicionado em bases/site/rss seja versionado:

$ svn propset svn:ignore * $ svn commit .

Retira arquivo bvs-site-conf.php do versionamento:

$ svn del bvs-trunk/htdocs/bvs-site-conf.php $ svn propset svn:ignore bvs-trunk/htdocs/bvs-site-conf.php $ svn commit bvs-trunk/htdocs

A propriedade é criada no escopo da pasta. Por isso faz-se commit da pasta e não do arquivo.

svn:mime-type

Esta propriedade é muito útil quando se usa o Trac. A maioria dos projetos da Bireme contém código e documentos escrito com o conjunto de caracteres ISO-8859-1. Quando estes documentos são vizualizados no Trac, acontecem alguns problema com acentos e caracteres especiais, pois o Trac assume que todo documento seja UTF-8 quando algo diferente não for especificado na propriedade svn:mime-type.

Diz ao SVN que o CHANGES.txt é um arquivo texto e com caracteres mapeados no ISO-8859-1.

$ svn propset svn:mime-type "text/plain;charset=iso-8859-1" bvs-trunk/CHANGES.txt

SVN info

Imprime informações dos arquivos locais.

$ svn info path

SVN import

Importa arquivos de um path local para o repositório.

$ svn import –m “message” local_path svn_path

SVN export

Exporta a arvore de diretórios.

$ svn export svn_path

Recupera a última versão do repositório sem os arquivos de controle de versão (.svn).

SVN list

Lista diretórios no repositório

$ svn list svn_path

Lista diretórios no repositorio (ls unix)

$ svn list --versobe svn_path

SVN blame

Mostra autor e revisão (annotate, praise e ann).

``

Mostra autor e revisão especificando a revisão.

```

SVN resolved

Remove os arquivos criados pelo repositório na existência de conflito.

svn resolved local_path

Outros sistemas de controle de versão:

Git (http://git-scm.com/) Linus Torvalds

Mercurial (http://www.selenic.com/mercurial/wiki/) Sun using for JDK

Bazaar (http://bazaar-vcs.org/)

Perforce (http://www.perforce.com/)

Monotone (http://www.venge.net/monotone/)

Visual SourceSafe (http://msdn.microsoft.com/en-us/vstudio/aa718670.aspx) Microsoft


SVN Guia rápido

Como grande apreciador e usuário há anos do SVN, não poderia deixar de dedicar um pequeno artigo sobre esta fantástica ferramenta de controle de versão, principalmente pela escassez de materais na Internet discutindo seus conceitos de forma pragmática.

Assim, resolvi aproveitar alguns materiais que eu havia escrito para utilização pelos times de desenvolvimento nos quais atuo, incrementei alguma coisinha aqui e acolá e preparei este estrambolicamente dupper master quase infinito artigo.

Para facilitar a leitura, o artigo está dividido em 7 partes:

Público alvo: comentários sobre a quem se destina a leitura deste artigo;

Controle de versão e SVN: o que é controle de versão e como o SVN se encaixa nesse paradigma;

Termos e conceitos básicos: conceitos básicos para entendimento do funcionamento e organização do SVN;

Boas práticas: breve manual de boas práticas na utilização do SVN;

Dicas de utilização: dicas diversas de utilização do SVN;

Ferramentas de apoio: algumas ferramentas interessantes para tornar o uso do SVN mais prático.

Ao infinito e além: costumeira lista de links interessantes.

Público alvo

O cerne deste artigo não é a discussão da utilização do SVN a partir de comandos ou questões técnicas da ferramenta. Para tal, há documentações, livros e artigos na rede muito completos sobre o tema. O público alvo deste artigo são utilizadores do SVN que já tenham familiaridade com suas idiossincrasias e que desejam um melhor entendimento do modelo organizacional da ferramenta e de como estruturar um processo em torno do SVN para tornar mais eficaz o gerenciamento do código-fonte de suas aplicações.

Controle de versão e SVN

Controle de versão é a arte de gerenciar mudanças em informações. Para programadores, é um paradigma obrigatório a ser seguido para assegurar a saúde do código-fonte, ainda mais em grandes equipes atuando cada qual em partes distintas de um projeto.

Back to the FutureVocê, desenvolvedor, também precisa de uma

máquina do tempo para seu código.

O Subversion, ou simplesmente SVN, é uma ferramenta de controle de versão muito poderosa que permite, além do desenvolvimento colaborativo a partir de um repositório único, merge de conteúdo, armazenamento de logs e geração de estatísticas diversas.

Atuando como a máquina do tempo do desenvolvedor, ferramentas com o SVN permitem retornar o código a um estado anterior, facilitando a análise implementações realizadas e a mesclagem de implementações distintas de períodos diferentes para a criação de uma única versão.

(Embora eu seja fãzaço e ávido partidário do SVN, tenho flertado nos últimos tempos com os ótimos Mercurial e GIT, os quais têm realmente me surpreendido e me feito repensar o uso do meu amado idolatrado salve salve SVN. Todavia, isso fica para outro artigo…)

Termos e conceitos básicos

TortoiseSVN Menu

Repositório

É o local aonde estão contidos todos os arquivos do projeto. É armazenado no banco de dados do SVN.

Working Copy

Literalmente, uma cópia de trabalho local na qual o desenvolvedor atua. É criada sempre que é feito checkout de algum projeto.

Checkout

Ato de fazer download de um projeto para a máquina local, de modo que seus arquivos estejam vinculados ao SVN e passíveis de manipulação. O projeto para o qual será feito o checkout deve existir no repositório.

Import

Ato de envio dos arquivos de um novo projeto para o repositório. Após o import, obrigatoriamente um checkout deve ser realizado para que a working copy seja vinculada ao SVN.

Export

Ato de obtenção de um projeto do repositório sem vinculação ao SVN.

Commit

Ato de envio das modificações realizadas localmente para o servidor SVN.

Update

Ato de obtenção das atualizações presentes do servidor SVN, atualizando a cópia local

Revision

Número que identifica cada uma das alterações ou conjunto de alterações realizadas em um repositório. Tal número é obtido a partir de uma sequência a qual é compartilhada por todos os diretórios do repositório.

HEAD

É a revisão mais recente do repositório

Diretórios especiais

Existem no SVN três diretórios especiais com funções bem definidas:

trunk: armazena a versão funcional mais recente de desenvolvimento.

branches: armazena versões de desenvolvimento paralelo oriundas do trunk, porém isoladas deste. Deve ser utilizado quando uma implementação trazer o risco de afetar a integridade do trunk.

Tag: armazena etiquetas para facilitar a localização de revisões. Cada etiqueta possui um nome único que a identifica, sendo criada como um diretório, sempre através do trunk.

Branch/Tag

Refere-se à geração de branches ou tags a partir de um trunk ou geração de um branch a partir de uma tag ou outro branch.

Merge

Refere-se à mesclagem de revisões entre os diretórios especiais. Sempre deve ser realizada com a working copy apontando para o destino do merge.

Switch

Alteração do repositório utilizado por uma working copy. É realizada uma atualização ou mesclagem dos arquivos para assegurar que a working copy contenha exatamente o conteúdo do novo repositório mais quaisquer alterações locais.

Relocate

Realocação do endereço de um repositório. Apenas atualiza o endereço, sem realizar nenhum tipo de atualização nos arquivos.

Boas práticas

Toda revisão deve ser comentada para facilitar o entendimento das alterações realizadas.

O código no trunk deve sempre estar pronto para ser compilado e colocado em produção se necessário. Nesse sentido, uma ferramenta de Integração Contínua, como o CruiseControl, deve ser utilizada para a geração de builds de teste a cada commit e todas as noites ao longo da semana.

É dever de cada programador assegurar que seus commits não causem a quebra do build. Novamente uma ferramenta de Integração Contínua pode auxiliar nesta tarefa.

As alterações em um código-fonte devem ser submetidas ao repositório o mais rápido possível. Para tal, é recomendável a divisão das implementações em pequenos pacotes compiláveis e funcionais ou, ao menos, que não causem a quebra do build. Quanto mais tempo um arquivo mantém-se na máquina de um desenvolvedor em edição, mais difícil será sua mesclagem e maior será o risco de quebra de build.

Toda a quebra de build deve ser tratada com máxima prioridade no sentido de sua correção. Mais uma vez uma ferramenta de Integração Contínua pode auxiliar nesta tarefa.

Caso um build esteja quebrado, não se deve submeter alterações ao repositório até que o build seja novamente compilável. Isso assegura que todos os que realizarem updates terão sempre uma versão compilável e funcional oriunda do repositório.

O projeto no repositório deve conter quaisquer componentes e ferramentas necessárias para o funcionamento da aplicação na máquina do desenvolvedor.

Evitar o envio de alterações próximo do fim do expediente. Caso haja algum problema com o commit realizado, poderá não haver tempo para corrigi-lo naquele dia e o build poderá ficar quebrado por um longo período.

Todo e qualquer backup de versões deve ser mantido no repositório, preferencialmente como uma tag.

Dicas de utilização

Uso do trunk

O trunk sempre representa a última versão de desenvolvimento disponível. Nesse sentido, é aqui que ocorre a integração do projeto a partir de builds automatizados e é aqui que a versão funcional mais recente deve estar presente.

É do trunk também que os branches e tags devem ser gerados (embora branches possam ser gerados de tags e outros branches sem restrições técnicas). A ferramenta de revisão gráfica do TortoiseSVN (Revision Graph) permite visualizar os relacionamentos entre as pastas especiais a partir de diagramas.

Fluxo básico de atividades

O fl