Commit Graph

27364 Commits

Author SHA1 Message Date
Junio C Hamano
c27b83f95a Merge branch 'master' into next
* master:
  Makefile: add option to disable automatic dependency generation
  Git 1.7.7.4
  Makefile: add missing header file dependencies
  notes merge: eliminate OUTPUT macro
  mailmap: xcalloc mailmap_info
  name-rev --all: do not even attempt to describe non-commit object
2011-11-18 12:40:01 -08:00
Jonathan Nieder
024c843d47 Makefile: add option to disable automatic dependency generation
Now that the COMPUTE_HEADER_DEPENDENCIES feature is turned on
automatically for compilers that support it (see v1.7.8-rc0~142^2~1,
2011-08-18), there is no easy way to force it off.  For example,
setting COMPUTE_HEADER_DEPENDENCIES to the empty string in config.mak
just tells the makefile to treat it as undefined and run a test
command to see if the -MMD option is supported.

So allow setting COMPUTE_HEADER_DEPENDENCIES=no to explicitly force
the feature off.  The new semantics:

 - "yes" means to explicitly enable the feature
 - "no" means to disable it
 - "auto" means to autodetect

The default is still "auto".  Any value other than these three will
cause the build to error out with a descriptive message so typos and
stale settings in config.mak don't result in mysterious behavior.

	Makefile:1278: *** please set COMPUTE_HEADER_DEPENDENCIES to
	yes, no, or auto (not "1").  Stop.

So now when someone using a compiler without -MMD support reports
trouble building git, you can reproduce it by running "make
COMPUTE_HEADER_DEPENDENCIES=no".

Suggested-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Improved-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Tested-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-18 11:35:08 -08:00
Junio C Hamano
4c00c852b3 Sync with 1.7.7.4 2011-11-18 11:30:02 -08:00
Junio C Hamano
bd5bce7cbc Git 1.7.7.4
Signed-off-by: Junio C Hamano <gitster@pobox.com>
v1.7.7.4
2011-11-18 11:28:05 -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
Junio C Hamano
79cfe0c5c4 Merge branch 'ml/mailmap' into maint
* ml/mailmap:
  mailmap: xcalloc mailmap_info

Conflicts:
	mailmap.c
2011-11-18 11:14:00 -08:00
Junio C Hamano
01e0f162a7 Merge branch 'jn/maint-notes-avoid-va-args' into maint
* jn/maint-notes-avoid-va-args:
  notes merge: eliminate OUTPUT macro

Conflicts:
	notes-merge.c
2011-11-18 11:11:50 -08:00
Jonathan Nieder
487da9cdf4 Makefile: add missing header file dependencies
When the streaming filter API was introduced in v1.7.7-rc0~60^2~7
(2011-05-20), we forgot to add its header to LIB_H.  Most translation
units depend on streaming.h via cache.h.

v1.7.5-rc0~48 (Fix sparse warnings, 2011-03-22) introduced undeclared
dependencies by url.o on url.h and thread-utils.o on thread-utils.h.

Noticed by make CHECK_HEADER_DEPENDENCIES=1.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-18 10:45:33 -08:00
Jonathan Nieder
5f9f8d15f1 notes merge: eliminate OUTPUT macro
The macro is variadic, which breaks support for pre-C99 compilers,
and it hides an "if", which can make code hard to understand on
first reading if some arguments have side-effects.

The OUTPUT macro seems to have been inspired by the "output" function
from merge-recursive.  But that function in merge-recursive exists to
indent output based on the level of recursion and there is no similar
justification for such a function in "notes merge".

Noticed with 'make CC="gcc -std=c89 -pedantic"':

 notes-merge.c:24:22: warning: anonymous variadic macros were introduced in C99 [-Wvariadic-macros]

Encouraged-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-17 23:35:22 -08:00
Junio C Hamano
7a35a9f65e Merge branch 'master' into next
* master:
  do not let git_path clobber errno when reporting errors

Conflicts:
	builtin/merge.c
2011-11-17 23:16:47 -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
Junio C Hamano
f197e3fbc2 Merge branch 'master' into next
* master:
  Git 1.7.8-rc3
