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 fluxo básico de atividades no repositório consiste na utilização do trunk como ponto principal de checkout para o desenvolvimento. Entretanto, quaisquer tarefas que possam causar grande impacto no trunk devem ser realizadas em um branch separado, o qual receberá as alterações do trunk ao longo do dia ou ao fim do dia para que este seja mantido atualizado.

Tags são utilizadas como backups e marcação de releases diversos do projeto.

Segue abaixo explanação da utilização do fluxo:

Diagrama do fluxo

Geração de backup da versão do trunk para marcação de um ponto de restauro rápido antes do início dos branches a partir da opção Branch/Tag (opcional);

Criação de branch para realização de nova implementação que pode impactar no trunk a partir da opção Branch/Tag;

Integração de alterações realizadas no trunk ao branch a partir da ferramenta de mesclagem Merge a Range of Revisions;

Criação de nova branch para realização de nova implementação que pode impactar no trunk a partir da opção Branch/Tag;

Conclusão do primeiro branch criado, ocorrendo a reintegração deste no trunk a partir da ferramenta de mesclagem Reintegrate a Branch e sua deleção;

Atualização da segunda branch criada com as atualizações recém realizadas no trunk a partir da ferramenta de mesclagem Merge a Range of Revisions;

Conclusão da segunda branch criada, ocorrendo a reintegração desta no trunk a partir da ferramenta de mesclagem Reintegrate a Branch e sua deleção;

Geração de etiqueta de release da versão do trunk a partir da opção Branch/Tag.

Fluxo básico de atuação em projeto fechado

Quando em atuação em projetos fechados de customização a um cliente, tem-se comumente uma única versão da aplicação em produção, além de outras em ambientes diversos, como por exemplo homologação e testes.

Neste caso, o fluxo básico de atividades também é utilizado. Entretanto, a cada release gerado, além da tag é criado um branch que representa a versão criada. Assim, tem-se no trunk a última versão de desenvolvimento e, em branches separados, cada uma das versões implantadas em ambientes diversos.

Dessa forma, pode-se prestar manutenção às versões presentes em cada um dos ambientes da aplicação de forma simples. Toda vez que uma nova versão de um determinado ambiente é gerado, o branch anterior para tal ambiente é excluído.

Neste fluxo, sempre se espera que todas as revisões do trunk anteriores ao release façam parte deste, não havendo seleção de revisões na concepção de releases.

Segue abaixo explanação da utilização do fluxo:

Diagrama do fluxo

Geração de backup da versão do trunk para marcação de um ponto de restauro rápido antes do início dos branches a partir da opção Branch/Tag/ (opcional);

Criação de branch para realização de nova implementação que pode impactar no trunk a partir da opção Branch/Tag;

Integração de alterações realizadas no trunk ao branch a partir da ferramenta de mesclagem Merge a Range of Revisions;

Conclusão do primeiro branch criada, ocorrendo a reintegração deste no trunk a partir da ferramenta de mesclagem Reintegrate a Branch e sua deleção;

Geração de etiqueta de release da versão do trunk a partir da opção Branch/Tag;

Criação de branch para o release recém gerado a partir da opção Branch/Tag;

Mesclagem das alterações realizadas no branch do release ao trunk a partir da ferramenta de mesclagem Reintegrate a Branch. Tal branch se manterá ativo enquanto a versão que o representa estiver em utilização.

Fluxo de atuação em projeto fechado com mesclagem de revisões

A exemplo do Fluxo básico de atuação em projeto fechado, neste fluxo também se considera que há apenas uma única versão da aplicação em produção, além de outras em ambientes diversos, como por exemplo homologação e testes.

Nesta técnica, o fluxo básico de atividades também é utilizado. Entretanto, a cada release gerado, é criado primeiramente um branch baseado em uma tag anterior de ambiente, no qual ocorre mesclagem de revisões do trunk, para que somente após o commit de tal branch seja criada uma nova tag de release que aponte para tal branch (o qual, por sua vez, aponta para o trunk).

Assim, tem-se no trunk a última versão de desenvolvimento e, em branches separados, cada uma das versões implantadas em ambientes diversos, sendo que tais versões, embora venham do trunk, são geradas sempre a partir de tags de versões ante

rios, mantendo dessa forma a seleção de revisões realizada.

Dessa forma, pode-se prestar manutenção às versões presentes em cada um dos ambientes da aplicação de forma simples, além da geração de releases baseados em determinadas revisões do trunk.

Toda vez que uma nova versão de um determinado ambiente é gerado, o branch anterior para tal ambiente é excluído.

Segue abaixo explanação da utilização do fluxo:

Diagrama do fluxo

