Commit Graph

21384 Commits

Author SHA1 Message Date
Junio C Hamano
66a5eeffff Merge branch 'jh/maint-submodule-status-in-void' (early part)
* 'jh/maint-submodule-status-in-void' (early part):
  submodule summary: do not shift a non-existent positional variable
2010-03-03 14:50:22 -08:00
Jeff King
caa9c3cabe submodule summary: do not shift a non-existent positional variable
When "git submodule summary" is run without any argument, we default to
compare the state of index with the HEAD, but tried to shift out $1 that
does not exist (and worse yet, we didn't use it).

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-03-03 14:33:21 -08:00
Junio C Hamano
a75bab51ae Merge branch 'maint'
* maint:
  gitweb: Fix project-specific feature override behavior
  gitweb multiple project roots documentation
2010-03-02 12:44:16 -08:00
Junio C Hamano
52ebb06f14 Merge branch 'jn/maint-fix-pager'
* jn/maint-fix-pager:
  tests: Fix race condition in t7006-pager
  t7006-pager: if stdout is not a terminal, make a new one
  tests: Add tests for automatic use of pager
  am: Fix launching of pager
  git svn: Fix launching of pager
  git.1: Clarify the behavior of the --paginate option
  Make 'git var GIT_PAGER' always print the configured pager
  Fix 'git var' usage synopsis
2010-03-02 12:44:11 -08:00
Junio C Hamano
77b30bcecd Merge branch 'ml/encode-header-refactor'
* ml/encode-header-refactor:
  move encode_in_pack_object_header() to a better place
  refactor duplicated encode_header in pack-objects and fast-import
2010-03-02 12:44:11 -08:00
Junio C Hamano
ca97d26cc6 Merge branch 'jn/gitweb-config-error-die'
* jn/gitweb-config-error-die:
  gitweb: Die if there are parsing errors in config file
2010-03-02 12:44:11 -08:00
Junio C Hamano
e4b89317cd Merge branch 'jc/for-each-ref'
* jc/for-each-ref:
  for-each-ref --format='%(flag)'
  for-each-ref --format='%(symref) %(symref:short)'
  builtin-for-each-ref.c: check if we need to peel onion while parsing the format
  builtin-for-each-ref.c: comment fixes
2010-03-02 12:44:10 -08:00
Junio C Hamano
36420805a7 Merge branch 'ld/maint-diff-quiet-w'
* ld/maint-diff-quiet-w:
  git-diff: add a test for git diff --quiet -w
  git diff --quiet -w: check and report the status
2010-03-02 12:44:10 -08:00
Junio C Hamano
68a4741484 Merge branch 'tr/maint-cherry-pick-list'
* tr/maint-cherry-pick-list:
  cherry_pick_list: quit early if one side is empty
2010-03-02 12:44:10 -08:00
Junio C Hamano
32ae5b3425 Merge branch 'rs/optim-text-wrap'
* rs/optim-text-wrap:
  utf8.c: speculatively assume utf-8 in strbuf_add_wrapped_text()
  utf8.c: remove strbuf_write()
  utf8.c: remove print_spaces()
  utf8.c: remove print_wrapped_text()
2010-03-02 12:44:10 -08:00
Junio C Hamano
bd282f58ad Merge branch 'ml/send-pack-transport-refactor'
* ml/send-pack-transport-refactor:
  refactor duplicated code in builtin-send-pack.c and transport.c
2010-03-02 12:44:09 -08:00
Junio C Hamano
d5f61ce157 Merge branch 'ml/fill-mm-refactor'
* ml/fill-mm-refactor:
  refactor duplicated fill_mm() in checkout and merge-recursive
2010-03-02 12:44:09 -08:00
Junio C Hamano
a0626bcc66 Merge branch 'ml/connect-refactor'
* ml/connect-refactor:
  connect.c: move duplicated code to a new function 'get_host_and_port'
2010-03-02 12:44:09 -08:00
Junio C Hamano
34c014d13e Merge branch 'np/compress-loose-object-memsave'
* np/compress-loose-object-memsave:
  sha1_file: be paranoid when creating loose objects
  sha1_file: don't malloc the whole compressed result when writing out objects
2010-03-02 12:44:09 -08:00
Junio C Hamano
7237f97181 Merge branch 'dp/read-not-mmap-small-loose-object'
* dp/read-not-mmap-small-loose-object:
  hash-object: don't use mmap() for small files
2010-03-02 12:44:08 -08:00
Junio C Hamano
a026d5318c Merge branch 'jn/makedepend'
* jn/makedepend:
  Makefile: clarify definition of TEST_OBJS
  Makefile: always remove .depend directories on 'make clean'
  Makefile: tuck away generated makefile fragments in .depend
  Teach Makefile to check header dependencies
  Makefile: list standalone program object files in PROGRAM_OBJS
  Makefile: lazily compute header dependencies
  Makefile: list generated object files in OBJECTS
  Makefile: disable default implicit rules
  Makefile: rearrange dependency rules
  Makefile: transport.o depends on branch.h now
  Makefile: drop dependency on $(wildcard */*.h)
  Makefile: clean up http-walker.o dependency rules
  Makefile: remove wt-status.h from LIB_H
  Makefile: make sure test helpers are rebuilt when headers change
  Makefile: add missing header file dependencies

Conflicts:
	Makefile
2010-03-02 12:44:08 -08:00
Junio C Hamano
c673764dde Merge branch 'jc/maint-status-preload'
* jc/maint-status-preload:
  status: preload index to optimize lstat(2) calls
2010-03-02 12:44:07 -08:00
Junio C Hamano
8acd141bb5 Merge branch 'gf/maint-sh-setup-nongit-ok'
* gf/maint-sh-setup-nongit-ok:
  require_work_tree broken with NONGIT_OK
2010-03-02 12:44:07 -08:00
Junio C Hamano
490b8ad76f Merge branch 'jh/maint-submodule-status-in-void'
* jh/maint-submodule-status-in-void:
  submodule summary: Don't barf when invoked in an empty repo
2010-03-02 12:44:07 -08:00
Junio C Hamano
39914cb506 Merge branch 'hm/imap-send-cram-md5'
* hm/imap-send-cram-md5:
  imap-send: support CRAM-MD5 authentication
2010-03-02 12:44:06 -08:00
Junio C Hamano
c06951894a Merge branch 'ml/color-when'
* ml/color-when:
  Add an optional argument for --color options
2010-03-02 12:44:06 -08:00
Junio C Hamano
6954ef2063 Merge branch 'ac/cvsimport-revision-mapping'
* ac/cvsimport-revision-mapping:
  cvsimport: new -R option: generate .git/cvs-revisions mapping
2010-03-02 12:44:06 -08:00
Junio C Hamano
6b45b8c088 Merge branch 'jc/grep-author-all-match-implicit'
* jc/grep-author-all-match-implicit:
  "log --author=me --grep=it" should find intersection, not union
2010-03-02 12:44:06 -08:00
Frank Li
82cd8358e8 fallback SSH_ASKPASS when GIT_ASKPASS not set
If GIT_ASKPASS is not set and SSH_ASKPASS set, GIT_ASKPASS will
use SSH_ASKPASS.

Signed-off-by: Frank Li <lznuaa@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-03-02 12:15:41 -08:00
Jakub Narebski
9be3614eff gitweb: Fix project-specific feature override behavior
This commit fixes a bug in processing project-specific override in
a situation when there is no project, e.g. for the projects list page.

When 'snapshot' feature had project specific config override enabled
by putting
  $feature{'snapshot'}{'override'} = 1;

(or equivalent) in $GITWEB_CONFIG, and when viewing toplevel gitweb
page, which means the projects list page (to be more exact this
happens for any project-less action), gitweb would put the following
Perl warnings in error log:

  gitweb.cgi: Use of uninitialized value $git_dir in concatenation (.) or string at gitweb.cgi line 2065.
  fatal: error processing config file(s)
  gitweb.cgi: Use of uninitialized value $git_dir in concatenation (.) or string at gitweb.cgi line 2221.
  gitweb.cgi: Use of uninitialized value $git_dir in concatenation (.) or string at gitweb.cgi line 2218.

The problem is in the following fragment of code:

  # path to the current git repository
  our $git_dir;
  $git_dir = "$projectroot/$project" if $project;

  # list of supported snapshot formats
  our @snapshot_fmts = gitweb_get_feature('snapshot');
  @snapshot_fmts = filter_snapshot_fmts(@snapshot_fmts);

For the toplevel gitweb page, which is the list of projects, $project is not
defined, therefore neither is $git_dir.  gitweb_get_feature() subroutine
calls git_get_project_config() if project specific override is turned
on... but we don't have project here.

Those errors mentioned above occur in the following fragment of code in
git_get_project_config():

  	# get config
  	if (!defined $config_file ||
  	    $config_file ne "$git_dir/config") {
  		%config = git_parse_project_config('gitweb');
  		$config_file = "$git_dir/config";
  	}

git_parse_project_config() calls git_cmd() which has '--git-dir='.$git_dir

There are (at least) three possible solutions:
1. Harden gitweb_get_feature() so that it doesn't call
   git_get_project_config() if $project (and therefore $git_dir) is not
   defined; there is no project for project specific config.
2. Harden git_get_project_config() like you did in your fix, returning early
   if $git_dir is not defined.
3. Harden git_cmd() so that it doesn't add "--git-dir=$git_dir" if $git_dir
   is not defined, and change git_get_project_config() so that it doesn't
   even try to access $git_dir if it is not defined.

This commit implements both 1.) and 2.), i.e. gitweb_get_feature() doesn't
call project-specific override if $git_dir is not defined (if there is no
project), and git_get_project_config() returns early if $git_dir is not
defined.

Add a test for this bug to t/t9500-gitweb-standalone-no-errors.sh test.

Reported-by: Eli Barzilay <eli@barzilay.org>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-03-02 12:14:44 -08:00
Sylvain Rabot
964ad928d6 gitweb multiple project roots documentation
This commit adds in the gitweb/README file a description of how to use gitweb
with several project roots using apache virtualhost rewrite rules.

Signed-off-by: Sylvain Rabot <sylvain@abstraction.fr>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-03-02 12:14:20 -08:00
Junio C Hamano
9e2b885741 Merge branch 'cc/maint-bisect-paths'
* cc/maint-bisect-paths:
  bisect: error out when passing bad path parameters
2010-03-01 01:09:21 -08:00
Christian Couder
8f69f72fca bisect: error out when passing bad path parameters
As reported by Mark Lodato, "git bisect", when it was started with
path parameters that match no commit was kind of working without
taking account of path parameters and was reporting something like:

Bisecting: -1 revisions left to test after this (roughly 0 steps)

It is more correct and safer to just error out in this case, before
displaying the revisions left, so this patch does just that.

Note that this bug is very old, it exists at least since v1.5.5.
And it is possible to detect that case earlier in the bisect
algorithm, but it is not clear that it would be an improvement to
error out earlier, on the contrary it may change the behavior of
"git rev-list --bisect-all" for example, which is currently correct.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-03-01 01:04:35 -08:00
Junio C Hamano
dc05d73104 Merge branch 'maint'
* maint:
  Git 1.7.0.1
  Remove reference to GREP_COLORS from documentation
  sha1_name: fix segfault caused by invalid index access
2010-02-28 11:41:57 -08:00
Junio C Hamano
c5e5f60305 Git 1.7.0.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-02-28 11:41:24 -08:00
Mark Lodato
c0d3a38293 Remove reference to GREP_COLORS from documentation
There is no longer support for external grep, as per bbc09c2 (grep: rip
out support for external grep, 2010-01-12), so remove the reference to it
from the documentation.

Signed-off-by: Mark Lodato <lodatom@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-02-28 11:13:11 -08:00
Jonathan Nieder
5b8805e75c Makefile: clarify definition of TEST_OBJS
The definition of TEST_OBJS in commit daa99a91 (Makefile: make sure
test helpers are rebuilt when headers change, 2010-01-26) moved a use
of $X to before the platform-specific section where it gets defined.
There are at least two ways to fix that:

 - Change the definition of TEST_OBJS to use the = delayed
   evaluation operator.  This way, one need not worry about $(X)
   needing to be defined before TEST_OBJS is set.

 - Move the definition of TEST_OBJS to below the definition of $X.

Carry out the second.  The later site of definition makes the code more
readable, since now a reader only has to look down one line to see what
TEST_OBJS is meant to be used for.

Oddly enough, with or without this change the behavior of the Makefile
is the same.  Since TEST_PROGRAMS is defined with delayed evaluation,
the value of

 TEST_OBJS := $(patsubst test-%$X,test-%.o,$(TEST_PROGRAMS))

is independent of the value of $X when it is evaluated: the $X in the
pattern and the $X in $(TEST_PROGRAMS) will simply always cancel out.
Make sure $X has the expected expansion anyway to make the code and
the reader’s sanity more robust in the face of future changes.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-02-28 10:58:50 -08:00
Markus Heidelberg
77e8466fb9 sha1_name: fix segfault caused by invalid index access
The code to see if user input "git show :path" makes sense tried to access
the index without properly checking the array bound.

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-02-28 10:32:06 -08:00
josh robb
d32fad2b89 git svn: delay importing SVN::Base until it is needed
Importing functions from a .dll into Git for Windows' perl is pretty slow,
so let's avoid importing if it is not necessary.

This seems particularly slow in virtualized enviroments. Before this
change (on my machine):

$ time perl /libexec/git-core/git-svn rebase
Current branch master is up to date.

real 2m56.750s
user 0m3.129s
sys 2m39.232s

Afterwards:

$ time perl /libexec/git-core/git-svn rebase
Current branch master is up to date.

real 0m33.407s
user 0m1.409s
sys 0m23.054s

git svn rebase -n goes from 3m7.046s to 0m10.312s.

Signed-off-by: Josh Robb <josh_robb@fastmail.fm>
Acked-by: Eric Wong <normalperson@yhbt.net>
2010-02-26 01:33:56 -08:00
Tuomas Suutari
6a2009e7f3 git-svn: Fix discarding of extra parents from svn:mergeinfo
If parent J is an ancestor of parent I, then parent J should be
discarded, not I.

Note that J is an ancestor of I if and only if rev-list I..J is emtpy,
which is what we are testing here.

Signed-off-by: Tuomas Suutari <tuomas.suutari@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
2010-02-26 01:30:23 -08:00
Tuomas Suutari
9560808f2e t9151: Add two new svn:mergeinfo test cases
When svn:mergeinfo contains two new parents in a specific order and
one is ancestor of the other, it is possible that git-svn discards the
wrong one. The first test case ("commit made to merged branch is
reachable from the merge") proves this.

The second test case ("merging two branches in one commit is detected
correctly") is just for completeness, since there was no test for
merging two (feature) branches to trunk in one commit.

Signed-off-by: Tuomas Suutari <tuomas.suutari@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
2010-02-26 01:30:23 -08:00
Tuomas Suutari
ae5b370c9b t9151: Fix a few commits in the SVN dump
A few "svn cp" commands and commit commands were executed in incorrect
order. Therefore some of the desired commits were missing and some
were committed with wrong revision number in the commit message. This
made it hard to compare the produced git repository with the SVN
repository.

The dump file is updated too, but only the relevant parts and with
hand-edited timestamps to make history linear.

Signed-off-by: Tuomas Suutari <tuomas.suutari@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
2010-02-26 01:30:23 -08:00
Junio C Hamano
f7311dc229 Merge branch 'maint'
* maint:
  t3301-notes: insert a shbang line in ./fake_editor.sh
2010-02-25 23:21:50 -08:00
Junio C Hamano
64da6e20de Merge branch 'maint-1.6.6' into maint
* maint-1.6.6:
  t3301-notes: insert a shbang line in ./fake_editor.sh
2010-02-25 23:21:42 -08:00
Johannes Sixt
3fdcdbdf30 Windows: redirect f[re]open("/dev/null") to f[re]open("nul")
On Windows, the equivalent of "/dev/null" is "nul". This implements
compatibility wrappers around fopen() and freopen() that check for this
particular file name.

The new tests exercise code paths where this is relevant.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-02-25 12:27:38 -08:00
Johannes Sixt
97a449ee30 t3301-notes: insert a shbang line in ./fake_editor.sh
This is required on Windows because git-notes is now a built-in
rather than a shell script.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-02-25 12:20:16 -08:00
Junio C Hamano
251a4951a2 Merge branch 'maint'
* maint:
  commit: quote the user name in the example
2010-02-24 15:34:07 -08:00
Matt Kraai
8bb45b25b2 commit: quote the user name in the example
If the user runs

 git config --global user.name Your Name

as suggested, user.name will be set to "Your".  With this patch, the
suggested command will be

 git config --global user.name "Your Name"

which will set user.name to "Your Name" and hopefully help users avoid
the former mistake.

Signed-off-by: Matt Kraai <kraai@ftbfs.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-02-24 15:34:00 -08:00
Junio C Hamano
d951615daa Merge branch 'ml/maint-grep-doc' into maint
* ml/maint-grep-doc:
  grep documentation: clarify what files match
2010-02-24 15:33:23 -08:00
Junio C Hamano
0901d5a2ef Merge branch 'maint'
* maint:
  am: remove rebase-apply directory before gc
  rerere: fix memory leak if rerere images can't be read
  Documentation: mention conflict marker size argument (%L) for merge driver
2010-02-23 14:27:55 -08:00
Jonathan Nieder
29b67543d3 am: remove rebase-apply directory before gc
When git am does an automatic gc it doesn't clean up the rebase-apply
directory until after this has finished.  This means that if the user
aborts the gc then future am or rebase operations will report that an
existing operation is in progress, which is undesirable and confusing.

Reported by Mark Brown <broonie@debian.org> through
http://bugs.debian.org/570966

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-02-23 14:26:29 -08:00
Bert Wesarg
689b8c290d rerere: fix memory leak if rerere images can't be read
Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-02-23 14:24:43 -08:00
Bert Wesarg
16758621d5 Documentation: mention conflict marker size argument (%L) for merge driver
23a64c9e (conflict-marker-size: new attribute, 2010-01-16) introduced the
new attribute and also pass the conflict marker size as %L to merge driver
commands. This documents the substitution.

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-02-23 13:11:28 -08:00
Nicolas Pitre
f965c525a4 move encode_in_pack_object_header() to a better place
Commit 1b22b6c897 made duplicated versions of encode_header() into a
common version called encode_in_pack_object_header(). There is however
a better location that sha1_file.c for such a function though, as
sha1_file.c contains nothing related to the creation of packs, and
it is quite populated already.

Also the comment that was moved to the header file should really remain
near the function as it covers implementation details and provides no
information about the actual function interface.

Signed-off-by: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-02-23 13:10:56 -08:00
Jonathan Nieder
8c33b4cf67 tests: Fix race condition in t7006-pager
Pagers that do not consume their input are dangerous: for example,

 $ GIT_PAGER=: git log
 $ echo $?
 141
 $

The only reason these tests were able to work before was that
'git log' would write to the pipe (and not fill it) before the
pager had time to terminate and close the pipe.

Fix it by using a program that consumes its input, namely wc (as
suggested by Johannes).

Reported-by: Johannes Sixt <j.sixt@viscovery.net>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-02-22 14:19:28 -08:00