<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Soldat&#039;s log &#187; svk</title>
	<atom:link href="http://blog.chernando.eu/tag/svk/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.chernando.eu</link>
	<description>Simplemente otro blog personal</description>
	<lastBuildDate>Thu, 22 Jul 2010 20:09:59 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.chernando.eu' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/0eb8b53f0c14a196e38f0abba5641993?s=96&#038;d=http://s2.wp.com/i/buttonw-com.png</url>
		<title>Soldat&#039;s log &#187; svk</title>
		<link>http://blog.chernando.eu</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.chernando.eu/osd.xml" title="Soldat&#039;s log" />
	<atom:link rel='hub' href='http://blog.chernando.eu/?pushpress=hub'/>
		<item>
		<title>svk</title>
		<link>http://blog.chernando.eu/2006/01/26/svk-mas-que-un-subversion-distribuido/</link>
		<comments>http://blog.chernando.eu/2006/01/26/svk-mas-que-un-subversion-distribuido/#comments</comments>
		<pubDate>Thu, 26 Jan 2006 10:21:01 +0000</pubDate>
		<dc:creator>chernando</dc:creator>
				<category><![CDATA[Desarrollo Software]]></category>
		<category><![CDATA[control versiones]]></category>
		<category><![CDATA[dcvs]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svk]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://chernando.wordpress.com/2006/01/26/svk-mas-que-un-subversion-distribuido/</guid>
		<description><![CDATA[En la línea de la última entrada voy a comentar brevemente un ejemplo de uso / tutorial de svk. svk está basado en el sistema de ficheros de subversion, está escrito en Perl y cuenta con varias mejoras que le permiten ser un decentralized version control system. Su principal objetivo es permitir a un desarrollador [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chernando.eu&amp;blog=827394&amp;post=7&amp;subd=chernando&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>En la línea de la <a href="http://chernando.wordpress.com/2006/01/25/sistemas-de-control-de-versiones-distribuidos/">última entrada</a> voy a comentar brevemente un ejemplo de uso / tutorial de  <a href="http://svk.elixus.org/">svk</a>.</p>
<p>svk está basado en el sistema de ficheros de <a href="http://subversion.tigris.org/">subversion</a>, está escrito en Perl y cuenta con varias mejoras que le permiten ser un <em>decentralized version control system</em>. Su principal objetivo es permitir a un desarrollador disponer de sus propias ramas privadas facilitando enormemente el proceso de <em>merge</em>.</p>
<p>La situación es la siguiente: disponemos de un repositorio central con un proyecto en el que estamos trabajando. Mediante svk vamos a hacer una copia del repositorio, vamos a mantenerlo actualizado y vamos a crear nuestra propia rama de trabajo.</p>
<p><span id="more-7"></span></p>
<p><strong>Preparando nuestro entorno</strong></p>
<p>En primer lugar crearemos un repositorio en el que vamos a guardar la copia del repositorio central:</p>
<p><code>svk depotmap --init</code></p>
<blockquote><p>Este comando creará en <tt>~/.svk/local</tt> un repositorio típico de subversion al que podremos acceder cómodamente mediante la ruta <tt>//</tt>.</p></blockquote>
<p>Disponemos de <tt>//</tt> para guardar los proyectos que necesitemos, en este caso realizaremos una copia local de un proyecto externo.</p>
<p><code>svk mirror https://acm.asoc.fi.upm.es/svn/jurix/jailexec/trunk //jailexec</code></p>
<p>y para actualizar su contenido:</p>
<p><code>svk sync //jailexec</code></p>
<blockquote><p>Durante el proceso de este comando veremos como svk descarga todo los commits realizados en el repositorio central y los replica en nuestro repositorio local, de esta forma conseguiremos disponer de una copia local de todo el repositorio (incluido historial y diferencias).</p>
<p><strong>Importante</strong>: resaltar que utilizamos la ruta <tt>//jailexec</tt> para especificar el lugar en el que hacemos la copia.</p></blockquote>
<p>Bien, ya tenemos todo lo necesario. Podemos desconectarnos de la red hasta que necesitemos o bien subir nuevos cambios o bien actualizarnos con los cambios del repositorio central.</p>
<p><strong>El trabajo del día a día</strong></p>
<p>Ahora crearemos nuestra copia local de trabajo, al igual que hacíamos con svn o cvs:</p>
<p><code>svk checkout //jailexec</code></p>
<blockquote><p>Esto creará un directorio <tt>jailexec</tt> en el que tendremos una copia local de trabajo. Un detalle curioso es que no existen directorios especiales <tt>.svk</tt> ya que las copias de trabajo se gestionan internamente.  Hay que tenerlo en cuenta a la hora de eliminar una copia de trabajo, un simple <code>rm -rf proyecto</code> no es recomendable.</p></blockquote>
<p>A partir de aquí el ciclo de trabajo es el mismo. La única diferencia es que estamos trabajando contra un repositorio local &#8211;nuestra copia del repositorio central&#8211; por lo que algunos comandos tendrán comportamientos distintos.</p>
<ul>
<li><tt>commit</tt>: si realizamos un commit contra nuestro repositorio svk forzará automáticamente el envio contra el repositorio central, es transparente al usuario.</li>
<li><tt>update</tt>: actualizaremos respecto a nuestro repositorio, por lo que si no realizamos un <tt>sync</tt> previo (apartado anterior) no tiene mucho sentido.</li>
</ul>
<p><strong>Manejo de ramas</strong></p>
<p>Hasta el momento disponemos de una copia del repositorio central, vamos a trabajar con las ramas privadas:</p>
<p><code>svk cp -p //jailexec //local/jailexec</code></p>
<blockquote><p>La opción <tt>-p</tt> es para crear <tt>//local</tt>.</p></blockquote>
<p>Hemos creado <tt>//local/jailexec</tt> como una rama solamente disponible en nuestro repositorio local, nuestra rama privada.</p>
<p><code>svk checkout //local/jailexec</code><br />
o<br />
<code>svk switch //local/jailexec</code></p>
<p>Nos prepara el entorno de trabajo sobre nuestra rama privada. A partir de ahora los cambios y el historial permaneceran en nuestro repositorio, sin conocimiento alguno del repositorio central.</p>
<p>Supongamos que hemos estado trabajando sobre una rama privada y queremos subir los cambios al repositorio central. Aquí svk nos facilita las cosas:</p>
<p><code>svk smerge //local/jailexec //jailexec</code></p>
<blockquote><p>Este comando juntará ambas ramas de forma automática. No olvidemos que <tt>//jailexec</tt> es una copia del repositorio central por lo que al juntar ambas ramas se forzará el envio al repositorio central.</p></blockquote>
<p>Con un solo comando podemos enviar todos los cambios que hemos realizado en nuestra rama privada <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>La única pega resulta ser la actualización de nuestra rama privada respecto a las actualizaciones del repositorio central:</p>
<p><code>svk sync //jailexec</code><br />
<code>svk smerge //jailexec //local/jailexec</code><br />
<code>svk up</code> (en el directorio de nuestra copia local)</p>
<blockquote><p>Actualizamos nuestro repositorio local y luego juntamos los cambios en nuestra rama local. Por último actualizamos nuestra copia local de trabajo.</p></blockquote>
<p><strong>Resumen</strong></p>
<p>svk nos ofrece una estructura estupenda sobre la que trabajar y/o hacer copias de repositorios (oficialmente soporta Subversion, CVS y Perforcer) con una sintaxis idéntica a la de subversion.</p>
<p>El inconveniente es que el manejo resulta un poco complicado durante los primeros días.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/chernando.wordpress.com/7/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/chernando.wordpress.com/7/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chernando.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chernando.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chernando.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chernando.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chernando.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chernando.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chernando.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chernando.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chernando.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chernando.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chernando.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chernando.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chernando.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chernando.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chernando.eu&amp;blog=827394&amp;post=7&amp;subd=chernando&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chernando.eu/2006/01/26/svk-mas-que-un-subversion-distribuido/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/062f1c6b266029372b1705c017069e68?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chernando</media:title>
		</media:content>
	</item>
	</channel>
</rss>