Considerando-se importação inicial do repositório, deve-se inicialmente criar-se uma tag de release para algum dos ambientes, a qual servirá de base para geração do branch do ambiente com o qual a tag se relaciona a partir da opção Branch/Tag;

Criação de branch para a tag do release recém criado a partir da opção Branch/Tag. Tal branch se mantém ativo enquanto a versão que o representa estiver em utilização.

Criação de feature branch para realização de nova implementação que pode impactar no trunk a partir da opção Branch/Tag. O uso desse tipo de branch deve ser avaliado com cautela. O trunk deve sempre ser a versão mais recente de desenvolvimento;

Integração de alterações realizadas no trunk ao feature branch a partir da ferramenta de mesclagem Merge a Range of Revisions;

Conclusão do feature branch criado, ocorrendo a reintegração deste no trunk a partir da ferramenta de mesclagem Reintegrate a Branch e sua deleção;

Reintegração de correções de bugs realizadas no branch do release atual de algum dos ambientes ao trunk a partir da ferramenta de mesclagem Reintegrate a Branch;

Exclusão do branch de algum dos ambientes por conta de nova versão a ser criada para tal ambiente;

Criação de nova branch para o ambiente a ter a nova versão disponibilizada a partir da tag do último release do ambiente desejado utilizando-se da opção Branch/Tag;

Mesclagem de revisões do trunk na nova branch de release a partir da ferramenta de mesclagem Merge a Range of Revisions e posterior commit destas alterações na própria branch;

Geração de etiqueta de release da versão criada a partir do novo branch utilizando-se da opção Branch/Tag;

Mesclagem das alterações realizadas no branch do release ao trunk a partir da ferramenta de mesclagem Reintegrate a Branch. Tal branch se manterá ativo enquanto a versão que o representa estiver em utilização.

Fluxo de atuação em projeto fechado com múltiplos branches

Tal fluxo é uma derivação do Fluxo básico de atuação em projeto fechado. Diferente daquele, neste todas as alterações sempre são realizadas em branches que posteriormente são reintegrados ao trunk. Quaisquer versões a serem geradas (produção, homologação, teste, etc.) são criadas a partir de merge de revisões a partir do trunk sobre o próprio trunk ou de branches sobre o trunk, com posterior geração de novas branches e tag para tal versão.

Neste fluxo, o trunk é utilizado como a versão mais completa da aplicação, contendo todas as implementações já realizadas em branches separados.

O uso dos branches se dá para facilitar a divisão de tarefas e organização das alterações, de modo que solicitações descartadas sejam facilmente ignoradas e não reintegradas ao trunk.

Segue abaixo explanação da utilização do fluxo:

Diagrama do fluxo

Geração de backup da versão do trunk para marcação de um ponto de restauro rápido antes do início dos branches a partir da opção Branch/Tag (opcional);

Criação de branches para realização de novas implementaões a partir da opção Branch/Tag. Como o trunk possui todas as implementações já realizadas, tais branches devem ser criados com base em revisões específicas do trunk que contenham apenas as implementações desejadas;

Integração de alterações realizadas no trunk aos branches a partir da ferramenta de mesclagem Merge a Range of Revisions (opcional – diferente dos fluxos anteriores, a obtenção das últimas alterações pode não ser necessária, uma vez que um branch pode referir-se a uma revisão específica e não necessariamente à última versão presente no trunk);

Conclusão dos branches criados, ocorrendo a reintegração destes no trunk a partir da ferramenta de mesclagem Reintegrate a Branch e posterior deleção;

Geração de release a partir do trunk. Neste fluxo, a geração de release ocorre mesclando-se revisões do trunk em uma working copy de uma revisão específica (não necessariamente a mais recente) do próprio trunk ou dos branches. Assim, pode-se escolher exatamente quais revisões entrarão em uma release, assegurando pleno gerenciamento da montagem de uma versão. A criação do branch é feita a partir da opção Branch/Tag;

Geração de etiqueta de release a partir do branch recém gerado através da opção Branch/Tag;

Mesclagem das alterações realizadas no branch do release ao trunk a partir da ferramenta de mesclagem Reintegrate a Branch. Tal branch sempre estará disponível, não sendo excluído do repositório.


Sistemas de controles de versão

Sistemas de controles de versão. Aqui a lista do principais sistemas de controle de versão.

SVN subverson subversion.tigris.org/

Git git-scm.com/ Linus Torvalds

Mercurial selenic.com/mercurial Sun using for JDK

Bazaar bazaar-vcs.org

Perforce perforce.com

Monotone venge.net/monotone

Visual SourceSafe msdn.microsoft.com/en-us/vstudio Microsoft

Git

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

SVN subverson

