<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/builtin/commit.c, branch v2.17.2</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.17.2</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.17.2'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2018-03-21T18:30:10Z</updated>
<entry>
<title>Merge branch 'ma/skip-writing-unchanged-index'</title>
<updated>2018-03-21T18:30:10Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-03-21T18:30:10Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=beb2cdf5041104a7513301a9b20944a617eec94e'/>
<id>urn:sha1:beb2cdf5041104a7513301a9b20944a617eec94e</id>
<content type='text'>
Internal API clean-up to allow write_locked_index() optionally skip
writing the in-core index when it is not modified.

* ma/skip-writing-unchanged-index:
  write_locked_index(): add flag to avoid writing unchanged index
</content>
</entry>
<entry>
<title>Merge branch 'ab/gc-auto-in-commit'</title>
<updated>2018-03-08T20:36:30Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-03-08T20:36:30Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=9bb8eb0c88d210d3575bd484320f9abfef551ed1'/>
<id>urn:sha1:9bb8eb0c88d210d3575bd484320f9abfef551ed1</id>
<content type='text'>
"git commit" used to run "gc --auto" near the end, which was lost
when the command was reimplemented in C by mistake.

* ab/gc-auto-in-commit:
  commit: run git gc --auto just before the post-commit hook
</content>
</entry>
<entry>
<title>Merge branch 'jh/status-no-ahead-behind'</title>
<updated>2018-03-08T20:36:24Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-03-08T20:36:24Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=4094e47fd2c49fcdbd0152d20ed4d610d72680d7'/>
<id>urn:sha1:4094e47fd2c49fcdbd0152d20ed4d610d72680d7</id>
<content type='text'>
"git status" can spend a lot of cycles to compute the relation
between the current branch and its upstream, which can now be
disabled with "--no-ahead-behind" option.

* jh/status-no-ahead-behind:
  status: support --no-ahead-behind in long format
  status: update short status to respect --no-ahead-behind
  status: add --[no-]ahead-behind to status and commit for V2 format.
  stat_tracking_info: return +1 when branches not equal
</content>
</entry>
<entry>
<title>write_locked_index(): add flag to avoid writing unchanged index</title>
<updated>2018-03-01T21:28:01Z</updated>
<author>
<name>Martin Ågren</name>
<email>martin.agren@gmail.com</email>
</author>
<published>2018-03-01T20:40:20Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=610008146ed1647bb1da6a098e314b8929ff213e'/>
<id>urn:sha1:610008146ed1647bb1da6a098e314b8929ff213e</id>
<content type='text'>
We have several callers like

	if (active_cache_changed &amp;&amp; write_locked_index(...))
		handle_error();
	rollback_lock_file(...);

where the final rollback is needed because "!active_cache_changed"
shortcuts the if-expression. There are also a few variants of this,
including some if-else constructs that make it more clear when the
explicit rollback is really needed.

Teach `write_locked_index()` to take a new flag SKIP_IF_UNCHANGED and
simplify the callers. Leave the most complicated of the callers (in
builtin/update-index.c) unchanged. Rewriting it to use this new flag
would end up duplicating logic.

We could have made the new flag behave the other way round
("FORCE_WRITE"), but that could break existing users behind their backs.
Let's take the more conservative approach. We can still migrate existing
callers to use our new flag. Later we might even be able to flip the
default, possibly without entirely ignoring the risk to in-flight or
out-of-tree topics.

