Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Add requirement to start a vote before migration

...

  • This is a work in progress *

Start a vote

To migrate a component to git, start a VOTE by LAZY CONSENSUS on the dev ML. If the vote passes, proceed with the following steps.

Request a new Git repository

Requesting git repositories is managed by an Infra self-service which is located at http://reporeq.apache.org. Go to that website an request the new git repository. Note, that the repository name has to be the component name. So for example for Commons CLI, the repository name had to be "cli". This generated "commons-cli" as generated name.

Migrate code to new repository

  1. Clone the new Git repository: git clone https://git-wip-us.apache.org/repos/asf/commons-foo.git 2. Add the already existing GitHub mirror as new remote: git remote add GitHub git@github.com:apache/commons-foo.git 3. Create the master branch: git checkout -b master 4. Add all commits from the mirrored trunk branch from the GitHub mirror to the master branch: git fetch github trunk && git merge github/trunk 5. Add all other branches and tags to your local repository 6. push everything to the new repository

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.

...

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:

No Format

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

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

...

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)

No Format


# 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