Subversion is an open source version control system. Founded in 2000 by CollabNet, Inc., the Subversion project and software have seen incredible success over the past decade. Subversion has enjoyed and continues to enjoy widespread adoption in both the open source arena and the corporate world. Subversion is developed as a project of the Apache Software Foundation, and as such is part of a rich community of developers and users. We’re always in need of individuals with a wide range of skills, and we invite you to participate in the development of Apache Subversion.

Mercurial

Mercurial is a fast, easy to use, distributed revision control tool for software developers.

Visual SourceSafe

Visual Source Safe 2005 is an easy-to-use solution for developers who want a simple way to manage changes to their source code.

Monotone

monotone is a free distributed version control system. It provides a simple, single-file transactional version store, with fully disconnected operation and an efficient peer-to-peer synchronization protocol. It understands history-sensitive merging, lightweight branches, integrated code review and 3rd party testing. It uses cryptographic version naming and client-side RSA certificates.

Bazaar

Bazaar is a version control system that helps you track project history over time and to collaborate easily with others. Whether you’re a single developer, a co-located team or a community of developers scattered across the world, Bazaar scales and adapts to meet your needs. Part of the GNU Project, Bazaar is free software sponsored by Canonical.

Perforce

Perforce Helix is the only version control system that supports both centralized and distributed workflows with enterprise-grade scalability.


XperienCentral CMS Java

XperienCentral. Xperien central é atualmente o único CMS que oferece conteúdo exclusivo para um visitante como por sua viagem anterior, para que você possa adaptar o conteúdo para aumentar a conversão.

Resolvi publicar uma secção de CMS (Content Management System) compatível com a Linguagem Java. A maioria destes gerendiadores de sites não são open source e gratuitos, contudo atendem as espectativas dos amantes desta linguagem.

XperienCentral Acesse a página para conhecer mais sobre este JAVA CMS: http://www.xperiencentral.com/

CMS XperienCentral

XperienCentral Um sistema gerenciador de conteúdo web ou CMS (Content Management System), é um programa para criação de sites, oferecendo ferramentas variadas para publicar os conteúdo. Os mais famosos são WordPress, Joomla e Drupal. O apresentado neste artigo é compatível com Java.

XperienCentral

Ele oferece multi-canal de entrega de conteúdo através do site, canais móveis de mídia social e aplicações. Ele é construído em Java e, portanto, é extremamente escalável e ágil.


Weceem CMS Java

Weceem. Weceem é ainda outro sistema de gerenciamento de conteúdo de código aberto, improvável outro CMS é construído sobre grails Java-estrutura conhecida, primavera e Java em si. Weceem tem garner opiniões positivas e é um CMS ideal quando se trata de grails, mas enfrenta a dura concorrência na categoria Java CMS melhor.

Resolvi publicar uma secção de CMS (Content Management System) compatível com a Linguagem Java. A maioria destes gerendiadores de sites não são open source e gratuitos, contudo atendem as espectativas dos amantes desta linguagem.

Weceem Acesse a página para conhecer mais sobre este JAVA CMS: http://www.weceem.org/

CMS Weceem

Weceem Um sistema gerenciador de conteúdo web ou CMS (Content Management System), é um programa para criação de sites, oferecendo ferramentas variadas para publicar os conteúdo. Os mais famosos são WordPress, Joomla e Drupal. O apresentado neste artigo é compatível com Java.

Weceem

Encontrei uma discussão do LinkedIn que foi o suficiente para colocar esse CMS na lista Melhor Java CMS.


Walrus CMS Java

Walrus. A Walrus é mais um CMS baseado em Spring que oferece capacidades de gerenciamento de conteúdo únicas e eficazes com uma interface administrativa inteligente e instalações de arrastar e soltar.

Resolvi publicar uma secção de CMS (Content Management System) compatível com a Linguagem Java. A maioria destes gerendiadores de sites não são open source e gratuitos, contudo atendem as espectativas dos amantes desta linguagem.

Walrus Acesse a página para conhecer mais sobre este JAVA CMS: Xhttp://walrus.lt/

CMS Walrus

Walrus Um sistema gerenciador de conteúdo web ou CMS (Content Management System), é um programa para criação de sites, oferecendo ferramentas variadas para publicar os conteúdo. Os mais famosos são WordPress, Joomla e Drupal. O apresentado neste artigo é compatível com Java.

Walrus

Fácil de configurar e desfazer/refazer características tornam Walrus altamente recomendado e adequado CMS para o governo e empresas sem fins lucrativos.


Pulse CMS Java

Pulse. O Pulse é uma estrutura baseada em Java e uma solução de portal que oferece padrões fáceis de usar e extensíveis para a criação de aplicativos Web de navegador ricos e websites responsivos. Ele traz um monte de componentes inovadores e poderosos, incluindo gerenciamento de conteúdo, lojas na web, gerenciamento de usuários e muito mais.

