Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
svn2cvs [2009/08/16 18:54] – add another note SimonNielsensvn2cvs [2018/06/09 04:58] (current) – MarkLinimon
Line 1: Line 1:
 +:!: of historical interest only.
 +
 This page describes the %%FreeBSD%% Subversion to CVS exporter AKA This page describes the %%FreeBSD%% Subversion to CVS exporter AKA
 svn2cvs. svn2cvs.
Line 25: Line 27:
  
 Due to the way CVS works $%%FreeBSD%%$ is changed by CVS so the original Due to the way CVS works $%%FreeBSD%%$ is changed by CVS so the original
-$%%FreeBSD%%$ set by Subversion is overwritten by SVN.  To find out which+$%%FreeBSD%%$ set by Subversion is overwritten by CVS.  To find out which
 Subversion revision a file in CVS is based on, one has to see the Subversion revision a file in CVS is based on, one has to see the
 commit log which includes the revision ID. commit log which includes the revision ID.
Line 39: Line 41:
   * Local %%FreeBSD%% svn mirror updated every 5 seconds   * Local %%FreeBSD%% svn mirror updated every 5 seconds
   * Checked out version of each active CVS branch   * Checked out version of each active CVS branch
 +
 +===== Python 'export.py' script =====
 +TODO - Location (repo stored in, public access, etc...) and dependancies
  
 ===== Last exported revision property ===== ===== Last exported revision property =====
Line 51: Line 56:
 svn pg fbsd:lastexp --revprop -r 0 file:///r/svnmirror/base svn pg fbsd:lastexp --revprop -r 0 file:///r/svnmirror/base
 </code> </code>
 +
 +===== maptable =====
 +TODO
  
 ===== Modified CVS ===== ===== Modified CVS =====
Line 64: Line 72:
 All the changes to the CVS repository is done with the modified cvs All the changes to the CVS repository is done with the modified cvs
 binary so there is no "magic" manipulation of the CVS repository. binary so there is no "magic" manipulation of the CVS repository.
 +
 +===== Local FreeBSD svn mirror =====
 +TODO - setup, why needed, etc...
  
 ====== Create branch checklist ====== ====== Create branch checklist ======
Line 76: Line 87:
  
 TODO TODO
 +
 +====== Caveats ======
 +
 +===== Manual CVS work =====
 +
 +If the CVS repository is every updated directly for whatever reason,
 +the checkouts used by svn2cvs must also manually be updated.
 +Otherwise, on the first export to the directory containing the manually
 +modified files, the export will fail with an CVS up-to-date-check.
 +
 +To recover from this situation, simply manually (as user svn2cvs) run
 +''%%cvs update%%'' in the affected directory, and revert the changes made for the
 +export which fails.  Now the exporter can be restarted.
  
 ====== Current problems ====== ====== Current problems ======
Line 81: Line 105:
 It doesn't like when a file is 'replaced' in Subversion. It doesn't like when a file is 'replaced' in Subversion.
  
-The following files in the %%FreeBSD%% repository suffers from this, as of +As of this writing no files are out of sync. 
-this writing:+ 
 +====== Tips ====== 
 + 
 +The following command can be used to get all commits to a branch e.g. for hand exporting: 
 + 
 +svn log --xml --stop-on-copy file:%%//%%/r/svnmirror/base/releng/9.1 | xmllint --format /dev/stdin | awk -F\" '/%%<%%logentry revision="/ { print $2 }' | sort -n | awk '{ printf "echo \"Press enter to export r%s\"\nread line\npython export.py -r %s\n", $1, $1 }' 
 + 
 +Simon's original suggestion: 
 +svn log --xml --stop-on-copy file:%%//%%/r/svnmirror/base/releng/9.1 | xmllint --format /dev/stdin | grep 'logentry revision' | sed -Ee 's/.*revision="(.*)">.*/\1/' | sort 
 + 
 +----
  
-  * ''%%src/tools/build/options/WITH_BIND_LIBS%%'' +{{tag>Historical}}
-  * ''%%src/contrib/file/magic2mime%%''+
  
  • svn2cvs.1250448890.txt.gz
  • Last modified: 2009/08/16 18:54
  • by SimonNielsen