Suggested-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Martin Ågren &lt;martin.agren@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>commit: run git gc --auto just before the post-commit hook</title>
<updated>2018-03-01T19:34:06Z</updated>
<author>
<name>Ævar Arnfjörð Bjarmason</name>
<email>avarab@gmail.com</email>
</author>
<published>2018-02-28T23:04:25Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=095c741edd1d9604b6c285000a836721fd69f051'/>
<id>urn:sha1:095c741edd1d9604b6c285000a836721fd69f051</id>
<content type='text'>
Change the behavior of git-commit back to what it was back in
d4bb43ee27 ("Invoke "git gc --auto" from commit, merge, am and
rebase.", 2007-09-05) when it was git-commit.sh.

Shortly afterwards in f5bbc3225c ("Port git commit to C.", 2007-11-08)
when it was ported to C, the "git gc --auto" invocation went away.

Since that unintended regression, git gc --auto only ran for git-am,
git-merge, git-fetch, and git-receive-pack.  It was possible to
write a script that would "git commit" a lot of data locally, and gc
would never run.

One such repository that was locally committing generated zone file
changes had grown to a size of ~60GB before a daily cronjob was added
to "git gc", bringing it down to less than 1GB. This will make such
cases work without intervention.

I think fixing such pathological cases where the repository will grow
forever is a worthwhile trade-off for spending a couple of
milliseconds calling "git gc --auto" (in the common cases where it
doesn't do anything).

Signed-off-by: Ævar Arnfjörð Bjarmason &lt;avarab@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'ab/commit-m-with-fixup' into maint</title>
<updated>2018-02-27T18:43:54Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-02-27T18:43:54Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=c1ab3b8a44149a8dfb8968a958b13ac9e8d9579a'/>
<id>urn:sha1:c1ab3b8a44149a8dfb8968a958b13ac9e8d9579a</id>
<content type='text'>
"git commit --fixup" did not allow "-m&lt;message&gt;" option to be used
at the same time; allow it to annotate resulting commit with more
text.

* ab/commit-m-with-fixup:
  commit: add support for --fixup &lt;commit&gt; -m"&lt;extra message&gt;"
  commit doc: document that -c, -C, -F and --fixup with -m error
</content>
</entry>
<entry>
<title>Merge branch 'nd/ita-wt-renames-in-status' into maint</title>
<updated>2018-02-27T18:39:35Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-02-27T18:39:34Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=12accdc023f2b62109860cb745bdd1827b2c22de'/>
<id>urn:sha1:12accdc023f2b62109860cb745bdd1827b2c22de</id>
<content type='text'>
"git status" after moving a path in the working tree (hence making
it appear "removed") and then adding with the -N option (hence
making that appear "added") detected it as a rename, but did not
report the  old and new pathnames correctly.

* nd/ita-wt-renames-in-status:
  wt-status.c: handle worktree renames
  wt-status.c: rename rename-related fields in wt_status_change_data
  wt-status.c: catch unhandled diff status codes
  wt-status.c: coding style fix
  Use DIFF_DETECT_RENAME for detect_rename assignments
  t2203: test status output with porcelain v2 format
</content>
</entry>
<entry>
<title>Merge branch 'po/object-id'</title>
<updated>2018-02-15T22:55:43Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-02-15T22:55:43Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=8be8342b4c47df386c6eced39922595d7dfdccc9'/>
<id>urn:sha1:8be8342b4c47df386c6eced39922595d7dfdccc9</id>
<content type='text'>
Conversion from uchar[20] to struct object_id continues.

* po/object-id:
  sha1_file: rename hash_sha1_file_literally
  sha1_file: convert write_loose_object to object_id
  sha1_file: convert force_object_loose to object_id
  sha1_file: convert write_sha1_file to object_id
  notes: convert write_notes_tree to object_id
  notes: convert combine_notes_* to object_id
  commit: convert commit_tree* to object_id
  match-trees: convert splice_tree to object_id
  cache: clear whole hash buffer with oidclr
  sha1_file: convert hash_sha1_file to object_id
  dir: convert struct sha1_stat to use object_id
  sha1_file: convert pretend_sha1_file to object_id
</content>
</entry>
<entry>
<title>Merge branch 'pw/sequencer-in-process-commit'</title>
<updated>2018-02-13T21:39:15Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-02-13T21:39:15Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=0f57f731ea2a540a4c82b476054e8a36aebb2314'/>
<id>urn:sha1:0f57f731ea2a540a4c82b476054e8a36aebb2314</id>
<content type='text'>
The sequencer infrastructure is shared across "git cherry-pick",
"git rebase -i", etc., and has always spawned "git commit" when it
needs to create a commit.  It has been taught to do so internally,
when able, by reusing the codepath "git commit" itself uses, which
gives performance boost for a few tens of percents in some sample
scenarios.

* pw/sequencer-in-process-commit:
  sequencer: run 'prepare-commit-msg' hook
  t7505: add tests for cherry-pick and rebase -i/-p
  t7505: style fixes
  sequencer: assign only free()able strings to gpg_sign
  sequencer: improve config handling
  t3512/t3513: remove KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT=1
  sequencer: try to commit without forking 'git commit'
  sequencer: load commit related config
  sequencer: simplify adding Signed-off-by: trailer
  commit: move print_commit_summary() to libgit
  commit: move post-rewrite code to libgit
  Add a function to update HEAD after creating a commit
  commit: move empty message checks to libgit
  t3404: check intermediate squash messages
</content>
</entry>
<entry>
<title>commit: convert commit_tree* to object_id</title>
<updated>2018-01-30T18:42:36Z</updated>
<author>
<name>Patryk Obara</name>
<email>patryk.obara@gmail.com</email>
</author>
<published>2018-01-28T00:13:16Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=5078f344591ee3c454e64ff73e6563f0a3f14950'/>
<id>urn:sha1:5078f344591ee3c454e64ff73e6563f0a3f14950</id>
<content type='text'>
Convert the definitions and declarations of commit_tree and
commit_tree_extended to use struct object_id and adjust all usages of
these functions.

Signed-off-by: Patryk Obara &lt;patryk.obara@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
