Commit Graph

18878 Commits

Author SHA1 Message Date
Junio C Hamano
f5b223abfd Merge branch 'maint-1.6.2' into maint
* maint-1.6.2:
  http-push.c::remove_locks(): fix use after free
2009-05-24 15:29:33 -07:00
Junio C Hamano
34ab57df97 Merge branch 'maint-1.6.1' into maint-1.6.2
* maint-1.6.1:
  http-push.c::remove_locks(): fix use after free
2009-05-24 15:29:23 -07:00
Junio C Hamano
ff6e93fe60 Merge branch 'maint-1.6.0' into maint-1.6.1
* maint-1.6.0:
  http-push.c::remove_locks(): fix use after free
2009-05-24 15:29:13 -07:00
Michal Marek
33eb4dd9fc apply: handle filenames with double slashes better
When there are duplicated slashes in pathnames, like this:

	--- a/perl//Git.pm
	+++ b/perl//Git.pm
	@@ -1358,3 +1358,4 @@

	 1; # Famous last words
	+# test

the paths gleaned from the patch header won't be found in the index and
cause "apply --index" and "apply --cached" to fail.

Fix this by squashing the duplicated slashes upon input.

Signed-off-by: Michal Marek <mmarek@suse.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-24 13:52:13 -07:00
Alex Riesen
6589ebf107 http-push.c::remove_locks(): fix use after free
Noticed and reported by Serhat Şevki Dinçer.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Acked-by: Clemens Buchacher <drizzd@aon.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-24 11:08:31 -07:00
Nguyễn Thái Ngọc Duy
7a7eb5173d t/t3400-rebase.sh: add more tests to help migrating git-rebase.sh to C
These new tests make sure I don't miss any check being performed before
rebase is proceeded (which is well tested by other tests)

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-24 10:25:55 -07:00
René Scharfe
dbb6a4ada6 grep: fix word-regexp at the beginning of lines
After bol is forwarded, it doesn't represent the beginning of the line
any more.  This means that the beginning-of-line marker (^) mustn't match,
i.e. the regex flag REG_NOTBOL needs to be set.

This bug was introduced by fb62eb7fab
("grep -w: forward to next possible position after rejected match").

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-23 16:29:05 -07:00
Stephen Boyd
4c8d4c14c6 apply, fmt-merge-msg: use relative filenames
Commit dbd0f5c7 (Files given on the command line are relative to $cwd,
2008-08-06) only fixed git-commit and git-tag. But, git-apply and
git-fmt-merge-msg didn't get the update and exhibit the same behavior.

Fix them and add tests for "apply --build-fake-ancestor" and
"fmt-merge-msg -F".

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-23 15:45:52 -07:00
Stephen Boyd
aae94ffbc1 commit: -F overrides -t
Commit dbd0f5c7 (Files given on the command line are relative to $cwd,
2008-08-06) introduced parse_options_fix_filename() as a quick fix for
filename arguments used in the parse options API.

git-commit was still broken. This means

    git commit -F log -t temp

in a subdirectory would make git think the log message should be taken
from temp instead of log.

This is because parse_options_fix_filename() calls prefix_filename()
which uses a single static char buffer to do its work. Making two calls
with two char pointers causes the pointers to alias. To prevent
aliasing, we duplicate the string returned by
parse_options_fix_filename().

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-23 15:45:52 -07:00
Jim Meyering
5ffd3113d4 post-receive-email: hooks.showrev: show how to include both web link and patch
Add a comment showing how to include a web link (i.e. gitweb/cgit)
and a patch in the email that is sent for each pushed commit.

The quoting was tricky enough that it's worth documenting.  To add
two blank lines (i.e. put \n\n in the printf), you would need to
say \\\\n\\\\n, and in the end, the pair of "echo" statements seemed
better.  This is used in glibc.git repository:

  http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=summary

push-triggered messages have been sent to this list since May 21:

  http://sourceware.org/ml/glibc-cvs/2009-q2/

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-23 10:29:22 -07:00
Johannes Schindelin
b74d779bd9 MinGW: Fix compiler warning in merge-recursive
GCC 4.4.0 on Windows does not like the format %zu.  It is quite unlikely,
though, that we need more merge bases than a %d can display, so replace
the %zu by a %d.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-23 01:54:45 -07:00
Johannes Schindelin
0dbbbc1e26 MinGW: Add a simple getpass()
We need getpass() to activate curl on MinGW.  Although the default
Makefile currently has 'NO_CURL = YesPlease', msysgit releases do
provide curl support, so getpass() is used.