Resolvi publicar uma secção de CMS (Content Management System) compatível com a Linguagem Java. A maioria destes gerendiadores de sites não são open source e gratuitos, contudo atendem as espectativas dos amantes desta linguagem.

Pulse Acesse a página para conhecer mais sobre este JAVA CMS: http://pulse.torweg.org/site/Pulsar/en_US.CMS.displayCMS.13./pulse—the-java-web-application-framework

CMS Pulse

Pulse Um sistema gerenciador de conteúdo web ou CMS (Content Management System), é um programa para criação de sites, oferecendo ferramentas variadas para publicar os conteúdo. Os mais famosos são WordPress, Joomla e Drupal. O apresentado neste artigo é compatível com Java.

Pulse

Algumas de suas principais características incluem um sistema de arquivos virtual baseado em WebDAV para gerenciamento de ativos digitais, gerenciamento de usuários e papéis maduros, internacionalização interna e muito mais.


OpenEdit CMS Java

OpenEdit. OpenEdit CMS é uma ferramenta dinâmica para gerenciar o conteúdo do site com recursos de edição on-line. Construído em arquitetura de código aberto, o OpenEdit fornece recursos como gerenciador de usuários, gerenciador de arquivos, controle de versão e ferramentas de notificação para o gerenciamento de sites ricos em mídia.

Resolvi publicar uma secção de CMS (Content Management System) compatível com a Linguagem Java. A maioria destes gerendiadores de sites não são open source e gratuitos, contudo atendem as espectativas dos amantes desta linguagem.

OpenEdit Acesse a página para conhecer mais sobre este JAVA CMS: http://www.openedit.org/

CMS OpenEdit

OpenEdit Um sistema gerenciador de conteúdo web ou CMS (Content Management System), é um programa para criação de sites, oferecendo ferramentas variadas para publicar os conteúdo. Os mais famosos são WordPress, Joomla e Drupal. O apresentado neste artigo é compatível com Java.

OpenEdit

O OpenCMS possui plugins de nível empresarial como eCommerce, Content Management, Blog, Calendário de Eventos, Ferramentas de Rede Social e muito mais.


OpenCMS CMS Java

OpenCMS. O OpenCMS baseia-se na tecnologia Java e XML que lhe permite criar sites e portais altamente personalizáveis ​​e interativos. Ele vem integrado com um editor WYSIWYG e mecanismo de modelo completo, que é totalmente compatível com os padrões do W3C.

Resolvi publicar uma secção de CMS (Content Management System) compatível com a Linguagem Java. A maioria destes gerendiadores de sites não são open source e gratuitos, contudo atendem as espectativas dos amantes desta linguagem.

OpenCMS Acesse a página para conhecer mais sobre este JAVA CMS: http://www.opencms.org/en/index.html

CMS OpenCMS

OpenCMS Um sistema gerenciador de conteúdo web ou CMS (Content Management System), é um programa para criação de sites, oferecendo ferramentas variadas para publicar os conteúdo. Os mais famosos são WordPress, Joomla e Drupal. O apresentado neste artigo é compatível com Java.

OpenCMS

O OpenCMS pode ser implantado tanto em um ambiente de código aberto (Linux, Apache, Tomcat, MySQL) quanto em um ambiente comercial (Windows NT, IIS, BEA Weblogic, Oracle)


Nuxeo CMS Java

Nuxeo. Nuxeno é um poderoso CMS de código aberto construído em arquitetura baseada em Java. Ele oferece soluções relacionadas ao gerenciamento de documentos, gerenciamento de casos e gerenciamento de ativos digitais. É livre de licenciamento gratuito, mas não os custos quando chegar a ajuda de suporte e manutenção.

Resolvi publicar uma secção de CMS (Content Management System) compatível com a Linguagem Java. A maioria destes gerendiadores de sites não são open source e gratuitos, contudo atendem as espectativas dos amantes desta linguagem.

Nuxeo Acesse a página para conhecer mais sobre este JAVA CMS: http://www.nuxeo.com/en

CMS Nuxeo

Nuxeo Um sistema gerenciador de conteúdo web ou CMS (Content Management System), é um programa para criação de sites, oferecendo ferramentas variadas para publicar os conteúdo. Os mais famosos são WordPress, Joomla e Drupal. O apresentado neste artigo é compatível com Java.

Nuxeo

Ele tem fortes grupos de clientes, incluindo a Electronic Arts, Marinha dos EUA e como afirmado no site da empresa, ele tem sido usado em mais de 145 países em milhares de organizações.