* [PATCH] fetch/parse-remote: refs/remotes/* support @ 2006-03-09 11:54 Eric Wong 2006-03-09 11:55 ` [PATCH] clone: add refs/remotes/* to Pull: targets when cloning Eric Wong 2006-03-09 17:23 ` [PATCH] fetch/parse-remote: refs/remotes/* support Junio C Hamano 0 siblings, 2 replies; 5+ messages in thread From: Eric Wong @ 2006-03-09 11:54 UTC (permalink / raw) To: git, Junio C Hamano Signed-off-by: Eric Wong <normalperson@yhbt.net> --- git-fetch.sh | 5 ++++- git-parse-remote.sh | 8 ++++---- 2 files changed, 8 insertions(+), 5 deletions(-) 34f9d6c64bd686f29db4cd410882aab607e1b628 diff --git a/git-fetch.sh b/git-fetch.sh index 0346d4a..2748573 100755 --- a/git-fetch.sh +++ b/git-fetch.sh @@ -103,6 +103,9 @@ append_fetch_head () { refs/tags/*) note_="$(expr "$remote_name_" : 'refs/tags/\(.*\)')" note_="tag '$note_' of " ;; + refs/remotes/*) + note_="$(expr "$remote_name_" : 'refs/remotes/\(.*\)')" + note_="remote branch '$note_' of " ;; *) note_="$remote_name of " ;; esac @@ -150,7 +153,7 @@ fast_forward_local () { git-update-ref "$1" "$2" ;; - refs/heads/*) + refs/heads/* | refs/remotes/*) # $1 is the ref being updated. # $2 is the new value for the ref. local=$(git-rev-parse --verify "$1^0" 2>/dev/null) diff --git a/git-parse-remote.sh b/git-parse-remote.sh index 5f158c6..63f2281 100755 --- a/git-parse-remote.sh +++ b/git-parse-remote.sh @@ -86,14 +86,14 @@ canon_refs_list_for_fetch () { local=$(expr "$ref" : '[^:]*:\(.*\)') case "$remote" in '') remote=HEAD ;; - refs/heads/* | refs/tags/*) ;; - heads/* | tags/* ) remote="refs/$remote" ;; + refs/heads/* | refs/tags/* | refs/remotes/*) ;; + heads/* | tags/* | remotes/* ) remote="refs/$remote" ;; *) remote="refs/heads/$remote" ;; esac case "$local" in '') local= ;; - refs/heads/* | refs/tags/*) ;; - heads/* | tags/* ) local="refs/$local" ;; + refs/heads/* | refs/tags/* | refs/remotes/*) ;; + heads/* | tags/* | remotes/* ) local="refs/$local" ;; *) local="refs/heads/$local" ;; esac -- 1.2.4.ga2910 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH] clone: add refs/remotes/* to Pull: targets when cloning 2006-03-09 11:54 [PATCH] fetch/parse-remote: refs/remotes/* support Eric Wong @ 2006-03-09 11:55 ` Eric Wong 2006-03-09 18:23 ` Junio C Hamano 2006-03-09 17:23 ` [PATCH] fetch/parse-remote: refs/remotes/* support Junio C Hamano 1 sibling, 1 reply; 5+ messages in thread From: Eric Wong @ 2006-03-09 11:55 UTC (permalink / raw) To: git, Junio C Hamano Signed-off-by: Eric Wong <normalperson@yhbt.net> --- git-clone.sh | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) be2db2344099b3713c1136e84bab7390b6198895 diff --git a/git-clone.sh b/git-clone.sh index 4ed861d..a8ab7fd 100755 --- a/git-clone.sh +++ b/git-clone.sh @@ -249,6 +249,12 @@ Pull: $head_points_at:$origin" && test "$origin" = "$head" || echo "Pull: ${head}:${head}" done >>"$GIT_DIR/remotes/origin" + (test -d "$GIT_DIR"/refs/remotes && cd "$GIT_DIR" && + find "refs/remotes" -type f -print | sed -e 's|^refs/||') | + while read ref + do + echo "Pull: $ref:$ref" + done >>"$GIT_DIR/remotes/origin" esac case "$no_checkout" in -- 1.2.4.ga2910 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] clone: add refs/remotes/* to Pull: targets when cloning 2006-03-09 11:55 ` [PATCH] clone: add refs/remotes/* to Pull: targets when cloning Eric Wong @ 2006-03-09 18:23 ` Junio C Hamano 0 siblings, 0 replies; 5+ messages in thread From: Junio C Hamano @ 2006-03-09 18:23 UTC (permalink / raw) To: Eric Wong; +Cc: git Eric Wong <normalperson@yhbt.net> writes: > diff --git a/git-clone.sh b/git-clone.sh > index 4ed861d..a8ab7fd 100755 > --- a/git-clone.sh > +++ b/git-clone.sh > @@ -249,6 +249,12 @@ Pull: $head_points_at:$origin" && > test "$origin" = "$head" || > echo "Pull: ${head}:${head}" > done >>"$GIT_DIR/remotes/origin" > + (test -d "$GIT_DIR"/refs/remotes && cd "$GIT_DIR" && > + find "refs/remotes" -type f -print | sed -e 's|^refs/||') | > + while read ref > + do > + echo "Pull: $ref:$ref" > + done >>"$GIT_DIR/remotes/origin" > esac I am not sure I agree with what you are doing here. I thought the idea behind refs/remotes is to migrate away from copying all the remote heads into refs/heads (so that Linus does not need to see my "next" and "pu" under his refs/heads), and putting foreign SCM tracking branches used by SVN and CVS importers in there instead of in refs/heads naturally falls out from that pattern. Now I do not propose to change the current clone that contaminates the local branch namespace by copying remote refs/heads into local refs/heads in the middle of v1.3.0 development without laying out a transition plan, but I think that is a sensible future direction. Instead of copying everything from refs/heads to refs/heads, we only copy what remote HEAD points at to refs/heads/master to initialize the local clone, and copy everything from refs/heads to refs/remotes, _and_ set up Pull: lines to do the same tracking. The part of the code you are touching corresponds to the last part. We would probably be better off not doing this right now. When we are sure everybody thinks it is a better approach to use refs/remotes for remote branch tracking, we would need to change the part you did not change (I think the clone-pack part is the hardest to change since it has a built-in "copy refs to matching locations" logic) alongside with the part you touched with this patch to make things consistent. At that time also you would need to remove several lines above the part you touched so that we do not use local refs/heads/* for tracking. How does that sound? ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] fetch/parse-remote: refs/remotes/* support 2006-03-09 11:54 [PATCH] fetch/parse-remote: refs/remotes/* support Eric Wong 2006-03-09 11:55 ` [PATCH] clone: add refs/remotes/* to Pull: targets when cloning Eric Wong @ 2006-03-09 17:23 ` Junio C Hamano 2006-03-10 12:19 ` [PATCH] fetch,parse-remote,fmt-merge-msg: " Eric Wong 1 sibling, 1 reply; 5+ messages in thread From: Junio C Hamano @ 2006-03-09 17:23 UTC (permalink / raw) To: Eric Wong; +Cc: git > @@ -103,6 +103,9 @@ append_fetch_head () { > refs/tags/*) > note_="$(expr "$remote_name_" : 'refs/tags/\(.*\)')" > note_="tag '$note_' of " ;; > + refs/remotes/*) > + note_="$(expr "$remote_name_" : 'refs/remotes/\(.*\)')" > + note_="remote branch '$note_' of " ;; > *) > note_="$remote_name of " ;; > esac I vaguely recall that if you touch this part of the code you would also need to check if fmt-merge-msg does sensible thing for it. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] fetch,parse-remote,fmt-merge-msg: refs/remotes/* support 2006-03-09 17:23 ` [PATCH] fetch/parse-remote: refs/remotes/* support Junio C Hamano @ 2006-03-10 12:19 ` Eric Wong 0 siblings, 0 replies; 5+ messages in thread From: Eric Wong @ 2006-03-10 12:19 UTC (permalink / raw) To: Junio C Hamano; +Cc: git Note: This replaces the previous patch to fetch and parse-remote. We can now easily fetch and merge things from heads in the refs/remotes/ hierarchy in remote repositories. The refs/remotes/ hierarchy is likely to become the standard for tracking foreign SCMs, as well as the location of Pull: targets for non-master heads of newly cloned repositories. Signed-off-by: Eric Wong <normalperson@yhbt.net> --- git-fetch.sh | 8 +++++++- git-fmt-merge-msg.perl | 8 ++++++++ git-parse-remote.sh | 8 ++++---- 3 files changed, 19 insertions(+), 5 deletions(-) 6697c83da96b26739c3fe33c8526da6124cea909 diff --git a/git-fetch.sh b/git-fetch.sh index 0346d4a..11e9a9d 100755 --- a/git-fetch.sh +++ b/git-fetch.sh @@ -94,6 +94,9 @@ append_fetch_head () { # remote-nick is the URL given on the command line (or a shorthand) # remote-name is the $GIT_DIR relative refs/ path we computed # for this refspec. + + # the $note_ variable will be fed to git-fmt-merge-msg for further + # processing. case "$remote_name_" in HEAD) note_= ;; @@ -103,6 +106,9 @@ append_fetch_head () { refs/tags/*) note_="$(expr "$remote_name_" : 'refs/tags/\(.*\)')" note_="tag '$note_' of " ;; + refs/remotes/*) + note_="$(expr "$remote_name_" : 'refs/\(remotes/.*\)')" + note_="remote branch '$note_' of " ;; *) note_="$remote_name of " ;; esac @@ -150,7 +156,7 @@ fast_forward_local () { git-update-ref "$1" "$2" ;; - refs/heads/*) + refs/heads/* | refs/remotes/*) # $1 is the ref being updated. # $2 is the new value for the ref. local=$(git-rev-parse --verify "$1^0" 2>/dev/null) diff --git a/git-fmt-merge-msg.perl b/git-fmt-merge-msg.perl index afe80e6..5986e54 100755 --- a/git-fmt-merge-msg.perl +++ b/git-fmt-merge-msg.perl @@ -75,6 +75,7 @@ while (<>) { $src{$src} = { BRANCH => [], TAG => [], + R_BRANCH => [], GENERIC => [], # &1 == has HEAD. # &2 == has others. @@ -91,6 +92,11 @@ while (<>) { push @{$src{$src}{TAG}}, $1; $src{$src}{HEAD_STATUS} |= 2; } + elsif (/^remote branch (.*)$/) { + $origin = $1; + push @{$src{$src}{R_BRANCH}}, $1; + $src{$src}{HEAD_STATUS} |= 2; + } elsif (/^HEAD$/) { $origin = $src; $src{$src}{HEAD_STATUS} |= 1; @@ -123,6 +129,8 @@ for my $src (@src) { } push @this, andjoin("branch ", "branches ", $src{$src}{BRANCH}); + push @this, andjoin("remote branch ", "remote branches ", + $src{$src}{R_BRANCH}); push @this, andjoin("tag ", "tags ", $src{$src}{TAG}); push @this, andjoin("commit ", "commits ", diff --git a/git-parse-remote.sh b/git-parse-remote.sh index 5f158c6..63f2281 100755 --- a/git-parse-remote.sh +++ b/git-parse-remote.sh @@ -86,14 +86,14 @@ canon_refs_list_for_fetch () { local=$(expr "$ref" : '[^:]*:\(.*\)') case "$remote" in '') remote=HEAD ;; - refs/heads/* | refs/tags/*) ;; - heads/* | tags/* ) remote="refs/$remote" ;; + refs/heads/* | refs/tags/* | refs/remotes/*) ;; + heads/* | tags/* | remotes/* ) remote="refs/$remote" ;; *) remote="refs/heads/$remote" ;; esac case "$local" in '') local= ;; - refs/heads/* | refs/tags/*) ;; - heads/* | tags/* ) local="refs/$local" ;; + refs/heads/* | refs/tags/* | refs/remotes/*) ;; + heads/* | tags/* | remotes/* ) local="refs/$local" ;; *) local="refs/heads/$local" ;; esac -- 1.2.4.gbe2d ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2006-03-10 12:19 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-03-09 11:54 [PATCH] fetch/parse-remote: refs/remotes/* support Eric Wong 2006-03-09 11:55 ` [PATCH] clone: add refs/remotes/* to Pull: targets when cloning Eric Wong 2006-03-09 18:23 ` Junio C Hamano 2006-03-09 17:23 ` [PATCH] fetch/parse-remote: refs/remotes/* support Junio C Hamano 2006-03-10 12:19 ` [PATCH] fetch,parse-remote,fmt-merge-msg: " Eric Wong
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).