2 # TopGit - A different patch queue manager
3 # (c) Petr Baudis <pasky@suse.cz> 2008
6 populate
= # Set to 1 if we shall seed local branches with this
18 echo "Usage: tg [...] remote [--populate] REMOTE" >&2
25 git config
"remote.$name.url" >/dev
/null || die
"unknown remote '$name'"
28 ## Configure the remote
30 git config
--replace-all "remote.$name.fetch" "+refs/top-bases/*:refs/remotes/$name/top-bases/*" "\\+refs/top-bases/\\*:refs/remotes/$name/top-bases/\\*"
32 if git config
--get-all "remote.$name.push" "\\+refs/top-bases/\\*:refs/top-bases/\\*" >/dev
/null
&& test "xtrue" != "x$(git config --bool --get topgit.dontwarnonoldpushspecs)"; then
33 info
"Probably you want to remove the push specs introduced by an old version of topgit:"
34 info
' git config --unset-all "remote.'$name'.push" "\\+refs/top-bases/\\*:refs/top-bases/\\*"'
35 info
' git config --unset-all "remote.'$name'.push" "\\+refs/heads/\\*:refs/heads/\\*"'
36 info
'(or use git config --bool --add topgit.dontwarnonoldpushspecs true to get rid of this warning)'
39 info
"Remote $name can now follow TopGit topic branches."
40 if [ -z "$populate" ]; then
41 info
"Next, do: git fetch $name"
46 ## Populate local branches
48 info
"Populating local topic branches from remote '$name'..."
51 git for-each-ref
"refs/remotes/$name/top-bases" |
52 while read rev type ref
; do
53 branch
="${ref#refs/remotes/$name/top-bases/}"
54 if git rev-parse
"$branch" >/dev
/null
2>&1; then
55 git rev-parse
"refs/top-bases/$branch" >/dev
/null
2>&1 ||
56 git update-ref
"refs/top-bases/$branch" "$rev"
57 info
"Skipping branch $branch: Already exists"
60 info
"Adding branch $branch..."
61 git update-ref
"refs/top-bases/$branch" "$rev"
62 git update-ref
"refs/heads/$branch" "$(git rev-parse "$name/$branch")"
65 git config
"topgit.remote" "$name"
66 info
"The remote '$name' is now the default source of topic branches."