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

Re: filter-branch: Remove original/*

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Feb 16, 2009, 11:38 UTC
Message-ID
<alpine.DEB.1.00.0902161234120.10279@pacific.mpi-cbg.de>
In-Reply-To
<alpine.DEB.1.00.0902161224140.10279@pacific.mpi-cbg.de>
Hi,
On Mon, 16 Feb 2009, Johannes Schindelin wrote:
Show 37 quoted lines
> On Mon, 16 Feb 2009, Johannes Schindelin wrote:
> 
> > On Sun, 15 Feb 2009, Junio C Hamano wrote:
> > 
> > > Junio C Hamano <gitster@pobox.com> writes:
> > > 
> > > > Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> > > >
> > > >>> That merely means whoever changes the tag and wants the record 
> > > >>> of such an update, which is uncommon, need to make sure reflog 
> > > >>> is created for that tag (and that tag only).
> > > >>
> > > >> The thing is: we cannot.  At least not at the moment.
> > > >
> > > > $ mkdir -p .git/logs/refs/tags
> > > > $ >.git/logs/refs/tags/junker
> > > > $ git tag junker
> > > > $ wc .git/logs/refs/tags/junker
> > > >   1   8 134 .git/logs/refs/tags/junker
> > > >
> > > > Ok, it's not 180 byte as I said, but only 134 bytes.
> > > 
> > > Having proven my superiour intelligence ;-) I think I can agree if 
> > > your next proposal is to toggle reflog on for the tag when "git tag 
> > > -f" is used to update an existing tag and core.logAllRefUpdates does 
> > > not say "never" (this new value needs to be treated the same as 
> > > "false" for most other purposes), and the tag does not already have 
> > > a reflog.
> > 
> > Actually, to prove my inferior intelligence, I suggest going for the 
> > easy solution: replace the update-ref in filter-branch by a call to 
> > git tag -f, after making sure that the reflog exists (with 
> > >>.git/logs/$tagname).
> 
> Indeed, this proves my inferior intelligence: the update-ref method at 
> least kept as much information as possible in the tag, including the 
> tagger.

Maybe I can salvage a little bit of the "sapiens" part in the name of the species I think I am part of:

-- snip --
 git-filter-branch.sh |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 27b57b8..d828a91 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -459,6 +459,10 @@ if [ "$filter_tag_name" ]; then
 			then
 				warn "gpg signature stripped from tag object $sha1t"
 			fi
+			# make sure the reflogs are written
+			mkdir -p "$(dirname "$GIT_DIR/logs/$new_ref")" &&
+			>> "$GIT_DIR/logs/$new_ref" ||
+			die "Could not initialize reflogs for $new_ref"
 		fi
 
 		git update-ref "refs/tags/$new_ref" "$new_sha1" ||
-- snap --

Eric, this is not even compile tested ;-)  But maybe you can start from 
there?

Ciao,
Dscho
Previous: Johannes SchindelinNext: Sitaram Chamarty
Message 11 of 12 in “filter-branch: Remove original/* (was Re: [RFC] What's the best UI for 'git submodule split'?)”
  1. Eric KiddFeb 14, 2009
  2. Johannes SchindelinFeb 14, 2009
  3. Junio C HamanoFeb 15, 2009
  4. Johannes SchindelinFeb 15, 2009
  5. Junio C HamanoFeb 15, 2009
  6. Johannes SchindelinFeb 15, 2009
  7. Junio C HamanoFeb 15, 2009
  8. Junio C HamanoFeb 15, 2009
  9. Johannes SchindelinFeb 16, 2009
  10. Johannes SchindelinFeb 16, 2009
  11. Johannes SchindelinFeb 16, 2009
  12. Sitaram ChamartyFeb 16, 2009

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.