Hello!
This patch changes cg-pull so that if the branch is not specified, it
takes origin's .git/HEAD without first trying .git/refs/heads/master.
This removes preferential treatment of the "master" branch, allowing the
upstream to use another name for the default branch. To get the master
branch, users would have to append "#master" to the URL.
Local URL handling needs to be fixed to handle .git/HEAD properly, since
it's a symlink in the upstream directory. A new flag "-b" for fetch_*
functions is introduced, meaning "dereference" (like in GNU cp).
To do: the code needs refactoring with better option handling.
Signed-off-by: Pavel Roskin <[EMAIL PROTECTED]>
diff --git a/cg-pull b/cg-pull
--- a/cg-pull
+++ b/cg-pull
@@ -67,6 +67,8 @@ pull_progress()
fetch_rsync()
{
+ [ "$1" = "-b" ] && shift
+
redir=
if [ "$1" = "-i" ]; then # ignore-errors
redir="2>/dev/null"
@@ -108,6 +110,7 @@ pull_rsync()
fetch_http()
{
+ [ "$1" = "-b" ] && shift
[ "$1" = "-i" ] && shift
[ "$1" = "-s" ] && shift
@@ -158,6 +161,7 @@ pull_http()
fetch_ssh()
{
+ [ "$1" = "-b" ] && shift
[ "$1" = "-i" ] && shift
[ "$1" = "-s" ] && shift
@@ -205,6 +209,11 @@ fetch_local()
[ "$1" = "-s" ] && shift
cp_flags_l="-vdpR"
+ if [ "$1" = "-b" ]; then
+ cp_flags_l="-vb" # Dereference symlinks
+ shift
+ fi
+
if [ "$1" = "-u" ]; then
cp_flags_l="$cp_flags_l -fu$can_hardlink"
suggest_hardlink=
@@ -255,7 +264,7 @@ name=${ARGS[0]}
[ "$name" ] || die "where to pull from?"
uri=$(cat "$_git/branches/$name" 2>/dev/null) || die "unknown branch: $name"
-rembranch=master
+rembranch=
if echo "$uri" | grep -q '#'; then
rembranch=$(echo $uri | cut -d '#' -f 2)
uri=$(echo $uri | cut -d '#' -f 1)
@@ -308,13 +317,13 @@ orig_head=
mkdir -p $_git/refs/heads
-rsyncerr=
-$fetch -i "$uri/refs/heads/$rembranch" "$_git/refs/heads/.$name-pulling" ||
rsyncerr=1
-if [ "$rsyncerr" ] && [ "$rembranch" = "master" ]; then
- rsyncerr=
- $fetch -s "$uri/HEAD" "$_git/refs/heads/.$name-pulling" || rsyncerr=1
+if [ "$rembranch" ]; then
+ $fetch -i "$uri/refs/heads/$rembranch"
"$_git/refs/heads/.$name-pulling" ||
+ die "unable to get the head pointer of branch $rembranch"
+else
+ $fetch -b -s "$uri/HEAD" "$_git/refs/heads/.$name-pulling" ||
+ die "unable to get the HEAD branch"
fi
-[ "$rsyncerr" ] && die "unable to get the head pointer of branch $rembranch"
new_head=$(cat "$_git/refs/heads/.$name-pulling")
if ! [ "$symlinked" ]; then
--
Regards,
Pavel Roskin
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html