Re: Compile Error v2.13.2 on Solaris SPARC

2017-06-26 Thread Michael Kebe
has no right operand #if ((defined(_BYTE_ORDER) && (_BYTE_ORDER == _BIG_ENDIAN)) || \ ^ Running Solaris on sparc: $ uname -a SunOS er202 5.11 11.3 sun4v sparc sun4v The isa_defs.h is available here: https://gist.github.com/michaelkebe/472720cd684b5b2a504b8eeb24049870 Greetings Michael

Re: Compile Error v2.13.2 on Solaris SPARC

2017-06-26 Thread Michael Kebe
Still no luck, with one or both patches. Greetings Michael 2017-06-26 14:47 GMT+02:00 Ævar Arnfjörð Bjarmason <ava...@gmail.com>: > > On Mon, Jun 26 2017, Michael Kebe jotted: > >> No luck with the patch. >> >> Still got: >> >> CC sha1dc/s

Re: Compile Error v2.13.2 on Solaris SPARC

2017-06-26 Thread Michael Kebe
reetings Michael 2017-06-26 10:42 GMT+02:00 Ævar Arnfjörð Bjarmason <ava...@gmail.com>: > > On Mon, Jun 26 2017, Michael Kebe jotted: > >> When compiling 2.13.2 on Solaris SPARC I get this error: >> >> CC sha1dc/sha1.o >> sha1dc/sha1.c:41:58: error: opera

Compile Error v2.13.2 on Solaris SPARC

2017-06-26 Thread Michael Kebe
n/commit/33a694a9ee1b79c24be45f9eab5ac0e1aeeaf271 Greetings Michael

Re: [PATCH v2 22/29] commit_packed_refs(): use a staging file separate from the lockfile

2017-06-24 Thread Michael Haggerty
On 06/23/2017 09:46 PM, Jeff King wrote: > On Fri, Jun 23, 2017 at 09:01:40AM +0200, Michael Haggerty wrote: > >> @@ -522,10 +529,16 @@ int lock_packed_refs(struct ref_store *ref_store, int >> flags) >> timeout_configured = 1; >> } >> >

Re: [PATCH v2 00/29] Create a reference backend for packed refs

2017-06-24 Thread Michael Haggerty
o keep the backends' interfaces as similar as possible to reduce the number of quirks that the reader has to keep in mind. Michael

[PATCH v2 25/29] packed_refs_unlock(), packed_refs_is_locked(): new functions

2017-06-23 Thread Michael Haggerty
Add two new public functions, `packed_refs_unlock()` and `packed_refs_is_locked()`, with which callers can manage and query the `packed-refs` lock externally. Call `packed_refs_unlock()` from `commit_packed_refs()` and `rollback_packed_refs()`. Signed-off-by: Michael Haggerty <m

[PATCH v2 23/29] packed_refs_lock(): function renamed from lock_packed_refs()

2017-06-23 Thread Michael Haggerty
Rename `lock_packed_refs()` to `packed_refs_lock()` for consistency with how other methods are named. Also, it's about to get some companions. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 4 ++-- refs/packed-backend.c | 10 +- refs/packed-bac

