<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-33094931</id><updated>2011-10-17T16:10:45.081-07:00</updated><category term='rollback'/><category term='revision'/><category term='Subversion'/><category term='commit'/><category term='merge'/><title type='text'>Sub-Subversion</title><subtitle type='html'>Sub- is a prefix, from Latin, meaning "under". Its common opposite is super-, which is cognate with over.&lt;br&gt;
Subversion (also known as svn) is a version control system.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sub-subversion.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sub-subversion.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Grégoire</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-33094931.post-6250219437535175348</id><published>2009-05-15T00:37:00.000-07:00</published><updated>2009-05-15T00:52:30.670-07:00</updated><title type='text'>In the corporate market</title><content type='html'>&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;Even if centralized version control vanishes from the open source&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;world, I have a feeling it will be around for a *long* time in the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;world of corporate development.  Subversion is just starting to get&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;competitive with big commerical systems like Perforce and Clearcase --&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;especially now that we've added merge-tracking features.  This market&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;isn't about to go away any time soon.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ben Collins-Sussman, 2007-06-28, &lt;a href="http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&amp;amp;dsMessageId=898500"&gt;Re: A word of thanks to the Subversion team&lt;/a&gt;&lt;/blockquote&gt;Although I'm not sure that Subversion will vanish from the Open Source world, how damn I agree with Mr Collins-Sussman. Subversion is ready for the corporate market and has a few real advantages over commercial product:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;price&lt;br /&gt;&lt;/li&gt;&lt;li&gt;easy to understand (and this is a true winner). Although I don't know about Perforce, I can tell that ClearCase is not for dummies.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Platform support and integration&lt;/li&gt;&lt;li&gt;fast setup. Moving a dev team from nothing to subversion should take no longer than a week of work (excluding training).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;nearly zero admin job.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I'm thinking of getting a new post on this blog, something called &lt;span style="font-style: italic;"&gt;how to win with Subversion&lt;/span&gt;? so stay tuned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33094931-6250219437535175348?l=sub-subversion.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default/6250219437535175348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default/6250219437535175348'/><link rel='alternate' type='text/html' href='http://sub-subversion.blogspot.com/2009/05/in-corporate-market.html' title='In the corporate market'/><author><name>Grégoire</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-33094931.post-1387958633354992950</id><published>2009-04-16T03:49:00.000-07:00</published><updated>2009-04-17T05:21:10.523-07:00</updated><title type='text'>Why you should use subversion 1.6: Relative URLs</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Introduction:&lt;/span&gt;&lt;br /&gt;Now that &lt;a href="http://subversion.tigris.org/servlets/NewsItemView?newsItemID=2270"&gt;Subversion 1.6.1 is out&lt;/a&gt;, improving and &lt;a href="http://svn.collab.net/repos/svn/tags/1.6.1/CHANGES"&gt;fixing a few things &lt;/a&gt;in Subversion 1.6, it is time for us to review some of the most important features provided by this new release. Because a few of the new features of Subversion 1.6 remain undocumented and because the latest version of the &lt;a href="http://svnbook.red-bean.com/"&gt;Subversion book&lt;/a&gt; does not yet cover Subversion 1.6, I do hope you might find helpful information in these reviews.&lt;br /&gt;&lt;br /&gt;We will start today with the relative urls feature.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Relative urls and the svn:external property:&lt;/span&gt;&lt;br /&gt;Subversion 1.5 introduces some relative  URLs shortcuts available in  the &lt;a href="http://svnbook.red-bean.com/en/1.5/svn.advanced.externals.html"&gt;svn:external&lt;/a&gt; property.&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;Because a server URL tends to change more often than the structure of a Subversion repository, in the svn:externals property, you no longer need to write the full URL to each source directory.&lt;br /&gt;The syntax for each these shortcuts is:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;'&lt;span style="font-weight: bold;"&gt;../&lt;/span&gt;'&lt;br /&gt;URL of the parent directory on which           the svn:externals &lt;span style="font-size:100%;"&gt;&lt;code class="literal"&gt;&lt;/code&gt;&lt;/span&gt;property is           set.&lt;br /&gt;EG:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;url:  http://my.svn.domain.com/a/long/path/to/repo/and/to/my/property,&lt;br /&gt;shortcut '../' points to http://my.svn.domain.com/a/long/path/to/repo/and/to/my&lt;br /&gt;shortcut '../../' points to http://my.svn.domain.com/a/long/path/to/repo/and/to/&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;'&lt;span style="font-weight: bold;"&gt;^/&lt;/span&gt;'&lt;br /&gt;URL of the root of the repository in which the svn:externals property is set.&lt;br /&gt;EG:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;given the same url,&lt;br /&gt;shortcut '^/' points to http://my.svn.domain.com/a/long/path/to/repo&lt;/span&gt;&lt;/li&gt;&lt;li&gt;'&lt;span style="font-weight: bold;"&gt;/&lt;/span&gt;'&lt;br /&gt;URL of the Server which hosts the repository in which the svn:externals property is set.&lt;br /&gt;EG:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;given the same URL,&lt;br /&gt;shortcut '/' points to http://my.svn.domain.com&lt;/span&gt;&lt;/li&gt;&lt;li&gt;'&lt;span style="font-weight: bold;"&gt;//&lt;/span&gt;'&lt;br /&gt;Relative to protocol of server URL&lt;br /&gt;EG:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;given the same URL,&lt;br /&gt;shortcut '//' points to http://&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Because it has already been covered, please refer to the Subversion book for more information about the relative url shortcuts in the svn:ex&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Repository &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;root &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;relative urls from the command line:&lt;br /&gt;&lt;/span&gt;Although the support for relative urls in the svn:externals property is already a nice addition, the subversion development team went one step further by providing the &lt;a href="http://subversion.tigris.org/svn_1.6_releasenotes.html#repository-root-relative-urls"&gt;repository root relative urls&lt;/a&gt; feature with the command line client of Subversion 1.6&lt;span style="font-weight: bold;"&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;The syntax for each these shortcuts is:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;'&lt;span style="font-weight: bold;"&gt;^/&lt;/span&gt;'&lt;br /&gt;URL of the root of the repository.&lt;/li&gt;&lt;li&gt;'&lt;span style="font-weight: bold;"&gt;/&lt;/span&gt;'&lt;br /&gt;URL of the Server which hosts the repository&lt;/li&gt;&lt;li&gt;'&lt;span style="font-weight: bold;"&gt;//&lt;/span&gt;'&lt;br /&gt;Relative to protocol of server URL&lt;/li&gt;&lt;/ul&gt; For example, creating a simple tag prior to 1.6 you write:&lt;br /&gt;&lt;blockquote&gt;svn copy http://svn.domain.com/repo/trunk \&lt;br /&gt;                http://svn.domain.com/repo/tags/release-1.0 \&lt;br /&gt;                -m "Tagging for release 1.0"&lt;br /&gt;&lt;/blockquote&gt;Using the relative root URL in Subversion 1.6, it is much simpler:&lt;br /&gt;&lt;blockquote&gt;svn copy ^/trunk ^/tags/release-1.0 -m "Tagging for release 1.0"&lt;/blockquote&gt;The repository root relative syntax is '&lt;span style="font-weight: bold;"&gt;^/&lt;/span&gt;', not '&lt;span style="font-weight: bold;"&gt;^&lt;/span&gt;'. So use '&lt;span style="font-weight: bold;"&gt;^/&lt;/span&gt;' to refer to the root of the repository. URLs that begin with a '&lt;span style="font-weight: bold;"&gt;^&lt;/span&gt;' are reserved for future extension. Also '&lt;span style="font-weight: bold;"&gt;../&lt;/span&gt;' is a shortcut only available in the svn:externals property definition. It is possible to use it with the command line client.&lt;br /&gt;&lt;br /&gt;The benefits of the relative root URL feature are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Type less&lt;/li&gt;&lt;li&gt;Less typo error in the URL&lt;/li&gt;&lt;li&gt;Ease automation&lt;/li&gt;&lt;li&gt;Easier to move your repository from host to anotherr.&lt;/li&gt;&lt;/ul&gt;How does the magic works, you ask?&lt;br /&gt;The client start to look for any non relative URLs in the paramters list. If these non relative URLs are all identical, the client replace all relative URLs in the parameters list with the root URL of the non relative one. If they are no non relative URLs in the parameters list, the client uses repository root URL for the current working copy. If the current folder is not a current working copy, the client reports an error. The same goes in every other situations.&lt;br /&gt;&lt;br /&gt;An example you ask?&lt;br /&gt;The working copy is located in $WC. It currently is a checkout from the trunk of your project located in http://some.domain.com/svn/repo&lt;br /&gt;&lt;ul&gt;&lt;li&gt;svn copy http://some.domain.com/svn/repo/trunk ^/tags/release-1.0 -m "..."&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://some/domain.com/svn/repo/ is used to replace ^/&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;svn copy ^/trunk ^/tags/release-1.1 -m "..."&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;The above command fails provided it is started outside of a working copy&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;cd $WC ; &lt;span style="font-size:100%;"&gt;svn copy ^/trunk ^/tags/release-1.1 -m "..."&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;http://some/domain.com/svn/repo/ is used to replace ^/&lt;/span&gt;&lt;/li&gt;&lt;li&gt;svn switch ^/tags/release-1.0&lt;br /&gt;&lt;span style="font-style: italic;"&gt;successfully switch your working copy to http://some.domain.com/svn/repo/tags/release-1.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;source: &lt;a href="http://svn.collab.net/viewvc/svn/trunk/notes/cli-repo-root-relative-support.txt?view=markup"&gt;cli-repo-root-relative-support.txt&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33094931-1387958633354992950?l=sub-subversion.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default/1387958633354992950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default/1387958633354992950'/><link rel='alternate' type='text/html' href='http://sub-subversion.blogspot.com/2009/04/why-you-should-use-subversion-16.html' title='Why you should use subversion 1.6: Relative URLs'/><author><name>Grégoire</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-33094931.post-6292903557139263206</id><published>2009-04-15T03:08:00.000-07:00</published><updated>2009-04-15T06:07:44.833-07:00</updated><title type='text'>There is  a war out there.</title><content type='html'>I think we are at the golden age of free Version Control Software. Look at the few active examples below:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://bazaar-vcs.org/"&gt;Bazaar&lt;/a&gt;: Distributed Version Control System sponsored by Canonical Ltd, part of the GNU project and written in Python. Bazaar supports working with or without a central server and has support for working with some other revision control systems like Subversion.&lt;br /&gt;Available on all platform with Python 2.4 support.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.nongnu.org/cvs/"&gt;CVS&lt;/a&gt;: Centralized Source Control system, CVS is the Successor of RCS and  ancestor of Subversion.  CVS development is stalled (only 2 bug fixes release in 2 years, no new feature).&lt;br /&gt;Available on Unix like and Windows&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.darcs.net/"&gt;darcs&lt;/a&gt;: Distributed Version Control System written in Haskell by David Roundy. DARCS is built around Roundy's &lt;a href="http://darcs.net/manual/node9.html#Patch"&gt;theory of patch&lt;/a&gt;.&lt;br /&gt;Available on Unix, Linux, BSD Mac OS X and Windows&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.elegosoft.com/index.php?id=28&amp;amp;L=1"&gt;DVCS&lt;/a&gt;: Distributed Version Control System by ElegoSoft. DVCS extends the programs CVS and CVSup with functionality to distribute CVS repositories with local lines of development and automatically handles the synchronization of the distributed repositories in the background.&lt;br /&gt;Available on Unix, Linux, BSD, Mac OS X and Cygwin (Windows)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.fossil-scm.org/"&gt;Fossil&lt;/a&gt;: Fossil is a distributed software version control system that includes an integrated distributed wiki and an integrated distributed bug-tracking system all in a single, easy-to-use, stand-alone executable. Fossil is one of the latest DVCS to date and is written by D. Richard Hipp, the same guy who wrote &lt;a target="_blank" href="http://sqlite.org/"&gt;SQLite&lt;/a&gt;.&lt;br /&gt;To the best of my knowledge, it is available on Linux, Mac OS X and Windows.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt;: Distributed Version Control System originally written by Linus Torvalds for the Linux Kernel development after a Bitkeeper license issue. Git was inspired by &lt;a href="http://en.wikipedia.org/wiki/BitKeeper" title="BitKeeper"&gt;&lt;/a&gt;BitKeeper and Monotone with an emphasis and being fast.&lt;br /&gt;Available on Unix, Linux, BSD, Mac OS X and Cygwin (Windows).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.selenic.com/mercurial/wiki/"&gt;Mercurial&lt;/a&gt;: Distributed Version Control System written in Python and C, started at the same time and for the same reasons than Git. It is designed as a lightweight DVCS which efficiently handle very large distributed project.&lt;br /&gt;Available on Unix, Linux, BSD, Mac OS X and Windows&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.monotone.ca/"&gt;Monotone&lt;/a&gt;: Distributed Version Control System written in portable C++ using peer-to-peer         synchronization protocol, supporting        fully disconnected operations. Each participant maintains their own revision history store in a local SQLite database. Like Fossil, Monotone is held  in a single-file executable with a single-file SQLite      database repository. Focus on integrity over performance.&lt;br /&gt;Available on Unix, Linux, BSD, Mac OS X and Windows&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.opencvs.org/"&gt;OpenCVS&lt;/a&gt;: Version Control System developed by &lt;a href="http://www.openbsd.org/"&gt;the OpenBSD Project&lt;/a&gt; which aims at staying as compatible as possible with GNU cvs while being as secure as possible and enhance the access control on repository files. OpenCVS is not yet available (AFAIK) but is actively developed by the same team behind OpenSSH.&lt;br /&gt;Not (yet) available.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt;: is probably the most popular Version Control System. It is initiated in 2000 by CollabNet Inc and aims to be the successor of CVS, while fixing bugs and misfeatures of CVS.&lt;br /&gt;Available on Unix, Linux, BSD, Mac OS X and Windows.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;By the way, &lt;a href="http://www.google.com/search?q=Subversion+sucks"&gt;they&lt;/a&gt; &lt;a href="http://www.google.com/search?q=CVS+sucks"&gt;all&lt;/a&gt; &lt;a href="http://www.google.com/search?q=Git+sucks"&gt;suck&lt;/a&gt; &lt;a href="http://www.google.com/search?q=Mercurial+sucks"&gt;one&lt;/a&gt; &lt;a href="http://www.google.com/search?q=Monotone+sucks"&gt;way&lt;/a&gt; &lt;a href="http://www.google.com/search?q=darcs+sucks"&gt;or&lt;/a&gt; &lt;a href="http://www.google.com/search?q=DVCS+suck"&gt;another&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;As in every war, you have casualties. Please observe one minute of silence remembering:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.gnu.org/software/gnu-arch/"&gt;GNU Arch&lt;/a&gt;, from the GNU project&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.gnu.org/software/rcs/"&gt;RCS&lt;/a&gt;, from the GNU project&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/softwaremap/trove_list.php?form_cat=260"&gt;SCCS&lt;/a&gt;, from Bell Labs&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.nongnu.org/arx/"&gt;ArX&lt;/a&gt;, a fork of GNU Arch by Walter Landry&lt;/li&gt;&lt;li&gt;&lt;a href="http://bazaar-vcs.org/HistoryOfBazaar"&gt;Baz&lt;/a&gt;, another fork of GNU Arch, ancestor of Bazaar by Canonical ltd&lt;/li&gt;&lt;li&gt;&lt;a href="http://codeville.org/"&gt;Codeville&lt;/a&gt;, from Ross Cohen&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.opencm.org/"&gt;OpenCM&lt;/a&gt;, a VCS for the &lt;a href="http://www.eros-os.org/"&gt;EROS &lt;/a&gt;project&lt;/li&gt;&lt;li&gt;&lt;a href="http://mac.freshmeat.net/projects/fastcst/"&gt;FastCST&lt;/a&gt;, experimental tool written in ruby.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.superversion.org/"&gt;Supervision&lt;/a&gt;, by Stefan Reich &lt;/li&gt;&lt;/ul&gt;On the other hand, CVS is in the list because of its past fame and glory. Feel free to add more in the comments section.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33094931-6292903557139263206?l=sub-subversion.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default/6292903557139263206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default/6292903557139263206'/><link rel='alternate' type='text/html' href='http://sub-subversion.blogspot.com/2009/04/there-is-war-out-there.html' title='There is  a war out there.'/><author><name>Grégoire</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-33094931.post-8375500779242007271</id><published>2009-04-14T07:27:00.000-07:00</published><updated>2009-04-14T07:42:58.886-07:00</updated><title type='text'>Subversion hosted Issue tracker</title><content type='html'>Gregoire Welraeds wrote:&lt;br /&gt;&lt;blockquote&gt;&gt;&gt; I'm looking for subversion hosted bug tracker. That is why I&lt;br /&gt;&gt;&gt; mentioned DITrack and subissue in my previous post. I have the feeling that this &gt;&gt; 2 projects are stalled.&lt;br /&gt;&gt; Why do you want to use a tool for something it doesn't do well?&lt;/blockquote&gt;For a few reasons, among others:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Change Requests/issues are tightly related to the code source. IMO, they could even be part of the code, like comments and documentation are. Change request could be stored directly in Subversion repository, next to the source.&lt;/li&gt;&lt;li&gt;It could enforce teams to work with an issues tracker. To some extend, Subversion commits comments are just an extension of a Change Request description.&lt;/li&gt;&lt;li&gt;Subversion is very good at manipulating text files and their modifications. Why should I use something else?&lt;/li&gt;&lt;li&gt;There should be no need to setup additional infrastructure for basic needs of issue tracking. Why should I be using a third party software for something which is part of my code, especially if it is bundled with a third party database.&lt;/li&gt;&lt;li&gt;It would let me work while being offline. Once online: svn update . / svn commit . to import my modifications to the issue tracker.&lt;/li&gt;&lt;li&gt;A tight integration of an issue tracker in subversion would let us benefits from the inherent features of the VCS and stronger the interaction between the two. For instance, I could branch my change requests tree while creating a feature branch in the code. I could easily filter the changes requests by branches, be it maintenance, development, feature branches without having to artificially created the same in an external third tool.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;As a release manager with a team of 10 developers using Seapine TestTrack Pro*, I always end up to look at svn logs to document the release. These are only thoughts but I'm sure there are other advantages of having both VCS and Issue tracker integrated. BTW, the idea is not&lt;br /&gt;mine: see subissue, DITrack or even Fossil scm.&lt;br /&gt;&lt;br /&gt;* With subversion integration.&lt;br /&gt;For the above mentioned projects see:&lt;br /&gt;&lt;a href="http://subissue.tigris.org/"&gt;Subissue&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ditrack.org/"&gt;DITrack&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.fossil-scm.org/"&gt;Fossil&lt;/a&gt;&lt;br /&gt;Follow the remaining of this discussion on the &lt;a href="http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065&amp;amp;dsMessageId=1706793"&gt;Subversion users mailing list archives&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33094931-8375500779242007271?l=sub-subversion.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default/8375500779242007271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default/8375500779242007271'/><link rel='alternate' type='text/html' href='http://sub-subversion.blogspot.com/2009/04/subversion-hosted-issue-tracker.html' title='Subversion hosted Issue tracker'/><author><name>Grégoire</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-33094931.post-4544096722834016006</id><published>2009-04-12T15:26:00.000-07:00</published><updated>2009-04-29T03:22:50.371-07:00</updated><title type='text'>Rollback a change with a reverse merge (II)</title><content type='html'>An common use for &lt;span class="command"&gt;&lt;strong&gt;svn merge&lt;/strong&gt;&lt;/span&gt;         is to roll back a change that has already been committed. In August 2006, I wrote an article explaining how to manually &lt;a href="http://sub-subversion.blogspot.com/2006/08/rollback-change-with-reverse-merge.html"&gt;rollback a change with a reverse merge&lt;/a&gt;. The solution described by that time was based on a inverted range of revision:&lt;br /&gt;&lt;blockquote&gt;svn merge -r 481:480 &lt;/blockquote&gt;&lt;br /&gt;With the release of Subversion 1.4.0 in September 2006 (no luck), a new &lt;span style="font-style: italic;"&gt;-c&lt;/span&gt; paramater is added to the svn merge command:&lt;br /&gt;&lt;blockquote&gt;-c [--change] ARG :the change made by revision ARG (like -r ARG-1:ARG).&lt;br /&gt;                                  If ARG is negative this is like -r ARG:ARG-1&lt;/blockquote&gt;&lt;br /&gt;Using -c -ARG is equivalent to using -r ARG:ARG-1 but is more user friendly:&lt;br /&gt;&lt;blockquote&gt;svn merge -c -481&lt;/blockquote&gt;Do not forget to commit the modifications to your local copy after the merge:&lt;br /&gt;&lt;blockquote&gt;svn commit .&lt;/blockquote&gt;source: &lt;a href="http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html"&gt;basic merging&lt;/a&gt;, &lt;a href="http://svn.collab.net/repos/svn/trunk/CHANGES"&gt;subversion changelog&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33094931-4544096722834016006?l=sub-subversion.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default/4544096722834016006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default/4544096722834016006'/><link rel='alternate' type='text/html' href='http://sub-subversion.blogspot.com/2009/04/rollback-change-with-reverse-merge-ii.html' title='Rollback a change with a reverse merge (II)'/><author><name>Grégoire</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-33094931.post-6181396339989075138</id><published>2009-04-12T02:20:00.000-07:00</published><updated>2009-04-12T02:27:26.681-07:00</updated><title type='text'>First and foremost</title><content type='html'>&lt;span class="status-body"&gt;&lt;span class="entry-content"&gt;The very first entry in the &lt;a href="http://svn.collab.net/repos/svn/trunk/CHANGES"&gt;Subversion change log&lt;/a&gt; (05 June 2000):&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre&gt;&lt;blockquote&gt;* CVS repository created.&lt;/blockquote&gt;&lt;br /&gt;(via &lt;a href="http://twitter.com/nhajratw"&gt;twitter&lt;/a&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33094931-6181396339989075138?l=sub-subversion.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default/6181396339989075138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default/6181396339989075138'/><link rel='alternate' type='text/html' href='http://sub-subversion.blogspot.com/2009/04/first-and-foremost.html' title='First and foremost'/><author><name>Grégoire</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-33094931.post-4570912236327679248</id><published>2009-04-10T00:36:00.000-07:00</published><updated>2009-04-10T07:55:35.650-07:00</updated><title type='text'>Upgrade to 1.5</title><content type='html'>Subversion 1.6 is out, Subversion 1.4.x is no more supported. Time to upgrade my svn server from 1.4.2 to 1.5.6. The subversion server runs on a Debian GNU/Linux with a 2.6.8-2-386 kernel and apache 2.2.&lt;br /&gt;&lt;br /&gt;The procedure is rather straightforward:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Upgrade all clients&lt;/span&gt; to 1.5.x. Older clients and servers interoperate transparently with 1.5 servers and clients.  However, some of the new 1.5 features may not be available unless both client and server are the latest versio. So it is a good starting point.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Update the subversion tools&lt;/span&gt;. On Debian based system, it goes like:&lt;blockquote&gt;$ apt-cache showpkg subversion&lt;br /&gt;Package: subversion&lt;br /&gt;Versions:&lt;br /&gt;1.5.6dfsg-1 [...]&lt;br /&gt;$ apt-get install subversion=1.5.6dfsg-1&lt;br /&gt;[...]&lt;br /&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Update the SVN apache library&lt;/span&gt;. There is no need to update apache itself. But upgrading this lib will also install the latest mod_dav_svn module for apache. Although it is not mandatory, it is highly recommended. On Debian based system, it goes like:&lt;blockquote&gt;$ apt-cache showpkg libapache2-svn&lt;br /&gt;Package: libapache2-svn&lt;br /&gt;Versions:&lt;br /&gt;1.5.6dfsg-1 [...]&lt;br /&gt;$ apt-get install libapache2-svn=1.5.6dfsg-1&lt;br /&gt;[...]&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Restart apache&lt;/span&gt; (apache2ctl restart).&lt;/li&gt;&lt;li&gt;Make a simple &lt;span style="font-weight: bold;"&gt;test&lt;/span&gt;:&lt;blockquote&gt;$ svn --version&lt;br /&gt;svn, version 1.5.6 (r36142)&lt;br /&gt; compiled Feb 26 2009, 02:56:32&lt;br /&gt;[...]&lt;br /&gt;$ svnadmin --version&lt;br /&gt;svnadmin, version 1.5.6 (r36142)&lt;br /&gt; compiled Feb 26 2009, 02:56:32&lt;br /&gt;[...]&lt;br /&gt;We are fine.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add a &lt;span style="font-weight: bold;"&gt;start-commit hook&lt;/span&gt; script to avoid 1.4.x and lower clients to commit to the repository. The repository format has changed, meaning that 1.4 and older versions of Subversion tools that normally access a repository directly (e.g. svnserve, mod_dav_svn, svnadmin...) won't be able to read a repository created by Subversion 1.5 More on this in a future post.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Upgrade the repositories&lt;/span&gt; from the 1.4 structure to the 1.5 one. The repository format has changed between the two releases but, repositories are not upgraded automatically. From the &lt;a href="http://subversion.tigris.org/svn_1.5_releasenotes.html"&gt;subversion 1.5 release notes&lt;/a&gt;:&lt;blockquote&gt;some of the new 1.5 features will not become available simply by upgrading your server: you will also have to upgrade your repositories.&lt;/blockquote&gt;. Again, it is straitforward:&lt;br /&gt;&lt;blockquote&gt;$ svnadmin help upgrade&lt;br /&gt;[...]Upgrade the repository located at REPOS_PATH to the latest supported&lt;br /&gt;schema version.[...]&lt;br /&gt;$svnadmin upgrade REPO_PATH&lt;br /&gt;[...]&lt;/blockquote&gt;It is harmless and run in seconds.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Optional: &lt;span style="font-weight: bold;"&gt;dump and reload the repositories&lt;/span&gt;. I've run the following quick test on a repository full of word/pdf documents:&lt;ul&gt;&lt;li&gt;du -sh REPO1 -&gt; 402M.&lt;/li&gt;&lt;li&gt;svnadmin dump REPO1 &gt; REPO1.dump&lt;/li&gt;&lt;li&gt;du -sh REPO1.dump -&gt; 780M.&lt;/li&gt;&lt;li&gt;svnadmin create REPO2.&lt;/li&gt;&lt;li&gt;cat REPO1.dump | svnadmin load REPO2&lt;/li&gt;&lt;li&gt;du -sh REPO2 -&gt;&lt;b&gt;388M&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;The same test on a 153M repository full of JAVA, C/C++ sources and a few binary files gave a resulting repository of 102M. Depending on the number of repositories, the size of them, you should consider the dump/load operation. Please note that dumping a repository is very fast but load it can take some time. Consequently, you should probably plan the move outside working hours and bring the repositories down during the operation.&lt;/li&gt;&lt;/ol&gt;You are done!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33094931-4570912236327679248?l=sub-subversion.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default/4570912236327679248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default/4570912236327679248'/><link rel='alternate' type='text/html' href='http://sub-subversion.blogspot.com/2009/04/upgrade-to-15.html' title='Upgrade to 1.5'/><author><name>Grégoire</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-33094931.post-5996470944364924606</id><published>2009-04-09T01:56:00.000-07:00</published><updated>2009-04-16T03:08:18.941-07:00</updated><title type='text'>Subversion 1.6</title><content type='html'>Since March 20, version 1.6.0 is the main stable release of Subversion.&lt;br /&gt;Amongs the new features,&lt;br /&gt;&lt;ul&gt;&lt;li&gt;svn:externals on a file.&lt;/li&gt;&lt;li&gt;CTypes python bindings&lt;/li&gt;&lt;li&gt;Filesystem storage improvements to both FSFS and BDB backends&lt;/li&gt;&lt;li&gt;Many (many) improvements to the command line client.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Repository root relative URL support on most SVN commands&lt;/li&gt;&lt;/ul&gt;See the &lt;a href="http://subversion.tigris.org/servlets/NewsItemView?newsItemID=2261"&gt;official announcement&lt;/a&gt; for more information. Please note that Subversion 1.4.x are no longer supported.&lt;br /&gt;In the coming days, I'll try to blog about these new features. I need to upgrade our subversion repositories from 1.4 to 1.6. I'll also try to report here my findings regarding the upgrade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33094931-5996470944364924606?l=sub-subversion.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default/5996470944364924606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default/5996470944364924606'/><link rel='alternate' type='text/html' href='http://sub-subversion.blogspot.com/2009/04/subversion-16.html' title='Subversion 1.6'/><author><name>Grégoire</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-33094931.post-115615468472688813</id><published>2006-08-21T03:04:00.000-07:00</published><updated>2007-03-30T06:47:07.154-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='merge'/><category scheme='http://www.blogger.com/atom/ns#' term='Subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='commit'/><category scheme='http://www.blogger.com/atom/ns#' term='rollback'/><category scheme='http://www.blogger.com/atom/ns#' term='revision'/><title type='text'>Rollback a change with a reverse merge</title><content type='html'>Problem: A modification is commited to the source tree at revision 481.&lt;br /&gt;After investigations, it appears that the modification done is not correct and the source should actually be like it was in revision 480. How to rollback the changes to the previous revision?&lt;br /&gt;&lt;br /&gt;One possible solution is to perform a reverse merge:&lt;br /&gt;&lt;blockquote&gt;$ svn merge -r 481:480 .&lt;br /&gt;-&gt; At this stage, your working copy is like it was at revision 480.&lt;br /&gt;$ svn commit -m "rollback merge to revision 480"&lt;br /&gt;Committed at revision 482.&lt;br /&gt;&lt;/blockquote&gt;There might be other way to rollback, but this one is the easiest. The merge will leave your working copy with modified files that you just have to commit.&lt;br /&gt;&lt;br /&gt;The situation is a bit different when you are not merging from the head revision to the problematic revision -1. See the following situation: a problematic change is introduced in the file  &lt;span style="font-style: italic;"&gt;foobar.txt &lt;/span&gt;at revision 481. A valid change is added in the file &lt;span style="font-style: italic;"&gt;foobar.txt&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;at revision 482. A rollback of the changes introduced at revision 481 will most probably leave your working copy with conflicted changes in the file &lt;span style="font-style: italic;"&gt;foobar.txt&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a&gt;&lt;/a&gt;sourcce: &lt;a href="http://cheat.errtheblog.com/s/svn/"&gt;cheat sheets&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33094931-115615468472688813?l=sub-subversion.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default/115615468472688813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33094931/posts/default/115615468472688813'/><link rel='alternate' type='text/html' href='http://sub-subversion.blogspot.com/2006/08/rollback-change-with-reverse-merge.html' title='Rollback a change with a reverse merge'/><author><name>Grégoire</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
