<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/builtin, branch v2.16.2</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.16.2</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.16.2'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2018-02-15T23:18:13Z</updated>
<entry>
<title>Merge branch 'jk/abort-clone-with-existing-dest' into maint</title>
<updated>2018-02-15T23:18:13Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-02-15T23:18:12Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=1363914a6a4ad013f1cb0189e4ff63a17482bcae'/>
<id>urn:sha1:1363914a6a4ad013f1cb0189e4ff63a17482bcae</id>
<content type='text'>
"git clone $there $here" is allowed even when here directory exists
as long as it is an empty directory, but the command incorrectly
removed it upon a failure of the operation.

* jk/abort-clone-with-existing-dest:
  clone: do not clean up directories we didn't create
  clone: factor out dir_exists() helper
  t5600: modernize style
  t5600: fix outdated comment about unborn HEAD
</content>
</entry>
<entry>
<title>Merge branch 'rs/lose-leak-pending' into maint</title>
<updated>2018-02-15T23:18:11Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-02-15T23:18:11Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=e17cec27d18c730dae738684d2f5df1dbd54a804'/>
<id>urn:sha1:e17cec27d18c730dae738684d2f5df1dbd54a804</id>
<content type='text'>
API clean-up around revision traversal.

* rs/lose-leak-pending:
  commit: remove unused function clear_commit_marks_for_object_array()
  revision: remove the unused flag leak_pending
  checkout: avoid using the rev_info flag leak_pending
  bundle: avoid using the rev_info flag leak_pending
  bisect: avoid using the rev_info flag leak_pending
  object: add clear_commit_marks_all()
  ref-filter: use clear_commit_marks_many() in do_merge_filter()
  commit: use clear_commit_marks_many() in remove_redundant()
  commit: avoid allocation in clear_commit_marks_many()
</content>
</entry>
<entry>
<title>Merge branch 'dk/describe-all-output-fix' into maint</title>
<updated>2018-02-15T23:18:10Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-02-15T23:18:10Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=468dc22e0085db29994b4296ca0127f27a686fa0'/>
<id>urn:sha1:468dc22e0085db29994b4296ca0127f27a686fa0</id>
<content type='text'>
An old regression in "git describe --all $annotated_tag^0" has been
fixed.

* dk/describe-all-output-fix:
  describe: prepend "tags/" when describing tags with embedded name
</content>
</entry>
<entry>
<title>Merge branch 'ew/empty-merge-with-dirty-index'</title>
<updated>2018-01-05T21:28:09Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-01-05T21:28:09Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=843d94b3cd30e61c7c4879f9bc6d013021b9350a'/>
<id>urn:sha1:843d94b3cd30e61c7c4879f9bc6d013021b9350a</id>
<content type='text'>
"git merge -s recursive" did not correctly abort when the index is
dirty, if the merged tree happened to be the same as the current
HEAD, which has been fixed.

* ew/empty-merge-with-dirty-index:
  merge-recursive: avoid incorporating uncommitted changes in a merge
  move index_has_changes() from builtin/am.c to merge.c for reuse
  t6044: recursive can silently incorporate dirty changes in a merge
</content>
</entry>
<entry>
<title>clone: do not clean up directories we didn't create</title>
<updated>2018-01-03T21:33:49Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2018-01-02T21:11:39Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=d45420c1c8612f085f1901c33ff6f0ccfbb72d3b'/>
<id>urn:sha1:d45420c1c8612f085f1901c33ff6f0ccfbb72d3b</id>
<content type='text'>
Once upon a time, git-clone would refuse to write into a
directory that it did not itself create. The cleanup
routines for a failed clone could therefore just remove the
git and worktree dirs completely.

In 55892d2398 (Allow cloning to an existing empty directory,
2009-01-11), we learned to write into an existing directory.
Which means that doing:

  mkdir foo
  git clone will-fail foo

ends up deleting foo. This isn't a huge catastrophe, since
by definition foo must be empty. But it's somewhat
confusing; we should leave the filesystem as we found it.

Because we know that the only directory we'll write into is
an empty one, we can handle this case by just passing the
KEEP_TOPLEVEL flag to our recursive delete (if we could
write into populated directories, we'd have to keep track of
what we wrote and what we did not, which would be much
harder).

