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
|