<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/branch.c, branch v2.2.3</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.2.3</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.2.3'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2014-10-15T17:47:24Z</updated>
<entry>
<title>refs.c: change resolve_ref_unsafe reading argument to be a flags field</title>
<updated>2014-10-15T17:47:24Z</updated>
<author>
<name>Ronnie Sahlberg</name>
<email>sahlberg@google.com</email>
</author>
<published>2014-07-15T19:59:36Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=7695d118e5a3c9c6fcb4cb15eb766a1c57422aed'/>
<id>urn:sha1:7695d118e5a3c9c6fcb4cb15eb766a1c57422aed</id>
<content type='text'>
resolve_ref_unsafe takes a boolean argument for reading (a nonexistent ref
resolves successfully for writing but not for reading).  Change this to be
a flags field instead, and pass the new constant RESOLVE_REF_READING when
we want this behaviour.

While at it, swap two of the arguments in the function to put output
arguments at the end.  As a nice side effect, this ensures that we can
catch callers that were unaware of the new API so they can be audited.

Give the wrapper functions resolve_refdup and read_ref_full the same
treatment for consistency.

Signed-off-by: Ronnie Sahlberg &lt;sahlberg@google.com&gt;
Signed-off-by: Jonathan Nieder &lt;jrnieder@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>refs.c: pass the ref log message to _create/delete/update instead of _commit</title>
<updated>2014-10-15T17:47:22Z</updated>
<author>
<name>Ronnie Sahlberg</name>
<email>sahlberg@google.com</email>
</author>
<published>2014-04-30T19:22:42Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=db7516ab9f435e3ce86b257c6631fb4d2dfb12ae'/>
<id>urn:sha1:db7516ab9f435e3ce86b257c6631fb4d2dfb12ae</id>
<content type='text'>
Change the ref transaction API so that we pass the reflog message to the
create/delete/update functions instead of to ref_transaction_commit.
This allows different reflog messages for each ref update in a multi-ref
transaction.

Signed-off-by: Ronnie Sahlberg &lt;sahlberg@google.com&gt;
Signed-off-by: Jonathan Nieder &lt;jrnieder@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'rs/ref-transaction-1'</title>
<updated>2014-09-11T17:33:31Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-09-11T17:33:30Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=01d678a2263c0c71e42475335b5b0b578936a7d1'/>
<id>urn:sha1:01d678a2263c0c71e42475335b5b0b578936a7d1</id>
<content type='text'>
The second batch of the transactional ref update series.

* rs/ref-transaction-1: (22 commits)
  update-ref --stdin: pass transaction around explicitly
  update-ref --stdin: narrow scope of err strbuf
  refs.c: make delete_ref use a transaction
  refs.c: make prune_ref use a transaction to delete the ref
  refs.c: remove lock_ref_sha1
  refs.c: remove the update_ref_write function
  refs.c: remove the update_ref_lock function
  refs.c: make lock_ref_sha1 static
  walker.c: use ref transaction for ref updates
  fast-import.c: use a ref transaction when dumping tags
  receive-pack.c: use a reference transaction for updating the refs
  refs.c: change update_ref to use a transaction
  branch.c: use ref transaction for all ref updates
  fast-import.c: change update_branch to use ref transactions
  sequencer.c: use ref transactions for all ref updates
  commit.c: use ref transactions for updates
  replace.c: use the ref transaction functions for updates
  tag.c: use ref transactions when doing updates
  refs.c: add transaction.status and track OPEN/CLOSED
  refs.c: make ref_transaction_begin take an err argument
  ...
</content>
</entry>
<entry>
<title>branch.c: use ref transaction for all ref updates</title>
<updated>2014-09-03T17:04:13Z</updated>
<author>
<name>Ronnie Sahlberg</name>
<email>sahlberg@google.com</email>
</author>
<published>2014-04-16T23:21:53Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=d43f990fac72264c1553beb7dbc6e8e795083d42'/>
<id>urn:sha1:d43f990fac72264c1553beb7dbc6e8e795083d42</id>
<content type='text'>
Change create_branch to use a ref transaction when creating the new branch.

This also fixes a race condition in the old code where two concurrent
create_branch could race since the lock_any_ref_for_update/write_ref_sha1
did not protect against the ref already existing. I.e. one thread could end up
overwriting a branch even if the forcing flag is false.

