X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/177abc159286a0e1c19614a169aeae6036b5955a..fa1f7770c9d4033c8f37b796e39dd185399e25b2:/lib/git-svn?ds=inline

diff --git a/lib/git-svn b/lib/git-svn
index 4edda1d..212923a 100644
--- a/lib/git-svn
+++ b/lib/git-svn
@@ -3,14 +3,33 @@
 # To make mr use this file, add a line like this inside the [DEFAULT]
 # section of your ~/.mrconfig
 #include = cat /usr/share/mr/git-svn
-
-git_test = test -d "$MR_REPO"/.git && ! test -d "$MR_REPO"/.git/svn/git-svn
-git_svn_test = test -d "$MR_REPO"/.git/svn/git-svn
-git_svn_update = git-svn fetch
-git_svn_status = git status "$@" || true
-git_svn_commit = git-svn dcommit
+#
+# Note that by default this makes mr update do a git svn fetch.
+# Some might prefer it to do a git svn rebase, if you do, you can
+# configure that as follows in your ~/.mrconfig:
+#git_svn_update = git svn rebase
+git_svn_update = git svn fetch
+git_svn_status = git status -s "$@" || true; git --no-pager log --branches --not --remotes --simplify-by-decoration --decorate --oneline || true
+git_svn_commit = git svn dcommit
+git_svn_push = git svn dcommit
 git_svn_record = git commit -a "$@"
 git_svn_diff = git diff "$@"
-git_svn_log = git log "$@"
+git_svn_log = git svn log "$@"
+
+git_test = perl:
+	-d "$ENV{MR_REPO}/.git" &&
+	`GIT_CONFIG="$ENV{MR_REPO}"/.git/config git config --get svn-remote.svn.url` eq ""
+
+git_svn_test = perl:
+	-d "$ENV{MR_REPO}/.git" &&
+	`GIT_CONFIG="$ENV{MR_REPO}"/.git/config git config --get svn-remote.svn.url` ne ""
+
+git_svn_register =
+	url="`LC_ALL=C git config --get svn-remote.svn.url`" || true
+	if [ -z "$url" ]; then
+		error "cannot determine git svn url"
+	fi
+	echo "Registering git svn url: $url in $MR_CONFIG"
+	mr -c "$MR_CONFIG" config "`pwd`" checkout="git svn clone '$url' '$MR_REPO'"
 
 # vim:sw=8:sts=0:ts=8:noet