Last active
June 15, 2018 12:38
-
-
Save slawekzachcial/6f31b434aa0ba41d13972cd45a01f39e to your computer and use it in GitHub Desktop.
Subversion to GitHub migration steps using GitHub-provided tools.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# SSH to GitHub appliance and go to your working directory where you do migrations | |
# Type your Subversion username + Enter | |
read SVN_USER | |
# type your Subversion password + Enter | |
read SVN_PASSWORD | |
# type your GitHub username + Enter | |
read GIT_USER | |
# type your GitHub **Personal Access Token** + Enter | |
read GIT_TOKEN | |
# Type URL of Subversion repository to migrate | |
read SVN_REPO_URL | |
SVN_REPO_NAME="${SVN_REPO_URL##*/}" | |
GIT_REPO="${SVN_REPO_NAME}.git" | |
# Import the repository | |
~/git-import-svn-raw-1.10 --user "${SVN_USER}" --password "${SVN_PASSWORD}" \ | |
"${SVN_REPO_URL}" "${GIT_REPO}" | |
# Create authors files | |
sed -e 's/,\(.*\)/,\[email protected],\1/' "${GIT_REPO}/git-import/raw-authors.csv" > "${SVN_REPO_NAME}_authors.csv" | |
# Check authors file if it has empty values that are visible as "" and fix that. | |
# Usually surronding lines have the right values so you can copy/replace the faulty line with a good one | |
# vim "${SVN_REPO_NAME}_authors.csv" | |
# Rewrite authors file | |
git-import-rewrite --flavor svn --authors "${SVN_REPO_NAME}_authors.csv" "${GIT_REPO}" | |
# Deal with LARGE FILES | |
# Check if repository contains files bigger than 100MB limit | |
REPOSITORY="${SVN_REPO_URL}" SVN_USERNAME="${SVN_USER}" SVN_PASSWORD="${SVN_PASSWORD}" ~/svn_sizer.sh | |
# ACTION: | |
# If repo has any files bigger than limit - request size limit change for that repo | |
# Do the LFS things | |
cd "${GIT_REPO}" | |
git lfs install | |
git lfs migrate info --everything | |
# Migrate binary files using their patterns, e.g. | |
# git lfs migrate import --everything --include='*.war,*.jar,*.lar' | |
git lfs migrate import --everything --include='<comma-separate list of patterns>' | |
# List files that are now LFS | |
git lfs ls-files | |
# type GitHub repository URL; repository must have been already created! | |
read GIT_REPO_URL | |
# Inject creadentials to Git repository URL | |
GIT_REPO_URL="$(echo "${GIT_REPO_URL}" | sed "s,//,//${GIT_USER}:${GIT_TOKEN}@,")" | |
git push --mirror --force "${GIT_REPO_URL}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
git lfs migrate info
was only checking current branch. To check all branches:git lfs migrate info --everything
. Gist updated.