[spr: - edited commit message.
      - squashed commit that provides getpass() declaration.]

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-23 01:54:45 -07:00
Johannes Schindelin
27e3219f1a MinGW: use POSIX signature of waitpid()
Git's source code expects waitpid() to return a signed int status.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-23 01:54:45 -07:00
Johannes Schindelin
352c81114c MinGW: the path separator to split GITPERLLIB is ';' on Win32
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-23 01:54:45 -07:00
Peter Harris
bedc4279a8 MinGW: Scan for \r in addition to \n when reading shbang lines
\r is common on Windows, so we should handle it gracefully.

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-23 01:54:45 -07:00
Junio C Hamano
7f5a68ad4d Merge branch 'jn/gitweb-cleanup'
* jn/gitweb-cleanup:
  gitweb: Remove unused $hash_base parameter from normalize_link_target
  gitweb: Simplify snapshot format detection logic in evaluate_path_info
  gitweb: Use capturing parentheses only when you intend to capture
  gitweb: Replace wrongly added tabs with spaces
  gitweb: Use block form of map/grep in a few cases more
  gitweb: Always use three argument form of open
  gitweb: Always use three argument form of open
  gitweb: Do not use bareword filehandles
2009-05-23 01:44:06 -07:00
Junio C Hamano
c9a88deede Merge branch 'mg/track'
* mg/track:
  Fix behavior with non-commit upstream references
  Test tracking of non-commit upstreams
2009-05-23 01:44:00 -07:00
Junio C Hamano
44ee247f8d Merge branch 'fc/decorate-tag'
* fc/decorate-tag:
  Prettify log decorations even more
  Change prettify_ref to prettify_refname
2009-05-23 01:43:50 -07:00
Junio C Hamano
212fa1d960 Merge branch 'tp/send-email-from-config'
* tp/send-email-from-config:
  send-email: Add config option for sender address
2009-05-23 01:43:26 -07:00
Junio C Hamano
2c8f8b19d4 Merge branch 'js/maint-no-ln-across-libexec-and-bin'
* js/maint-no-ln-across-libexec-and-bin:
  Add NO_CROSS_DIRECTORY_HARDLINKS support to the Makefile

Conflicts:
	Makefile
2009-05-23 01:43:08 -07:00
Junio C Hamano
bbc0995792 Merge branch 'da/mergetool-lib'
* da/mergetool-lib:
  mergetool--lib: specialize diff options for emerge and ecmerge
2009-05-23 01:41:51 -07:00
Junio C Hamano
d34f715853 Merge branch 'cc/bisect' (early part)
* 'cc/bisect' (early part):
  bisect: make "git bisect" use new "--next-all" bisect-helper function
  bisect: add "check_good_are_ancestors_of_bad" function
  bisect: implement the "check_merge_bases" function
  bisect: automatically sort sha1_array if needed when looking it up
  bisect: make skipped array functions more generic
  bisect: remove too much function nesting
  bisect: use new "struct argv_array" to prepare argv for "setup_revisions"
  bisect: store good revisions in a "sha1_array"
  bisect: implement "rev_argv_push" to fill an argv with revs
  bisect: use "sha1_array" to store skipped revisions
  am: simplify "sq" function by using "git rev-parse --sq-quote"
  bisect: use "git rev-parse --sq-quote" instead of a custom "sq" function
  rev-parse: add --sq-quote to shell quote arguments
  rev-list: remove stringed output flag from "show_bisect_vars"
  bisect--helper: remove "--next-vars" option as it is now useless
  bisect: use "git bisect--helper --next-exit" in "git-bisect.sh"
  bisect--helper: add "--next-exit" to output bisect results
  bisect: move common bisect functionality to "bisect_common"
  rev-list: refactor printing bisect vars
  rev-list: make "estimate_bisect_steps" non static
