Commit graph

1171 commits

Author SHA1 Message Date
Junio C Hamano 4c00c852b3 Sync with 1.7.7.4 2011-11-18 11:30:02 -08:00
Junio C Hamano c9de921848 Merge branch 'jc/maint-name-rev-all' into maint
* jc/maint-name-rev-all:
  name-rev --all: do not even attempt to describe non-commit object
2011-11-18 11:14:16 -08:00
Jonathan Nieder 418c9b176c do not let git_path clobber errno when reporting errors
Because git_path() calls vsnprintf(), code like

	fd = open(git_path("SQUASH_MSG"), O_WRONLY | O_CREAT, 0666);
	die_errno(_("Could not write to '%s'"), git_path("SQUASH_MSG"));

can end up printing an error indicator from vsnprintf() instead of
open() by mistake.  Store the path we are trying to write to in a
temporary variable and pass _that_ to die_errno(), so the messages
written by git cherry-pick/revert and git merge can avoid this source
of confusion.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-17 15:06:27 -08:00
Ramkumar Ramachandra 5e1e6b93d0 revert: prettify fatal messages
Some of the fatal messages printed by revert and cherry-pick look ugly
like the following:

  fatal: Could not open .git/sequencer/todo.: No such file or directory

The culprit here is that these callers of the die_errno() function did not
take it into account that the message string they give to it is followed
by ": <strerror>", hence the message typically should not end with the
full-stop.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-15 16:59:46 -08:00
Junio C Hamano f0c7fd49c0 Revert "upload-archive: use start_command instead of fork"
This reverts commit c09cd77ea2, expecting a
better version to be rerolled soon.
2011-11-15 15:39:33 -08:00
Junio C Hamano dc865af65f Merge branch 'ly/mktree-using-strbuf'
* ly/mktree-using-strbuf:
  mktree: fix a memory leak in write_tree()
2011-11-11 21:34:06 -08:00
Junio C Hamano c444c16589 Merge "Move 'builtin-*' into a 'builtin/' subdirectory" 2011-11-10 09:10:51 -08:00
Junio C Hamano d7a0129b3c Merge branch 'jc/remote-setbranches-usage-fix'
* jc/remote-setbranches-usage-fix:
  remote: fix set-branches usage
2011-11-08 16:40:31 -08:00
Junio C Hamano 8327ee8677 Merge branch 'fc/remote-seturl-usage-fix'
* fc/remote-seturl-usage-fix:
  remote: fix remote set-url usage
2011-11-08 16:40:27 -08:00
Junio C Hamano 992499d853 Merge branch 'dm/pack-objects-update' into maint
* dm/pack-objects-update:
  pack-objects: don't traverse objects unnecessarily
  pack-objects: rewrite add_descendants_to_write_order() iteratively
  pack-objects: use unsigned int for counter and offset values
  pack-objects: mark add_to_write_order() as inline
2011-11-08 16:26:45 -08:00
Junio C Hamano 92622e6214 Merge branch 'ss/blame-textconv-fake-working-tree'
* ss/blame-textconv-fake-working-tree:
  blame.c: Properly initialize strbuf after calling textconv_object(), again
2011-11-07 16:43:19 -08:00
Sebastian Schuberth 8518088fe8 blame.c: Properly initialize strbuf after calling textconv_object(), again
2564aa4 started to initialize buf.alloc, but that should actually be one
more byte than the string length due to the trailing \0. Also, do not
modify buf.alloc out of the strbuf code. Use the existing strbuf_attach
instead.

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-07 16:42:57 -08:00
Junio C Hamano 656cdf0c9e remote: fix set-branches usage
Bad copy-paste.

Otherwise "git remote set-branches" without necessary argument
will result in an error message and help for set-url subcommand.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-06 21:15:30 -08:00
Junio C Hamano ee6dfb2d83 receive-pack: do not expect object 0{40} to exist
When pushing to delete a ref, it uses 0{40} as an object name to signal
that the request is a deletion. We shouldn't trigger "deletion of a
corrupt ref" warning in such a case, which was designed to notice that a
ref points at an object that is truly missing from the repository.

Reported-by: Stefan Näwe
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-03 14:27:04 -07:00
Tay Ray Chuan 3706ed298c branch -m: handle no arg properly
Modify the option parsing heuristic to handle all -m (rename) cases,
including the no-arg case.

Previously, this "fell through" to the (argc <= 2) case and caused
segfault.

