* [PATCH 1/2] t3301-notes: Test the creation of reflog entries @ 2010-03-29 13:05 Michael J Gruber 2010-03-29 13:05 ` [PATCH 2/2] refs.c: Write reflogs for notes just like for branch heads Michael J Gruber 0 siblings, 1 reply; 7+ messages in thread From: Michael J Gruber @ 2010-03-29 13:05 UTC (permalink / raw) To: git; +Cc: Jeff King, Johan Herland, Junio C Hamano Test whether the notes code writes reflog entries. It intends to (setting up the reflog messages) but currently does not. Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> --- t/t3301-notes.sh | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/t/t3301-notes.sh b/t/t3301-notes.sh index 1d6cd45..5410a6d 100755 --- a/t/t3301-notes.sh +++ b/t/t3301-notes.sh @@ -65,6 +65,15 @@ test_expect_success 'create notes' ' test_must_fail git notes show HEAD^ ' +cat >expect <<EOF +d423f8c refs/notes/commits@{0}: notes: Notes added by 'git notes add' +EOF + +test_expect_failure 'create reflog entry' ' + git reflog show refs/notes/commits >output && + test_cmp expect output +' + test_expect_success 'edit existing notes' ' MSG=b3 git notes edit && test ! -f .git/NOTES_EDITMSG && -- 1.7.0.3.448.g82eeb ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] refs.c: Write reflogs for notes just like for branch heads 2010-03-29 13:05 [PATCH 1/2] t3301-notes: Test the creation of reflog entries Michael J Gruber @ 2010-03-29 13:05 ` Michael J Gruber 2010-03-29 14:25 ` Johan Herland 0 siblings, 1 reply; 7+ messages in thread From: Michael J Gruber @ 2010-03-29 13:05 UTC (permalink / raw) To: git; +Cc: Jeff King, Johan Herland, Junio C Hamano The notes code intends to write reflog entries, but currently they are not written because log_ref_write() checks for the refname path explicitly. Add refs/notes to the list of allowed paths so that notes references are treated just like branch heads, i.e. according to core.logAllRefUpdates and core.bare. Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> --- This is actually inspired by Jeff's novel notes use. I think there are use cases where a notes log makes sense (notes on commits) and those where it does not (metadata/textconv). In both cases having a reflog is useful. So, the next step is really to allow notes trees without history, which also takes care of the pruning issue. I know how to do this, I just have to decide about the configuration options. refs.c | 1 + t/t3301-notes.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletions(-) diff --git a/refs.c b/refs.c index 0f24c8d..d3db15a 100644 --- a/refs.c +++ b/refs.c @@ -1276,6 +1276,7 @@ static int log_ref_write(const char *ref_name, const unsigned char *old_sha1, if (log_all_ref_updates && (!prefixcmp(ref_name, "refs/heads/") || !prefixcmp(ref_name, "refs/remotes/") || + !prefixcmp(ref_name, "refs/notes/") || !strcmp(ref_name, "HEAD"))) { if (safe_create_leading_directories(log_file) < 0) return error("unable to create directory for %s", diff --git a/t/t3301-notes.sh b/t/t3301-notes.sh index 5410a6d..b2e7b07 100755 --- a/t/t3301-notes.sh +++ b/t/t3301-notes.sh @@ -69,7 +69,7 @@ cat >expect <<EOF d423f8c refs/notes/commits@{0}: notes: Notes added by 'git notes add' EOF -test_expect_failure 'create reflog entry' ' +test_expect_success 'create reflog entry' ' git reflog show refs/notes/commits >output && test_cmp expect output ' -- 1.7.0.3.448.g82eeb ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] refs.c: Write reflogs for notes just like for branch heads 2010-03-29 13:05 ` [PATCH 2/2] refs.c: Write reflogs for notes just like for branch heads Michael J Gruber @ 2010-03-29 14:25 ` Johan Herland 2010-03-30 17:19 ` Jeff King 0 siblings, 1 reply; 7+ messages in thread From: Johan Herland @ 2010-03-29 14:25 UTC (permalink / raw) To: Michael J Gruber; +Cc: git, Jeff King, Junio C Hamano On Monday 29 March 2010, Michael J Gruber wrote: > The notes code intends to write reflog entries, but currently they > are not written because log_ref_write() checks for the refname path > explicitly. > > Add refs/notes to the list of allowed paths so that notes references > are treated just like branch heads, i.e. according to > core.logAllRefUpdates and core.bare. > > Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> Both patches are Acked-by: Johan Herland <johan@herland.net> > --- > This is actually inspired by Jeff's novel notes use. I think there > are use cases where a notes log makes sense (notes on commits) and > those where it does not (metadata/textconv). In both cases having a > reflog is useful. So, the next step is really to allow notes trees > without history, which also takes care of the pruning issue. I know > how to do this, I just have to decide about the configuration > options. I noticed that Jeff's proof-of-concept wrote notes trees without making notes commits, and although it seemed like a bug at first, it does - as you say - provide a rather nice way to store notes trees without history. Note that I haven't explicitly designed the notes feature with this in mind, so it's wise to add testcases for expected behaviour once we start use history-less notes trees. Thinking about it, the notes code itself (notes.h/.c) only wants a notes _tree_ object, so will probably work fine with history-less notes trees. But builtin/notes.c with its public commit_notes() function may be another story... ...Johan > refs.c | 1 + > t/t3301-notes.sh | 2 +- > 2 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/refs.c b/refs.c > index 0f24c8d..d3db15a 100644 > --- a/refs.c > +++ b/refs.c > @@ -1276,6 +1276,7 @@ static int log_ref_write(const char *ref_name, > const unsigned char *old_sha1, if (log_all_ref_updates && > (!prefixcmp(ref_name, "refs/heads/") || > !prefixcmp(ref_name, "refs/remotes/") || > + !prefixcmp(ref_name, "refs/notes/") || > !strcmp(ref_name, "HEAD"))) { > if (safe_create_leading_directories(log_file) < 0) > return error("unable to create directory for %s", > diff --git a/t/t3301-notes.sh b/t/t3301-notes.sh > index 5410a6d..b2e7b07 100755 > --- a/t/t3301-notes.sh > +++ b/t/t3301-notes.sh > @@ -69,7 +69,7 @@ cat >expect <<EOF > d423f8c refs/notes/commits@{0}: notes: Notes added by 'git notes > add' EOF > > -test_expect_failure 'create reflog entry' ' > +test_expect_success 'create reflog entry' ' > git reflog show refs/notes/commits >output && > test_cmp expect output > ' -- Johan Herland, <johan@herland.net> www.herland.net ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] refs.c: Write reflogs for notes just like for branch heads 2010-03-29 14:25 ` Johan Herland @ 2010-03-30 17:19 ` Jeff King 2010-03-30 18:00 ` Johan Herland 0 siblings, 1 reply; 7+ messages in thread From: Jeff King @ 2010-03-30 17:19 UTC (permalink / raw) To: Johan Herland; +Cc: Michael J Gruber, git, Junio C Hamano On Mon, Mar 29, 2010 at 04:25:22PM +0200, Johan Herland wrote: > > This is actually inspired by Jeff's novel notes use. I think there > > are use cases where a notes log makes sense (notes on commits) and > > those where it does not (metadata/textconv). In both cases having a > > reflog is useful. So, the next step is really to allow notes trees > > without history, which also takes care of the pruning issue. I know > > how to do this, I just have to decide about the configuration > > options. > > I noticed that Jeff's proof-of-concept wrote notes trees without making > notes commits, and although it seemed like a bug at first, it does - as > you say - provide a rather nice way to store notes trees without > history. No, it was very much intentional. However, I think the next iteration will wrap the tree in an actual commit, but just keep each commit parentless. That will provide a nice spot for metadata like the cache validity information. I like the idea of having a reflog, just because you could use it to salvage an old cache if you were playing around with your helper's options (or debugging your helper :) ). The usual 90-day expiration time is perhaps too long, though. > Note that I haven't explicitly designed the notes feature with this in > mind, so it's wise to add testcases for expected behaviour once we > start use history-less notes trees. > > Thinking about it, the notes code itself (notes.h/.c) only wants a notes > _tree_ object, so will probably work fine with history-less notes > trees. But builtin/notes.c with its public commit_notes() function may > be another story... I was planning on using my own cache-specific helper instead of commit_notes() anyway, so that shouldn't be a problem. By using a commit wrapper, I don't think any of the display code should be confused (since they need to handle the case of a root note commit anyway). Once I have some example trees, I can poke at them with the existing notes code and see how they behave (and how we _want_ them to behave, since I'm not sure yet what sort of cache introspection, if any, would be useful). -Peff ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] refs.c: Write reflogs for notes just like for branch heads 2010-03-30 17:19 ` Jeff King @ 2010-03-30 18:00 ` Johan Herland 2010-03-30 19:18 ` Jakub Narebski 0 siblings, 1 reply; 7+ messages in thread From: Johan Herland @ 2010-03-30 18:00 UTC (permalink / raw) To: Jeff King; +Cc: Michael J Gruber, git, Junio C Hamano On Tuesday 30 March 2010, Jeff King wrote: > On Mon, Mar 29, 2010 at 04:25:22PM +0200, Johan Herland wrote: > > > This is actually inspired by Jeff's novel notes use. I think > > > there are use cases where a notes log makes sense (notes on > > > commits) and those where it does not (metadata/textconv). In both > > > cases having a reflog is useful. So, the next step is really to > > > allow notes trees without history, which also takes care of the > > > pruning issue. I know how to do this, I just have to decide about > > > the configuration options. > > > > I noticed that Jeff's proof-of-concept wrote notes trees without > > making notes commits, and although it seemed like a bug at first, > > it does - as you say - provide a rather nice way to store notes > > trees without history. > > No, it was very much intentional. > > However, I think the next iteration will wrap the tree in an actual > commit, but just keep each commit parentless. That will provide a > nice spot for metadata like the cache validity information. Agreed. > I like the idea of having a reflog, just because you could use it to > salvage an old cache if you were playing around with your helper's > options (or debugging your helper :) ). The usual 90-day expiration > time is perhaps too long, though. Yes, 90 days as a default might be excessive, but you can always override it with a "git gc --prune=now"... > > Note that I haven't explicitly designed the notes feature with this > > in mind, so it's wise to add testcases for expected behaviour once > > we start use history-less notes trees. > > > > Thinking about it, the notes code itself (notes.h/.c) only wants a > > notes _tree_ object, so will probably work fine with history-less > > notes trees. But builtin/notes.c with its public commit_notes() > > function may be another story... > > I was planning on using my own cache-specific helper instead of > commit_notes() anyway, so that shouldn't be a problem. By using a > commit wrapper, I don't think any of the display code should be > confused (since they need to handle the case of a root note commit > anyway). Once I have some example trees, I can poke at them with the > existing notes code and see how they behave (and how we _want_ them > to behave, since I'm not sure yet what sort of cache introspection, > if any, would be useful). Looking forward to your patches. :) ...Johan -- Johan Herland, <johan@herland.net> www.herland.net ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] refs.c: Write reflogs for notes just like for branch heads 2010-03-30 18:00 ` Johan Herland @ 2010-03-30 19:18 ` Jakub Narebski 2010-04-02 0:16 ` Jeff King 0 siblings, 1 reply; 7+ messages in thread From: Jakub Narebski @ 2010-03-30 19:18 UTC (permalink / raw) To: Johan Herland; +Cc: Jeff King, Michael J Gruber, git, Junio C Hamano Johan Herland <johan@herland.net> writes: > On Tuesday 30 March 2010, Jeff King wrote: > > I like the idea of having a reflog, just because you could use it to > > salvage an old cache if you were playing around with your helper's > > options (or debugging your helper :) ). The usual 90-day expiration > > time is perhaps too long, though. > > Yes, 90 days as a default might be excessive, but you can always > override it with a "git gc --prune=now"... You can always set different expire time for notes by using [gc "refs/notes"] reflogExpire = 7 # days, I suppose Which is not documented (I have found it in RelNotes-1.6.0.txt). Oh well... -- Jakub Narebski Poland ShadeHawk on #git ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] refs.c: Write reflogs for notes just like for branch heads 2010-03-30 19:18 ` Jakub Narebski @ 2010-04-02 0:16 ` Jeff King 0 siblings, 0 replies; 7+ messages in thread From: Jeff King @ 2010-04-02 0:16 UTC (permalink / raw) To: Jakub Narebski; +Cc: Johan Herland, Michael J Gruber, git, Junio C Hamano On Tue, Mar 30, 2010 at 12:18:16PM -0700, Jakub Narebski wrote: > > > I like the idea of having a reflog, just because you could use it to > > > salvage an old cache if you were playing around with your helper's > > > options (or debugging your helper :) ). The usual 90-day expiration > > > time is perhaps too long, though. > > > > Yes, 90 days as a default might be excessive, but you can always > > override it with a "git gc --prune=now"... > > You can always set different expire time for notes by using > > [gc "refs/notes"] > reflogExpire = 7 # days, I suppose > > Which is not documented (I have found it in RelNotes-1.6.0.txt). > Oh well... Thanks, I didn't know about that feature. I just posted my series without dealing with the reflogs at all, but I think it may be sensible to drop the default for "refs/notes/textconv" in a followup patch. -Peff ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2010-04-02 0:16 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-03-29 13:05 [PATCH 1/2] t3301-notes: Test the creation of reflog entries Michael J Gruber 2010-03-29 13:05 ` [PATCH 2/2] refs.c: Write reflogs for notes just like for branch heads Michael J Gruber 2010-03-29 14:25 ` Johan Herland 2010-03-30 17:19 ` Jeff King 2010-03-30 18:00 ` Johan Herland 2010-03-30 19:18 ` Jakub Narebski 2010-04-02 0:16 ` Jeff King
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).