[PATCH v2 18/29] packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`

2017-06-23 Thread Michael Haggerty
Add a new function, `packed_read_raw_ref()`, which is nearly a `read_raw_ref_fn`. Use it in place of `resolve_packed_ref()`. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 36 +--- 1 file changed, 17 insertions(+), 19 del

[PATCH v2 15/29] repack_without_refs(): take a `packed_ref_store *` parameter

2017-06-23 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 20 ++-- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index 2b9d

[PATCH v2 11/29] lock_packed_refs(): take a `packed_ref_store *` parameter

2017-06-23 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 31 ++- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c

[PATCH v2 26/29] clear_packed_ref_cache(): don't protest if the lock is held

2017-06-23 Thread Michael Haggerty
The existing callers already check that the lock isn't held just before calling `clear_packed_ref_cache()`, and in the near future we want to be able to call this function when the lock is held. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/packed-backend.c | 2 --

[PATCH v2 10/29] add_packed_ref(): take a `packed_ref_store *` parameter

2017-06-23 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index bc5c0de84e..4943

[PATCH v2 08/29] get_packed_ref_cache(): take a `packed_ref_store *` parameter

2017-06-23 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 26 -- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c

[PATCH v2 29/29] read_packed_refs(): die if `packed-refs` contains bogus data

2017-06-23 Thread Michael Haggerty
The old code ignored any lines that it didn't understand. This is dangerous. Instead, `die()` if the `packed-refs` file contains any lines that we don't know how to handle. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/packed-backend.c | 6 +++--- 1 file changed, 3 inse

[PATCH v2 27/29] commit_packed_refs(): remove call to `packed_refs_unlock()`

2017-06-23 Thread Michael Haggerty
Instead, change the callers of `commit_packed_refs()` to call `packed_refs_unlock()`. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 2 ++ refs/packed-backend.c | 18 -- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git

[PATCH v2 28/29] repack_without_refs(): don't lock or unlock the packed refs

2017-06-23 Thread Michael Haggerty
that will eventually make it possible to fix some longstanding races. The only semantic change here is that `repack_without_refs()` used to forgot to release the lock in the `if (!removed)` exit path. That omission is now fixed. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs

[PATCH v2 24/29] packed_refs_lock(): report errors via a `struct strbuf *err`

2017-06-23 Thread Michael Haggerty
That way the callers don't have to come up with error messages themselves. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 6 ++ refs/packed-backend.c | 17 +++-- refs/packed-backend.h | 6 +++--- 3 files changed, 16 insertions(

[PATCH v2 01/29] t1408: add a test of stale packed refs covered by loose refs

2017-06-23 Thread Michael Haggerty
a test that such references don't cause problems. Signed-off-by: Junio C Hamano <gits...@pobox.com> Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- t/t1408-packed-refs.sh | 46 ++ 1 file changed, 46 insertions(+) create mode 100755 t/t1408-packed-r

[PATCH v2 07/29] validate_packed_ref_cache(): take a `packed_ref_store *` parameter

2017-06-23 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 13 ++--- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index 2b0d

[PATCH v2 03/29] packed_ref_store: new struct

2017-06-23 Thread Michael Haggerty
Start extracting the packed-refs-related data structures into a new class, `packed_ref_store`. It doesn't yet implement `ref_store`, but it will. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 42 +- 1 file chang

[PATCH v2 09/29] get_packed_refs(): take a `packed_ref_store *` parameter

2017-06-23 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index b2ef7b3bb9..bc5c

[PATCH v2 22/29] commit_packed_refs(): use a staging file separate from the lockfile

2017-06-23 Thread Michael Haggerty
shortly. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/packed-backend.c | 40 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/refs/packed-backend.c b/refs/packed-backend.c index 18ce47fcb7..71f92ed6f0 100644 --- a/refs/

[PATCH v2 00/29] Create a reference backend for packed refs

2017-06-23 Thread Michael Haggerty
): t1408: add a test of stale packed refs covered by loose refs Michael Haggerty (28): add_packed_ref(): teach function to overwrite existing refs packed_ref_store: new struct packed_ref_store: move `packed_refs_path` here packed_ref_store: move `packed_refs_lock` member here clear_packed

[PATCH v2 05/29] packed_ref_store: move `packed_refs_lock` member here

2017-06-23 Thread Michael Haggerty
Move the `packed_refs_lock` member from `files_ref_store` to `packed_ref_store`, and rename it to `lock` since it's now more obvious what it is locking. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 31 --- 1 file chang

[PATCH v2 04/29] packed_ref_store: move `packed_refs_path` here

2017-06-23 Thread Michael Haggerty
Move `packed_refs_path` from `files_ref_store` to `packed_ref_store`, and rename it to `path` since its meaning is clear from its new context. Inline `files_packed_refs_path()`. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 25 --

[PATCH v2 19/29] packed-backend: new module for handling packed references

2017-06-23 Thread Michael Haggerty
it moves code around and adjusts its visibility, but doesn't change anything. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- Makefile | 1 + refs.c| 18 ++ refs/files-backend.c | 640 +- r

[PATCH v2 21/29] commit_packed_refs(): report errors rather than dying

2017-06-23 Thread Michael Haggerty
Report errors via a `struct strbuf *err` rather than by calling `die()`. To enable this goal, change `write_packed_entry()` to report errors via a return value and `errno` rather than dying. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 10 +++--- refs/

[PATCH v2 06/29] clear_packed_ref_cache(): take a `packed_ref_store *` parameter

2017-06-23 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 16 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index de82

[PATCH v2 12/29] commit_packed_refs(): take a `packed_ref_store *` parameter

2017-06-23 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 18 +- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index 0d8f

[PATCH v2 02/29] add_packed_ref(): teach function to overwrite existing refs

2017-06-23 Thread Michael Haggerty
-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 40 ++-- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index b040bb3b0a..87cecde231 100644 --- a/refs/files-backend.c +++ b/refs

[PATCH v2 17/29] packed_ref_store: support iteration

2017-06-23 Thread Michael Haggerty
Add the infrastructure to iterate over a `packed_ref_store`. It's a lot of boilerplate, but it's all part of a campaign to make `packed_ref_store` implement `ref_store`. In the future, this iterator will work much differently. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs

[PATCH v2 16/29] packed_peel_ref(): new function, extracted from `files_peel_ref()`

2017-06-23 Thread Michael Haggerty
This will later become a method of `packed_ref_store`. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 26 +++--- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index c206

[PATCH v2 14/29] get_packed_ref(): take a `packed_ref_store *` parameter

2017-06-23 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 12 +++- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index a08d

[PATCH v2 13/29] rollback_packed_refs(): take a `packed_ref_store *` parameter

2017-06-23 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 15 +++ 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index 5d15

[PATCH v2 20/29] packed_ref_store: make class into a subclass of `ref_store`

2017-06-23 Thread Michael Haggerty
be implemented (e.g., those having to do with symrefs or reflogs). Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 16 ++-- refs/packed-backend.c | 231 +- refs/packed-backend.h | 23 ++--- refs/refs-internal.h

Re: [PATCH 00/28] Create a reference backend for packed refs

2017-06-22 Thread Michael Haggerty
e for rejecting broken refs where it is, and instead invoke `packed_ref_iterator_begin()` with the `DO_FOR_EACH_INCLUDE_BROKEN` flag. I have prepared a re-roll of the patch series, but I can't submit it until I have Junio's signoff on the test that he suggested [1]. Junio? Thanks, Michael [1] http://public-inbox.org/git/xmqqvanrsru4@gitster.mtv.corp.google.com/

[PATCH v2 1/2] for_each_bisect_ref(): don't trim refnames

2017-06-18 Thread Michael Haggerty
ach_ref_in_submodule()`. * Add a test. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> Signed-off-by: Jeff King <p...@peff.net> --- refs.c | 12 refs.h | 5 - revision.c | 2 +- t/t6002-rev-list-bisect.sh | 14