Signed-off-by: Ronnie Sahlberg &lt;sahlberg@google.com&gt;
Reviewed-by: Michael Haggerty &lt;mhagger@alum.mit.edu&gt;
Signed-off-by: Jonathan Nieder &lt;jrnieder@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>branch.c: replace `git_config()` with `git_config_get_string()</title>
<updated>2014-08-07T20:33:29Z</updated>
<author>
<name>Tanay Abhra</name>
<email>tanayabh@gmail.com</email>
</author>
<published>2014-08-07T17:56:42Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=540b0f497701fca2749de86c58bc16f44fcb30b5'/>
<id>urn:sha1:540b0f497701fca2749de86c58bc16f44fcb30b5</id>
<content type='text'>
Use `git_config_get_string()` instead of `git_config()` to take advantage of
the config-set API which provides a cleaner control flow. While we are at
it, return -1 if we find no value for the queried variable. Original code
returned 0 for all cases, which was checked by `add_branch_desc()` in
fmt-merge-msg.c resulting in addition of a spurious newline to the `out`
strbuf. Now, the newline addition is skipped as -1 is returned to the caller
if no value is found.

Signed-off-by: Tanay Abhra &lt;tanayabh@gmail.com&gt;
Reviewed-by: Matthieu Moy &lt;Matthieu.Moy@imag.fr&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>change `git_config()` return value to void</title>
<updated>2014-08-07T18:40:17Z</updated>
<author>
<name>Tanay Abhra</name>
<email>tanayabh@gmail.com</email>
</author>
<published>2014-08-07T11:59:15Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=aace4385027b0366f43961a94c8ed95ac9b3bd53'/>
<id>urn:sha1:aace4385027b0366f43961a94c8ed95ac9b3bd53</id>
<content type='text'>
Currently `git_config()` returns an integer signifying an error code.
During rewrites of the function most of the code was shifted to
`git_config_with_options()`. `git_config_with_options()` normally
returns positive values if its `config_source` parameter is set as NULL,
as most errors are fatal, and non-fatal potential errors are guarded
by "if" statements that are entered only when no error is possible.

Still a negative value can be returned in case of race condition between
`access_or_die()` &amp; `git_config_from_file()`. Also, all callers of
`git_config()` ignore the return value except for one case in branch.c.

Change `git_config()` return value to void and make it die if it receives
a negative value from `git_config_with_options()`.

Original-patch-by: Matthieu Moy &lt;Matthieu.Moy@imag.fr&gt;
Signed-off-by: Tanay Abhra &lt;tanayabh@gmail.com&gt;
Reviewed-by: Matthieu Moy &lt;Matthieu.Moy@imag.fr&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>refactor skip_prefix to return a boolean</title>
<updated>2014-06-20T17:44:43Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2014-06-18T19:44:19Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=cf4fff579e02d8585d59f6c8739534b7b0d617dd'/>
<id>urn:sha1:cf4fff579e02d8585d59f6c8739534b7b0d617dd</id>
<content type='text'>
The skip_prefix() function returns a pointer to the content
past the prefix, or NULL if the prefix was not found. While
this is nice and simple, in practice it makes it hard to use
for two reasons:

  1. When you want to conditionally skip or keep the string
     as-is, you have to introduce a temporary variable.
     For example:

       tmp = skip_prefix(buf, "foo");
       if (tmp)
	       buf = tmp;

  2. It is verbose to check the outcome in a conditional, as
     you need extra parentheses to silence compiler
     warnings. For example:

       if ((cp = skip_prefix(buf, "foo"))
	       /* do something with cp */

Both of these make it harder to use for long if-chains, and
we tend to use starts_with() instead. However, the first line
of "do something" is often to then skip forward in buf past
the prefix, either using a magic constant or with an extra
strlen(3) (which is generally computed at compile time, but
means we are repeating ourselves).

This patch refactors skip_prefix() to return a simple boolean,
and to provide the pointer value as an out-parameter. If the
prefix is not found, the out-parameter is untouched. This
lets you write:

  if (skip_prefix(arg, "foo ", &amp;arg))
	  do_foo(arg);
  else if (skip_prefix(arg, "bar ", &amp;arg))
	  do_bar(arg);

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 'an/branch-config-message'</title>
<updated>2014-03-31T23:31:20Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-03-31T23:31:19Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=1d9aaed2fa43dde6ea223b42c0a1a5a714343988'/>
<id>urn:sha1:1d9aaed2fa43dde6ea223b42c0a1a5a714343988</id>
<content type='text'>
* an/branch-config-message:
  branch.c: install_branch_config: simplify if chain
</content>
</entry>
<entry>
<title>branch.c: install_branch_config: simplify if chain</title>
<updated>2014-03-24T19:43:07Z</updated>
<author>
<name>Adam</name>
<email>adam@sigterm.info</email>
</author>
<published>2014-03-10T05:32:01Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=9fe0cf3a5ee01ebe0c323789cce3916b443980dc'/>
<id>urn:sha1:9fe0cf3a5ee01ebe0c323789cce3916b443980dc</id>
<content type='text'>
Simplify if chain in install_branch_config().

Signed-off-by: Adam &lt;Adam@sigterm.info&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'bg/install-branch-config-skip-prefix'</title>
<updated>2014-03-18T20:51:09Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-03-18T20:51:09Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=9cf0137bdf01d3fe4fdf4cd4b1ad605eebdfb1de'/>
<id>urn:sha1:9cf0137bdf01d3fe4fdf4cd4b1ad605eebdfb1de</id>
<content type='text'>
* bg/install-branch-config-skip-prefix:
  branch: use skip_prefix() in install_branch_config()
  t3200-branch: test setting branch as own upstream
</content>
</entry>
</feed>
