<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/git-rebase.sh, branch v2.9.2</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.9.2</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.9.2'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2016-05-13T20:18:27Z</updated>
<entry>
<title>Merge branch 'jc/commit-tree-ignore-commit-gpgsign'</title>
<updated>2016-05-13T20:18:27Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2016-05-13T20:18:27Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=50b26f561298c58029d408f4b0c5bca20b7806a3'/>
<id>urn:sha1:50b26f561298c58029d408f4b0c5bca20b7806a3</id>
<content type='text'>
"git commit-tree" plumbing command required the user to always sign
its result when the user sets the commit.gpgsign configuration
variable, which was an ancient mistake.  Rework "git rebase" that
relied on this mistake so that it reads commit.gpgsign and pass (or
not pass) the -S option to "git commit-tree" to keep the end-user
expectation the same, while teaching "git commit-tree" to ignore
the configuration variable.  This will stop requiring the users to
sign commit objects used internally as an implementation detail of
"git stash".

* jc/commit-tree-ignore-commit-gpgsign:
  commit-tree: do not pay attention to commit.gpgsign
</content>
</entry>
<entry>
<title>commit-tree: do not pay attention to commit.gpgsign</title>
<updated>2016-05-03T17:59:25Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2016-05-02T21:58:45Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=6694856153f85cb552cc92d75ddeabf5bdec4f20'/>
<id>urn:sha1:6694856153f85cb552cc92d75ddeabf5bdec4f20</id>
<content type='text'>
ba3c69a9 (commit: teach --gpg-sign option, 2011-10-05) introduced a
"signed commit" by teaching the --[no]-gpg-sign option and the
commit.gpgsign configuration variable to various commands that
create commits.

Teaching these to "git commit" and "git merge", both of which are
end-user facing Porcelain commands, was perfectly fine.  Allowing
the plumbing "git commit-tree" to suddenly change the behaviour to
surprise the scripts by paying attention to commit.gpgsign was not.

Among the in-tree scripts, filter-branch, quiltimport, rebase and
stash are the commands that run "commit-tree".  If any of these
wants to allow users to always sign every single commit, they should
offer their own configuration (e.g. "filterBranch.gpgsign") with an
option to disable signing (e.g. "git filter-branch --no-gpgsign").

Ignoring commit.gpgsign option _obviously_ breaks the backward
compatibility, but it is easy to follow the standard pattern in
scripts to honor whatever configuration variable they choose to
follow.  E.g.

	case $(git config --bool commit.gpgsign) in
	true) sign=-S ;;
	*) sign= ;;
	esac &amp;&amp;
	git commit-tree $sign ...whatever other args...

Do so to make sure that "git rebase" keeps paying attention to the
configuration variable, which unfortunately is a documented mistake.

Helped-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>rebase: decouple --exec from --interactive</title>
<updated>2016-03-18T21:35:31Z</updated>
<author>
<name>Stefan Beller</name>
<email>sbeller@google.com</email>
</author>
<published>2016-03-18T21:26:17Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=78ec240020db4bdd773830f3d41f4b4bdf9a4e2d'/>
<id>urn:sha1:78ec240020db4bdd773830f3d41f4b4bdf9a4e2d</id>
<content type='text'>
In the later steps of preparing a patch series I do not want to
edit or reorder the patches any more, but just make sure the
test suite passes after each patch and also to fix breakage
right there if some of the steps fail.  I could run

    EDITOR=true git rebase -i &lt;anchor&gt; -x "make test"

but it would be simpler if it can be spelled like so:

    git rebase &lt;anchor&gt; -x "make test"

Signed-off-by: Stefan Beller &lt;sbeller@google.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'jk/ok-to-fail-gc-auto-in-rebase'</title>
<updated>2016-01-26T23:40:29Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2016-01-26T23:40:29Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=eefc461ce3f2f0405639ff0919b844a894d6a02c'/>
<id>urn:sha1:eefc461ce3f2f0405639ff0919b844a894d6a02c</id>
<content type='text'>
"git rebase", unlike all other callers of "gc --auto", did not
ignore the exit code from "gc --auto".

* jk/ok-to-fail-gc-auto-in-rebase:
  rebase: ignore failures from "gc --auto"
