Movatterモバイル変換


[0]ホーム

URL:


[Python-Dev] PEP: Migrating the Python CVS to Subversion

Donovan Baardaabo at minkirri.apana.org.au
Mon Aug 8 00:12:36 CEST 2005


Martin v. Löwis wrote:> Donovan Baarda wrote:>>>Yeah. IMHO the sadest thing about SVN is it doesn't do branch/merge>>properly. All the other cool stuff like renames etc is kinda undone by>>that. For a definition of properly, see;>>>>http://prcs.sourceforge.net/merge.html>>> Can you please elaborate? I read the page, and it seems to me that> subversion's merge command works exactly the way described on the> page.maybe it's changed since I last looked at it, but last time I looked SVN didn't track merge histories. From the svnbook;"Unfortunately, Subversion is not such a system. Like CVS, Subversion 1.0 does not yet record any information about merge operations. When you commit local modifications, the repository has no idea whether those changes came from running svn merge, or from just hand-editing the files."What this means is SVN has no way of automatically identifying the common version. An svn merge requires you to manually identify and specify the "last common point" where the branch was created or last merged. PRCS automatically finds the common version from the branch/merge history, and even remembers the merge/replace/nothing/delete decision you make for each file as the default to use for future merges.You can see this in the command line differences. For subversion;# create and checkout branch my-calc-branch$ svn copyhttp://svn.example.com/repos/calc/trunk \http://svn.example.com/repos/calc/branches/my-calc-branch \       -m "Creating a private branch of /calc/trunk."$ svn checkouthttp://svn.example.com/repos/calc/branches/my-calc-branch# merge and commit changes from trunk$ svn merge -r 341:HEADhttp://svn.example.com/repos/calc/trunk$ svn commit -m "Merged trunc changes to my-calc-branch."# merge and commit more changes from trunk$ svn merge -r 345:HEADhttp://svn.example.com/repos/calc/trunk$ svn commit -m "Merged trunc changes to my-calc-branch."Note that 341 and 345 are "magic" version numbers which correspond to the trunc version at the time of branch and first merge respectively. It is up to the user to figure out these versions using either meticulous use of tags or svn logs.In PRCS;# create and checkout branch my-calc-branch$ prcs checkout calc -r 0$ prcs checkin -r my-calc-branch -m "Creating my-calc-branch"# merge and commit changes from trunk$ prcs merge -r 0$ prcs checkin -m " merged changes from trunk"# merge and commit more changes from trunk$ prcs merge -r 0$ prcs checkin -m " merged changes from trunk"Note that "-R 0" means "HEAD of trunk branch", and "-r my-calc-branch" means "HEAD of my-calc-branch". There is no need to figure out what versions of those branches to use as the "changes from" point, because PRCS figures it out for you. Not only that, but if you chose to ignore changes in certain files during the first merge, the second merge will remember that as the default action for the second merge.--Donovan Baarda


More information about the Python-Devmailing list

[8]ページ先頭

©2009-2025 Movatter.jp