Commit Graph

22513 Commits

Author SHA1 Message Date
Junio C Hamano
18fd805583 Merge branch 'jh/diff-index-line-abbrev'
* jh/diff-index-line-abbrev:
  diff.c: Ensure "index $from..$to" line contains unambiguous SHA1s

Conflicts:
	diff.c
2010-06-18 11:16:56 -07:00
Junio C Hamano
ecdb3ec984 Merge branch 'ab/maint-perl-use-instlibdir'
* ab/maint-perl-use-instlibdir:
  Makefile: remove redundant munging of @@INSTLIBDIR@@
2010-06-18 11:16:55 -07:00
Junio C Hamano
2621ac50cc Merge branch 'ec/diff-noprefix-config'
* ec/diff-noprefix-config:
  diff: add configuration option for disabling diff prefixes.
2010-06-18 11:16:55 -07:00
Junio C Hamano
880bd9d080 Merge branch 'mg/status-b'
* mg/status-b:
  Documentation+t5708: document and test status -s -b
  Show branch information in short output of git status
2010-06-18 11:16:55 -07:00
Junio C Hamano
7c1b228d26 Merge branch 'jn/gitweb-plackup'
* jn/gitweb-plackup:
  git-instaweb: Add support for running gitweb via 'plackup'
  git-instaweb: Wait for server to start before running web browser
  git-instaweb: Remove pidfile after stopping web server
  git-instaweb: Configure it to work with new gitweb structure
  git-instaweb: Put httpd logs in a "$httpd_only" subdirectory
  gitweb: Set default destination directory for installing gitweb in Makefile
  gitweb: Move static files into seperate subdirectory
2010-06-18 11:16:55 -07:00
Junio C Hamano
bcacc0ebdb Merge branch 'jk/url-decode'
* jk/url-decode:
  decode file:// and ssh:// URLs
  make url-related functions reusable
2010-06-18 11:16:55 -07:00
Junio C Hamano
1c5d6b2a40 Merge branch 'jn/remote-set-branches'
* jn/remote-set-branches:
  Add git remote set-branches

Conflicts:
	builtin/remote.c
2010-06-18 11:16:55 -07:00
Junio C Hamano
199d4c0d43 Merge branch 'rc/ls-remote-default'
* rc/ls-remote-default:
  ls-remote: print URL when no repo is specified
2010-06-18 11:16:54 -07:00
Junio C Hamano
6c6f87842b Merge branch 'hg/id-munging'
* hg/id-munging:
  convert: Keep foreign $Id$ on checkout.
  convert: Safer handling of $Id$ contraction.
2010-06-18 11:16:54 -07:00
Junio C Hamano
8642abc764 Merge branch 'tc/merge-m-log'
* tc/merge-m-log:
  merge: --log appends shortlog to message if specified
  fmt-merge-msg: add function to append shortlog only
  fmt-merge-msg: refactor merge title formatting
  fmt-merge-msg: minor refactor of fmt_merge_msg()
  merge: rename variable
  merge: update comment
  t7604-merge-custom-message: show that --log doesn't append to -m
  t7604-merge-custom-message: shift expected output creation

Conflicts:
	builtin.h
2010-06-18 11:16:54 -07:00
Junio C Hamano
fd8b005c0d Merge branch 'ph/clone-message-reword'
* ph/clone-message-reword:
  clone: reword messages to match the end-user perception
2010-06-18 11:16:53 -07:00
Axel Bonnet
37d29e1051 t/t8006: test textconv support for blame
Test the correct functionning of textconv with blame <file> and blame HEAD^ <file>.
Test the case when no driver is specified.

Signed-off-by: Axel Bonnet <axel.bonnet@ensimag.imag.fr>
Signed-off-by: Clément Poulain <clement.poulain@ensimag.imag.fr>
Signed-off-by: Diane Gasselin <diane.gasselin@ensimag.imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-18 09:41:29 -07:00
Clément Poulain
573285e552 sha1_name: add get_sha1_with_context()
Textconv is defined by the diff driver, which is associated with a pathname,
not a blob. This fonction permits to know the context for the sha1 you're
looking for, especially his pathname

