git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[Q] `git fetch tag NAME' into mirror repo does not update HEAD, what to do?

From
BFBrian Foster <brian.foster@innova-card.com>
Date
Aug 12, 2010, 07:54 UTC
Message-ID
<201008120954.27648.brian.foster@innova-card.com>
 Bare repository ORIG's master looks like this:
   o--o--o--o--v1--o--v2--o--o--o HEAD
 where v1 and v2 are (annotated) tagged commits.
 Repository SLAVE is a mirror clone of ORIG which
 (very deliberately!) lags behind (i.e., its HEAD
 is one of the earlier (and usually tagged) commits
 on ORIG).  SLAVE's master was like this:
   o--o--o--o--v1 HEAD
 We wanted to update its HEAD to v2, so did:
   git fetch ORIG tag v2
 This gave us:
   o--o--o--o--v1 HEAD
                 \ 
                  o--v2
 It did not update SLAVE's HEAD to v2, which we wanted.
 This was worked-around by editing refs/heads/master(?)
 but we don't want to do that again (esp. since we got
 it wrong the first time (Thank you back-ups!)).
 Whilst we want to switch to a push from ORIG to SLAVE
 model, until that happens (there are some IT issues),
 we are still fetching on SLAVE from ORIG.  Hence, how
 can we avoid the above issue; that is, what should we
 have done?  Searching various docs has failed to find
 any clew or answer.
 There are several GIT versions involved (all(?) are
 1.5-ish or later).  Below is a script to reproduce
 the situation (tested with v1.7.0.2).
cheers!
	-blf-

=====(cut here and below)===== demo.sh =====(git version 1.7.0.2)===== #!/bin/bash

add_new_files() {
	touch   -- "$@"
	git add -- "$@"
	git commit -m "Added: $*"
}
set -xe

mkdir ORIG cd ORIG git init # ORIG is bare in real case

add_new_files foo add_new_files bar

git tag -a -m First v1

cd .. git clone --bare --mirror ORIG SLAVE.git

cd ORIG

add_new_files xyzzy add_new_files plover

git tag -a -m Update v2

add_new_files stuff add_new_files more_stuff

cd ../SLAVE.git
git fetch --verbose origin tag v2
# SLAVE's master's HEAD has not changed ....  ;-(

git tag -l git log --oneline master git log --oneline v2 =====(cut here and above)===== demo.sh =====(git version 1.7.0.2)=====

Next: Tomas Carnecky
Message 1 of 11 in “[Q] `git fetch tag NAME' into mirror repo does not update HEAD, what to do?”
  1. Brian FosterAug 12, 2010
  2. Tomas CarneckyAug 12, 2010
  3. Brian FosterAug 12, 2010
  4. Tomas CarneckyAug 12, 2010
  5. [SOLVED] `git fetch tag NAME' into mirror repo does not update HEAD, what to do?Brian Foster, Aug 12, 2010
  6. Tomas CarneckyAug 12, 2010
  7. Brian FosterAug 12, 2010
  8. Tomas CarneckyAug 12, 2010
  9. Brian FosterAug 13, 2010
  10. Brandon CaseyAug 12, 2010
  11. Brian FosterAug 13, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.