Moving to Git

Notes on things to look out for if a component moves from SVN to Git.

Update pom and website

Ensure that the SCM references in the POM and on the website are updated as soon as possible after the Git repo goes live.

Update CI builds

There are various CI builds: Jenkins, Continuum, Buildbot. These will need to be updated after the Git repo goes live

Tidy up SVN repository Tree

As part of moving a component to Git, Infra will make the current SVN tree read-only. However the files will still remain. This can cause confusion; it is easy to find the SVN files and think they are still current.

Therefore it was decided on the following process:

Once the Git repo is up and running:

1) Edit the projects data file (as below) and replace the location reference if necessary:

https://svn.apache.org/repos/asf/infrastructure/site-tools/trunk/projects/files.xml

2) Remove the project from the svn:externals property of the trunks-proper directory:

svn pe svn:externals https://svn.apache.org/repos/asf/commons/trunks-proper

3) Add a README file to the top level of the SVN tree for the component, e.g. math

For example: https://svn.apache.org/repos/asf/commons/proper/math/MathNowUsesGit.txt

4) Move the rest of the contents (branches,tags,trunk, etc) to

https://svn.apache.org/repos/asf/commons/_moved_to_git/math

The _moved_to_git tree is read-only except as needed to move stuff into it. In order to do this, the person doing it needs to have write access to the component tree and _moved_to_git. This is controlled by the asf-authorization-template file. The entries need to look something like:

[/commons/_moved_to_git]
* = r
# Temporary override to allow xyz to be moved from proper
availid = rw

# Now using git
[/commons/proper/xyz]
* = r
# Temporary override to allow xyz to be moved to _moved_to_git
availid = rw

Replace availid with the ASF login id of the person doing the move, and xyz with the name of the component.

Sample SVN commands (using SCXML as an example)

# N.B. make sure you do this first!
svn mkdir -m"SCXML => Git" https://svn.eu.apache.org/repos/asf/commons/_moved_to_git/scxml


svn mv -m"Now using Git" \
        https://svn.apache.org/repos/asf/commons/proper/scxml/branches \
        https://svn.apache.org/repos/asf/commons/_moved_to_git/scxml/

# Don't omit the trailing / after the target
# If it is omitted, and the target does not exist, then the source directory may be renamed

svn mv -m"Now using Git" \
        https://svn.apache.org/repos/asf/commons/proper/scxml/tags \
        https://svn.apache.org/repos/asf/commons/_moved_to_git/scxml/

svn mv -m"Now using Git" \
        https://svn.apache.org/repos/asf/commons/proper/scxml/trunk \
        https://svn.apache.org/repos/asf/commons/_moved_to_git/scxml/

# Check source tree
svn ls https://svn.apache.org/repos/asf/commons/proper/scxml/

# If there are any files/folders (apart from ScxmlMovedToGit.txt) then these also need
# to be moved as above.

# Check target tree:
svn ls https://svn.apache.org/repos/asf/commons/_moved_to_git/scxml/

Once the process is completed, the asf-authorization-template should be updated to remove the temporary entries

MovingToGit (last edited 2015-07-16 06:11:47 by BenediktRitter)