</content>
</entry>
<entry>
<title>rebase: ignore failures from "gc --auto"</title>
<updated>2016-01-13T20:04:53Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2016-01-13T18:47:18Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=8c24f5b022095f4735fcb73364ccae7d97576636'/>
<id>urn:sha1:8c24f5b022095f4735fcb73364ccae7d97576636</id>
<content type='text'>
After rebasing, we call "gc --auto" to clean up if we
created a lot of loose objects. However, we do so inside an
&amp;&amp;-chain. If "gc --auto" fails (e.g., because a previous
background gc blocked us by leaving "gc.log" in place),
then:

  1. We will fail to clean up the state directory, leaving
     the user stuck in the rebase forever (even "git am
     --abort" doesn't work, because it calls "gc --auto"!).

  2. In some cases, we may return a bogus exit code from
     rebase, indicating failure when everything except the
     auto-gc succeeded.

We can fix this by ignoring the exit code of "gc --auto".

Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'jk/rebase-no-autostash'</title>
<updated>2015-10-05T19:30:22Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-10-05T19:30:21Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=6560584494a8053431d0c8e90b78d50f71c8055b'/>
<id>urn:sha1:6560584494a8053431d0c8e90b78d50f71c8055b</id>
<content type='text'>
There was no way to defeat a configured rebase.autostash variable
from the command line, as "git rebase --no-autostash" was missing.

* jk/rebase-no-autostash:
  Documentation/git-rebase: fix --no-autostash formatting
  rebase: support --no-autostash
</content>
</entry>
<entry>
<title>rebase: support --no-autostash</title>
<updated>2015-09-11T00:42:01Z</updated>
<author>
<name>John Keeping</name>
<email>john@keeping.me.uk</email>
</author>
<published>2015-09-10T22:30:51Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=619e3604288ab54c3694e99746661caf0f2df961'/>
<id>urn:sha1:619e3604288ab54c3694e99746661caf0f2df961</id>
<content type='text'>
This is documented as an option but we don't actually accept it.
Support it so that it is possible to override the "rebase.autostash"
config variable.

Reported-by: Daniel Hahler &lt;genml+git-2014@thequod.de&gt;
Signed-off-by: John Keeping &lt;john@keeping.me.uk&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'jk/rebase-quiet-noop' into maint</title>
<updated>2015-05-26T20:49:23Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-05-26T20:49:23Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=5d5343386414d6097cdba797c88e3bc043dc0074'/>
<id>urn:sha1:5d5343386414d6097cdba797c88e3bc043dc0074</id>
<content type='text'>
"git rebase --quiet" was not quite quiet when there is nothing to
do.

* jk/rebase-quiet-noop:
  rebase: silence "git checkout" for noop rebase
</content>
</entry>
<entry>
<title>Merge branch 'jk/rebase-quiet-noop'</title>
<updated>2015-05-11T21:23:49Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-05-11T21:23:49Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=352618287e469889c85da4f2fd32c03d5ac2f3dc'/>
<id>urn:sha1:352618287e469889c85da4f2fd32c03d5ac2f3dc</id>
<content type='text'>
"git rebase --quiet" was not quite quiet when there is nothing to
do.

* jk/rebase-quiet-noop:
  rebase: silence "git checkout" for noop rebase
</content>
</entry>
<entry>
<title>rebase: silence "git checkout" for noop rebase</title>
<updated>2015-04-28T18:38:40Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2015-04-28T05:17:37Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=22946a942627d67b09a9630a036e48ce2823cd0c'/>
<id>urn:sha1:22946a942627d67b09a9630a036e48ce2823cd0c</id>
<content type='text'>
When the branch to be rebased is already up to date, we
"git checkout" the branch, print an "up to date" message,
and end the rebase early. However, our checkout may print
"Switched to branch 'foo'" or "Already on 'foo'", even if
the user has asked for "--quiet".

We should avoid printing these messages at all, "--quiet" or
no. Since the rebase is a noop, this checkout can be seen as
optimizing out these other two checkout operations (that
happen in a real rebase):

  1. Moving to the detached HEAD to start the rebase; we
     always feed "-q" to checkout there, and instead rely on
     our own custom message (which respects --quiet).

  2. Finishing a rebase, where we move to the final branch.
     Here we actually use update-ref rather than
     git-checkout, and produce no messages.

Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