2009-05-23 01:41:27 -07:00
Junio C Hamano
3ed24211d4 Merge branch 'lt/maint-diff-reduce-lstat'
* lt/maint-diff-reduce-lstat:
  Teach 'git checkout' to preload the index contents
  Avoid unnecessary 'lstat()' calls in 'get_stat_data()'
2009-05-23 01:40:33 -07:00
Junio C Hamano
5781e80ffd Merge branch 'jm/format-patch-no-auto-n-when-k-is-given'
* jm/format-patch-no-auto-n-when-k-is-given:
  format-patch let -k override a config-specified format.numbered
2009-05-23 01:40:22 -07:00
Junio C Hamano
d32643c0ff Merge branch 'do/maint-merge-recursive-fix'
* do/maint-merge-recursive-fix:
  merge-recursive: never leave index unmerged while recursing
2009-05-23 01:39:50 -07:00
Junio C Hamano
e05aae684d Merge branch 'rr/forbid-bs-in-ref'
* rr/forbid-bs-in-ref:
  Disallow '\' in ref names
2009-05-23 01:39:45 -07:00
Junio C Hamano
5eb3d94553 Merge branch 'hv/sample-update'
* hv/sample-update:
  Extend sample update hook, disable modifying of existing tags
2009-05-23 01:39:15 -07:00
Junio C Hamano
2beba6beb0 Merge branch 'jk/maint-1.6.0-trace-argv'
* jk/maint-1.6.0-trace-argv:
  fix GIT_TRACE segfault with shell-quoted aliases

Conflicts:
	alias.c
2009-05-23 01:39:08 -07:00
Junio C Hamano
15d29dde04 Merge branch 'jk/no-no-no-empty-directory'
* jk/no-no-no-empty-directory:
  parseopt: add OPT_NEGBIT
2009-05-23 01:38:35 -07:00
Junio C Hamano
104d379448 Merge branch 'rs/grep-parseopt'
* rs/grep-parseopt:
  grep: make callback functions static
  grep: use parseopt
  grep: remove global variable builtin_grep
  parseopt: add PARSE_OPT_NODASH
  parseopt: add OPT_NUMBER_CALLBACK
  parseopt: add OPT_NEGBIT
2009-05-23 01:38:32 -07:00
Junio C Hamano
9d764f9538 Merge branch 'fl/git-pm'
* fl/git-pm:
  Git.pm: Always set Repository to absolute path if autodetecting
  Git.pm: Set GIT_WORK_TREE if we set GIT_DIR
2009-05-23 01:38:28 -07:00
Junio C Hamano
77ce907786 Merge branch 'mt/submodule-reference'
* mt/submodule-reference:
  Add --reference option to git submodule.
2009-05-23 01:38:24 -07:00
Junio C Hamano
a0c0be97d4 OpenSolaris 200811 (SunOS 5.11) does not want OLD_ICONV
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-22 22:55:31 -07:00
Junio C Hamano
30d8080ca7 Teach Solaris that _XOPEN_SOURCE=600 really menas XPG6
In git-compat-util.h, we do

    #define _XOPEN_SOURCE 600
    #define _XOPEN_SOURCE_EXTENDED 1

unless we are on BSD or SCO.

On OpenSolaris (200811), /usr/include/sys/feature_tests.h has this nice
table:

    Feature Test Macro				     Specification
    ------------------------------------------------  -------------
    _XOPEN_SOURCE                                         XPG3
    _XOPEN_SOURCE && _XOPEN_VERSION = 4                   XPG4
    _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED = 1           XPG4v2
    _XOPEN_SOURCE = 500                                   XPG5
    _XOPEN_SOURCE = 600  (or POSIX_C_SOURCE=200112L)      XPG6

Later in the same header, compilation with -c99 is made to fail if _XPG6 is
not set, like this:

    #if defined(_STDC_C99) && (defined(__XOPEN_OR_POSIX) && !defined(_XPG6))
    #error "Compiler or options invalid for pre-UNIX 03 X/Open applications \
            and pre-2001 POSIX applications"
    #elif ...

The problem is that they check things in an order that is inconvenient for
us.  When they see _XOPEN_SOURCE_EXTENDED, they declare that we are XPG4v2,
regardless of the value of _XOPEN_SOURCE.

