annotate extra/soundsoftware/export-git.sh @ 1543:05d639e5d59b feature_1136

First cut of a git export script
author Chris Cannam
date Tue, 12 Jan 2016 15:15:02 +0000
parents
children 248c402992ba
rev   line source
Chris@1543 1 #!/bin/bash
Chris@1543 2
Chris@1543 3 set -e
Chris@1543 4
Chris@1543 5 progdir=$(dirname $0)
Chris@1543 6 case "$progdir" in
Chris@1543 7 /*) ;;
Chris@1543 8 *) progdir="$(pwd)/$progdir" ;;
Chris@1543 9 esac
Chris@1543 10
Chris@1543 11 rails_scriptdir="$progdir/../../script"
Chris@1543 12 rails="$rails_scriptdir/rails"
Chris@1543 13
Chris@1543 14 if [ ! -x "$rails" ]; then
Chris@1543 15 echo "Expected to find rails executable at $rails"
Chris@1543 16 exit 2
Chris@1543 17 fi
Chris@1543 18
Chris@1543 19 fastexport="$progdir/../fast-export/hg-fast-export.sh"
Chris@1543 20 if [ ! -x "$fastexport" ]; then
Chris@1543 21 echo "Expected to find hg-fast-export.sh executable at $fastexport"
Chris@1543 22 exit 2
Chris@1543 23 fi
Chris@1543 24
Chris@1543 25 hgdir="$1"
Chris@1543 26 gitdir="$2"
Chris@1543 27
Chris@1543 28 if [ -z "$hgdir" ] || [ -z "$gitdir" ]; then
Chris@1543 29 echo "Usage: $0 <hgdir> <gitdir>"
Chris@1543 30 echo "where hgdir is the directory containing project Mercurial repositories,"
Chris@1543 31 echo "and gitdir is the directory in which output git repositories are"
Chris@1543 32 echo "to be created or updated"
Chris@1543 33 exit 2
Chris@1543 34 fi
Chris@1543 35
Chris@1543 36 if [ ! -d "$hgdir" ]; then
Chris@1543 37 echo "Mercurial repository directory $hgdir not found"
Chris@1543 38 exit 1
Chris@1543 39 fi
Chris@1543 40
Chris@1543 41 if [ ! -d "$gitdir" ]; then
Chris@1543 42 echo "Target git repository dir $gitdir not found (please create at least the empty directory)"
Chris@1543 43 exit 1
Chris@1543 44 fi
Chris@1543 45
Chris@1543 46 set -u
Chris@1543 47
Chris@1543 48 authordir="$gitdir/AUTHORMAPS"
Chris@1543 49
Chris@1543 50 mkdir -p "$authordir"
Chris@1543 51
Chris@1543 52 "$rails" runner -e production "$progdir/create-repo-authormaps.rb" \
Chris@1543 53 -s "$hgdir" -o "$authordir"
Chris@1543 54
Chris@1543 55 for hgrepo in "$hgdir"/*; do
Chris@1543 56
Chris@1543 57 if [ ! -d "$hgrepo/.hg" ]; then
Chris@1543 58 echo "Directory $hgrepo does not appear to be a Mercurial repo, skipping"
Chris@1543 59 continue
Chris@1543 60 fi
Chris@1543 61
Chris@1543 62 reponame=$(basename "$hgrepo")
Chris@1543 63 authormap="$authordir/authormap_$reponame"
Chris@1543 64 gitrepo="$gitdir/$reponame"
Chris@1543 65
Chris@1543 66 if [ ! -f "$authormap" ]; then
Chris@1543 67 echo "Authormap file $authormap not found for repo $hgrepo, skipping: the create-repo-authormaps script already run by this script should have created an authormap file (even if empty) for every repo with a corresponding project"
Chris@1543 68 continue
Chris@1543 69 fi
Chris@1543 70
Chris@1543 71 if [ ! -d "$gitrepo" ]; then
Chris@1543 72 git init "$gitrepo"
Chris@1543 73 fi
Chris@1543 74
Chris@1543 75 echo "About to run fast export..."
Chris@1543 76
Chris@1543 77 (
Chris@1543 78 cd "$gitrepo"
Chris@1543 79 "$fastexport" -r "$hgrepo" -A "$authormap"
Chris@1543 80 )
Chris@1543 81
Chris@1543 82 echo "Fast export done"
Chris@1543 83
Chris@1543 84 done
Chris@1543 85
Chris@1543 86 echo "All done"
Chris@1543 87