<?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; branches</title>
	<atom:link href="http://blog.chernando.eu/tag/branches/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.chernando.eu</link>
	<description>Simplemente otro blog personal</description>
	<lastBuildDate>Wed, 01 Feb 2012 12:58:24 +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%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Soldat&#039;s log &#187; branches</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>CVS: Manejando ramas</title>
		<link>http://blog.chernando.eu/2007/03/07/cvs-ramas/</link>
		<comments>http://blog.chernando.eu/2007/03/07/cvs-ramas/#comments</comments>
		<pubDate>Wed, 07 Mar 2007 18:32:06 +0000</pubDate>
		<dc:creator>chernando</dc:creator>
				<category><![CDATA[Desarrollo Software]]></category>
		<category><![CDATA[branches]]></category>
		<category><![CDATA[control versiones]]></category>
		<category><![CDATA[cvs]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://chernando.wordpress.com/2007/03/07/cvs-branches/</guid>
		<description><![CDATA[Hace algunos años publiqué una breve guía práctica de CVS, incompleta. Aprovechando que tengo algo de tiempo he decidido tachar este punto de mi lista de tareas Creando una nueva rama Antes de nada hemos de recordar que necesitamos una versión etiquetada, por ejemplo &#8216;v1_2&#8242;, sobre la que vamos a trabajar. Comenzamos extrayendo la versión [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chernando.eu&amp;blog=827394&amp;post=14&amp;subd=chernando&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hace algunos años publiqué una breve <a href="http://acm.asoc.fi.upm.es/~chernando/doc/cvs/">guía práctica de CVS</a>, incompleta. Aprovechando que tengo algo de tiempo he decidido tachar este punto de mi lista de tareas <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>Creando una nueva rama</strong></p>
<p>Antes de nada hemos de recordar que necesitamos una versión etiquetada, por ejemplo &#8216;v1_2&#8242;, sobre la que vamos a trabajar. Comenzamos extrayendo la versión a nuestro entorno de trabajo:</p>
<p><code>$ cvs checkout -d proyecto-1.2 -r v1_2 proyecto</code></p>
<p>Procedamos a crear la rama propiamente dicha:</p>
<p><code>$ cd proyecto-1.2<br />
$ cvs tag -b v1_2-branch</code></p>
<p>El nombre de la rama es un gusto personal, yo prefiero añadir <em>-branch</em> aunque he visto <em>-bugfixes</em> o combinaciones de ambos.</p>
<p>Con estos simples pasos ya disponemos de una rama de desarrollo a la que podemos acceder, por ejemplo para hacer un cambio a la rama:</p>
<p><code>$ pwd<br />
/home/chernando/proyecto<br />
$ cvs up -r v1_2-branch</code></p>
<p>Si revisamos el estado de &#8216;main.c&#8217; podemos ver que está incluido en una rama:</p>
<p><code>$ cvs -q status main.c<br />
==================================================================<br />
Working revision:    1.1.2.1 2007-03-07 19:06:39 +0100<br />
Repository revision: 1.1.2.1 /tmp/repositorio/proyecto/main.c,v<br />
Commit Identifier:   QwJwh9fAP56fxb9s<br />
Sticky Tag:          v1_2-branch (branch: 1.1.2)<br />
Sticky Date:         (none)<br />
Sticky Options:      (none)</code></p>
<p>Importante fijarse en el cambio en la numeración, a partir de ahora en vez de avanzar con 1.<em>X</em>, se avanza con 1.<em>N</em>.<em>X</em>, siendo <em>N</em> la numeración de la rama.</p>
<p><strong>Mezclando dos ramas</strong></p>
<p>Bien, supongamos que queremos traernos cambios realizados desde una rama,&#8217;v1_2-branch&#8217;, a la principal. Muy fácil, haremos como si forzáramos un cambio de una versión anterior pero especificando la rama en vez de la revisión:</p>
<p><code>$  cvs update -j v1_2-branch main.c<br />
RCS file: /tmp/repositorio/proyecto/main.c,v<br />
retrieving revision 1.1<br />
retrieving revision 1.1.2.1<br />
Merging differences between 1.1 and 1.1.2.1 into main.c<br />
$ cvs commit -m 'Cambios desde la rama v1.2' main.c</code></p>
<p>Hay un problema: no podemos hacer esta jugada dos veces seguidas sin dar conflictos <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Supongamos que queremos volver a traernos un cambio desde la rama &#8216;v1_2-branch&#8217; con el comando <em>update</em>. El diferencial de cambios para hacer la mezcla se hace desde la base de la derivación de la rama, si ya hemos aplicado parte de ese diferencial en una actualización anterior provocará irremediablemente un conflicto.</p>
<p>La solución para evitar el engorro de trabajar con conflictos es utilizar una referencia de la rama justo después de traer los cambios. Dos opciones principales:</p>
<ul>
<li>Etiquetar la rama cada vez que se traen cambios de ellas, &#8216;v1_2- branch-fixes-1&#8242;.</li>
<li>Utilizar las nociones de tiempo de CVS, &#8216;v1_2-branch:3 days ago&#8217;.</li>
</ul>
<p>La idea intuitiva es la de señalar en el historial de la rama dos marcas de tiempo, la última que se llevo a la principal y el actual de la rama, y aplicar los cambios que se realizaron entre esos dos instantes en la rama en la principal. Por ejemplo:</p>
<p><code>$ cvs update -j v1_2-branch-fixes-1 -j v1_2branch</code></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/chernando.wordpress.com/14/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/chernando.wordpress.com/14/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chernando.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chernando.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chernando.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chernando.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chernando.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chernando.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chernando.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chernando.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chernando.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chernando.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chernando.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chernando.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chernando.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chernando.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chernando.eu&amp;blog=827394&amp;post=14&amp;subd=chernando&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chernando.eu/2007/03/07/cvs-ramas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/062f1c6b266029372b1705c017069e68?s=96&#38;d=wavatar&#38;r=PG" medium="image">
			<media:title type="html">chernando</media:title>
		</media:content>
	</item>
	</channel>
</rss>
