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

Re: New script: cg-clean

From
Petr Baudis <pasky@suse.cz>
Date
Aug 11, 2005, 23:29 UTC
Message-ID
<20050811232925.GK25280@pasky.ji.cz>
In-Reply-To
<1123312443.17959.34.camel@dv.roinet.com>

Dear diary, on Sat, Aug 06, 2005 at 09:14:03AM CEST, I got a letter where Pavel Roskin <proski@gnu.org> told me that...

> Hello, Petr!
Hello,
> Sorry for delay.
no problem, and sorry for another delay on my side too. :-)
Show 19 quoted lines
> On Sun, 2005-07-10 at 17:46 +0200, Petr Baudis wrote:
> > (v) Semantically, I think it's quite close to cg-reset. What about
> > making it part of cg-reset instead of a separate command? I tend to be
> > careful about command inflation. (That's part of being careful about the
> > usability in general.) That's just an idea and possibly a bad one, what
> > do you think?
> 
> I understand your concern, but cg-reset does other things.  cg-reset
> changes the branch.  cg-clean allows to start the build from scratch
> without changing the branch.
> 
> It's not uncommon for me to revert patches one-by-one looking for the
> patch that breaks something.  I could make minor changes e.g for
> debugging or to fix breakage in certain revisions.  I would revert such
> by cg-clean before going to another revision.  cg-reset would be an
> overkill - it would move me to the latest release.
> 
> I can imagine that cg-reset would call cg-clean (optionally) to allow
> fresh start on the main branch.  The opposite would be wrong.
Yes, that makes sense.
> Here's the simplified cg-clean script.  Note that the "-d" option is not
> working with the current version of git of a bug in git-ls-files.  I can
> work it around by scanning all directories in bash, but I think it's
> easier to fix git (remove "continue" before DT_REG in ls-files.c).
Is that fixed already?
> Processing of .gitignore was taken from cg-status, and I don't really
> understand it.  But I think it's important to keep that code in sync.
> It could later go to cg-Xlib.

It became much simpler a short while later, thankfully. Judging from your another patch, I suppose you are going to update this script accordingly?

Show 15 quoted lines
> Signed-off-by: Pavel Roskin <proski@gnu.org>
> 
> #!/usr/bin/env bash
> #
> # Clean unknown files from the working tree.
> # Copyright (c) Pavel Roskin, 2005
> #
> # Cleans file and directories that are not under version control.
> # When run without arguments, files ignored by cg-status and directories
> # are not removed.
> #
> # OPTIONS
> # -------
> # -d::
> #	Also clean directories.
Perhaps add "and their contents" to prevent bad surprises.
Show 22 quoted lines
> #
> # -x::
> #	Also clean files ignored by cg-status, such as object files.
> 
> USAGE="cg-clean [-d] [-x]"
> 
> . ${COGITO_LIB}cg-Xlib
> 
> cleanexclude=
> cleandir=
> while optparse; do
> 	if optparse -d; then
> 		cleandir=1
> 	elif optparse -x; then
> 		cleanexclude=1
> 	else
> 		optfail
> 	fi
> done
> 
> # Good candidate for cg-Xlib
> # Put exclude options for git-ls-files to EXCLUDE
..snip..
Show 10 quoted lines
> 
> git-update-cache --refresh > /dev/null
> 
> # Need to use temporary file so that changing IFS doesn't affect $EXCLUDE
> # expansion.
> filelist=$(mktemp -t gitlsfiles.XXXXXX)
> git-ls-files --others $EXCLUDE >"$filelist"
> save_IFS="$IFS"
> IFS=$'\n'
> for file in $(cat "$filelist"); do
Why can't you use git-ls-files | IFS=$'\n' while ?
Show 7 quoted lines
> 	IFS="$save_IFS"
> 	if [ -d "$file" ]; then
> 		if [ "$cleandir" ]; then
> 			# Try really hard by changing permissions
> 			chmod -R 700 "$file"
> 			rm -rf "$file"
> 		fi
An error message would be in order otherwise, I guess.
> 		return

I suppose you mean continue? I'm not really sure what does return do here, if it jumps out of the do block or what, and continue is nicely explicit. :-)

Show 5 quoted lines
> 	fi
> 	rm -f "$file"
> done
> 
> rm -f "$filelist"
-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
If you want the holes in your knowledge showing up try teaching
someone.  -- Alan Cox
Previous: Pavel RoskinNext: Pavel Roskin
Message 5 of 8 in “New script: cg-clean”
  1. Pavel RoskinJul 8, 2005
  2. Wolfgang DenkJul 8, 2005
  3. Petr BaudisJul 10, 2005
  4. Pavel RoskinAug 6, 2005
  5. Petr BaudisAug 11, 2005
  6. Pavel RoskinAug 12, 2005
  7. Petr BaudisAug 12, 2005
  8. Pavel RoskinAug 12, 2005

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.