Re: git-notes, how do they work?
- From
- Ulrich Spoerlein <uspoerlein@gmail.com>
- Date
- May 12, 2012, 11:27 UTC
- Message-ID
- <20120512112707.GP71676@acme.spoerlein.net>
- In-Reply-To
- <CACsJy8DRujbCc5Etod8eCoUW5+SxK-1qbJaAYw7gdvkO2SdSRw@mail.gmail.com>
On Sat, 2012-05-12 at 18:01:40 +0700, Nguyen Thai Ngoc Duy wrote:
Show 12 quoted lines
> On Sat, May 12, 2012 at 5:43 PM, Ulrich Spoerlein <uspoerlein@gmail.com> wrote: > > IIUC refs/notes/commits points to the latest note, which points to HEAD. > > However, there's no reference that points to the note pointing to > > HEAD^1, so how will it not be garbage collected? > > No. refs/notes/commits points to a commit, whose tree contains all > notes at the last time a note is changed. This commit has a parent > commit that stores note snapshot of the previous change and so on.. > > refs/notes/commits is an ordinary ref, which is searched for > reachability at gc time, so all notes (even replaced notes) cannot be > deleted.
Cool, I believe this is then a bug with how svn2git works when it's being restarted to do incremental conversions and have contacted the author of that code.
Show 7 quoted lines
> > How can it be pushed to a remote repository? > > What I wrote about were my findings while I studied the notes code. > I'm new to it too. And I believe there's no mechanism to transfer > notes. Of course you can transfer resfs/notes/commits like any other > refs, but the objects those notes are attached to might or might not > exist at destination repo.
Pushing them to github works fine like this:
[remote "github"]
url = github.com:freebsd/freebsd.git
push = +refs/heads/master:refs/heads/master
push = +refs/heads/release/*:refs/heads/release/*
push = +refs/heads/releng/*:refs/heads/releng/*
push = +refs/heads/stable/*:refs/heads/stable/*
push = +refs/notes/*:refs/notes/*And you will see them displayed in their web UI (at the bottom):
https://github.com/freebsd/freebsd/commit/4bef84bb40695b68a4ccdcec5f847b5a7a302864
But older commits are missing this, most likely because the notes were clobbered before I pushed them, e.g.
https://github.com/freebsd/freebsd/commit/1e7688b79181301805cd4616daa42ae827d74e99#README
Show 7 quoted lines
> > I understand that notes cannot point to older notes, as that would make > > removing/adding notes from/to older commits quite a hassle. > > > > So, what am I doing wrong here? How can I avoid notes from disappearing > > so that each and every one of it remains in the repo? > -- > Duy