Re: [PATCH 18/18] git receive-pack: support excluding objects from fsck'ing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Junio,

On Wed, 10 Dec 2014, Junio C Hamano wrote:

> Johannes Schindelin <johannes.schindelin@xxxxxx> writes:
> 
> > The optional new config option `receive.fsck.skip-list` specifies the path
> > to a file listing the names, i.e. SHA-1s, one per line, of objects that
> > are to be ignored by `git receive-pack` when `receive.fsckObjects = true`.
> >
> > This is extremely handy in case of legacy repositories where it would
> > cause more pain to change incorrect objects than to live with them
> > (e.g. a duplicate 'author' line in an early commit object).
> >
> > The intended use case is for server administrators to inspect objects
> > that are reported by `git push` as being too problematic to enter the
> > repository, and to add the objects' SHA-1 to a (preferably sorted) file
> > when the objects are legitimate, i.e. when it is determined that those
> > problematic objects should be allowed to enter the server.
> >
> > Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx>
> > ---
> >  builtin/receive-pack.c          |  9 +++++++
> >  fsck.c                          | 59 +++++++++++++++++++++++++++++++++++++++--
> >  fsck.h                          |  2 ++
> >  t/t5504-fetch-receive-strict.sh | 12 +++++++++
> >  4 files changed, 80 insertions(+), 2 deletions(-)
> >
> > diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
> > index 111e514..5169f1f 100644
> > --- a/builtin/receive-pack.c
> > +++ b/builtin/receive-pack.c
> > @@ -110,6 +110,15 @@ static int receive_pack_config(const char *var, const char *value, void *cb)
> >  		return 0;
> >  	}
> >  
> > +	if (starts_with(var, "receive.fsck.skip-list")) {
> 
> s/skip-list/skiplist/;
> 
> > +		const char *path = is_absolute_path(value) ?
> > +			value : git_path("%s", value);
> > +		if (fsck_strict_mode.len)
> > +			strbuf_addch(&fsck_strict_mode, ',');
> > +		strbuf_addf(&fsck_strict_mode, "skip-list=%s", path);
> > +		return 0;
> > +	}
> > +
> >  	if (starts_with(var, "receive.fsck.")) {
> >  		if (fsck_strict_mode.len)
> >  			strbuf_addch(&fsck_strict_mode, ',');
> > diff --git a/fsck.c b/fsck.c
> > index 154f361..00693f2 100644
> > --- a/fsck.c
> > +++ b/fsck.c
> > @@ -7,6 +7,7 @@
> >  #include "tag.h"
> >  #include "fsck.h"
> >  #include "refs.h"
> > +#include "sha1-array.h"
> >  
> >  #define FOREACH_MSG_ID(FUNC) \
> >  	/* fatal errors */ \
> > @@ -56,7 +57,9 @@
> >  	FUNC(ZERO_PADDED_FILEMODE) \
> >  	/* infos (reported as warnings, but ignored by default) */ \
> >  	FUNC(INVALID_TAG_NAME) \
> > -	FUNC(MISSING_TAGGER_ENTRY)
> > +	FUNC(MISSING_TAGGER_ENTRY) \
> > +	/* special value */ \
> > +	FUNC(SKIP_LIST)
> 
> This feels like a kludge to me without comment on what "special
> value" means.  Does it mean "this object has an error (which by
> default is ignored) of being on the skip list?"  Should we be able
> to optionally warn an object on the skip-list exists with the same
> mechansim the rest of the series uses to tweak the error level?

I addressed both concerns – I hope... ;-)

Ciao,
Dscho

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]