From: Eugene Surovegin Date: Mon, 09 May 2005 22:24:35 GMT Subject: Re: [RFC] allow file list editing during cg-commit Message-ID: <20050509222435.GA25901@gate.ebshome.net> In-Reply-To: <20050509084606.GD3599@pasky.ji.cz> On Mon, May 09, 2005 at 10:46:06AM +0200, Petr Baudis wrote: [snip] > The only thing to watch out for is that cg-commit -C produces no such > list at all; it should deal with that and tell the user he is not going > to be able to control what is going to be committed then. > > Another thing is that at the moment you modify the file list, you should > set customfiles - otherwise you will commit even cg-adds and cg-rms of > files you didn't select. But do that really only when you change the > file list, since it is more expensive. > > You should also place an appropriate hint near the CG: lines, saying > that removing some of them will limit the list of files to be committed. OK, how about the following patch? I tried to address all issues you mentioned and also $merging case as well. Signed-off-by: Eugene Surovegin Index: cg-commit =================================================================== --- 972d8624458936868e6f392b40858b7c362af8cd/cg-commit (mode:100755) +++ uncommitted/cg-commit (mode:100755) @@ -111,12 +111,16 @@ rm $LOGMSG $LOGMSG2 die 'Nothing to commit' fi + if [ ! "$merging" ]; then + echo "CG: By deleting lines beginning with CG:F the associated file" >>$LOGMSG + echo "CG: will be removed from the commit list." >>$LOGMSG + fi echo "CG:" >>$LOGMSG echo "CG: Modified files:" >>$LOGMSG for file in "${commitfiles[@]}"; do # TODO: Prepend a letter describing whether it's addition, # removal or update. Or call git status on those files. - echo "CG: $file" >>$LOGMSG + echo "CG:F $file" >>$LOGMSG [ "$msgs" ] && ! [ "$forceeditor" ] && echo $file done fi @@ -131,6 +135,17 @@ rm $LOGMSG $LOGMSG2 die 'Commit message not modified, commit aborted' fi + if [ ! "$ignorecache" ] && [ ! "$merging" ]; then + eval newcommitfiles=($(grep ^CG:F $LOGMSG2 | sed 's/^CG:F//')) + if [ ! "${newcommitfiles[*]}" ]; then + rm $LOGMSG $LOGMSG2 + die 'Nothing to commit' + fi + if [ "${commitfiles[*]}" != "${newcommitfiles[*]}" ]; then + commitfiles="${newcommitfiles[*]}" + customfiles="${commitfiles[*]}" + fi + fi else cat >>$LOGMSG2 fi