Signed-off-by: Clément Poulain <clement.poulain@ensimag.imag.fr>
Signed-off-by: Diane Gasselin <diane.gasselin@ensimag.imag.fr>
Signed-off-by: Axel Bonnet <axel.bonnet@ensimag.imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-18 09:41:29 -07:00
Axel Bonnet
3b8a12e8f8 textconv: support for blame
This patches enables to perform textconv with blame if a textconv driver is
available fos the file.

The main task is performed by the textconv_object function which prepares
diff_filespec and if possible converts the file using diff textconv API.
Only regular files are converted, so the mode of diff_filespec is faked.

Textconv conversion is enabled by default (equivalent to the option
--textconv), since blaming binary files is useless in most cases.
The option --no-textconv is used to disable textconv conversion.

The declarations of several functions are modified to give access to a
diff_options, in order to know whether the textconv option is activated or not.

Signed-off-by: Axel Bonnet <axel.bonnet@ensimag.imag.fr>
Signed-off-by: Clément Poulain <clement.poulain@ensimag.imag.fr>
Signed-off-by: Diane Gasselin <diane.gasselin@ensimag.imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-18 09:41:01 -07:00
Philippe Bruhat (BooK)
64abcc4844 Git.pm: better error message
Provide the bad directory name alongside with $!

Note: $! is set if there is "No such file or directory",
but isn't set if the file exists but is not a directory.

Signed-off-by: Philippe Bruhat (BooK) <book@cpan.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-18 08:49:03 -07:00
Thomas Rast
3cae7e5b2b send-email: ask about and declare 8bit mails
git-send-email passes on an 8bit mail as-is even if it does not
declare a content-type.  Because the user can edit email between
format-patch and send-email, such invalid mails are unfortunately not
very hard to come by.

Make git-send-email stop and ask about the encoding to use if it
encounters any such mail.  Also provide a configuration setting to
permanently configure an encoding.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-18 08:47:32 -07:00
Brian Downing
e53e6b4433 unpack-trees: Make index lookahead less pessimal
When traversing trees with an index, the current index pointer
(o->cache_bottom) occasionally has to be temporarily advanced forwards to
match the traversal order of the tree, which is not the same as the sort
order of the index.  The existing algorithm that did this (introduced in
730f72840c) would get "stuck" when the
cache_bottom was popped and then repeatedly check the same index entries
over and over.  This represents a serious performance regression for
large repositories compared to the old "broken" traversal order.

This commit makes a simple change to mitigate this.  Whenever
find_cache_pos sees that the current pos is also the cache_bottom, and
it has already been unpacked, it advances the cache_bottom as well as
the current pos.  This prevents the above "sticking" behavior without
dramatically changing the algorithm.

In addition, this commit moves the unpacked check above the
ce_in_traverse_path() check.  The simple bitmask check is cheaper, and
in the case described above will be firing quite a bit to advance the
cache_bottom after a tree pop.

This yields considerable performance improvements for large trees.
The following are the number of function calls for "git diff HEAD" on
the Linux kernel tree, with 33,307 files:

   Symbol               Calls Before   Calls After
   -------------------  ------------   -----------
   unpack_callback            35,332        35,332
   find_cache_pos             37,357        37,357
   ce_in_traverse_path     4,979,473        37,357
   do_compare_entry        6,828,181       251,925
   df_name_compare         6,828,181       251,925

And on a repository of 187,456 files:

   Symbol               Calls Before   Calls After
   -------------------  ------------   -----------
   unpack_callback           197,958       197,958
   find_cache_pos            208,460       208,460
   ce_in_traverse_path    37,308,336       208,460
   do_compare_entry      156,950,469     2,690,626
   df_name_compare       156,950,469     2,690,626