[PATCH v2 2/2] prefix_ref_iterator_advance(): relax the check of trim length

2017-06-18 Thread Michael Haggerty
. But continue to refuse to trim *more* characters than the refname contains, as that really makes no sense. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/iterator.c | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/refs/iterator.c b/refs/iterator.c

[PATCH v2 0/2] Fix a refname trimming problem in `log --bisect`

2017-06-18 Thread Michael Haggerty
. If it is included, regressions are less likely, but we won't learn about other misuses of the API. I have no strong opinion either way. Michael [1] http://public-inbox.org/git/cover.1497430232.git.mhag...@alum.mit.edu/ Michael Haggerty (2): for_each_bisect_ref(): don't trim refnames

Fwd: Best practices for updating old repos

2017-06-16 Thread Michael O'Cleirigh
(Sorry I sent this originally last night in gmail but not in plain text mode and it bounced) Hi Michael, In git if you don't merge often then you get these merge conflict hell situations. In my experience the main conflicts come not from the unified diff of those 130 commits but from

Re: [PATCH 15/28] packed_peel_ref(): new function, extracted from `files_peel_ref()`

2017-06-16 Thread Michael Haggerty
On 06/16/2017 07:42 AM, Stefan Beller wrote: > On Thu, Jun 15, 2017 at 7:47 AM, Michael Haggerty <mhag...@alum.mit.edu> > wrote: >> This will later become a method of `packed_ref_store`. > > Also while touching it, maybe rename sha1 to object_hash > (not say

Re: [PATCH 04/28] packed_ref_store: move `packed_refs_lock` member here

2017-06-16 Thread Michael Haggerty
On 06/16/2017 07:39 AM, Stefan Beller wrote: > On Thu, Jun 15, 2017 at 7:47 AM, Michael Haggerty <mhag...@alum.mit.edu> > wrote: >> [...] >> @@ -125,7 +125,7 @@ static void clear_packed_ref_cache(struct >> files_ref_store *refs) >>

Re: Best practices for updating old repos

2017-06-16 Thread Michael Eager
On 06/15/2017 09:22 PM, Stefan Beller wrote: On Thu, Jun 15, 2017 at 5:52 PM, Michael Eager <ea...@eagerm.com> wrote: One other variant of the rebase approach I've thought of is to do this incrementally, rebasing the old repo against an upstream commit a short time after the ol

Re: Best practices for updating old repos

2017-06-16 Thread Michael Eager
Thanks for your comments. On 06/15/2017 07:57 PM, Michael O'Cleirigh wrote: Hi Michael, In git if you don't merge often then you get these merge conflict hell situations. In my experience the main conflicts come not from the unified diff of those 130 commits but from differences

Best practices for updating old repos

2017-06-15 Thread Michael Eager
offer advice on how to make one of these approaches work better? What is best practice to update an old repo? -- Michael Eagerea...@eagercon.com 1960 Park Blvd., Palo Alto, CA 94306 650-325-8077

[PATCH 23/28] packed_refs_lock(): report errors via a `struct strbuf *err`

2017-06-15 Thread Michael Haggerty
That way the callers don't have to come up with error messages themselves. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 6 ++ refs/packed-backend.c | 17 +++-- refs/packed-backend.h | 6 +++--- 3 files changed, 16 insertions(

[PATCH 25/28] clear_packed_ref_cache(): don't protest if the lock is held

2017-06-15 Thread Michael Haggerty
The existing callers already check that the lock isn't held just before calling `clear_packed_ref_cache()`, and in the near future we want to be able to call this function when the lock is held. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/packed-backend.c | 2 --

[PATCH 02/28] packed_ref_store: new struct

2017-06-15 Thread Michael Haggerty
Start extracting the packed-refs-related data structures into a new class, `packed_ref_store`. It doesn't yet implement `ref_store`, but it will. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 42 +- 1 file chang

[PATCH 27/28] repack_without_refs(): don't lock or unlock the packed refs

2017-06-15 Thread Michael Haggerty
that will eventually make it possible to fix some longstanding races. The only semantic change here is that `repack_without_refs()` used to forgot to release the lock in the `if (!removed)` exit path. That omission is now fixed. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs

[PATCH 12/28] rollback_packed_refs(): take a `packed_ref_store *` parameter

2017-06-15 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 15 +++ 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index 5d15

[PATCH 05/28] clear_packed_ref_cache(): take a `packed_ref_store *` parameter

2017-06-15 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 16 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index de82

[PATCH 06/28] validate_packed_ref_cache(): take a `packed_ref_store *` parameter

2017-06-15 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 13 ++--- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index 2b0d

[PATCH 26/28] commit_packed_refs(): remove call to `packed_refs_unlock()`

2017-06-15 Thread Michael Haggerty
Instead, change the callers of `commit_packed_refs()` to call `packed_refs_unlock()`. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 2 ++ refs/packed-backend.c | 18 -- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git

[PATCH 28/28] read_packed_refs(): die if `packed-refs` contains bogus data

2017-06-15 Thread Michael Haggerty
The old code ignored any lines that it didn't understand. This is dangerous. Instead, `die()` if the `packed-refs` file contains any lines that we don't know how to handle. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/packed-backend.c | 6 +++--- 1 file changed, 3 inse

[PATCH 17/28] packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`

2017-06-15 Thread Michael Haggerty
Add a new function, `packed_read_raw_ref()`, which is nearly a `read_raw_ref_fn`. Use it in place of `resolve_packed_ref()`. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 36 +--- 1 file changed, 17 insertions(+), 19 del

[PATCH 18/28] packed-backend: new module for handling packed references

2017-06-15 Thread Michael Haggerty
it moves code around and adjusts its visibility, but doesn't change anything. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- Makefile | 1 + refs.c| 18 ++ refs/files-backend.c | 640 +- r

[PATCH 11/28] commit_packed_refs(): take a `packed_ref_store *` parameter

2017-06-15 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 18 +- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index 0d8f

[PATCH 14/28] repack_without_refs(): take a `packed_ref_store *` parameter

2017-06-15 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 20 ++-- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index 2b9d

[PATCH 13/28] get_packed_ref(): take a `packed_ref_store *` parameter

2017-06-15 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 12 +++- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index a08d

[PATCH 19/28] packed_ref_store: make class into a subclass of `ref_store`

2017-06-15 Thread Michael Haggerty
be implemented (e.g., those having to do with symrefs or reflogs). Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 16 ++-- refs/packed-backend.c | 231 +- refs/packed-backend.h | 23 ++--- refs/refs-internal.h

[PATCH 24/28] packed_refs_unlock(), packed_refs_is_locked(): new functions

2017-06-15 Thread Michael Haggerty
Add two new public functions, `packed_refs_unlock()` and `packed_refs_is_locked()`, with which callers can manage and query the `packed-refs` lock externally. Call `packed_refs_unlock()` from `commit_packed_refs()` and `rollback_packed_refs()`. Signed-off-by: Michael Haggerty <m

[PATCH 21/28] commit_packed_refs(): use a staging file separate from the lockfile

2017-06-15 Thread Michael Haggerty
shortly. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/packed-backend.c | 40 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/refs/packed-backend.c b/refs/packed-backend.c index 5bee49d497..6619052e96 100644 --- a/refs/

[PATCH 22/28] packed_refs_lock(): function renamed from lock_packed_refs()

2017-06-15 Thread Michael Haggerty
Rename `lock_packed_refs()` to `packed_refs_lock()` for consistency with how other methods are named. Also, it's about to get some companions. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 4 ++-- refs/packed-backend.c | 10 +- refs/packed-bac

[PATCH 20/28] commit_packed_refs(): report errors rather than dying

2017-06-15 Thread Michael Haggerty
Report errors via a `struct strbuf *err` rather than by calling `die()`. To enable this goal, change `write_packed_entry()` to report errors via a return value and `errno` rather than dying. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 10 +++--- refs/

[PATCH 16/28] packed_ref_store: support iteration

2017-06-15 Thread Michael Haggerty
Add the infrastructure to iterate over a `packed_ref_store`. It's a lot of boilerplate, but it's all part of a campaign to make `packed_ref_store` implement `ref_store`. In the future, this iterator will work much differently. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs

[PATCH 10/28] lock_packed_refs(): take a `packed_ref_store *` parameter

2017-06-15 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 31 ++- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c

[PATCH 15/28] packed_peel_ref(): new function, extracted from `files_peel_ref()`

2017-06-15 Thread Michael Haggerty
This will later become a method of `packed_ref_store`. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 26 +++--- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index c206

[PATCH 07/28] get_packed_ref_cache(): take a `packed_ref_store *` parameter

2017-06-15 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 26 -- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c

[PATCH 09/28] add_packed_ref(): take a `packed_ref_store *` parameter

2017-06-15 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index bc5c0de84e..4943

[PATCH 04/28] packed_ref_store: move `packed_refs_lock` member here

2017-06-15 Thread Michael Haggerty
Move the `packed_refs_lock` member from `files_ref_store` to `packed_ref_store`, and rename it to `lock` since it's now more obvious what it is locking. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 31 --- 1 file chang

[PATCH 08/28] get_packed_refs(): take a `packed_ref_store *` parameter

2017-06-15 Thread Michael Haggerty
It only cares about the packed-refs part of the reference store. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index b2ef7b3bb9..bc5c

[PATCH 00/28] Create a reference backend for packed refs

2017-06-15 Thread Michael Haggerty
lock_packed_refs(): fix cache validity check * for_each_bisect_ref(): don't trim refnames The patches can also be obtained from my GitHub fork [2] as branch "packed-ref-store". Michael [1] http://public-inbox.org/git/cover.1490026594.git.mhag...@alum.mit.edu/ [2] https://gith

[PATCH 01/28] add_packed_ref(): teach function to overwrite existing refs

2017-06-15 Thread Michael Haggerty
-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 40 ++-- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index b040bb3b0a..87cecde231 100644 --- a/refs/files-backend.c +++ b/refs

[PATCH 03/28] packed_ref_store: move `packed_refs_path` here

2017-06-15 Thread Michael Haggerty
Move `packed_refs_path` from `files_ref_store` to `packed_ref_store`, and rename it to `path` since its meaning is clear from its new context. Inline `files_packed_refs_path()`. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 25 --

[PATCH 1/2] for_each_bisect_ref(): don't trim refnames

2017-06-14 Thread Michael Haggerty
mes. So * Add a new function, `for_each_fullref_in_submodule()`, to the refs API. * Change `for_each_bad_bisect_ref()` to call the new function rather than `for_each_ref_in_submodule()`. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs.c | 12 refs.h |

[PATCH 0/2] Fix a refname trimming problem in `log --bisect`

2017-06-14 Thread Michael Haggerty
y suggestion for how to do it. This patch series can be applied on top of branch `mh/packed-ref-store-prep`, but it also applies cleanly to master. It is also available as branch `fix-bisect-trim-check` from my GitHub fork [1]. Michael [1] https://github.com/mhagger/git Michael Haggerty (2):

[PATCH 2/2] prefix_ref_iterator_advance(): relax the check of trim length

2017-06-14 Thread Michael Haggerty
. But continue to refuse to trim *more* characters than the refname contains, as that really makes no sense. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/iterator.c | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/refs/iterator.c b/refs/iterator.c

Re: [BUG] b9c8e7f2fb6e breaks git bisect visualize

2017-06-14 Thread Michael Haggerty
o make the refs side tolerate being asked to trim a refname down to the empty string, while still refusing to trim even more than that. I'll also submit a patch to that effect. Either of the patches fix the issue that was reported and pass the whole test suite (except for t1308, which seems to be broken in master for unrelated reasons). Michael

[PATCH 0/1] Fix for mh/packed-ref-store-prep

2017-06-12 Thread Michael Haggerty
applies on top of mh/packed-ref-store-prep and merges to master without problems. Michael Michael Haggerty (1): lock_packed_refs(): fix cache validity check refs/files-backend.c | 32 +++- 1 file changed, 23 insertions(+), 9 deletions(-) -- 2.11.0

[PATCH 1/1] lock_packed_refs(): fix cache validity check

2017-06-12 Thread Michael Haggerty
ed_ref_cache()` to call the new function, but only if the lock *isn't* held. * Change `lock_packed_refs()` to call the new function in any case before calling `get_packed_ref_cache()`. * Fix the comment in `lock_packed_refs()`. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- If

[BUG] add_again() off-by-one error in custom format

2017-06-11 Thread Michael Giuffrida
In a custom pretty format, using the '+' or ' ' combinators to prefix a non-empty expansion with whitespace will erroneously truncate subsequent expansions of the same type. Normally '%+X' inserts a newline before , IFF the expansion of X is non-empty: $ git log -n 1

Re: What's cooking in git.git (Jun 2017, #03; Mon, 5)

2017-06-06 Thread Michael Haggerty
s suggests marking as moved lines matching (1) and (2a) but also lines matching (1) and the following: 2b. The line is adjacent to to another line that is thought to have moved from the same old location to the same new location. Rule (2b) would be applied recursively, with the net effect being that any line satisfying (1) and (2a) is allowed to carry along any neighboring lines within the same "+"/"-" block even if they are not unique. Michael

Re: [PATCH v2 25/25] cache_ref_iterator_begin(): avoid priming unneeded directories

2017-05-24 Thread Michael Haggerty
On 05/23/2017 09:45 PM, Jeff King wrote: > On Mon, May 22, 2017 at 04:17:55PM +0200, Michael Haggerty wrote: > >> So: >> >> * Move the responsibility for doing the prefix check directly to >> `cache_ref_iterator`. This means that `cache_ref_iterator_begin()` >

[PATCH v2 13/25] ref_transaction_commit(): check for valid `transaction->state`

2017-05-22 Thread Michael Haggerty
Move the check that `transaction->state` is valid from `files_transaction_commit()` to `ref_transaction_commit()`, where other future reference backends can benefit from it as well. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs.c | 12 r

[PATCH v2 18/25] should_pack_ref(): new function, extracted from `files_pack_refs()`

2017-05-22 Thread Michael Haggerty
Extract a function for deciding whether a reference should be packed. It is a self-contained bit of logic, so splitting it out improves readability. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 42 -- 1 file chang

[PATCH v2 24/25] ref-filter: limit traversal to prefix

2017-05-22 Thread Michael Haggerty
might not be disjoint). So, since this is just an optimization, punt on the case of multiple patterns. Signed-off-by: Jeff King <p...@peff.net> Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- ref-filter.c | 64 +++-