2011-11-17 11:10:44 -08:00
Junio C Hamano
4d2440fe0d Git 1.7.8-rc3
Signed-off-by: Junio C Hamano <gitster@pobox.com>
v1.7.8-rc3
2011-11-17 11:06:15 -08:00
Junio C Hamano
cc76151914 Merge branch 'mh/ref-api-3' into next
* mh/ref-api-3:
  refs: loosen over-strict "format" check
2011-11-16 22:42:57 -08:00
Junio C Hamano
511457f1e0 Merge branch 'mh/ref-api-2' into next
* mh/ref-api-2:
  refs: loosen over-strict "format" check

Conflicts:
	refs.c
2011-11-16 22:42:54 -08:00
Junio C Hamano
17fe32c7d6 Merge branch 'master' into next
* master:
  refs: loosen over-strict "format" check
  revert: prettify fatal messages
  Revert "upload-archive: use start_command instead of fork"

Conflicts:
	refs.c
2011-11-16 21:53:04 -08:00
Junio C Hamano
09116a1c31 refs: loosen over-strict "format" check
The add_extra_ref() interface is used to add an extra-ref that is _not_
our ref for the purpose of helping auto-following of tags and reducing
object transfer from remote repository, and they are typically formatted
as a tagname followed by ^{} to make sure no valid refs match that
pattern. In other words, these entries are deliberately formatted not to
pass check-refname-format test.

A recent series however added a test unconditionally to the add_ref()
function that is called from add_extra_ref(). The check may be sensible
for other two callsites of the add_ref() interface, but definitely is
a wrong thing to do in add_extra_ref(). Disable it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
2011-11-16 21:52:24 -08:00
Junio C Hamano
37817ba086 refs: loosen over-strict "format" check
The add_extra_ref() interface is used to add an extra-ref that is _not_
our ref for the purpose of helping auto-following of tags and reducing
object transfer from remote repository, and they are typically formatted
as a tagname followed by ^{} to make sure no valid refs match that
pattern. In other words, these entries are deliberately formatted not to
pass check-refname-format test.

A recent series however added a test unconditionally to the add_ref()
function that is called from add_extra_ref(). The check may be sensible
for other two callsites of the add_ref() interface, but definitely is
a wrong thing to do in add_extra_ref(). Disable it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-16 20:54:38 -08:00
Junio C Hamano
ada4ec627f refs: loosen over-strict "format" check
The add_extra_ref() interface is used to add an extra-ref that is _not_
our ref for the purpose of helping auto-following of tags and reducing
object transfer from remote repository, and they are typically formatted
as a tagname followed by ^{} to make sure no valid refs match that
pattern. In other words, these entries are deliberately formatted not to
pass check-refname-format test.

A recent series however added a test unconditionally to the add_ref()
function that is called from add_extra_ref(). The check may be sensible
for other two callsites of the add_ref() interface, but definitely is
a wrong thing to do in add_extra_ref(). Disable it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-16 20:53:16 -08:00
Marc-André Lureau
74b531f65f mailmap: xcalloc mailmap_info
This is to avoid reaching free of uninitialized members.

With an invalid .mailmap (and perhaps in other cases), it can reach
free(mi->name) with garbage for example.

Signed-off-by: Marc-André Lureau <marcandre.lureau@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-16 18:00:56 -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
e8b14d7e3f name-rev --all: do not even attempt to describe non-commit object
This even dates back to the very beginning of "git name-rev";
it does not make much sense to dump all objects in the repository
and label non-commits as "undefined".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-15 15:51:05 -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
25e8838c64 Merge branch 'jc/pull-signed-tag' into next
* jc/pull-signed-tag:
  commit-tree: teach -m/-F options to read logs from elsewhere
  commit-tree: update the command line parsing
  commit: teach --amend to carry forward extra headers
  merge: force edit and no-ff mode when merging a tag object
  commit: copy merged signed tags to headers of merge commit
  merge: record tag objects without peeling in MERGE_HEAD
  merge: make usage of commit->util more extensible
  fmt-merge-msg: Add contents of merged tag in the merge message
  fmt-merge-msg: package options into a structure
  fmt-merge-msg: avoid early returns
  refs DWIMmery: use the same rule for both "git fetch" and others
  fetch: allow "git fetch $there v1.0" to fetch a tag
  merge: notice local merging of tags and keep it unwrapped
  fetch: do not store peeled tag object names in FETCH_HEAD
  Split GPG interface into its own helper library