Note that we need to handle the work-tree and git-dir
separately, though, as only one might exist (and the new
tests in t5600 cover all cases).

Reported-by: Stephan Janssen &lt;sjanssen@you-get.com&gt;
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>clone: factor out dir_exists() helper</title>
<updated>2018-01-03T21:33:05Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2018-01-02T21:10:14Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=f9e377adc0b1ed06e35d2c77a6c9f2687c5b950b'/>
<id>urn:sha1:f9e377adc0b1ed06e35d2c77a6c9f2687c5b950b</id>
<content type='text'>
Two parts of git-clone's setup logic check whether a
directory exists, and they both call stat directly with the
same scratch "struct stat" buffer. Let's pull that into a
helper, which has a few advantages:

  - it makes the purpose of the stat calls more obvious

  - it makes it clear that we don't care about the
    information in "buf" remaining valid

  - if we later decide to make the check more robust (e.g.,
    complaining about non-directories), we can do it in one
    place

Note that we could just use file_exists() for this, which
has identical code. But we specifically care about
directories, so this future-proofs us against that function
later getting more picky about seeing actual files.

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 'sb/describe-blob'</title>
<updated>2017-12-28T22:08:50Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2017-12-28T22:08:50Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=556de1a8e38ff03d31fd35751582447001f39d0c'/>
<id>urn:sha1:556de1a8e38ff03d31fd35751582447001f39d0c</id>
<content type='text'>
"git describe" was taught to dig trees deeper to find a
&lt;commit-ish&gt;:&lt;path&gt; that refers to a given blob object.

* sb/describe-blob:
  builtin/describe.c: describe a blob
  builtin/describe.c: factor out describe_commit
  builtin/describe.c: print debug statements earlier
  builtin/describe.c: rename `oid` to avoid variable shadowing
  revision.h: introduce blob/tree walking in order of the commits
  list-objects.c: factor out traverse_trees_and_blobs
  t6120: fix typo in test name
</content>
</entry>
<entry>
<title>Merge branch 'hi/merge-verify-sig-config'</title>
<updated>2017-12-28T22:08:50Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2017-12-28T22:08:50Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=0433d533f13671f4313c31e34707f0f5281a18e0'/>
<id>urn:sha1:0433d533f13671f4313c31e34707f0f5281a18e0</id>
<content type='text'>
"git merge" learned to pay attention to merge.verifySignatures
configuration variable and pretend as if '--verify-signatures'
option was given from the command line.

* hi/merge-verify-sig-config:
  t5573, t7612: clean up after unexpected success of 'pull' and 'merge'
  t: add tests for pull --verify-signatures
  merge: add config option for verifySignatures
</content>
</entry>
<entry>
<title>Merge branch 'jt/transport-hide-vtable'</title>
<updated>2017-12-28T22:08:47Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2017-12-28T22:08:47Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=2546de27c31c65cd4a94782cc9939a662d7f837c'/>
<id>urn:sha1:2546de27c31c65cd4a94782cc9939a662d7f837c</id>
<content type='text'>
Code clean-up.

* jt/transport-hide-vtable:
  transport: make transport vtable more private
  clone, fetch: remove redundant transport check
</content>
</entry>
<entry>
<title>Merge branch 'cc/skip-to-optional-val'</title>
<updated>2017-12-28T22:08:46Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2017-12-28T22:08:46Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=f427b94985f7f8cde46df20f644760adc0ca6735'/>
<id>urn:sha1:f427b94985f7f8cde46df20f644760adc0ca6735</id>
<content type='text'>
Introduce a helper to simplify code to parse a common pattern that
expects either "--key" or "--key=&lt;something&gt;".

* cc/skip-to-optional-val:
  t4045: reindent to make helpers readable
  diff: add tests for --relative without optional prefix value
  diff: use skip_to_optional_arg_default() in parsing --relative
  diff: use skip_to_optional_arg_default()
  diff: use skip_to_optional_arg()
  index-pack: use skip_to_optional_arg()
  git-compat-util: introduce skip_to_optional_arg()
</content>
</entry>
</feed>
