Re: [PATCH v5 4/4] git-rebase: add keep_empty flag
- From
Neil Horman <nhorman@tuxdriver.com>
- Date
- Apr 16, 2012, 16:46 UTC
- Message-ID
- <20120416164654.GE13366@hmsreliant.think-freely.org>
- In-Reply-To
- <20120415093302.GA6263@ecki>
On Sun, Apr 15, 2012 at 11:33:03AM +0200, Clemens Buchacher wrote:
Show 17 quoted lines
> On Fri, Apr 13, 2012 at 02:45:07PM -0400, Neil Horman wrote:
> >
> > Add a command line switch to git-rebase to allow a user the ability to specify
> > that they want to keep any commits in a series that are empty.
>
> Thanks. That should be useful.
>
> > +is_empty_commit() {
> > + ptree=$(git rev-parse "$1"^{tree})
> > + pptree=$(git rev-parse "$1"^^{tree})
> > + return $(test "$ptree" = "$pptree")
> > +}
> > +
>
> What's the extra leading 'p' for? Any reason not to use 'tree' and
> 'ptree'?
> Hold-over from when I did this in C (pointer to tree vs. pointer to parent tree). I can remove the p though, as you right, it makes less sense in a shell
Show 17 quoted lines
> > pick_one () {
> > ff=--ff
> > +
> > + if is_empty_commit $@
> > + then
> > + empty_args="--allow-empty"
> > + fi
> > +
> > case "$1" in -n) sha1=$2; ff= ;; *) sha1=$1 ;; esac
>
> You do not handle the case where pick_one is called with -n. I think you
> need to move the case statement in front and then call is_empty_commit
> $sha1.
>
> Not that it matters after this change, but in general using $@ without
> quotes looks wrong to my eyes.
> Ack, to both points.
Show 22 quoted lines
> > @@ -780,9 +792,17 @@ git rev-list $merges_option --pretty=oneline --abbrev-commit \ > > sed -n "s/^>//p" | > > while read -r shortsha1 rest > > do > > + > > + if test -z "$keep_empty" && is_empty_commit $shortsha1 > > + then > > + comment_out="# pick" > > + else > > + comment_out="pick" > > + fi > > + > > if test t != "$preserve_merges" > > then > > - printf '%s\n' "pick $shortsha1 $rest" >> "$todo" > > + printf '%s\n' "$comment_out $shortsha1 $rest" >> "$todo" > > How about setting comment_out="# " or comment_out="" instead and then > > printf '%s%s\n' "$comment_out" "pick $shortsha1 $rest" >> "$todo" > > That would read more natural to me.
Yeah, I can do that
>