Conflicts:
	builtin/fmt-merge-msg.c
2011-11-14 16:14:15 -08:00
Junio C Hamano
b64e1cbc46 Merge branch 'na/strtoimax' into next
* na/strtoimax:
  Support sizes >=2G in various config options accepting 'g' sizes.
  Compatibility: declare strtoimax() under NO_STRTOUMAX
  Add strtoimax() compatibility function.
2011-11-14 15:01:52 -08:00
Junio C Hamano
f46d021c96 Merge branch 'vr/msvc' into next
* vr/msvc:
  MSVC: Remove unneeded header stubs
  Compile fix for MSVC: Include <io.h>
  Compile fix for MSVC: Do not include sys/resources.h
2011-11-14 15:01:52 -08:00
Junio C Hamano
72bb2d5b67 Merge branch 'ab/pull-rebase-config' into next
* ab/pull-rebase-config:
  pull: introduce a pull.rebase option to enable --rebase
2011-11-13 19:37:49 -08:00
Junio C Hamano
c5722ac840 Merge branch 'nd/prune-progress' into next
* nd/prune-progress:
  reachable: per-object progress
  prune: handle --progress/no-progress
  prune: show progress while marking reachable objects
2011-11-13 19:37:45 -08:00
Junio C Hamano
8831811b0e Merge branch 'nd/fsck-progress' into next
* nd/fsck-progress:
  fsck: print progress
  fsck: avoid reading every object twice
  verify_packfile(): check as many object as possible in a pack
  fsck: return error code when verify_pack() goes wrong
2011-11-13 19:37:41 -08:00
Junio C Hamano
a573aec80a Merge branch 'ab/clang-lints' into next
* ab/clang-lints:
  cast variable in call to free() in builtin/diff.c and submodule.c
  apply: get rid of useless x < 0 comparison on a size_t type
2011-11-13 19:37:37 -08:00
Junio C Hamano
e473fd24d1 Merge branch 'jc/request-pull-show-head-4' into next
* jc/request-pull-show-head-4:
  request-pull: use the annotated tag contents
2011-11-13 19:37:30 -08:00
Junio C Hamano
96b8d93a53 commit-tree: teach -m/-F options to read logs from elsewhere
Just like "git commit" does.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-12 22:25:07 -08:00
Junio C Hamano
733169543c Merge branch 'master' into next
* master:
  Git 1.7.8-rc2
  mktree: fix a memory leak in write_tree()
2011-11-12 22:15:28 -08:00
Junio C Hamano
bc1bbe0c19 Git 1.7.8-rc2
Signed-off-by: Junio C Hamano <gitster@pobox.com>
v1.7.8-rc2
2011-11-12 22:14:53 -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
77f143bf3e Merge 'build-in git-mktree'
* commit '633e3556ccbc': (5835 commits)
  build-in git-mktree
  allow -t abbreviation for --track in git branch
  gitweb: Remove function prototypes (cleanup)
  Documentation: cloning to empty directory is allowed
  Clarify kind of conflict in merge-one-file helper
  git config: clarify --add and --get-color
  archive-tar.c: squelch a type mismatch warning
  Start 1.6.4 development
  Start 1.6.3.1 maintenance series.
  GIT 1.6.3
  t4029: use sh instead of bash
  t4200: convert sed expression which operates on non-text file to perl
  t4200: remove two unnecessary lines
  t/annotate-tests.sh: avoid passing a non-newline terminated file to sed
  t4118: avoid sed invocation on file without terminating newline
  t4118: add missing '&&'
  t8005: use egrep when extended regular expressions are required
  git-clean doc: the command only affects paths under $(cwd)
  improve error message in config.c
  t4018-diff-funcname: add cpp xfuncname pattern to syntax test
  ...