On the latter repository, user time for "git diff HEAD" was reduced from
5.58 to 0.42 seconds.  This is compared to 0.30 seconds before the
traversal order fix was implemented.

Signed-off-by: Brian Downing <bdowning@lavos.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-18 08:06:18 -07:00
Junio C Hamano
d0b8d79510 Update draft release notes to 1.7.2
... to exclude items meant to go to 1.7.1.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-16 17:10:11 -07:00
Junio C Hamano
3c0ae1bd72 Merge 'maint' updates in
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-16 17:09:31 -07:00
Junio C Hamano
45a0ee1163 Prepare draft release notes to 1.7.1.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-16 17:00:53 -07:00
Junio C Hamano
7223dcafdd Merge branch 'tr/receive-pack-aliased-update-fix' into js/maint-receive-pack-symref-alias
* tr/receive-pack-aliased-update-fix:
  check_aliased_update: strcpy() instead of strcat() to copy
2010-06-16 16:36:56 -07:00
Junio C Hamano
7e74a73e6b Merge branch 'cw/maint-exec-defpath' into maint
* cw/maint-exec-defpath:
  autoconf: Check if <paths.h> exists and set HAVE_PATHS_H
  exec_cmd.c: replace hard-coded path list with one from <paths.h>
2010-06-16 16:33:47 -07:00
Junio C Hamano
356169c1f6 Merge branch 'sc/http-late-auth' into maint
* sc/http-late-auth:
  Prompt for a username when an HTTP request 401s
2010-06-16 16:32:15 -07:00
Junio C Hamano
3b3b9a6152 Merge branch 'by/blame-doc-m-c' into maint
* by/blame-doc-m-c:
  blame-options.txt: Add default value for `-M/-C` options.
2010-06-16 16:23:51 -07:00
Junio C Hamano
91788cf26e Merge branch 'cb/maint-stash-orphaned-file' into maint
* cb/maint-stash-orphaned-file:
  stash tests: stash can lose data in a file removed from the index
  stash: Don't overwrite files that have gone from the index
2010-06-16 16:23:48 -07:00
Junio C Hamano
2b7d947b8f Merge branch 'mg/advice-statushints' into maint
* mg/advice-statushints:
  wt-status: take advice.statusHints seriously
  t7508: test advice.statusHints
2010-06-16 16:23:42 -07:00
Junio C Hamano
e1c07fa8b1 Merge branch 'jn/maint-bundle' into maint
* jn/maint-bundle:
  fix "bundle --stdin" segfault
  t5704 (bundle): add tests for bundle --stdin
2010-06-16 16:23:22 -07:00
Junio C Hamano
db1cf2eb98 Merge branch 'rr/doc-submitting' into maint
* rr/doc-submitting:
  SubmittingPatches: Add new section about what to base work on
2010-06-16 16:23:14 -07:00
Junio C Hamano
82df0ef1c3 Merge branch 'jn/t7006-fixup' into maint
* jn/t7006-fixup:
  t7006: guard cleanup with test_expect_success
2010-06-16 16:22:57 -07:00
Junio C Hamano
799c34449e Merge branch 'jn/shortlog' into maint
* jn/shortlog:
  pretty: Respect --abbrev option
  shortlog: Document and test --format option
  t4201 (shortlog): Test output format with multiple authors
  t4201 (shortlog): guard setup with test_expect_success
  Documentation/shortlog: scripted users should not rely on implicit HEAD
2010-06-16 16:22:51 -07:00
Junio C Hamano
318d401346 Merge branch 'np/index-pack-memsave' into maint
* np/index-pack-memsave:
  index-pack: smarter memory usage when appending objects
  index-pack: rationalize unpack_entry_data()
  index-pack: smarter memory usage when resolving deltas
