Skip to content

Commit ba76af7

Browse files
committed
git-svn-synchronizer: add the --reset and --force options
Signed-off-by: Johannes Schindelin <[email protected]>
1 parent f29cda6 commit ba76af7

1 file changed

Lines changed: 42 additions & 11 deletions

File tree

git-svn-synchronizer.sh

Lines changed: 42 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,38 @@
1515
# github.com:openspim/micromanager \
1616
# fiji.sc:/srv/git/micromanager1.4/.git \
1717

18+
usage () {
19+
echo "Usage: $0 [--force] [--reset] <Subversion-URL> <Git-push-URL>..." >&2
20+
exit 1
21+
}
22+
23+
force=
24+
reset=
25+
while test $# -gt 0
26+
do
27+
case "$1" in
28+
--force)
29+
force=--force
30+
;;
31+
--reset)
32+
git branch -D -r $(git branch -r)
33+
rm -rf .git/svn
34+
git config --remove-section svn-remote.svn
35+
reset=t
36+
;;
37+
-*)
38+
usage
39+
;;
40+
*)
41+
break
42+
;;
43+
esac
44+
shift
45+
done
46+
1847
if test $# -lt 2
1948
then
20-
echo "Usage: $0 <Subversion-URL> <Git-push-URL>..." >&2
21-
exit 1
49+
usage
2250
fi
2351

2452
set -e
@@ -31,14 +59,17 @@ if ! test -d .git
3159
then
3260
git init &&
3361
git config core.bare true &&
34-
git remote add -f tmp "$1" &&
35-
# read from remote repository to prevent unnecessary git-svn cloning
36-
git for-each-ref --format '%(refname)' refs/remotes/tmp/svn/ |
37-
while read ref
38-
do
39-
git push . $ref:refs/remotes/${ref#refs/remotes/tmp/svn/}
40-
done &&
41-
git remote rm tmp
62+
if test -z "$reset"
63+
then
64+
git remote add -f tmp "$1" &&
65+
# read from remote repository to prevent unnecessary git-svn cloning
66+
git for-each-ref --format '%(refname)' refs/remotes/tmp/svn/ |
67+
while read ref
68+
do
69+
git push . $ref:refs/remotes/${ref#refs/remotes/tmp/svn/}
70+
done &&
71+
git remote rm tmp
72+
fi
4273
fi
4374

4475
# initialize the Subversion URL
@@ -63,5 +94,5 @@ args="$(git for-each-ref --shell --format '%(refname)' refs/remotes/ |
6394

6495
for remote
6596
do
66-
eval git push \"$remote\" $args
97+
eval git push $force \"$remote\" $args
6798
done

0 commit comments

Comments
 (0)