Difference between revisions of "Reposurgeon"

From Freephile Wiki
Jump to navigation Jump to search
(revert edits to fix search where character encoding was a problem)
(link to repopuller)
(4 intermediate revisions by 2 users not shown)
Line 2: Line 2:
  
 
[https://gitlab.com/esr/reposurgeon Reposurgeon] is a tool by Eric Raymond that is for editing version-control repositories.  It can be used to migrate from one system to another; like [[Git/migrating_to_git|migrating from Subversion to Git]].  A lot of large software projects <ref>e.g. [http://wiki.blender.org/index.php/Dev:Ref/Proposals/MigrationToGit Blender], [https://wiki.mozilla.org/ReleaseEngineering/How_To/VCSSync Mozilla], [http://esr.ibiblio.org/?p=4071 Network UPS Tools] </ref>have migrated from Subversion to Git, and reposurgeon is one of the few tools that can actually accomplish large migrations.
 
[https://gitlab.com/esr/reposurgeon Reposurgeon] is a tool by Eric Raymond that is for editing version-control repositories.  It can be used to migrate from one system to another; like [[Git/migrating_to_git|migrating from Subversion to Git]].  A lot of large software projects <ref>e.g. [http://wiki.blender.org/index.php/Dev:Ref/Proposals/MigrationToGit Blender], [https://wiki.mozilla.org/ReleaseEngineering/How_To/VCSSync Mozilla], [http://esr.ibiblio.org/?p=4071 Network UPS Tools] </ref>have migrated from Subversion to Git, and reposurgeon is one of the few tools that can actually accomplish large migrations.
 
[https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools#Interaction_with_other_Revision_Control_Systems There are many other tools] for importing and even bi-directional interfaces between repositories.  However, reposurgeon is probably the best tool for doing large complex migrations.
 
  
 
[http://esr.ibiblio.org/?p=4071 From January 2012]:
 
[http://esr.ibiblio.org/?p=4071 From January 2012]:
<blockquote>One of my requirements was that the user should not have to declare the branch structure! You'll be able to read the detailed rules on reposurgeon 2.0's manual page; the short version is that if trunk is present, then trunk, branches/*, and tags/* are treated as candidate branches, and so is every other directory immediately under the repository root. But: a candidate branch is turned into a tag if there are no commits after the copy that created it.
+
<blockquote>One of my requirements was that the user should not have to declare the branch structure! be able to read the detailed rules on reposurgeon 2.manual page; the short version is that if trunk is present, then trunk, branches/*, and tags/* are treated as candidate branches, and so is every other directory immediately under the repository root. But: a candidate branch is turned into a tag if there are no commits after the copy that created it.
 
</blockquote>
 
</blockquote>
  
Line 59: Line 57:
 
</source>
 
</source>
  
Why does reposurgeon generate .gitignore files<ref>http://www.catb.org/~esr/reposurgeon/dvcs-migration-guide.html</ref>?  Partly because it converts <code>svn:ignore</code> properties.  Partly because some tools ([[git-svn]]) introduce .gitignore files to the svn repo.  I also believe it may have to do with empty directory commits.<ref>https://stackoverflow.com/questions/22822020/convert-an-svn-repository-to-git-with-reposurgeon-without-creating-gitignore-fi</ref>
+
Why does reposurgeon generate .gitignore files<ref>http://www.catb.org/~esr/reposurgeon/dvcs-migration-guide.html</ref>?  Partly because it converts <code>svn:ignore</code> properties.  Partly because some tools (git-svn) introduce .gitignore files to the svn repo.  I also believe it may have to do with empty directory commits.<ref>https://stackoverflow.com/questions/22822020/convert-an-svn-repository-to-git-with-reposurgeon-without-creating-gitignore-fi</ref>
  
 
See below for a description of the <code>git filter-branch</code> command  
 
See below for a description of the <code>git filter-branch</code> command  
 
== Examples ==
 
* http://blog.runtux.com/2014/04/18/233/
 
* https://github.com/cmusatyalab/coda-git-conversion/blob/master/lwp.lift
 
  
 
== Re-writing history ==
 
== Re-writing history ==
Line 86: Line 80:
  
 
* [https://svn.apache.org/repos/asf/subversion/trunk/contrib/server-side/svncutter/svncutter svncutter] is another tool, written in Python, by Eric Raymond.  svncutter is for stream surgery on SVN dump files.
 
* [https://svn.apache.org/repos/asf/subversion/trunk/contrib/server-side/svncutter/svncutter svncutter] is another tool, written in Python, by Eric Raymond.  svncutter is for stream surgery on SVN dump files.
* [http://www.catb.org/~esr/reposurgeon/repopuller.html repopuller] comes with reposurgeon, and is a bash script for using <code>svnsync</code> to create a repo 'mirror' that can be used for reposurgery without having to hit the production repository.
+
* [http://www.catb.org/~esr/reposurgeon/repopuller.html repopuller] comes with reposurgeon
  
 
{{References}}
 
{{References}}

Revision as of 12:41, 1 December 2015