2011-11-10 09:05:31 -08:00
Liu Yuan
cd9519bd2c mktree: fix a memory leak in write_tree()
We forget to call strbuf_release to release the buf memory.

Signed-off-by: Liu Yuan <tailai.ly@taobao.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-10 09:04:08 -08:00
Junio C Hamano
79a9312cc9 commit-tree: update the command line parsing
We have kept the original "git commit-tree <tree> -p <parent> ..." syntax
forever, but "git commit-tree -p <parent> -p <parent> ... <tree>" would be
more intuitive way to spell it. Dashed flags along with their arguments
come first and then the "thing" argument after the flags.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-09 22:27:17 -08:00
Junio C Hamano
ed7a42a075 commit: teach --amend to carry forward extra headers
After running "git pull $there for-linus" to merge a signed tag, the
integrator may need to amend the resulting merge commit to fix typoes
in it. Teach --amend option to read the existing extra headers, and
carry them forward.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-09 22:27:11 -08:00
Junio C Hamano
573378b91b Merge branch 'master' into next
* master:
  completion: don't leak variable from the prompt into environment
2011-11-09 19:20:05 -08:00
Junio C Hamano
fab47d0575 merge: force edit and no-ff mode when merging a tag object
Now that we allow pulling a tag from the remote site to validate the
authenticity, we should give the user the final chance to verify and edit
the merge message. The integrator is expected to leave a meaningful merge
commit log in the history. Disallow fast-forwarding in such a case to
ensure that a merge commit is always recorded.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-09 10:29:42 -08:00
Junio C Hamano
5231c633f2 commit: copy merged signed tags to headers of merge commit
Now MERGE_HEAD records the tag objects without peeling, we could record
the result of manual conflict resolution via "git commit" without losing
the tag information. Introduce a new "mergetag" multi-line header field to
the commit object, and use it to store the entire contents of each signed
tag merged.

A commit header that has a multi-line payload begins with the header tag
(e.g. "mergetag" in this case), SP, the first line of payload, LF, and all
the remaining lines have a SP inserted at the beginning.

In hindsight, it would have been better to make "merge --continue" as the
way to continue from such an interrupted merge, not "commit", but this is
a backward compatibility baggage we would need to carry around for now.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-09 10:28:04 -08:00
Junio C Hamano
248dbbe832 Merge branch 'sn/complete-bash-wo-process-subst'
* sn/complete-bash-wo-process-subst:
  completion: don't leak variable from the prompt into environment
2011-11-09 05:46:39 -08:00
SZEDER Gábor
4804d43791 completion: don't leak variable from the prompt into environment
Commit e5b8eebc (completion: fix issue with process substitution not
working on Git for Windows, 2011-10-26) introduced a new variable in
__git_ps1_show_upstream(), but didn't declare it as local to prevent it
from leaking into the environment.

We may want to rewrite it like the following, but that can wait until the
next cycle.

	while read key value
	do
		...
	done <<-EOF
	$(git config -z --get-regexp ...)
	EOF

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-09 05:44:05 -08:00
Junio C Hamano
d050464541 request-pull: use the annotated tag contents
The integrator tool will start allowing to pull a signed or an annotated
tag, i.e.

    $ git pull $there tags/for-linus

and the description in the tag is used to convey a meaningful message from
the lieutenant to the integrator to justify the history being pulled.

Include the message in the pull request e-mail, as the same information is
useful in this context, too. It would encourage the lieutenants to write
meaningful messages in their signed tags.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-09 05:31:09 -08:00
Junio C Hamano
ecfa1fdbd9 Merge branch 'master' into next
* master:
  Update draft release notes to 1.7.8
  Git 1.7.7.3
  docs: Update install-doc-quick
  docs: don't mention --quiet or --exit-code in git-log(1)
2011-11-08 16:42:39 -08:00
Junio C Hamano
8a04247896 Update draft release notes to 1.7.8
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-08 16:42:33 -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