[PATCH v2 21/25] read_packed_refs(): report unexpected fopen() failures

2017-05-22 Thread Michael Haggerty
oblems. So report any failures that are not due to ENOENT. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 14 -- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index b4fa745cd7..dbfd03f989 1

[PATCH v2 23/25] create_ref_entry(): remove `check_name` option

2017-05-22 Thread Michael Haggerty
Only one caller was using it, so move the check to that caller. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 12 refs/ref-cache.c | 6 +- refs/ref-cache.h | 3 +-- 3 files changed, 10 insertions(+), 11 deletions(-) diff

[PATCH v2 25/25] cache_ref_iterator_begin(): avoid priming unneeded directories

2017-05-22 Thread Michael Haggerty
e useful for another patch series that I'm working on. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/ref-cache.c | 94 ++-- 1 file changed, 84 insertions(+), 10 deletions(-) diff --git a/refs/ref-cache.c b/refs/ref-cache.c in

[PATCH v2 19/25] get_packed_ref_cache(): assume "packed-refs" won't change while locked

2017-05-22 Thread Michael Haggerty
If we've got the "packed-refs" file locked, then it can't change; there's no need to keep calling `stat_validity_check()` on it. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 16 +++- 1 file changed, 11 insertions(+), 5 deletion

[PATCH v2 15/25] ref_update_reject_duplicates(): expose function to whole refs module