To work around this problem, do not define _XOPEN_SOURCE_EXTENDED on
Sun's.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-22 22:52:00 -07:00
Stephen Boyd
57343652a5 show-branch: migrate to parse-options API
Note that "-g" no longer uses an equals '=' sign for its optional
arguments, but "--reflog" still does. This is normal behavior for parse
options, as arguments to "-g" are put immediately after the option with
no space.

For example

    git show-branch -g=4

is now

    git show-branch -g4

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-22 22:48:04 -07:00
Junio C Hamano
1ca20358e7 Merge branch 'mh/show-branch-color' into sb/show-branch-parse-options
* branch 'mh/show-branch-color':
  bash completion: show-branch color support
  show-branch: color the commit status signs
2009-05-22 22:47:47 -07:00
Stephen Boyd
29f25d493c parse-options: add PARSE_OPT_LITERAL_ARGHELP for complicated argh's
Usually, the argh element in struct option points at a placeholder value
(e.g. "val"), and is shown in the usage message as

    --option=<val>

by enclosing the string inside of angle brackets.

When the option is more complex (e.g. optional arguments separated by a
comma), you would want to produce a usage message that looks like

    --option=<val1>[,<val2>]

In such a case, the caller can pass a string to argh with placeholders
already enclosed in necessary angle brackets (e.g.  "<val1>[,<val2>]")
and set this flag.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-22 22:46:04 -07:00
Brandon Casey
bb43414b37 t8005: convert CP1251 character set to ISO8859-5
On IRIX 6.5 CP1251 is unknown, but WIN1251 (which seems to be a
non-standard name) is known.  On Solaris 10, the opposite is true.  Solaris
also knows CP1251 as WINDOWS-1251, but this too is not recognized on IRIX.
I could not find a name that both platforms recognized for this character
set.

An alternative character set which covers the same alphabet seems to be the
ISO8859-5 character set.  Both platforms support this character set, so use
it instead.

