Ronnie Sahlberg [Mon, 28 Apr 2014 21:36:15 +0000 (14:36 -0700)]
receive-pack.c: use a reference transaction for updating the refs
Wrap all the ref updates inside a transaction.
In the new API there is no distinction between failure to lock and
failure to write a ref. Both can be permanent (e.g., a ref
"refs/heads/topic" is blocking creation of the lock file
"refs/heads/topic/1.lock") or transient (e.g., file system full) and
there's no clear difference in how the client should respond, so
replace the two statuses "failed to lock" and "failed to write" with
a single status "failed to update ref". In both cases a more
detailed message is sent by sideband to diagnose the problem.
Example, before:
error: there are still refs under 'refs/heads/topic'
remote: error: failed to lock refs/heads/topic
To foo
! [remote rejected] HEAD -> topic (failed to lock)
After:
error: there are still refs under 'refs/heads/topic'
remote: error: Cannot lock the ref 'refs/heads/topic'.
To foo
! [remote rejected] HEAD -> topic (failed to update ref)
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Reviewed-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ronnie Sahlberg [Thu, 24 Apr 2014 23:36:55 +0000 (16:36 -0700)]
refs.c: change update_ref to use a transaction
Change the update_ref helper function to use a ref transaction internally.
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Reviewed-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ronnie Sahlberg [Wed, 16 Apr 2014 23:21:53 +0000 (16:21 -0700)]
branch.c: use ref transaction for all ref updates
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 <sahlberg@google.com>
Reviewed-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ronnie Sahlberg [Wed, 16 Apr 2014 23:21:13 +0000 (16:21 -0700)]
fast-import.c: change update_branch to use ref transactions
Change update_branch() to use ref transactions for updates.
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Reviewed-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ronnie Sahlberg [Wed, 16 Apr 2014 22:37:45 +0000 (15:37 -0700)]
sequencer.c: use ref transactions for all ref updates
Change to use ref transactions for all updates to refs.
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Reviewed-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ronnie Sahlberg [Wed, 16 Apr 2014 22:34:19 +0000 (15:34 -0700)]
commit.c: use ref transactions for updates
Change commit.c to use ref transactions for all ref updates.
Make sure we pass a NULL pointer to ref_transaction_update if have_old
is false.
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Reviewed-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ronnie Sahlberg [Wed, 16 Apr 2014 22:32:29 +0000 (15:32 -0700)]
replace.c: use the ref transaction functions for updates
Update replace.c to use ref transactions for updates.
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Reviewed-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ronnie Sahlberg [Wed, 16 Apr 2014 22:30:41 +0000 (15:30 -0700)]
tag.c: use ref transactions when doing updates
Change tag.c to use ref transactions for all ref updates.
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Reviewed-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ronnie Sahlberg [Tue, 29 Apr 2014 19:06:19 +0000 (12:06 -0700)]
refs.c: add transaction.status and track OPEN/CLOSED
Track the state of a transaction in a new state field. Check the field for
sanity, i.e. that state must be OPEN when _commit/_create/_delete or
_update is called or else die(BUG:...)
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Reviewed-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ronnie Sahlberg [Mon, 19 May 2014 17:42:34 +0000 (10:42 -0700)]
refs.c: make ref_transaction_begin take an err argument
Add an err argument to _begin so that on non-fatal failures in future ref
backends we can report a nice error back to the caller.
While _begin can currently never fail for other reasons than OOM, in which
case we die() anyway, we may add other types of backends in the future.
For example, a hypothetical MySQL backend could fail in _begin with
"Can not connect to MySQL server. No route to host".
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Reviewed-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ronnie Sahlberg [Wed, 16 Apr 2014 22:27:45 +0000 (15:27 -0700)]
refs.c: update ref_transaction_delete to check for error and return status
Change ref_transaction_delete() to do basic error checking and return
non-zero on error. Update all callers to check the return for
ref_transaction_delete(). There are currently no conditions in _delete that
will return error but there will be in the future. Add an err argument that
will be updated on failure.
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Reviewed-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ronnie Sahlberg [Wed, 16 Apr 2014 22:26:44 +0000 (15:26 -0700)]
refs.c: change ref_transaction_create to do error checking and return status
Do basic error checking in ref_transaction_create() and make it return
non-zero on error. Update all callers to check the result of
ref_transaction_create(). There are currently no conditions in _create that
will return error but there will be in the future. Add an err argument that
will be updated on failure.
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Reviewed-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:43:00 +0000 (07:43 -0700)]
refs.c: change ref_transaction_update() to do error checking and return status
Update ref_transaction_update() do some basic error checking and return
non-zero on error. Update all callers to check ref_transaction_update() for
error. There are currently no conditions in _update that will return error but
there will be in the future. Add an err argument that will be updated on
failure. In future patches we will start doing both locking and checking
for name conflicts in _update instead of _commit at which time this function
will start returning errors for these conditions.
Also check for BUGs during update and die(BUG:...) if we are calling
_update with have_old but the old_sha1 pointer is NULL.
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:42:59 +0000 (07:42 -0700)]
refs.c: remove the onerr argument to ref_transaction_commit
Since all callers now use QUIET_ON_ERR we no longer need to provide an onerr
argument any more. Remove the onerr argument from the ref_transaction_commit
signature.
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:42:58 +0000 (07:42 -0700)]
update-ref: use err argument to get error from ref_transaction_commit
Call ref_transaction_commit with QUIET_ON_ERR and use the strbuf that is
returned to print a log message if/after the transaction fails.
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:42:57 +0000 (07:42 -0700)]
refs.c: make update_ref_write update a strbuf on failure
Change update_ref_write to also update an error strbuf on failure.
This makes the error available to ref_transaction_commit callers if the
transaction failed due to update_ref_sha1/write_ref_sha1 failures.
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:42:56 +0000 (07:42 -0700)]
refs.c: make ref_update_reject_duplicates take a strbuf argument for errors
Make ref_update_reject_duplicates return any error that occurs through a
new strbuf argument. This means that when a transaction commit fails in
this function we will now be able to pass a helpful error message back to the
caller.
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:42:55 +0000 (07:42 -0700)]
refs.c: log_ref_write should try to return meaningful errno
Making errno from write_ref_sha1() meaningful, which should fix
* a bug in "git checkout -b" where it prints strerror(errno)
despite errno possibly being zero or clobbered
* a bug in "git fetch"'s s_update_ref, which trusts the result of an
errno == ENOTDIR check to detect D/F conflicts
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:42:54 +0000 (07:42 -0700)]
refs.c: make resolve_ref_unsafe set errno to something meaningful on error
Making errno when returning from resolve_ref_unsafe() meaningful,
which should fix
* a bug in lock_ref_sha1_basic, where it assumes EISDIR
means it failed due to a directory being in the way
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:42:53 +0000 (07:42 -0700)]
refs.c: commit_packed_refs to return a meaningful errno on failure
Making errno when returning from commit_packed_refs() meaningful,
which should fix
* a bug in "git clone" where it prints strerror(errno) based on
errno, despite errno possibly being zero and potentially having
been clobbered by that point
* the same kind of bug in "git pack-refs"
and prepares for repack_without_refs() to get a meaningful
error message when commit_packed_refs() fails without falling into
the same bug.
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:42:52 +0000 (07:42 -0700)]
refs.c: make remove_empty_directories always set errno to something sane
Making errno when returning from remove_empty_directories() more
obviously meaningful, which should provide some peace of mind for
people auditing lock_ref_sha1_basic.
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:42:51 +0000 (07:42 -0700)]
refs.c: verify_lock should set errno to something meaningful
Making errno when returning from verify_lock() meaningful, which
should almost but not completely fix
* a bug in "git fetch"'s s_update_ref, which trusts the result of an
errno == ENOTDIR check to detect D/F conflicts
ENOTDIR makes sense as a sign that a file was in the way of a
directory we wanted to create. Should "git fetch" also look for
ENOTEMPTY or EEXIST to catch cases where a directory was in the way
of a file to be created?
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:42:50 +0000 (07:42 -0700)]
refs.c: make sure log_ref_setup returns a meaningful errno
Making errno when returning from log_ref_setup() meaningful,
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:42:49 +0000 (07:42 -0700)]
refs.c: add an err argument to repack_without_refs
Update repack_without_refs to take an err argument and update it if there
is a failure. Pass the err variable from ref_transaction_commit to this
function so that callers can print a meaningful error message if _commit
fails due to this function.
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:42:48 +0000 (07:42 -0700)]
lockfile.c: make lock_file return a meaningful errno on failurei
Making errno when returning from lock_file() meaningful, which should
fix
* an existing almost-bug in lock_ref_sha1_basic where it assumes
errno==ENOENT is meaningful and could waste some work on retries
* an existing bug in repack_without_refs where it prints
strerror(errno) and picks advice based on errno, despite errno
potentially being zero and potentially having been clobbered by
that point
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:42:47 +0000 (07:42 -0700)]
lockfile.c: add a new public function unable_to_lock_message
Introducing a new unable_to_lock_message helper, which has nicer
semantics than unable_to_lock_error and cleans up lockfile.c a little.
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:42:46 +0000 (07:42 -0700)]
refs.c: add a strbuf argument to ref_transaction_commit for error logging
Add a strbuf argument to _commit so that we can pass an error string back to
the caller. So that we can do error logging from the caller instead of from
_commit.
Longer term plan is to first convert all callers to use onerr==QUIET_ON_ERR
and craft any log messages from the callers themselves and finally remove the
onerr argument completely.
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:42:45 +0000 (07:42 -0700)]
refs.c: allow passing NULL to ref_transaction_free
Allow ref_transaction_free(NULL) as a no-op. This makes ref_transaction_free
easier to use and more similar to plain 'free'.
In particular, it lets us rollback unconditionally as part of cleanup code
after setting 'transaction = NULL' if a transaction has been committed or
rolled back already.
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:42:44 +0000 (07:42 -0700)]
refs.c: constify the sha arguments for ref_transaction_create|delete|update
ref_transaction_create|delete|update has no need to modify the sha1
arguments passed to it so it should use const unsigned char* instead
of unsigned char*.
Some functions, such as fast_forward_to(), already have its old/new
sha1 arguments as consts. This function will at some point need to
use ref_transaction_update() in which case this change is required.
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:42:43 +0000 (07:42 -0700)]
refs.c: ref_transaction_commit should not free the transaction
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Ronnie Sahlberg [Fri, 20 Jun 2014 14:42:42 +0000 (07:42 -0700)]
refs.c: remove ref_transaction_rollback
We do not yet need both a rollback and a free function for transactions.
Remove ref_transaction_rollback and use ref_transaction_free instead.
At a later stage we may reintroduce a rollback function if we want to start
adding reusable transactions and similar.
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
Junio C Hamano [Mon, 16 Jun 2014 19:39:35 +0000 (12:39 -0700)]
Third batch for 2.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 16 Jun 2014 19:18:56 +0000 (12:18 -0700)]
Merge branch 'ib/test-selectively-run'
Allow specifying only certain individual test pieces to be run
using a range notation (e.g. "t1234-test.sh --run='1-4 6 8 9-'").
* ib/test-selectively-run:
t0000-*.sh: fix the GIT_SKIP_TESTS sub-tests
test-lib: '--run' to run only specific tests
test-lib: tests skipped by GIT_SKIP_TESTS say so
test-lib: document short options in t/README
Junio C Hamano [Mon, 16 Jun 2014 19:18:55 +0000 (12:18 -0700)]
Merge branch 'ta/string-list-init'
* ta/string-list-init:
string-list: spell all values out that are given to a string_list initializer
Junio C Hamano [Mon, 16 Jun 2014 19:18:54 +0000 (12:18 -0700)]
Merge branch 'jm/dedup-test-config'
* jm/dedup-test-config:
t/t7810-grep.sh: remove duplicate test_config()
Junio C Hamano [Mon, 16 Jun 2014 19:18:52 +0000 (12:18 -0700)]
Merge branch 'dt/refs-check-refname-component-optim'
* dt/refs-check-refname-component-optim:
refs.c: optimize check_refname_component()
Junio C Hamano [Mon, 16 Jun 2014 19:18:50 +0000 (12:18 -0700)]
Merge branch 'sk/test-cmp-bin'
* sk/test-cmp-bin:
t5000, t5003: do not use test_cmp to compare binary files
Junio C Hamano [Mon, 16 Jun 2014 19:18:49 +0000 (12:18 -0700)]
Merge branch 'sh/enable-preloadindex'
* sh/enable-preloadindex:
environment.c: enable core.preloadindex by default
Junio C Hamano [Mon, 16 Jun 2014 19:18:48 +0000 (12:18 -0700)]
Merge branch 'rs/read-ref-at'
* rs/read-ref-at:
refs.c: change read_ref_at to use the reflog iterators
Junio C Hamano [Mon, 16 Jun 2014 19:18:47 +0000 (12:18 -0700)]
Merge branch 'jk/error-resolve-conflict-advice'
* jk/error-resolve-conflict-advice:
error_resolve_conflict: drop quotations around operation
error_resolve_conflict: rewrap advice message
Junio C Hamano [Mon, 16 Jun 2014 19:18:42 +0000 (12:18 -0700)]
Merge branch 'rs/pack-objects-no-unnecessary-realloc'
Avoid unnecessary copy of previous contents when extending the
hashtable used in pack-objects.
* rs/pack-objects-no-unnecessary-realloc:
pack-objects: use free()+xcalloc() instead of xrealloc()+memset()
Junio C Hamano [Mon, 16 Jun 2014 19:18:41 +0000 (12:18 -0700)]
Merge branch 'lt/log-auto-decorate'
* lt/log-auto-decorate:
git log: support "auto" decorations
Junio C Hamano [Mon, 16 Jun 2014 19:18:39 +0000 (12:18 -0700)]
Merge branch 'jm/doc-wording-tweaks'
* jm/doc-wording-tweaks:
Documentation: wording fixes in the user manual and glossary
Junio C Hamano [Mon, 16 Jun 2014 19:18:38 +0000 (12:18 -0700)]
Merge branch 'jm/format-patch-mail-sig'
* jm/format-patch-mail-sig:
format-patch: add "--signature-file=<file>" option
format-patch: make newline after signature conditional
Junio C Hamano [Mon, 16 Jun 2014 19:18:35 +0000 (12:18 -0700)]
Merge branch 'jk/http-errors'
Propagate the error messages from the webserver better to the
client coming over the HTTP transport.
* jk/http-errors:
http: default text charset to iso-8859-1
remote-curl: reencode http error messages
strbuf: add strbuf_reencode helper
http: optionally extract charset parameter from content-type
http: extract type/subtype portion of content-type
t5550: test display of remote http error messages
t/lib-httpd: use write_script to copy CGI scripts
test-lib: preserve GIT_CURL_VERBOSE from the environment
Junio C Hamano [Mon, 16 Jun 2014 19:18:24 +0000 (12:18 -0700)]
Merge branch 'ow/config-mailmap-pathname'
mailmap.file configuration names a pathname, hence should honor
~/path and ~user/path as its value.
* ow/config-mailmap-pathname:
config: respect '~' and '~user' in mailmap.file
Junio C Hamano [Mon, 16 Jun 2014 19:18:15 +0000 (12:18 -0700)]
Merge branch 'fc/remote-helper-refmap'
Allow remote-helper/fast-import based transport to rename the refs
while transferring the history.
* fc/remote-helper-refmap:
transport-helper: remove unnecessary strbuf resets
transport-helper: add support to delete branches
fast-export: add support to delete refs
fast-import: add support to delete refs
transport-helper: add support to push symbolic refs
transport-helper: add support for old:new refspec
fast-export: add new --refspec option
fast-export: improve argument parsing
Junio C Hamano [Mon, 16 Jun 2014 19:18:12 +0000 (12:18 -0700)]
Merge branch 'nd/daemonize-gc'
"git gc --auto" was recently changed to run in the background to
give control back early to the end-user sitting in front of the
terminal, but it forgot that housekeeping involving reflogs should
be done without other processes competing for accesses to the refs.
* nd/daemonize-gc:
gc --auto: do not lock refs in the background
Junio C Hamano [Mon, 16 Jun 2014 19:18:09 +0000 (12:18 -0700)]
Merge branch 'jm/t9138-style-fix'
* jm/t9138-style-fix:
t9138-git-svn-authors-prog.sh fixups
Junio C Hamano [Mon, 16 Jun 2014 19:18:06 +0000 (12:18 -0700)]
Merge branch 'jm/instaweb-apache-24'
* jm/instaweb-apache-24:
git-instaweb: add support for Apache 2.4
Junio C Hamano [Mon, 16 Jun 2014 19:17:58 +0000 (12:17 -0700)]
Merge branch 'jl/remote-rm-prune'
"git remote rm" and "git remote prune" can involve removing many
refs at once, which is not a very efficient thing to do when very
many refs exist in the packed-refs file.
* jl/remote-rm-prune:
remote prune: optimize "dangling symref" check/warning
remote: repack packed-refs once when deleting multiple refs
remote rm: delete remote configuration as the last
Junio C Hamano [Mon, 16 Jun 2014 19:17:53 +0000 (12:17 -0700)]
Merge branch 'jk/complete-merge-pull'
The completion code did not know about quite a few options that are
common between "git merge" and "git pull", and a couple of options
unique to "git merge".
* jk/complete-merge-pull:
completion: add missing options for git-merge
completion: add a note that merge options are shared
Junio C Hamano [Mon, 16 Jun 2014 19:17:50 +0000 (12:17 -0700)]
Merge branch 'bg/xcalloc-nmemb-then-size'
Like calloc(3), xcalloc() takes nmemb and then size.
* bg/xcalloc-nmemb-then-size:
transport-helper.c: rearrange xcalloc arguments
remote.c: rearrange xcalloc arguments
reflog-walk.c: rearrange xcalloc arguments
pack-revindex.c: rearrange xcalloc arguments
notes.c: rearrange xcalloc arguments
imap-send.c: rearrange xcalloc arguments
http-push.c: rearrange xcalloc arguments
diff.c: rearrange xcalloc arguments
config.c: rearrange xcalloc arguments
commit.c: rearrange xcalloc arguments
builtin/remote.c: rearrange xcalloc arguments
builtin/ls-remote.c: rearrange xcalloc arguments
Junio C Hamano [Mon, 16 Jun 2014 17:07:19 +0000 (10:07 -0700)]
Merge branch 'jl/status-added-submodule-is-never-ignored'
submodule.*.ignore and diff.ignoresubmodules are used to ignore all
submodule changes in "diff" output, but it can be confusing to
apply these configuration values to status and commit.
This is a backward-incompatible change, but should be so in a good
way (aka bugfix).
* jl/status-added-submodule-is-never-ignored:
commit -m: commit staged submodules regardless of ignore config
status/commit: show staged submodules regardless of ignore config
Junio C Hamano [Mon, 16 Jun 2014 17:07:17 +0000 (10:07 -0700)]
Merge branch 'cb/byte-order'
Compatibility enhancement for Solaris.
* cb/byte-order:
compat/bswap.h: fix endianness detection
compat/bswap.h: restore preference __BIG_ENDIAN over BIG_ENDIAN
compat/bswap.h: detect endianness on more platforms that don't use BYTE_ORDER
Junio C Hamano [Mon, 16 Jun 2014 17:07:16 +0000 (10:07 -0700)]
Merge branch 'jk/strbuf-tolower'
* jk/strbuf-tolower:
strbuf: add strbuf_tolower function
Junio C Hamano [Mon, 16 Jun 2014 17:07:14 +0000 (10:07 -0700)]
Merge branch 'jk/daemon-tolower'
* jk/daemon-tolower:
daemon/config: factor out duplicate xstrdup_tolower
Junio C Hamano [Mon, 16 Jun 2014 17:07:12 +0000 (10:07 -0700)]
Merge branch 'as/pretty-truncate'
* as/pretty-truncate:
pretty.c: format string with truncate respects logOutputEncoding
t4205, t6006: add tests that fail with i18n.logOutputEncoding set
t4205 (log-pretty-format): use `tformat` rather than `format`
t4041, t4205, t6006, t7102: don't hardcode tested encoding value
t4205 (log-pretty-formats): don't hardcode SHA-1 in expected outputs
Junio C Hamano [Mon, 16 Jun 2014 17:07:09 +0000 (10:07 -0700)]
Merge branch 'jk/diff-follow-must-take-one-pathspec'
* jk/diff-follow-must-take-one-pathspec:
move "--follow needs one pathspec" rule to diff_setup_done
Junio C Hamano [Mon, 16 Jun 2014 17:07:03 +0000 (10:07 -0700)]
Merge branch 'sk/windows-unc-path'
* sk/windows-unc-path:
Windows: allow using UNC path for git repository
Junio C Hamano [Mon, 16 Jun 2014 17:06:57 +0000 (10:06 -0700)]
Merge branch 'rr/rebase-autostash-fix'
* rr/rebase-autostash-fix:
rebase -i: test "Nothing to do" case with autostash
rebase -i: handle "Nothing to do" case with autostash
Junio C Hamano [Mon, 16 Jun 2014 17:06:15 +0000 (10:06 -0700)]
Merge branch 'jk/report-fail-to-read-objects-better'
* jk/report-fail-to-read-objects-better:
open_sha1_file: report "most interesting" errno
Junio C Hamano [Mon, 16 Jun 2014 17:06:12 +0000 (10:06 -0700)]
Merge branch 'jk/diff-files-assume-unchanged'
* jk/diff-files-assume-unchanged:
run_diff_files: do not look at uninitialized stat data
Junio C Hamano [Mon, 16 Jun 2014 17:06:10 +0000 (10:06 -0700)]
Merge branch 'jk/argv-array-for-child-process'
* jk/argv-array-for-child-process:
argv-array: drop "detach" code
get_importer: use run-command's internal argv_array
get_exporter: use argv_array
get_helper: use run-command's internal argv_array
git_connect: use argv_array
run_column_filter: use argv_array
run-command: store an optional argv_array
Junio C Hamano [Mon, 16 Jun 2014 17:06:08 +0000 (10:06 -0700)]
Merge branch 'sk/wincred'
* sk/wincred:
wincred: avoid overwriting configured variables
wincred: add install target
Junio C Hamano [Mon, 16 Jun 2014 17:06:05 +0000 (10:06 -0700)]
Merge branch 'jk/do-not-run-httpd-tests-as-root'
* jk/do-not-run-httpd-tests-as-root:
t/lib-httpd: require SANITY prereq
Junio C Hamano [Mon, 16 Jun 2014 17:06:01 +0000 (10:06 -0700)]
Merge branch 'cc/replace-edit'
"git replace" learns a new "--edit" option.
* cc/replace-edit:
Documentation: replace: describe new --edit option
replace: add --edit to usage string
replace: add tests for --edit
replace: die early if replace ref already exists
replace: refactor checking ref validity
replace: make sure --edit results in a different object
replace: add --edit option
replace: factor object resolution out of replace_object
replace: use OPT_CMDMODE to handle modes
replace: refactor command-mode determination
Junio C Hamano [Mon, 16 Jun 2014 17:05:37 +0000 (10:05 -0700)]
Merge branch 'mt/patch-id-stable' (early part)
* 'mt/patch-id-stable' (early part):
patch-id-test: test stable and unstable behaviour
patch-id: make it stable against hunk reordering
test doc: test_write_lines does not split its arguments
test: add test_write_lines helper
Junio C Hamano [Thu, 12 Jun 2014 19:22:38 +0000 (12:22 -0700)]
Sync with maint
* maint:
pull: do not abuse 'break' inside a shell 'case'
Junio C Hamano [Thu, 12 Jun 2014 19:17:57 +0000 (12:17 -0700)]
Merge branch 'jc/rev-parse-argh-dashed-multi-words' into maint
* jc/rev-parse-argh-dashed-multi-words:
update-index: fix segfault with missing --cacheinfo argument
Jacek Konieczny [Wed, 11 Jun 2014 08:47:45 +0000 (10:47 +0200)]
pull: do not abuse 'break' inside a shell 'case'
It is not C. The code would break under mksh when 'pull.ff' is set:
$ git pull
/usr/lib/git-core/git-pull[67]: break: can't break
Already up-to-date.
Signed-off-by: Jacek Konieczny <jajcus@jajcus.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Cezary Zawadka [Tue, 13 Jul 2010 14:17:43 +0000 (16:17 +0200)]
Windows: allow using UNC path for git repository
[efl: moved MinGW-specific part to compat/]
[jes: fixed compilation on non-Windows]
Eric Sunshine fixed mingw_offset_1st_component() to return
consistently "foo" for UNC "//machine/share/foo", cf
http://groups.google.com/group/msysgit/browse_thread/thread/
c0af578549b5dda0
Author: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Cezary Zawadka <czawadka@gmail.com>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Stepan Kasal <kasal@ucw.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Michael S. Tsirkin [Sun, 27 Apr 2014 18:15:51 +0000 (21:15 +0300)]
patch-id-test: test stable and unstable behaviour
Verify that patch ID supports an algorithm
that is stable against diff split and reordering.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Michael S. Tsirkin [Sun, 27 Apr 2014 18:15:44 +0000 (21:15 +0300)]
patch-id: make it stable against hunk reordering
Patch id changes if users reorder file diffs that make up a patch.
As the result is functionally equivalent, a different patch id is
surprising to many users.
In particular, reordering files using diff -O is helpful to make patches
more readable (e.g. API header diff before implementation diff).
Add an option to change patch-id behaviour making it stable against
these kinds of patch change:
calculate SHA1 hash for each hunk separately and sum all hashes
(using a symmetrical sum) to get patch id
We use a 20byte sum and not xor - since xor would give 0 output
for patches that have two identical diffs, which isn't all that
unlikely (e.g. append the same line in two places).
The new behaviour is enabled
- when patchid.stable is true
- when --stable flag is present
Using a new flag --unstable or setting patchid.stable to false force
the historical behaviour.
In the documentation, clarify that patch ID can now be a sum of hashes,
not a hash.
Document how command line and config options affect the
behaviour.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jonathan Nieder [Mon, 5 May 2014 23:51:43 +0000 (16:51 -0700)]
test doc: test_write_lines does not split its arguments
test_write_lines carefully quotes its arguments as "$@", so
test_write_lines "a b" c
writes two lines as requested, not three.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Michael S. Tsirkin [Sun, 27 Apr 2014 18:15:47 +0000 (21:15 +0300)]
test: add test_write_lines helper
API and implementation as suggested by Junio.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 9 Jun 2014 18:39:43 +0000 (11:39 -0700)]
Update draft release notes to 2.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 9 Jun 2014 18:30:12 +0000 (11:30 -0700)]
Merge branch 'jc/shortlog-ref-exclude'
"log --exclude=<glob> --all | shortlog" worked as expected, but
"shortlog --exclude=<glob> --all" was not accepted at the command
line argument parser level.
* jc/shortlog-ref-exclude:
shortlog: allow --exclude=<glob> to be passed
Junio C Hamano [Mon, 9 Jun 2014 18:27:55 +0000 (11:27 -0700)]
Merge branch 'mn/sideband-no-ansi'
Tools that read diagnostic output in our standard error stream do
not want to see terminal control sequence (e.g. erase-to-eol).
Detect them by checking if the standard error stream is connected to
a tty.
* mn/sideband-no-ansi:
sideband.c: do not use ANSI control sequence on non-terminal
Junio C Hamano [Mon, 9 Jun 2014 18:27:53 +0000 (11:27 -0700)]
Merge branch 'rs/mailinfo-header-cmp'
Avoid running over the end of header string while parsing an
incoming e-mail message to extract the patch.
* rs/mailinfo-header-cmp:
mailinfo: use strcmp() for string comparison
Junio C Hamano [Mon, 9 Jun 2014 18:27:47 +0000 (11:27 -0700)]
Merge branch 'pb/trim-trailing-spaces'
Fix an error in parsing of .gitignore files that use a trailing
"\ " to mark pathnames that end with a SP.
* pb/trim-trailing-spaces:
dir.c:trim_trailing_spaces(): fix for " \ " sequence
Junio C Hamano [Mon, 9 Jun 2014 18:26:51 +0000 (11:26 -0700)]
Merge branch 'na/no-http-test-in-the-middle'
The mode to run tests with HTTP server tests disabled was broken.
* na/no-http-test-in-the-middle:
t5538: move http push tests out to t5542
Junio C Hamano [Mon, 9 Jun 2014 18:26:49 +0000 (11:26 -0700)]
Merge branch 'jc/rev-parse-argh-dashed-multi-words'
"update-index --cacheinfo" in 2.0 crashes on a malformed command line.
* jc/rev-parse-argh-dashed-multi-words:
update-index: fix segfault with missing --cacheinfo argument
Junio C Hamano [Mon, 9 Jun 2014 18:26:22 +0000 (11:26 -0700)]
Merge branch 'lt/request-pull'
A brown-paper-bag bugfix to a test that turned out to be a no-op by
mistake.
* lt/request-pull:
fix brown paper bag breakage in t5150-request-pull.sh
Tanay Abhra [Tue, 3 Jun 2014 09:13:18 +0000 (02:13 -0700)]
string-list: spell all values out that are given to a string_list initializer
STRING_LIST_INIT_{NODUP,DUP} initializers list values only
for earlier structure members, relying on the usual
convention in C that the omitted members are initailized to
0, i.e. the former is expanded to the latter:
struct string_list l = STRING_LIST_INIT_DUP;
struct string_list l = { NULL, 0, 0, 1 };
and the last member that is not mentioned (i.e. 'cmp') is
initialized to NULL.
While there is nothing wrong in this construct, spelling out
all the values where the macros are defined will serve also
as a documentation, so let's do so.
Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ramsay Jones [Tue, 20 May 2014 23:33:46 +0000 (00:33 +0100)]
t0000-*.sh: fix the GIT_SKIP_TESTS sub-tests
Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ilya Bobyr [Wed, 30 Apr 2014 09:50:44 +0000 (02:50 -0700)]
test-lib: '--run' to run only specific tests
Allow better control of the set of tests that will be executed for a
single test suite. Mostly useful while debugging or developing as it
allows to focus on a specific test.
Signed-off-by: Ilya Bobyr <ilya.bobyr@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ilya Bobyr [Wed, 30 Apr 2014 09:50:43 +0000 (02:50 -0700)]
test-lib: tests skipped by GIT_SKIP_TESTS say so
We used to show "(missing )" next to tests skipped because they are
specified in GIT_SKIP_TESTS. Use "(GIT_SKIP_TESTS)" instead.
Plus tests that check basic GIT_SKIP_TESTS functions.
Signed-off-by: Ilya Bobyr <ilya.bobyr@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ilya Bobyr [Wed, 30 Apr 2014 09:50:42 +0000 (02:50 -0700)]
test-lib: document short options in t/README
Most arguments that could be provided to a test have short forms.
Unless documented, the only way to learn them is to read the code.
Signed-off-by: Ilya Bobyr <ilya.bobyr@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 6 Jun 2014 18:42:05 +0000 (11:42 -0700)]
Second batch for 2.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 6 Jun 2014 18:39:12 +0000 (11:39 -0700)]
Merge branch 'ss/howto-manage-trunk'
* ss/howto-manage-trunk:
How to keep a project's canonical history correct.
Junio C Hamano [Fri, 6 Jun 2014 18:38:57 +0000 (11:38 -0700)]
Merge branch 'mc/git-p4-prepare-p4-only'
* mc/git-p4-prepare-p4-only:
git-p4: Do not include diff in spec file when just preparing p4
Junio C Hamano [Fri, 6 Jun 2014 18:38:54 +0000 (11:38 -0700)]
Merge branch 'jn/test-lint-unmoor'
* jn/test-lint-unmoor:
test-lint: find unportable sed, echo, test, and export usage after &&
Junio C Hamano [Fri, 6 Jun 2014 18:38:51 +0000 (11:38 -0700)]
Merge branch 'ep/shell-assign-and-export-vars'
* ep/shell-assign-and-export-vars:
scripts: more "export VAR=VALUE" fixes
scripts: "export VAR=VALUE" construct is not portable
Junio C Hamano [Fri, 6 Jun 2014 18:38:48 +0000 (11:38 -0700)]
Merge branch 'jj/command-line-adjective'
* jj/command-line-adjective:
Documentation: use "command-line" when used as a compound adjective, and fix other minor grammatical issues
Junio C Hamano [Fri, 6 Jun 2014 18:38:44 +0000 (11:38 -0700)]
Merge branch 'jc/coding-guidelines'
* jc/coding-guidelines:
CodingGuidelines: avoid "test <cond> -a/-o <cond>"
CodingGuidelines: on splitting a long line
CodingGuidelines: on comparison
CodingGuidelines: do not call the conditional statement "if()"
CodingGuidelines: give an example for shell function preamble
CodingGuidelines: give an example for control statements
CodingGuidelines: give an example for redirection
CodingGuidelines: give an example for case/esac statement
CodingGuidelines: once it is in, it is not worth the code churn
Junio C Hamano [Fri, 6 Jun 2014 18:36:10 +0000 (11:36 -0700)]
Merge branch 'nd/status-auto-comment-char'
* nd/status-auto-comment-char:
commit: allow core.commentChar=auto for character auto selection
config: be strict on core.commentChar
Junio C Hamano [Fri, 6 Jun 2014 18:36:06 +0000 (11:36 -0700)]
Merge branch 'mt/rebase-i-keep-empty-test'
* mt/rebase-i-keep-empty-test:
rebase --keep-empty -i: add test
Junio C Hamano [Fri, 6 Jun 2014 18:35:01 +0000 (11:35 -0700)]
Merge branch 'mk/show-s-no-extra-blank-line-for-merges'
* mk/show-s-no-extra-blank-line-for-merges:
git-show: fix 'git show -s' to not add extra terminator after merge commit
Junio C Hamano [Fri, 6 Jun 2014 18:32:49 +0000 (11:32 -0700)]
Merge branch 'sk/spawn-less-case-insensitively-from-grep-O-i'
* sk/spawn-less-case-insensitively-from-grep-O-i:
git grep -O -i: if the pager is 'less', pass the '-I' option