2017-05-22 Thread Michael Haggerty
It will soon have some other users. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs.c | 17 + refs/files-backend.c | 17 - refs/refs-internal.h | 8 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/re

[PATCH v2 22/25] refs_ref_iterator_begin(): handle `GIT_REF_PARANOIA`

2017-05-22 Thread Michael Haggerty
Instead of handling `GIT_REF_PARANOIA` in `files_ref_iterator_begin()`, handle it in `refs_ref_iterator_begin()`, where it will cover all reference stores. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs.c | 5 + refs/files-backend.c | 11 --- 2

[PATCH v2 17/25] ref_update_reject_duplicates(): add a sanity check

2017-05-22 Thread Michael Haggerty
It's pretty cheap to make sure that the caller didn't pass us an unsorted list by accident, so do so. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs.c | 10 -- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/refs.c b/refs.c index 143936a9c3..d1c7

[PATCH v2 20/25] read_packed_refs(): do more of the work of reading packed refs

2017-05-22 Thread Michael Haggerty
Teach `read_packed_refs()` to also * Allocate and initialize the new `packed_ref_cache` * Open and close the `packed-refs` file * Update the `validity` field of the new object This decreases the coupling between `packed_refs_cache` and `files_ref_store` by a little bit. Signed-off-by: Michael