Reported-by: Stefan Näwe <stefan.naewe@atlas-elektronik.com>
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-02 12:35:37 -07:00
Junio C Hamano a4fdd79f13 Merge branch 'bc/attr-ignore-case' into maint
* bc/attr-ignore-case:
  attr.c: respect core.ignorecase when matching attribute patterns
  attr: read core.attributesfile from git_default_core_config
  builtin/mv.c: plug miniscule memory leak
  cleanup: use internal memory allocation wrapper functions everywhere
  attr.c: avoid inappropriate access to strbuf "buf" member

Conflicts:
	remote.c
2011-11-01 15:54:46 -07:00
Junio C Hamano ffa4c364f4 Merge branch 'cn/fetch-prune' into maint
* cn/fetch-prune:
  fetch: treat --tags like refs/tags/*:refs/tags/* when pruning
  fetch: honor the user-provided refspecs when pruning refs
  remote: separate out the remote_find_tracking logic into query_refspecs
  t5510: add tests for fetch --prune
  fetch: free all the additional refspecs
2011-11-01 15:51:01 -07:00
Junio C Hamano b919f8404a Merge branch 'ss/blame-textconv-fake-working-tree'
* ss/blame-textconv-fake-working-tree:
  (squash) test for previous
  blame.c: Properly initialize strbuf after calling, textconv_object()

Conflicts:
	t/t8006-blame-textconv.sh
2011-11-01 15:20:28 -07:00
Junio C Hamano 7406aa203f Merge branch 'ef/mingw-upload-archive'
* ef/mingw-upload-archive:
  mingw: poll.h is no longer in sys/
  upload-archive: use start_command instead of fork
  compat/win32/poll.c: upgrade from upstream
  mingw: move poll out of sys-folder
2011-11-01 15:20:22 -07:00
Junio C Hamano 84a9ea90e1 Merge branch 'dm/pack-objects-update'
* dm/pack-objects-update:
  pack-objects: don't traverse objects unnecessarily
  pack-objects: rewrite add_descendants_to_write_order() iteratively
  pack-objects: use unsigned int for counter and offset values
  pack-objects: mark add_to_write_order() as inline
2011-11-01 15:20:07 -07:00
Erik Faye-Lund c09cd77ea2 upload-archive: use start_command instead of fork
The POSIX-function fork is not supported on Windows. Use our
start_command API instead.

As this is the last call-site that depends on the fork-stub in
compat/mingw.h, remove that as well.

Add an undocumented flag to git-archive that tells it that the
action originated from a remote, so features can be disabled.
Thanks to Jeff King for work on this part.

Remove the NOT_MINGW-prereq for t5000, as git-archive --remote
now works.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-30 18:45:21 -07:00
Sebastian Schuberth 2564aa48ce blame.c: Properly initialize strbuf after calling, textconv_object()
For a plain string where only the length is known, strbuf.alloc needs to
be initialized to the length. Otherwise strbuf.alloc is 0 and a later
call to strbuf_setlen() will fail.

This bug surfaced when calling git blame under Windows on a *.doc file.
The *.doc file is converted to plain text by antiword via the textconv
mechanism. However, the plain text returned by antiword contains DOS line
endings instead of Unix line endings which triggered the strbuf_setlen()
which previous to this patch failed.

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-28 08:41:56 -07:00
Junio C Hamano 220c0453c1 Merge branch 'js/grep-mutex'
* js/grep-mutex:
  builtin/grep: simplify lock_and_read_sha1_file()
  builtin/grep: make lock/unlock into static inline functions
  git grep: be careful to use mutexes only when they are initialized
2011-10-27 12:04:02 -07:00
Junio C Hamano 82bc9f515c Merge branch 'maint'
* maint:
  clone: Quote user supplied path in a single quote pair
  read-cache.c: fix index memory allocation
2011-10-27 12:03:37 -07:00
Richard Hartmann 8debf69638 clone: Quote user supplied path in a single quote pair
Without this patch,

    $ git clone foo .

results in this:

    Cloning into ....
    done.

With it:

    Cloning into '.'...
    done.

Signed-off-by: Richard Hartmann <richih.mailinglist@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-27 12:02:02 -07:00
Junio C Hamano 9c0c09f791 Merge branch 'cn/fetch-prune'
* cn/fetch-prune:
  fetch: treat --tags like refs/tags/*:refs/tags/* when pruning
  fetch: honor the user-provided refspecs when pruning refs
  remote: separate out the remote_find_tracking logic into query_refspecs
  t5510: add tests for fetch --prune
  fetch: free all the additional refspecs

Conflicts:
	remote.c
2011-10-26 16:16:29 -07:00
Junio C Hamano 60f60b4962 Merge branch 'jk/argv-array' into maint
* jk/argv-array:
  run_hook: use argv_array API
  checkout: use argv_array API
  bisect: use argv_array API
  quote: provide sq_dequote_to_argv_array
  refactor argv_array into generic code
  quote.h: fix bogus comment
  add sha1_array API docs
2011-10-26 16:13:31 -07:00
Junio C Hamano 7bb07f6fbf Merge branch 'jc/run-receive-hook-cleanup' into maint
* jc/run-receive-hook-cleanup:
  refactor run_receive_hook()
2011-10-26 16:13:31 -07:00
Junio C Hamano f0911b996c Merge branch 'maint-1.7.6' into maint
* maint-1.7.6:
  notes_merge_commit(): do not pass temporary buffer to other function
  gitweb: Fix links to lines in blobs when javascript-actions are enabled
  mergetool: no longer need to save standard input
  mergetool: Use args as pathspec to unmerged files
  t9159-*.sh: skip for mergeinfo test for svn <= 1.4
  date.c: Support iso8601 timezone formats
  remote: only update remote-tracking branch if updating refspec
  remote rename: warn when refspec was not updated
  remote: "rename o foo" should not rename ref "origin/bar"
  remote: write correct fetch spec when renaming remote 'remote'
2011-10-26 16:13:27 -07:00
Junio C Hamano 716b64a73e Merge branch 'mz/remote-rename' into maint-1.7.6
* mz/remote-rename:
  remote: only update remote-tracking branch if updating refspec
  remote rename: warn when refspec was not updated
  remote: "rename o foo" should not rename ref "origin/bar"
  remote: write correct fetch spec when renaming remote 'remote'
2011-10-26 16:12:19 -07:00
Junio C Hamano 764161391f builtin/grep: simplify lock_and_read_sha1_file()
As read_sha1_lock/unlock have been made aware of use_threads,
this caller can be made a lot simpler.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-26 13:09:23 -07:00
Junio C Hamano 1487a12ba2 builtin/grep: make lock/unlock into static inline functions
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-26 13:09:04 -07:00
Johannes Schindelin cdf0553769 git grep: be careful to use mutexes only when they are initialized
Rather nasty things happen when a mutex is not initialized but locked
nevertheless. Now, when we're not running in a threaded manner, the mutex
is not initialized, which is correct. But then we went and used the mutex
anyway, which -- at least on Windows -- leads to a hard crash (ordinarily
it would be called a segmentation fault, but in Windows speak it is an
access violation).

This problem was identified by our faithful tests when run in the msysGit
environment.

To avoid having to wrap the line due to the 80 column limit, we use
the name "WHEN_THREADED" instead of "IF_USE_THREADS" because it is one
character shorter. Which is all we need in this case.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-26 11:35:49 -07:00
Junio C Hamano 470bbbc4dc Merge branch 'jc/match-refs-clarify'
* jc/match-refs-clarify:
  rename "match_refs()" to "match_push_refs()"
  send-pack: typofix error message
2011-10-21 16:04:35 -07:00
Junio C Hamano 2070950633 Merge branch 'jk/maint-pack-objects-compete-with-delete'
* jk/maint-pack-objects-compete-with-delete:
  downgrade "packfile cannot be accessed" errors to warnings
  pack-objects: protect against disappearing packs
2011-10-21 16:04:33 -07:00
Junio C Hamano d25a265220 Merge branch 'nd/maint-autofix-tag-in-head' into maint
* nd/maint-autofix-tag-in-head:
  Accept tags in HEAD or MERGE_HEAD
  merge: remove global variable head[]
  merge: use return value of resolve_ref() to determine if HEAD is invalid
  merge: keep stash[] a local variable

Conflicts:
	builtin/merge.c
2011-10-21 10:49:26 -07:00
Junio C Hamano e63f87a6f7 Merge branch 'jc/apply-blank-at-eof-fix' into maint
* jc/apply-blank-at-eof-fix:
  apply --whitespace=error: correctly report new blank lines at end
2011-10-21 10:49:26 -07:00
Junio C Hamano 689b047072 Merge branch 'il/archive-err-signal' into maint
* il/archive-err-signal:
  Support ERR in remote archive like in fetch/push
2011-10-21 10:49:25 -07:00
Junio C Hamano cec3e186f7 Merge branch 'jm/maint-apply-detects-corrupt-patch-header' into maint
* jm/maint-apply-detects-corrupt-patch-header:
  fix "git apply --index ..." not to deref NULL
2011-10-21 10:49:24 -07:00
Junio C Hamano df6840855d Merge branch 'jc/checkout-from-tree-keep-local-changes' into maint
* jc/checkout-from-tree-keep-local-changes:
  checkout $tree $path: do not clobber local changes in $path not in $tree
2011-10-21 10:49:24 -07:00
Junio C Hamano 634b29d270 Merge branch 'mm/maint-config-explicit-bool-display' into maint
* mm/maint-config-explicit-bool-display:
  config: display key_delim for config --bool --get-regexp
2011-10-21 10:49:24 -07:00
Dan McGee 38d4debb6d pack-objects: don't traverse objects unnecessarily
This brings back some of the performance lost in optimizing recency
order inside pack objects. We were doing extreme amounts of object
re-traversal: for the 2.14 million objects in the Linux kernel
repository, we were calling add_to_write_order() over 1.03 billion times
(a 0.2% hit rate, making 99.8% of of these calls extraneous).

Two optimizations take place here- we can start our objects array
iteration from a known point where we left off before we started trying
to find our tags, and we don't need to do the deep dives required by
add_family_to_write_order() if the object has already been marked as
filled.

These two optimizations bring some pretty spectacular results via `perf
stat`:

task-clock:   83373 ms        --> 43800 ms         (50% faster)
cycles:       221,633,461,676 --> 116,307,209,986  (47% fewer)
instructions: 149,299,179,939 --> 122,998,800,184  (18% fewer)

Helped-by: Ramsay Jones (format string fix in "die" message)
Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-20 17:17:49 -07:00
Junio C Hamano 3dfbe68fc2 Merge branch 'js/merge-edit-option'
* js/merge-edit-option:
  Teach merge the '[-e|--edit]' option

Conflicts:
	builtin/merge.c
2011-10-19 10:49:27 -07:00
Junio C Hamano 541b9cf146 Merge branch 'js/no-cherry-pick-head-after-punted'
* js/no-cherry-pick-head-after-punted:
  cherry-pick: do not give irrelevant advice when cherry-pick punted
  revert.c: defer writing CHERRY_PICK_HEAD till it is safe to do so
2011-10-19 10:49:05 -07:00
Junio C Hamano c31b87d111 Merge branch 'jm/maint-apply-detects-corrupt-patch-header'
* jm/maint-apply-detects-corrupt-patch-header:
  fix "git apply --index ..." not to deref NULL
2011-10-19 10:48:29 -07:00
Dan McGee f380872f0a pack-objects: rewrite add_descendants_to_write_order() iteratively
This removes the need to call this function recursively, shinking the
code size slightly and netting a small performance increase.

Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-18 00:16:32 -07:00
Dan McGee 92bef1a14a pack-objects: use unsigned int for counter and offset values
This is done in some of the new pack layout code introduced in commit
1b4bb16b9e. This more closely matches the nr_objects global that is
unsigned that these variables are based off of and bounded by.

Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-18 00:16:32 -07:00
Dan McGee be12681896 pack-objects: mark add_to_write_order() as inline
This function is a whole 26 bytes when compiled on x86_64, but is
currently invoked over 1.037 billion times when running pack-objects on
the Linux kernel git repository. This is hitting the point where
micro-optimizations do make a difference, and inlining it only increases
the object file size by 38 bytes.

As reported by perf, this dropped task-clock from 84183 to 83373 ms, and
total cycles from 223.5 billion to 221.6 billion. Not astronomical, but
worth getting for adding one word.

Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-18 00:16:31 -07:00
Junio C Hamano a200dc8e62 Merge branch 'bc/attr-ignore-case'
* bc/attr-ignore-case:
  attr.c: respect core.ignorecase when matching attribute patterns
  attr: read core.attributesfile from git_default_core_config
  builtin/mv.c: plug miniscule memory leak
  cleanup: use internal memory allocation wrapper functions everywhere
  attr.c: avoid inappropriate access to strbuf "buf" member

Conflicts:
	transport-helper.c
2011-10-17 21:37:14 -07:00
Junio C Hamano e22bb14d80 Merge branch 'mm/maint-config-explicit-bool-display'
* mm/maint-config-explicit-bool-display:
  config: display key_delim for config --bool --get-regexp
2011-10-17 21:37:12 -07:00