2010-06-16 16:22:23 -07:00
Junio C Hamano
161cbf0b8e Merge branch 'sp/maint-dumb-http-pack-reidx' into maint
* sp/maint-dumb-http-pack-reidx:
  http.c::new_http_pack_request: do away with the temp variable filename
  http-fetch: Use temporary files for pack-*.idx until verified
  http-fetch: Use index-pack rather than verify-pack to check packs
  Allow parse_pack_index on temporary files
  Extract verify_pack_index for reuse from verify_pack
  Introduce close_pack_index to permit replacement
  http.c: Remove unnecessary strdup of sha1_to_hex result
  http.c: Don't store destination name in request structures
  http.c: Drop useless != NULL test in finish_http_pack_request
  http.c: Tiny refactoring of finish_http_pack_request
  t5550-http-fetch: Use subshell for repository operations
  http.c: Remove bad free of static block
2010-06-16 16:21:30 -07:00
Junio C Hamano
d6bf0cf9bf Merge branch 'jc/am-3-show-corrupted-patch' into maint
* jc/am-3-show-corrupted-patch:
  am -3: recover the diagnostic messages for corrupt patches
2010-06-16 16:21:23 -07:00
Junio C Hamano
f62e53c897 Merge branch 'sp/maint-describe-tiebreak-with-tagger-date' into maint
* sp/maint-describe-tiebreak-with-tagger-date:
  describe: Break annotated tag ties by tagger date
  tag.c: Parse tagger date (if present)
  tag.c: Refactor parse_tag_buffer to be saner to program
  tag.h: Remove unused signature field
  tag.c: Correct indentation
2010-06-16 16:21:15 -07:00
Junio C Hamano
5c1eba5e31 Merge branch 'np/malloc-threading' into maint
* np/malloc-threading:
  Thread-safe xmalloc and xrealloc needs a recursive mutex
  Make xmalloc and xrealloc thread-safe
