<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Valdinei dos Santos &#187; controle código</title>
	<atom:link href="http://www.valdineidossantos.com/tag/controle-codigo/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.valdineidossantos.com</link>
	<description>programação, sistemas operacionais e assuntos web</description>
	<lastBuildDate>Sat, 27 Feb 2010 20:09:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Utilizando svn em linha de comando</title>
		<link>http://www.valdineidossantos.com/2010/02/utilizando-svn-em-linha-de-comando/</link>
		<comments>http://www.valdineidossantos.com/2010/02/utilizando-svn-em-linha-de-comando/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 20:02:50 +0000</pubDate>
		<dc:creator>Valdinei</dc:creator>
				<category><![CDATA[geral]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[controle código]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[versionamento]]></category>

		<guid isPermaLink="false">http://www.valdineidossantos.com/?p=165</guid>
		<description><![CDATA[Estava trabalhando em projeto com o @Joe e como estavamos em lugares diferentes tinhamos que sincronizar nosso trabalho assim sempre que terminassemos um feature simples como uma página, um layout ou qualquer coisa simples mas funcional nós mandamos para o servidor e o outro poderia pegar as atualizações e seguir com seus próprios códigos. Para [...]]]></description>
			<content:encoded><![CDATA[<p>Estava trabalhando em projeto com o <a title="@joerabelo" href="http://twitter.com/joerabelo" target="_blank"> @Joe </a> e como estavamos em lugares diferentes tinhamos que sincronizar nosso trabalho assim sempre que terminassemos um feature simples como uma página, um layout ou qualquer coisa simples mas funcional nós mandamos para o servidor e o outro poderia pegar as atualizações e seguir com seus próprios códigos.</p>
<p>Para que possamos fazer isso é necessário que nossos códigos estejam sob um servidor de arquivos que faz esse controle de versionamento e outras coisas.</p>
<p>Esse servidor é conhecido como subversion ( <a title="http://subversion.tigris.org/" href="http://subversion.tigris.org/" target="_blank">http://subversion.tigris.org/</a> ) ele nos dá inúmeras possibilidades como adicionar arquivos, remover arquivos, sincronizar, verificar updates, avançar para novas versões, retroceder para versões anteriores de arquivos e outras coisas mais.  Assim não precisamos ficar fazendo os malditos .old, .old1, .old2, .old3.</p>
<p>Depois dessa micro historinha vamos aos codigos.</p>
<p>Para fazermos o download de um projeto para trabalharmos teremos que ter um usuário e senha cadastrados junto ao servidor isso quem tem de fazer é o administrador do projeto.</p>
<p>Considerando que você tenha um usuário e senha valido no servidor vamos listar as pastas e arquivos do projeto.</p>
<pre class="brush: shell"># Lista a raiz do projeto
svn list svn://url/servidor</pre>
<pre class="brush: shell"># Lista a pasta path do projeto
svn list svn://url/servidor/path</pre>
<p>Seria básicamente um ls no servidor svn.</p>
<p>Agora vamos fazer o download ou melhor o checkout do projeto para nossa máquina para começarmos os trabalhos, afinal tempo é dinheiro.</p>
<pre class="brush: shell">#fazendo o download da pasta path para uma url local
svn co svn://url/servidor/path /url/onde/ficara/projeto</pre>
<p>Caso você não esteja logado vai ser requisitado a senha e o usuário que você esta usando no momento na maquina local vai ser<br />
passado como parametro para o checkout no servidor svn</p>
<p>Caso você tenha outro usuário cadastrado no servidor svn você pode passar esse usário como parâmetro.</p>
<pre class="brush: shell">svn --username outroUsuario co svn://url/servidor/path /url/onde/ficara/projeto</pre>
<p>A cada novo commit (envio de codigos para o servidor svn) será criado um novo número de controle de versão (revision).  Pensando que poderiamos mandar um código incorreto(bugado) para o servidor e um companheiro queira pegar  uma versão anterior ou seja a ultima versão correta do projeto pois você ou alguém mandou um código bugado.<br />
Vamos pedir ao servidor informações sobre o projeto para sabermos o número da última revisão.</p>
<pre class="brush: shell">#Descobrindo informações sobre o projeto
# o que interessa neste momento e saber qual o numero de revision
svn info svn://url/servidor/path
#Visto o numero da ultima revisão podemos escolher qualquer versão anterior a essa passando o -r no checkout
svn --username outroUsuario -r numerorevisao co svn://url/servidor/path /url/onde/ficara/projeto</pre>
<p>Pronto temos os códigos todos em nossa máquina agora mãos a obra vamos trabalhar com codificação.</p>
<p>Quando terminarmos vamos precisar mandar nossa modificações para o servidor, para isso temos um comando bem bacana e simples.</p>
<pre class="brush: shell">#Voce pode commitar uma pasta inteira ou  um arquivo você escolhe
svn commit -m "Seu comentário ou justificativa para as mudanças do codigo isso vai para o log do commit"  /path/a/ser/commitado /path/arquivo/commitar</pre>
<p>Podemos verificar todos os arquivos que estão modificados em seu computador e no servidor.</p>
<pre class="brush: shell">svn status -u path/a/ser/verificado</pre>
<p>Com alguma frequência  dois desenvolvedores modificam o mesmo arquivo quando isso acontecer o arquivo vai ser marcado como conflict<br />
Para ver as diferenças é possivel fazer um</p>
<pre class="brush: shell"> svn diff  arquivoNovo arquivoVelho</pre>
<p>Depois de ter corrigidos todos os erros basta marcar esse arquivo como resolvido.</p>
<pre class="brush: shell"> svn resolv  arquivoNovo</pre>
<p>Logo</p>
<pre class="brush: shell"> svn resolved  arquivoNovo</pre>
<p>Para depois fazer seu commit corretamente, agora como você vai resolver os conflitos do arquivo&#8230;. isso é com você &#8230;</p>
<p>E por ultimo e não menos importante podemos ver o commit das pessoas envolvidas no projeto além de seus comentários e arquivos modificados.</p>
<pre class="brush: shell">#Pegando a saida do log e redirecionando para o less caso seja muito grande esse log.
svn log | less</pre>
<p>E para uma leitura completa do log escolha um revision r visto no log visualizado anteriormente.</p>
<pre class="brush: shell">svn -r  -v  log</pre>
<p>Atenção a dicas básicas, nunca apague fisicamente um arquivo com nosso amigo rm, utilize</p>
<pre class="brush: shell">svn del /path/arquivo
#ou
svn rm /path/arquivo

#ou para pasta com recursividade
svn rm -r /path/past</pre>
<p>E para adicição de arquivos ao projeto.</p>
<pre class="brush: shell">svn add /path/arquivo

#ou para pasta //Nao testado <img src='http://www.valdineidossantos.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  

svn add -r /path/pasta</pre>
<p>Acredito que com esses comandos básicos já de para se divertir a vontade com o subversion, aconselho sempre usar um servidor de controle de versão. Existem outros como o CVS, GIT dentre outros mais esses ainda não experimentei , quando o fizer posto aqui alguma coisa.</p>
<p>Abraços</p>
<p>Dinei</p>
<!-- boo-widget start -->
          <script type="text/javascript">
            bb_keywords = "svn";
            bb_bid  = "135874";
            bb_lang = "pt-BR";
            bb_name = "custom";bb_limit = "9";bb_format = "bbo";
          </script>
          <script type="text/javascript" src="http://widgets.boo-box.com/javascripts/embed.js"></script>
          <!-- boo-widget end -->

<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-shr">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.valdineidossantos.com/2010/02/utilizando-svn-em-linha-de-comando/feed" rel="nofollow" class="external" title="Acompanhar comentários deste artigo?">Acompanhar comentários deste artigo?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.valdineidossantos.com/2010/02/utilizando-svn-em-linha-de-comando/&amp;title=Utilizando+svn+em+linha+de+comando" rel="nofollow" class="external" title="Compartilhar nodel.icio.us">Compartilhar nodel.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.valdineidossantos.com/2010/02/utilizando-svn-em-linha-de-comando/&amp;title=Utilizando+svn+em+linha+de+comando" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.diigo.com/post?url=http://www.valdineidossantos.com/2010/02/utilizando-svn-em-linha-de-comando/&amp;title=Utilizando+svn+em+linha+de+comando&amp;desc=Estava%20trabalhando%20em%20projeto%20com%20o%20%20%40Joe%20%20e%20como%20estavamos%20em%20lugares%20diferentes%20tinhamos%20que%20sincronizar%20nosso%20trabalho%20assim%20sempre%20que%20terminassemos%20um%20feature%20simples%20como%20uma%20p%C3%A1gina%2C%20um%20layout%20ou%20qualquer%20coisa%20simples%20mas%20funcional%20n%C3%B3s%20mandamos%20para%20o%20servidor%20e%20o%20outro%20poderia%20pegar%20as%20atu" rel="nofollow" class="external" title="Publicar noDiigo">Publicar noDiigo</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.valdineidossantos.com/2010/02/utilizando-svn-em-linha-de-comando/&amp;t=Utilizando+svn+em+linha+de+comando" rel="nofollow" class="external" title="Compartilhar noFacebook">Compartilhar noFacebook</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.valdineidossantos.com/2010/02/utilizando-svn-em-linha-de-comando/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-hotmail">
			<a href="http://mail.live.com/?rru=compose?subject=Utilizando+svn+em+linha+de+comando&amp;body=Link: http://www.valdineidossantos.com/2010/02/utilizando-svn-em-linha-de-comando/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A Estava%20trabalhando%20em%20projeto%20com%20o%20%20%40Joe%20%20e%20como%20estavamos%20em%20lugares%20diferentes%20tinhamos%20que%20sincronizar%20nosso%20trabalho%20assim%20sempre%20que%20terminassemos%20um%20feature%20simples%20como%20uma%20p%C3%A1gina%2C%20um%20layout%20ou%20qualquer%20coisa%20simples%20mas%20funcional%20n%C3%B3s%20mandamos%20para%20o%20servidor%20e%20o%20outro%20poderia%20pegar%20as%20atu" rel="nofollow" class="external" title="Email this via Hotmail">Email this via Hotmail</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.mister-wong.com/addurl/?bm_url=http://www.valdineidossantos.com/2010/02/utilizando-svn-em-linha-de-comando/&amp;bm_description=Utilizando+svn+em+linha+de+comando&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Adicionar aoMister Wong">Adicionar aoMister Wong</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://www.valdineidossantos.com/2010/02/utilizando-svn-em-linha-de-comando/&amp;title=Utilizando+svn+em+linha+de+comando" rel="nofollow" class="external" title="Compartilhar noMixx">Compartilhar noMixx</a>
		</li>
		<li class="shr-orkut">
			<a href="http://promote.orkut.com/preview?nt=orkut.com&amp;tt=Utilizando+svn+em+linha+de+comando&amp;du=http://www.valdineidossantos.com/2010/02/utilizando-svn-em-linha-de-comando/&amp;cn=Estava%20trabalhando%20em%20projeto%20com%20o%20%20%40Joe%20%20e%20como%20estavamos%20em%20lugares%20diferentes%20tinhamos%20que%20sincronizar%20nosso%20trabalho%20assim%20sempre%20que%20terminassemos%20um%20feature%20simples%20como%20uma%20p%C3%A1gina%2C%20um%20layout%20ou%20qualquer%20coisa%20simples%20mas%20funcional%20n%C3%B3s%20mandamos%20para%20o%20servidor%20e%20o%20outro%20poderia%20pegar%20as%20atu" rel="nofollow" class="external" title="Promover noOrkut">Promover noOrkut</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.valdineidossantos.com/2010/02/utilizando-svn-em-linha-de-comando/&amp;title=Utilizando+svn+em+linha+de+comando" rel="nofollow" class="external" title="Compartilhar noReddit">Compartilhar noReddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://www.valdineidossantos.com/2010/02/utilizando-svn-em-linha-de-comando/&amp;title=Utilizando+svn+em+linha+de+comando" rel="nofollow" class="external" title="Encontrou algo bom? Compartilhe no StumbleUpon">Encontrou algo bom? Compartilhe no StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://www.valdineidossantos.com/2010/02/utilizando-svn-em-linha-de-comando/" rel="nofollow" class="external" title="Compartilhar noTechnorati">Compartilhar noTechnorati</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=RT+%40valdineisantos%3A+Utilizando+svn+em+linha+de+comando+-+http://tr.im/Q34v&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-yahoomail">
			<a href="http://compose.mail.yahoo.com/?Subject=Utilizando+svn+em+linha+de+comando&amp;body=Link: http://www.valdineidossantos.com/2010/02/utilizando-svn-em-linha-de-comando/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A Estava%20trabalhando%20em%20projeto%20com%20o%20%20%40Joe%20%20e%20como%20estavamos%20em%20lugares%20diferentes%20tinhamos%20que%20sincronizar%20nosso%20trabalho%20assim%20sempre%20que%20terminassemos%20um%20feature%20simples%20como%20uma%20p%C3%A1gina%2C%20um%20layout%20ou%20qualquer%20coisa%20simples%20mas%20funcional%20n%C3%B3s%20mandamos%20para%20o%20servidor%20e%20o%20outro%20poderia%20pegar%20as%20atu" rel="nofollow" class="external" title="Email this via Yahoo! Mail">Email this via Yahoo! Mail</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.valdineidossantos.com/2010/02/utilizando-svn-em-linha-de-comando/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
