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

Re: [PATCH v2 1/2] sh-setup: Write a new require_clean_work_tree function

From
Ramkumar Ramachandra <artagnon@gmail.com>
Date
Oct 1, 2010, 04:57 UTC
Message-ID
<20101001045713.GE20098@kytes>
In-Reply-To
<7v4od7hsqt.fsf@alter.siamese.dyndns.org>
Hi Junio,
Thanks for the review.
Junio C Hamano writes:
Show 8 quoted lines
> > Write a new require_clean_work_tree function to error out when
> > unstaged changes are present in the working tree and (optionally)
> > uncommitted changes in the index.
> >
> > Cc: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
> > Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
> 
> Please don't do this in-body "Cc:"; it is meaningless.

Oh. What I intended to say was that Matthieu reviewed my previous iteration- should I just put that information in the cover letter or is there some other notation I should use? I can't use "Reviewed-by" either because he only reviewed the previous iteration- not this one.

Show 21 quoted lines
> > ---
> >  git-sh-setup.sh |   28 ++++++++++++++++++++++++++++
> >  1 files changed, 28 insertions(+), 0 deletions(-)
> >
> > diff --git a/git-sh-setup.sh b/git-sh-setup.sh
> > index 6131670..215ec33 100644
> > --- a/git-sh-setup.sh
> > +++ b/git-sh-setup.sh
> > @@ -145,6 +145,34 @@ require_work_tree () {
> >  	die "fatal: $0 cannot be used without a working tree."
> >  }
> >  
> > +require_clean_work_tree () {
> > +	# Update the index
> > +	git update-index -q --ignore-submodules --refresh
> > +	err=0
> > +
> > +	# Disallow unstaged changes in the working tree
> > +	if ! git diff-files --quiet --ignore-submodules --
> 
> What is that trailing double-dash about?

Hm, I think I got confused between the options that git-diff-index and git-diff-files take. I'll get rid of this in the next iteration.

Show 11 quoted lines
> > +	then
> > +		echo >&2 "cannot $1: you have unstaged changes."
> > +		git diff-files --name-status -r --ignore-submodules -- >&2
> > +		err=1
> > +	fi
> > +
> > +	# Disallow uncommitted changes in the index
> > +	if ! git diff-index --cached --quiet HEAD --ignore-submodules --
> 
> Do not write HEAD there that sets a wrong example; the command line
> arguments are flag-options, revs, double-dash and pathspec.

Ok. I suppose `git diff-index --cached --quiet --ignore-submodules HEAD --` is better. Should I keep the double-dash or is it unnecessary?

> Contrary to what your proposed log message says, I do not see anything
> "optional" in the way how this check is done here...  What is going on?

Oops, sorry about that -- it's a slightly dated log message: While writing the patch, I thought I'd be clever and pass a `$2` to make this optional, but decided against it later.

> Unfortunately we cannot judge if unconditional check is the right thing to
> do without looking at the callers; why did you make this into two-patch
> series?
Oh, ok. I'll make it a single patch in the next iteration.
> Mental note before reviewing the second patch: do all callers want the
> same "both working tree and index are spiffy clean" check?
Not necessarily, but I figured that many of them want it.
Show 15 quoted lines
> > +	then
> > +		echo >&2 "cannot $1: your index contains uncommitted changes."
> > +		git diff-index --cached --name-status -r --ignore-submodules HEAD -- >&2
> > +		err=1
> > +	fi
> > +
> > +	if [ $err = 1 ]
> > +	then
> > +	    echo >&2 "Please commit or stash them."
> > +	    exit 1
> > +	fi
> > +}
> 
> Mental note before reviewing the second patch: warning/error messages from
> this codepath are all written without warning: or error: prefixes.

As you've pointed out in the second patch, it's probably not a good idea to print out the advice here.

-- Ram
Previous: Junio C HamanoNext: Jonathan Nieder
Message 4 of 19 in “Eliminate cryptic "needs update" error message”
  1. 0/2 Eliminate cryptic "needs update" error messageRamkumar Ramachandra, Sep 30, 2010
  2. 1/2 sh-setup: Write a new require_clean_work_tree functionRamkumar Ramachandra, Sep 30, 2010
  3. Junio C HamanoSep 30, 2010
  4. Ramkumar RamachandraOct 1, 2010
  5. Jonathan NiederOct 1, 2010
  6. Ramkumar RamachandraOct 1, 2010
  7. Jonathan NiederOct 1, 2010
  8. Ramkumar RamachandraOct 1, 2010
  9. Jonathan NiederOct 1, 2010
  10. Sverre RabbelierOct 1, 2010
  11. 0/2 Eliminate cryptic "needs update" error messageRamkumar Ramachandra, Oct 2, 2010
  12. 1/2 sh-setup: Write a new require_clean_work_tree functionRamkumar Ramachandra, Oct 2, 2010
  13. Ramkumar RamachandraOct 2, 2010
  14. SubmittingPatches: Document some extra tags used in commit messagesRamkumar Ramachandra, Oct 2, 2010
  15. Junio C HamanoOct 1, 2010
  16. 2/2 Porcelain scripts: Rewrite cryptic "needs update" error messageRamkumar Ramachandra, Sep 30, 2010
  17. Junio C HamanoSep 30, 2010
  18. Ramkumar RamachandraOct 1, 2010
  19. Junio C HamanoOct 3, 2010

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.