2010-06-16 16:21:06 -07:00
Junio C Hamano
419ff2c575 Merge branch 'bg/send-email-smtpdomain' into maint
* bg/send-email-smtpdomain:
  send-email: Cleanup smtp-domain and add config
  Document send-email --smtp-domain
  send-email: Don't use FQDNs without a '.'
  send-email: Cleanup { style
2010-06-16 16:20:06 -07:00
Junio C Hamano
4dd4a09eac Merge branch 'rc/maint-curl-helper' into maint
* rc/maint-curl-helper:
  remote-curl: ensure that URLs have a trailing slash
  http: make end_url_with_slash() public
  t5541-http-push: add test for URLs with trailing slash

Conflicts:
	remote-curl.c
2010-06-16 16:19:43 -07:00
Junio C Hamano
755f0e36bc Merge branch 'hg/maint-attr-fix' into maint
* hg/maint-attr-fix:
  attr: Expand macros immediately when encountered.
  attr: Allow multiple changes to an attribute on the same line.
  attr: Fixed debug output for macro expansion.
2010-06-16 16:17:54 -07:00
Junio C Hamano
6e10b9c999 Merge branch 'mh/status-optionally-refresh' into maint
* mh/status-optionally-refresh:
  t7508: add a test for "git status" in a read-only repository
  git status: refresh the index if possible
  t7508: add test for "git status" refreshing the index
2010-06-16 16:16:40 -07:00
Michael J Gruber
7b88176e9b pretty: Introduce ' ' modifier to add space if non-empty
We have the '+' modifiier which helps combine format specifiers which
may possibly be empty, e.g. '%s%+b%n'.

Introduce an analogous ' ' (space) modifier which adds a space before
non-empty items. This helps assemble "one line type" format specifiers.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-16 14:45:09 -07:00
Junio C Hamano
42f9852f3c common_prefix: simplify and fix scanning for prefixes
common_prefix() scans backwards from the far end of each 'next'
pathspec, starting from 'len', shortening the 'prefix' using 'path' as
a reference.

However, there is a small opportunity for an out-of-bounds access
because len is unconditionally set to prefix-1 after a "direct match"
test failed.  This means that if 'next' is shorter than prefix+2, we
read past it.

Instead of a minimal fix, simplify the loop: scan *forward* over the
'next' entry, remembering the last '/' where it matched the prefix
known so far.  This is far easier to read and also has the advantage
that we only scan over each entry once.

Acked-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-16 12:13:12 -07:00
Stephen Boyd
d8e1e5df95 completion: Add --signature and format.signature
Cc: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-16 10:11:19 -07:00
Stephen Boyd
6622d9c710 format-patch: Add a signature option (--signature)
By default, git uses the version string as the signature for all
patches output by format-patch. Many employers (mine included)
require the use of a signature on all outgoing mails. In a
format-patch | send-email workflow there isn't an easy way to modify
the signature without breaking the pipe and manually replacing the
version string with the signature required. Instead of doing all that
work, add an option (--signature) and a config variable
(format.signature) to replace the default git version signature when
formatting patches.

This does modify the original behavior of format-patch a bit. First
off the version string is now placed in the cover letter by default.
Secondly, once the configuration variable format.signature is added
to the .config file there is no way to revert back to the default
git version signature. Instead, specifying the --no-signature option
will remove the signature from the patches entirely.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-16 10:08:59 -07:00
Jay Soffian
43c23251f9 am: use get_author_ident_from_commit instead of mailinfo when rebasing
In certain situations, commit authorship can consist of an invalid
e-mail address. For example, this is the case when working with git svn
repos where the author email has had the svn repo UUID appended such as:

 author@example.com <author@example.com@deadbeef-dead-beef-dead-beefdeadbeef>

Given such an address, mailinfo extracts the authorship incorrectly as
it assumes a valid domain. However, when rebasing the original
authorship should be preserved irrespective of its validity as an email
address.

Using get_author_ident_from_commit instead of mailinfo when rebasing
preserves the original authorship.

Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-16 10:00:58 -07:00
Ævar Arnfjörð Bjarmason
ef7a8e3b95 notes: Initialize variable to appease Sun Studio
Sun Studio 12 Update 1 thinks that *t could be uninitialized,
ostensibly because it doesn't take rewrite_cmd into account in its
static analysis.

    builtin/notes.c: In function `notes_copy_from_stdin':
    builtin/notes.c:419: warning: 't' might be used uninitialized in this function

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-15 07:50:39 -07:00
Jakub Narebski
5ed2ec1041 gitweb: Return or exit after done serving request
Check if there is a caller in top frame of gitweb, and either 'return'
if gitweb code is wrapped in subroutine, or 'exit' if it is not.

This should avoid

  gitweb.cgi: Subroutine git_SOMETHING redefined at gitweb.cgi line NNN

warnings in error_log when running gitweb with mod_perl (using
ModPerl::Registry handler)

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-14 10:55:38 -07:00
Linus Torvalds
57895105c4 Make :/ accept a regex rather than a fixed pattern
This also makes it trigger anywhere in the commit message, rather than
just at the beginning. Which tends to be a lot more useful.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-14 10:31:11 -07:00
Junio C Hamano
6068cdcc83 Update draft release notes to 1.7.2
It is loooong overdue.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-06-14 10:06:33 -07:00
Junio C Hamano
0925c02e21 Merge git://git.bogomips.org/git-svn
* git://git.bogomips.org/git-svn:
  git svn: avoid unnecessary '/' in paths for SVN
  git-svn: strip off leading slashes on --trunk argument
2010-06-14 10:05:09 -07:00
Eric Wong
b1a954a37c git svn: avoid unnecessary '/' in paths for SVN
svn:// servers are more picky regarding redundant slashes
than file:// and http(s)://-backed respositories.  Since
the last commit, we avoid putting unnecessary slashes in
$GIT_CONFIG, but this doesn't help users who are already
set up that way.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
2010-06-14 04:49:22 +00:00