From: Josef Weidendorfer <Josef.Weidendorfer@gmx.de>
To: git@vger.kernel.org
Subject: How is working on arbitrary remote heads supposed to work in Cogito (+ PATCH)?
Date: Wed, 27 Jul 2005 14:58:42 +0200 [thread overview]
Message-ID: <200507271458.43063.Josef.Weidendorfer@gmx.de> (raw)
Hi,
if I clone a remote head other than master via Cogito with
cg-clone host:path#remoteHead,
work on this branch, and try to push back my changes with
cg-push,
I get the error
"pushing to a different head not supported yet".
As far as I can see, there is no support in core GIT to make this ever work
(at least with get-send-packs), as "git-send-pack" only updates a set of
heads with the same name both locally and remote.
I suppose the best would be to always keep the same head names in cloned
repositories - it seems to be easier to handle for users. Perhaps the only
exception would be "master", as one probably would like to pull masters of
different remote repositories into a local one (without really working on
them).
Thus, what about the following: Each time a remote head other than master is
cloned, a head with the same name is created locally which is an alias to the
local master. This way, cg-push almost works out of the box. Following patch
implements this behavior.
Josef
diff --git a/cg-clone b/cg-clone
--- a/cg-clone
+++ b/cg-clone
@@ -69,5 +69,12 @@ cp $_git/refs/heads/origin $_git/refs/he
git-read-tree HEAD
git-checkout-cache -a
git-update-cache --refresh
echo "Cloned to $dir/ (origin $location available as branch \"origin\")"
+
+if echo "$location" | grep -q "#" ; then
+ rembranch=$(echo "$location" | sed -e "s/.*#//")
+ (cd $_git/refs/heads; ln -s master "$rembranch")
+ echo "Remote head \"$rbranch\" locally available as alias for \"master\""
+fi
+
diff --git a/cg-push b/cg-push
--- a/cg-push
+++ b/cg-push
@@ -28,17 +28,18 @@ uri=$(cat "$_git/branches/$name" 2>/dev/
rembranch=master
if echo "$uri" | grep -q '#'; then
rembranch=$(echo $uri | cut -d '#' -f 2)
uri=$(echo $uri | cut -d '#' -f 1)
- die "pushing to a different head not supported yet"
+ [ -s $_git/refs/heads/$rembranch ] || (cd $_git/refs/heads;ln -s master $rembranch)
+ [ $(readlink $_git/refs/heads/$rembranch) = "master" ] || \
+ die "can not push to remote head \"$rembranch\""
fi
if echo "$uri" | grep -q "^http://"; then
die "pushing over HTTP not supported yet"
elif echo "$uri" | grep -q "^git+ssh://"; then
git-send-pack "$(echo "$uri" | sed 's#^git+ssh://\([^/]*\)\(/.*\)$#\1:\2#')" $rembranch
-elif echo "$uri" | grep -q ":"; then
+elif echo "$uri" | grep -q "^rsync://"; then
die "pushing over rsync not supported"
else
git-send-pack "$uri" $rembranch
fi
next reply other threads:[~2005-07-27 12:58 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-27 12:58 Josef Weidendorfer [this message]
2005-07-28 1:32 ` How is working on arbitrary remote heads supposed to work in Cogito (+ PATCH)? Junio C Hamano
2005-07-28 12:08 ` Petr Baudis
2005-07-28 13:07 ` Johannes Schindelin
2005-07-28 15:35 ` Petr Baudis
2005-07-28 15:56 ` Johannes Schindelin
2005-07-28 16:18 ` Petr Baudis
2005-07-28 16:52 ` Junio C Hamano
2005-07-28 17:32 ` Johannes Schindelin
2005-07-28 18:45 ` Ryan Anderson
2005-07-28 18:51 ` Johannes Schindelin
2005-07-28 18:39 ` Petr Baudis
2005-07-28 18:49 ` Johannes Schindelin
2005-07-28 19:47 ` Matthias Urlichs
2005-07-28 20:14 ` Johannes Schindelin
2005-07-29 7:11 ` Petr Baudis
2005-07-29 2:24 ` Junio C Hamano
2005-07-29 7:06 ` Petr Baudis
2005-07-29 7:48 ` Junio C Hamano
2005-07-29 8:10 ` Petr Baudis
2005-07-29 8:54 ` Junio C Hamano
2005-07-29 9:40 ` Petr Baudis
2005-07-29 10:57 ` Johannes Schindelin
2005-07-29 11:13 ` Petr Baudis
2005-07-29 12:26 ` Johannes Schindelin
2005-07-29 12:28 ` Petr Baudis
2005-07-30 2:11 ` Junio C Hamano
2005-07-29 20:40 ` Matthias Urlichs
2005-07-30 22:16 ` Junio C Hamano
2005-08-13 4:11 ` Carl Baldwin
2005-08-13 7:48 ` Junio C Hamano
2005-08-15 16:23 ` Carl Baldwin
2005-08-15 23:55 ` Johannes Schindelin
2005-07-29 9:10 ` Josef Weidendorfer
2005-07-28 21:13 ` Matthias Urlichs
2005-07-29 7:14 ` Petr Baudis
2005-07-28 18:53 ` Josef Weidendorfer
2005-07-28 19:19 ` Unnamed branches Petr Baudis
2005-07-28 16:14 ` How is working on arbitrary remote heads supposed to work in Cogito (+ PATCH)? Junio C Hamano
2005-07-28 16:23 ` Petr Baudis
2005-07-28 15:35 ` Petr Baudis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200507271458.43063.Josef.Weidendorfer@gmx.de \
--to=josef.weidendorfer@gmx.de \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox