Now that Rails has a stable branch, I would like to suggest considering using svnmerge.py to manage the revisions in trunk that you want to pull over into the branch. It'll make life much easier in managing commits to trunk and then merging them to stable.

Svnmerge.py makes life easy in migrating commits from one place to another, such as from trunk to branch. We use this all the time to take revisions on a development trunk and merge them over into release branches.

Svnmerge.py stores into a Subversion property on the branch all the revisions that you have merged over already and allows you to see which revisions are available to be merged and prevents you from double merging. It allows you to manually merge multiple non-continuous revision ranges in a single command. It also generates a commit log message for the merge using the log message for the revision from the trunk. Basically, merging is much easier than manually dealing with 'svn merge -r REV1:REV2'.

After svnmerge.py is set up on the branch, if you want to pull a revision over, you do.

$ cd stable
$ svnmerge.py -r 1234:1245,2345 # Merge revisions 1234 to 1245 and 2345 over
$ svn diff # to confirm the merge
$ svn commit -F svnmerge-commit-message.txt

The svnmerge-commit-message.txt commit message would contain the log messages for those revisions. To see all revisions available for merge, run

$ svnmerge.py avail

You'll do something like this to set it up:

# Get the script:
$ svn cat http://svn.collab.net/repos/svn/trunk/contrib/client-side/svnmerge.py > svnmerge.py
$ chmod a+x svnmerge.py

# Check out your branch.
$ svn co http://dev.rubyonrails.org/svn/rails/branches/stable
$ cd stable

# Tell svnmerge.py to initialize the branch.  It looks to see what revision
# the branch was created from and initializes the revisions that were already
# copied over.

# Since there have been commits to both trunk and branch, this will be a little
# more complicated.  I recommend the following.  The  stable is almost identical
# to trunk at revision 4199 with one line difference.  So tell svnmerge.py
# that the branch is identical to the trunk from revisions 1-4199.

$ svnmerge.py -s -v -v init -r 1-4199

# Then resolve the any difference between stable and trunk by manually
# applying this patch.

--- ../rails-stable/railties/environments/environment.rb 2006-04-07 11:49:46.000000000 -0700
+++ ./railties/environments/environment.rb      2006-04-07 12:18:41.000000000 
-0700
@@ -5,7 +5,7 @@
 # ENV['RAILS_ENV'] ||= 'production'

 # Specifies gem version of Rails to use when vendor/rails is not present
-<%= '# ' if freeze %>RAILS_GEM_VERSION = '<%= Rails::VERSION::STRING %>'
+<%= '# ' if freeze %>RAILS_GEM_VERSION = '<%= Rails::VERSION::STRING %>' unless defined? RAILS_GEM_VERSION

 # Bootstrap the Rails environment, frameworks, and default configuration
 require File.join(File.dirname(__FILE__), 'boot')


# Finally, commit.
$ svn commit -F svnmerge-commit-message.txt

Regards,
Blair

--
Blair Zajac, Ph.D.
<[EMAIL PROTECTED]>
Subversion training, consulting and support
http://www.orcaware.com/svn/
_______________________________________________
Rails-core mailing list
Rails-core@lists.rubyonrails.org
http://lists.rubyonrails.org/mailman/listinfo/rails-core

Reply via email to