This allows t8005.4 to pass on Solaris 7, and part of the test to pass on
IRIX. (My IRIX can't convert SJIS to UTF-8 :(

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-22 22:41:04 -07:00
Brandon Casey
bdb0a7e4e4 t8005: use more portable character encoding names
Some platforms do not have an extensive list of alternate names for
character encodings.

Solaris 7 does not know about shift-jis, but does know SJIS.  It also does
not know that utf-8 and UTF-8 refer to the same encoding.

With the above in mind, the following conversions were performed:

      utf-8 --> UTF-8
  shift-jis --> SJIS

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-22 22:40:22 -07:00
Jakub Narebski
14afe77486 gitweb: Sanitize title attribute in format_subject_html
Replace control characters with question mark '?' (like in
chop_and_esc_str).

A little background: some web browsers turn on strict (and
unforgiving) XML validating mode for XHTML documents served using
application/xhtml+xml content type.  This means among others that
control characters are forbidden to appear in gitweb output.

CGI.pm does by default slight escaping (using simple_escape subroutine
from CGI::Util) of all _attribute_ values (depending on the value of
autoEscape, by default on).  This escaping, at least in CGI.pm version
3.10 (most current version at CPAN is 3.43), is minimal: only '"',
'&', '<' and '>' are escaped using named HTML entity references
(&quot;, &amp;, &lt; and &gt; respectively).  But simple_escape does
not do escaping of control characters such as ^X which are invalid in
XHTML (in strict mode).

If by some accident commit message do contain some control character
in first 50 characters (more or less) of first line of commit message,
and this line is longer than 50 characters (so gitweb shortens it for
display), then gitweb would put this control character in title
attribute (and CGI.pm would not remove them).  The tag _contents_ is
safe because it is escaped using esc_html() explicitly, and it
replaces control characters by their printable representation.

While at it: chop_and_escape_str doesn't need capturing group.

Noticed-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-22 09:26:54 -07:00
Nguyễn Thái Ngọc Duy
a80aad7b85 Terminate argv with NULL before calling setup_revisions()
It is convention that argv should be terminated with NULL, even if
argc is used to specify the size of argv. setup_revisions() requires
this and may segfault otherwise.

This patch makes sure that all argv (that I can find) is NULL terminated.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-21 08:56:24 -07:00
Nguyễn Thái Ngọc Duy
06f391906a doc/git-rebase.txt: remove mention of multiple strategies
git-rebase.sh does not seem to support this.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-21 07:33:23 -07:00
Junio C Hamano
581412cb02 Merge git://git.bogomips.org/git-svn
* git://git.bogomips.org/git-svn:
  git-svn: add --authors-prog option
  git-svn: Set svn.authorsfile if it is passed to git svn clone
  git-svn: Correctly report max revision when following deleted paths
  git-svn: Fix for svn paths removed > log-window-size revisions ago
  git-svn testsuite: use standard configuration for Subversion tools
2009-05-21 07:28:07 -07:00
Eric W. Biederman
fe87c92138 git-send-email: Handle quotes when parsing .mailrc files
It is legal and not uncommon to use quotes in a .mailrc file so
you can include a persons fullname as well as their email alias.
Handle this by using quotewords instead of split when parsing
.mailrc files.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-05-21 07:08:58 -07:00
Mark Lodato
36db1eddf9 git-svn: add --authors-prog option
Add a new option, --authors-prog, to git-svn that allows a more flexible
alternative (or supplement) to --authors-file.  This allows more
advanced username operations than the authors file will allow.  For
example, one may look up Subversion users via LDAP, or may generate the
name and email address from the Subversion username.

Notes:

* If both --authors-name and --authors-prog are given, the former is
  tried first, falling back to the later.

* The program is called once per unique SVN username, and the result is
  cached.

* The command-line argument must be the path to a program, not a generic
  shell command line.  The absolute path to this program is taken at
  startup since the git-svn script changes directory during operation.

* The option is not enabled for `git svn log'.

[ew: fixed case where neither --authors-(name|prog) were defined]
Signed-off-by: Mark Lodato <lodatom@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
2009-05-21 00:56:18 -07:00
Alex Vandiver
42a5da1806 git-svn: Set svn.authorsfile if it is passed to git svn clone
Signed-off-by: Alex Vandiver <alexmv@mit.edu>
Acked-by: Eric Wong <normalperson@yhbt.net>
2009-05-21 00:31:08 -07:00
Alex Vandiver
b6c61778d4 git-svn: Correctly report max revision when following deleted paths
Report the maximum found revision in the range, instead of the minimum
changed revision.

Signed-off-by: Alex Vandiver <alexmv@mit.edu>
Acked-by: Eric Wong <normalperson@yhbt.net>
2009-05-21 00:31:08 -07:00
Alex Vandiver
c69700fe04 git-svn: Fix for svn paths removed > log-window-size revisions ago
Instead of trying to find the end of the commit history only in the
last window, track if we have seen commits yet, and use that to judge
if we need to backtrack and look for a tail.  Otherwise, conversion
can silently lose up to 100 revisions of a branch if it was deleted
>100 revisions ago.

Signed-off-by: Alex Vandiver <alexmv@mit.edu>
Acked-by: Eric Wong <normalperson@yhbt.net>
2009-05-21 00:31:08 -07:00
Eygene Ryabinkin
da083d688e git-svn testsuite: use standard configuration for Subversion tools
I have tweaked configuration in my ~/.subversion directory, namely I am
running auto-properties and automatically adding '$Id$' expansion to
every file.  This choke the last test named 'proplist' from
t9101-git-svn-props.sh, because one more property, svn:keywords is
automatically added.

I had just wrapped svn invocation with the svn_cmd that specifies empty
directory via --config-dir argument.  Since the latter is the global
option, it should be recognized by all svn subcommands, so no
regressions will be introduced.

Now svn_cmd is used everywhere, not just in the failed test module: this
should guard us from the future clashes with user-defined configuration
tweaks.

Signed-off-by: Eygene Ryabinkin <rea-git@codelabs.ru>
Acked-by: Eric Wong <normalperson@yhbt.net>
2009-05-21 00:31:07 -07:00
Junio C Hamano
065b0702f7 Merge branch 'maint'
* maint:
  grep: fix word-regexp colouring
  completion: use git rev-parse to detect bare repos
  Cope better with a _lot_ of packs
  for-each-ref: fix segfault in copy_email
2009-05-20 18:59:09 -07:00