[PATCH v2 00/25] Prepare to separate out a packed_ref_store

2017-05-22 Thread Michael Haggerty
which works but is not yet polished), checkout the `mmap-packed-refs` branch from the same place. Michael [1] http://public-inbox.org/git/cover.1495014840.git.mhag...@alum.mit.edu/ [2] https://github.com/mhagger/git Jeff King (1): ref-filter: limit traversal to prefix Michael Haggerty (24): t

[PATCH v2 11/25] files_ref_store: put the packed files lock directly in this struct

2017-05-22 Thread Michael Haggerty
keep track of whether it is locked. This keeps related data together and makes the main reference store less of a special case. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 29 +++-- 1 file changed, 11 insertions(+), 18 deletions(-) d

[PATCH v2 10/25] files-backend: move `lock` member to `files_ref_store`

2017-05-22 Thread Michael Haggerty
Move the `lock` member from `packed_ref_cache` to `files_ref_store`, since at most one cache can have a locked "packed-refs" file associated with it. Rename it to `packed_refs_lock` to make its purpose clearer in its new home. More changes are coming here shortly. Signed-off-by: Michae

[PATCH v2 05/25] prefix_ref_iterator: don't trim too much

2017-05-22 Thread Michael Haggerty
here. Report a bug if ever asked to trim a reference whose name is not longer than `trim`. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/iterator.c | 18 +- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/refs/iterator.c b/refs/iterator.c

[PATCH v2 04/25] files-backend: use `die("BUG: ...")`, not `die("internal error: ...")`

2017-05-22 Thread Michael Haggerty
The former is by far more common in our codebase. Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu> --- refs/files-backend.c | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index cb1f528cbe..fa5d2b6f08 100644 ---

<    1   2   3   4   5   6   7   8   9   10   >