gitweb.git
builtin/grep: make lock/unlock into static inline functionsJunio C Hamano Wed, 26 Oct 2011 18:45:15 +0000 (11:45 -0700)

builtin/grep: make lock/unlock into static inline functions

Signed-off-by: Junio C Hamano <gitster@pobox.com>

git grep: be careful to use mutexes only when they... Johannes Schindelin Tue, 25 Oct 2011 17:25:20 +0000 (12:25 -0500)

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>

Merge branch 'maint'Junio C Hamano Mon, 24 Oct 2011 06:55:28 +0000 (23:55 -0700)

Merge branch 'maint'

* maint:
Reindent closing bracket using tab instead of spaces

Merge branch 'maint-1.7.3' into maintJunio C Hamano Mon, 24 Oct 2011 06:55:22 +0000 (23:55 -0700)

Merge branch 'maint-1.7.3' into maint

* maint-1.7.3:
Reindent closing bracket using tab instead of spaces

Reindent closing bracket using tab instead of spacesNguyễn Thái Ngọc Duy Mon, 24 Oct 2011 04:24:51 +0000 (15:24 +1100)

Reindent closing bracket using tab instead of spaces

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Mon, 24 Oct 2011 04:49:14 +0000 (21:49 -0700)

Merge branch 'maint'

* maint:
Git 1.7.7.1
RelNotes/1.7.7.1: setgid bit patch is about fixing "git init" via Makefile setting

Conflicts:
GIT-VERSION-GEN

Git 1.7.7.1 v1.7.7.1Junio C Hamano Mon, 24 Oct 2011 04:48:06 +0000 (21:48 -0700)

Git 1.7.7.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>

pretty.c: use original commit message if reencoding... Nguyễn Thái Ngọc Duy Sun, 23 Oct 2011 11:51:35 +0000 (22:51 +1100)

pretty.c: use original commit message if reencoding fails

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pretty.c: free get_header() return valueNguyễn Thái Ngọc Duy Sun, 23 Oct 2011 11:51:34 +0000 (22:51 +1100)

pretty.c: free get_header() return value

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

RelNotes/1.7.7.1: setgid bit patch is about fixing... Jonathan Nieder Sat, 22 Oct 2011 11:11:07 +0000 (06:11 -0500)

RelNotes/1.7.7.1: setgid bit patch is about fixing "git init" via Makefile setting

The change was actually about "git init -s" which sets the setgid bit on
SysV-style systems to allow shared access to a repository, and can provoke
errors on BSD-style systems, depending on how permissive the filesystem in
use wants to be.

More to the point, the patch was just taking a fix that arrived for
FreeBSD in v1.5.5 days and making it also apply to machines using an
(obscure) GNU userland/FreeBSD kernel mixture.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes to 1.7.8Junio C Hamano Fri, 21 Oct 2011 18:46:12 +0000 (11:46 -0700)

Update draft release notes to 1.7.8

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'po/insn-editor'Junio C Hamano Fri, 21 Oct 2011 23:04:37 +0000 (16:04 -0700)

Merge branch 'po/insn-editor'

* po/insn-editor:
"rebase -i": support special-purpose editor to edit insn sheet

Merge branch 'jc/broken-ref-dwim-fix'Junio C Hamano Fri, 21 Oct 2011 23:04:36 +0000 (16:04 -0700)

Merge branch 'jc/broken-ref-dwim-fix'

* jc/broken-ref-dwim-fix:
resolve_ref(): report breakage to the caller without warning
resolve_ref(): expose REF_ISBROKEN flag
refs.c: move dwim_ref()/dwim_log() from sha1_name.c

Merge branch 'mh/ref-api'Junio C Hamano Fri, 21 Oct 2011 23:04:36 +0000 (16:04 -0700)

Merge branch 'mh/ref-api'

* mh/ref-api:
clear_ref_cache(): inline function
write_ref_sha1(): only invalidate the loose ref cache
clear_ref_cache(): extract two new functions
clear_ref_cache(): rename parameter
invalidate_ref_cache(): expose this function in the refs API
invalidate_ref_cache(): take the submodule as parameter
invalidate_ref_cache(): rename function from invalidate_cached_refs()

Merge branch 'jc/match-refs-clarify'Junio C Hamano Fri, 21 Oct 2011 23:04:35 +0000 (16:04 -0700)

Merge branch 'jc/match-refs-clarify'

* jc/match-refs-clarify:
rename "match_refs()" to "match_push_refs()"
send-pack: typofix error message

Merge branch 'jc/make-tags'Junio C Hamano Fri, 21 Oct 2011 23:04:35 +0000 (16:04 -0700)

Merge branch 'jc/make-tags'

* jc/make-tags:
Makefile: ask "ls-files" to list source files if available

Merge branch 'ss/inet-ntop'Junio C Hamano Fri, 21 Oct 2011 23:04:35 +0000 (16:04 -0700)

Merge branch 'ss/inet-ntop'

* ss/inet-ntop:
inet_ntop.c: Work around GCC 4.6's detection of uninitialized variables

Merge branch 'jc/maint-remove-renamed-ref'Junio C Hamano Fri, 21 Oct 2011 23:04:34 +0000 (16:04 -0700)

Merge branch 'jc/maint-remove-renamed-ref'

* jc/maint-remove-renamed-ref:
branch -m/-M: remove undocumented RENAMED-REF

Conflicts:
refs.c

Merge branch 'pw/p4-update'Junio C Hamano Fri, 21 Oct 2011 23:04:33 +0000 (16:04 -0700)

Merge branch 'pw/p4-update'

* pw/p4-update:
git-p4: handle files with shell metacharacters
git-p4: keyword flattening fixes
git-p4: stop ignoring apple filetype
git-p4: recognize all p4 filetypes
git-p4: handle utf16 filetype properly
git-p4 tests: refactor and cleanup

Merge branch 'cn/doc-config-bare-subsection'Junio C Hamano Fri, 21 Oct 2011 23:04:33 +0000 (16:04 -0700)

Merge branch 'cn/doc-config-bare-subsection'

* cn/doc-config-bare-subsection:
Documentation: update [section.subsection] to reflect what git does

Merge branch 'jk/maint-pack-objects-compete-with-delete'Junio C Hamano Fri, 21 Oct 2011 23:04:33 +0000 (16:04 -0700)

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

Merge branch 'jk/daemon-msgs'Junio C Hamano Fri, 21 Oct 2011 23:04:32 +0000 (16:04 -0700)

Merge branch 'jk/daemon-msgs'

* jk/daemon-msgs:
daemon: give friendlier error messages to clients

Conflicts:
daemon.c

Merge branch 'sc/difftool-skip'Junio C Hamano Fri, 21 Oct 2011 23:04:32 +0000 (16:04 -0700)

Merge branch 'sc/difftool-skip'

* sc/difftool-skip:
t7800: avoid arithmetic expansion notation
git-difftool: allow skipping file by typing 'n' at prompt

Merge branch 'jc/unseekable-bundle'Junio C Hamano Fri, 21 Oct 2011 23:04:32 +0000 (16:04 -0700)

Merge branch 'jc/unseekable-bundle'

* jc/unseekable-bundle:
bundle: add parse_bundle_header() helper function
bundle: allowing to read from an unseekable fd

Conflicts:
transport.c

Merge branch 'ph/transport-with-gitfile'Junio C Hamano Fri, 21 Oct 2011 23:04:32 +0000 (16:04 -0700)

Merge branch 'ph/transport-with-gitfile'

* ph/transport-with-gitfile:
Fix is_gitfile() for files too small or larger than PATH_MAX to be a gitfile
Add test showing git-fetch groks gitfiles
Teach transport about the gitfile mechanism
Learn to handle gitfiles in enter_repo
enter_repo: do not modify input

git-gui: include the file path in guitools confirmation... Bert Wesarg Thu, 20 Oct 2011 19:32:30 +0000 (21:32 +0200)

git-gui: include the file path in guitools confirmation dialog

For those guitools that require a filename, display this filename when
asking the user to confirm the tool launch.

[PT: modified to use positional parameters for i18n]

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

gitweb: fix regression when filtering out forksJulien Muchembled Fri, 21 Oct 2011 19:04:21 +0000 (21:04 +0200)

gitweb: fix regression when filtering out forks

This fixes a condition in filter_forks_from_projects_list that failed if
process directory was different from project root: in such case, the subroutine
was a no-op and forks were not detected.

Signed-off-by: Julien Muchembled <jm@jmuchemb.eu>
Tested-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: remove broken dead code from __git_heads... SZEDER Gábor Sat, 8 Oct 2011 14:54:43 +0000 (16:54 +0200)

completion: remove broken dead code from __git_heads() and __git_tags()

__git_heads() was introduced in 5de40f5 (Teach bash about
git-repo-config., 2006-11-27), and __git_tags() in 88e21dc (Teach bash
about completing arguments for git-tag, 2007-08-31). As their name
suggests, __git_heads() is supposed to list only branches, and
__git_tags() only tags.

Since their introduction both of these functions consist of two
distinct parts. The first part gets branches or tags, respectively,
from a local repositoty using 'git for-each-ref'. The second part
queries a remote repository given as argument using 'git ls-remote'.

These remote-querying parts are broken in both functions since their
introduction, because they list both branches and tags from the remote
repository. (The 'git ls-remote' query is not limited to list only
heads or tags, respectively, and the for loop filtering the query
results prints everything except dereferenced tags.) This breakage
could be easily fixed by passing the '--heads' or '--tags' options or
appropriate refs patterns to the 'git ls-remote' invocations.

However, that no one noticed this breakage yet is probably not a
coincidence: neither of these two functions were used to query a
remote repository, the remote-querying parts were dead code already
upon thier introduction and remained dead ever since.

Since those parts of code are broken, are and were never used, stop
the bit-rotting and remove them.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: fast initial completion for config 'remote... SZEDER Gábor Sat, 8 Oct 2011 14:54:42 +0000 (16:54 +0200)

completion: fast initial completion for config 'remote.*.fetch' value

Refspecs for branches in a remote repository start with 'refs/heads/',
so completing those refspecs with 'git config remote.origin.fetch
<TAB>' always offers 'refs/heads/' first, because that's the unique
part of the possible refspecs. But it does so only after querying the
remote with 'git ls-remote', which can take a while when the request
goes through some slower network to a remote server.

Don't waste the user's time and offer 'refs/heads/' right away for
'git config remote.origin.fetch <TAB>'.

The reason for putting 'refs/heads/' directly into COMPREPLY instead
of using __gitcomp() is to avoid __gitcomp() adding a trailing space.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: improve ls-remote output filtering in __git... SZEDER Gábor Sat, 8 Oct 2011 14:54:41 +0000 (16:54 +0200)

completion: improve ls-remote output filtering in __git_refs_remotes()

This follows suit of a previous patch for __git_refs(): use a
while-read loop and let bash's word splitting get rid of object names
from 'git ls-remote's output.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: query only refs/heads/ in __git_refs_remotes()SZEDER Gábor Sat, 8 Oct 2011 14:54:40 +0000 (16:54 +0200)

completion: query only refs/heads/ in __git_refs_remotes()

__git_refs_remotes() is used to provide completion for refspecs to set
'remote.*.fetch' config variables for branches on the given remote.
So it's really only interested in refs under 'refs/heads/', but it
queries the remote for all its refs and then filters out all refs
outside of 'refs/heads/'.

Let 'git ls-remote' do the filtering.

Also remove the unused $cmd variable from __git_refs_remotes().

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: support full refs from remote repositoriesSZEDER Gábor Sat, 8 Oct 2011 14:54:39 +0000 (16:54 +0200)

completion: support full refs from remote repositories

When the __git_refs() completion helper function lists refs from a
local repository, it usually lists the refs' short name, except when
it needs to provide completion for words starting with refs, because
in that case it lists full ref names, see 608efb87 (bash: complete
full refs, 2008-11-28).

Add the same functionality to the code path dealing with remote
repositories, too.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: improve ls-remote output filtering in __git... SZEDER Gábor Sat, 8 Oct 2011 14:54:38 +0000 (16:54 +0200)

completion: improve ls-remote output filtering in __git_refs()

The remote-handling part of __git_refs() has a nice for loop and state
machine case statement to iterate over all words from the output of
'git ls-remote' to identify object names and ref names. Since each
line in the output of 'git ls-remote' consists of an object name and a
ref name, we can do more effective filtering by using a while-read
loop and letting bash's word splitting take care of object names.
This way the code is easier to understand and the loop will need only
half the number of iterations than before.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: make refs completion consistent for local... SZEDER Gábor Sat, 8 Oct 2011 14:54:37 +0000 (16:54 +0200)

completion: make refs completion consistent for local and remote repos

For a local repository the __git_refs() completion helper function
lists refs under 'refs/(tags|heads|remotes)/', plus some special refs
like HEAD and ORIG_HEAD. For a remote repository, however, it lists
all refs.

Fix this inconsistency by specifying refs filter patterns for 'git
ls-remote' to only list refs under 'refs/(tags|heads|remotes)/'.

For now this makes it impossible to complete refs outside of
'refs/(tags|heads|remotes)/' in a remote repository, but a followup
patch will resurrect that.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: optimize refs completionSZEDER Gábor Sat, 15 Oct 2011 12:57:23 +0000 (14:57 +0200)

completion: optimize refs completion

After a unique command or option is completed, in most cases it is a
good thing to add a trailing a space, but sometimes it doesn't make
sense, e.g. when the completed word is an option taking an argument
('--option=') or a configuration section ('core.'). Therefore the
completion script uses the '-o nospace' option to prevent bash from
automatically appending a space to unique completions, and it has the
__gitcomp() function to add that trailing space only when necessary.
See 72e5e989 (bash: Add space after unique command name is completed.,
2007-02-04), 78d4d6a2 (bash: Support unique completion on git-config.,
2007-02-04), and b3391775 (bash: Support unique completion when
possible., 2007-02-04).

__gitcomp() therefore iterates over all possible completion words it
got as argument, and checks each word whether a trailing space is
necessary or not. This is ok for commands, options, etc., i.e. when
the number of words is relatively small, but can be noticeably slow
for large number of refs. However, while options might or might not
need that trailing space, refs are always handled uniformly and always
get that trailing space (or a trailing '.' for 'git config
branch.<head>.'). Since refs listed by __git_refs() & co. are
separated by newline, this allows us some optimizations with
'compgen'.

So, add a specialized variant of __gitcomp() that only deals with
possible completion words separated by a newline and uniformly appends
the trailing space to all words using 'compgen -S " "' (or any other
suffix, if specified), so no iteration over all words is needed. But
we need to fiddle with IFS, because the default IFS containing a space
would cause the added space suffix to be stripped off when compgen's
output is stored in the COMPREPLY array. Therefore we use only
newline as IFS, hence the requirement for the newline-separated
possible completion words.

Convert all callsites of __gitcomp() where it's called with refs, i.e.
when it gets the output of either __git_refs(), __git_heads(),
__git_tags(), __git_refs2(), __git_refs_remotes(), or the odd 'git
for-each-ref' somewhere in _git_config(). Also convert callsites
where it gets other uniformly handled newline separated word lists,
i.e. either remotes from __git_remotes(), names of set configuration
variables from __git_config_get_set_variables(), stashes, or commands.

Here are some timing results for dealing with 10000 refs.
Before:

$ refs="$(__git_refs ~/tmp/git/repo-with-10k-refs/)"
$ time __gitcomp "$refs"

real 0m1.134s
user 0m1.060s
sys 0m0.130s

After:

$ time __gitcomp_nl "$refs"

real 0m0.373s
user 0m0.360s
sys 0m0.020s

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: document __gitcomp()SZEDER Gábor Sat, 8 Oct 2011 14:54:35 +0000 (16:54 +0200)

completion: document __gitcomp()

I always forget which argument is which, and got tired of figuring it
out over and over again.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add simple test for Git::config_path() in t/t9700-perl... Jakub Narebski Fri, 21 Oct 2011 18:42:44 +0000 (20:42 +0200)

Add simple test for Git::config_path() in t/t9700-perl-git.sh

Tests "~/foo" path expansion and multiple values.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-gui: span widgets over the full file output area... Bert Wesarg Thu, 20 Oct 2011 19:30:30 +0000 (21:30 +0200)

git-gui: span widgets over the full file output area in the blame view

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

git-gui: use a tristate to control the case mode in... Bert Wesarg Thu, 20 Oct 2011 19:27:27 +0000 (21:27 +0200)

git-gui: use a tristate to control the case mode in the searchbar

The config is now called gui.search.case and can have the three values:
no/yes/smart. yes is the default.

It also resets the case detection in smart mode, when the entry field was
cleared by the use.

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

completion: match ctags symbol names in grep patternsJeff King Fri, 21 Oct 2011 17:30:21 +0000 (13:30 -0400)

completion: match ctags symbol names in grep patterns

A common thing to grep for is the name of a symbol. This
patch teaches the completion for "git grep" to look in
a 'tags' file, if present, to complete a pattern. For
example, in git.git:

$ make tags
$ git grep get_sha1<Tab><Tab>
get_sha1 get_sha1_oneline
get_sha1_1 get_sha1_with_context
get_sha1_basic get_sha1_with_context_1
get_sha1_hex get_sha1_with_mode
get_sha1_hex_segment get_sha1_with_mode_1
get_sha1_mb

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

contrib: add git-jump scriptJeff King Fri, 21 Oct 2011 17:28:04 +0000 (13:28 -0400)

contrib: add git-jump script

This is a small script for helping your editor jump to
specific points of interest. See the README for details.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with maintJunio C Hamano Fri, 21 Oct 2011 18:08:10 +0000 (11:08 -0700)

Sync with maint

Almost ready for 1.7.7.1Junio C Hamano Fri, 21 Oct 2011 18:01:07 +0000 (11:01 -0700)

Almost ready for 1.7.7.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'nd/maint-autofix-tag-in-head' into maintJunio C Hamano Fri, 21 Oct 2011 17:49:26 +0000 (10:49 -0700)

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

Merge branch 'jc/apply-blank-at-eof-fix' into maintJunio C Hamano Fri, 21 Oct 2011 17:49:26 +0000 (10:49 -0700)

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

Merge branch 'jn/no-g-plus-s-on-bsd' into maintJunio C Hamano Fri, 21 Oct 2011 17:49:25 +0000 (10:49 -0700)

Merge branch 'jn/no-g-plus-s-on-bsd' into maint

* jn/no-g-plus-s-on-bsd:
Makefile: do not set setgid bit on directories on GNU/kFreeBSD

Merge branch 'rs/diff-cleanup-records-fix' into maintJunio C Hamano Fri, 21 Oct 2011 17:49:25 +0000 (10:49 -0700)

Merge branch 'rs/diff-cleanup-records-fix' into maint

* rs/diff-cleanup-records-fix:
diff: resurrect XDF_NEED_MINIMAL with --minimal
Revert removal of multi-match discard heuristic in 27af01

Merge branch 'il/archive-err-signal' into maintJunio C Hamano Fri, 21 Oct 2011 17:49:25 +0000 (10:49 -0700)

Merge branch 'il/archive-err-signal' into maint

* il/archive-err-signal:
Support ERR in remote archive like in fetch/push

Merge branch 'js/maint-merge-one-file-osx-expr' into... Junio C Hamano Fri, 21 Oct 2011 17:49:25 +0000 (10:49 -0700)

Merge branch 'js/maint-merge-one-file-osx-expr' into maint

* js/maint-merge-one-file-osx-expr:
merge-one-file: fix "expr: non-numeric argument"

Merge branch 'jm/maint-apply-detects-corrupt-patch... Junio C Hamano Fri, 21 Oct 2011 17:49:24 +0000 (10:49 -0700)

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

Merge branch 'jc/checkout-from-tree-keep-local-changes... Junio C Hamano Fri, 21 Oct 2011 17:49:24 +0000 (10:49 -0700)

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

Merge branch 'mm/maint-config-explicit-bool-display... Junio C Hamano Fri, 21 Oct 2011 17:49:24 +0000 (10:49 -0700)

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

gitweb: provide a way to customize html headersLénaïc Huard Fri, 21 Oct 2011 07:09:29 +0000 (09:09 +0200)

gitweb: provide a way to customize html headers

This allows web sites to add some specific html headers to the pages
generated by gitweb.

The new variable $site_html_head_string can be set to an html snippet that
will be inserted at the end of the <head> section of each page generated
by gitweb.

Signed-off-by: Lénaïc Huard <lenaic@lhuard.fr.eu.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule::module_clone(): silence die() message from... Tay Ray Chuan Fri, 21 Oct 2011 13:49:36 +0000 (21:49 +0800)

submodule::module_clone(): silence die() message from module_name()

The die() message that may occur in module_name() is not really relevant
to the user when called from module_clone(); the latter handles the
"failure" (no submodule mapping) anyway.

Analysis of other callsites is left to future work.

Acked-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule: whitespace fixTay Ray Chuan Fri, 21 Oct 2011 13:49:35 +0000 (21:49 +0800)

submodule: whitespace fix

Replace SPs with TAB.

Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pack-objects: don't traverse objects unnecessarilyDan McGee Tue, 18 Oct 2011 05:21:23 +0000 (00:21 -0500)

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>

tests: add missing executable bitsJeff King Thu, 20 Oct 2011 21:58:33 +0000 (17:58 -0400)

tests: add missing executable bits

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-remote-mediawiki: don't include HTTP login/password... Matthieu Moy Thu, 20 Oct 2011 17:04:59 +0000 (19:04 +0200)

git-remote-mediawiki: don't include HTTP login/password in author

On the MediaWiki side, the author information is just the MediaWiki login
of the contributor. The import turns it into login@$wiki_name to create
the author's email address on the wiki side. But we don't want this to
include the HTTP password if it's present in the URL ...

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_ref(): report breakage to the caller without... Junio C Hamano Wed, 19 Oct 2011 20:55:49 +0000 (13:55 -0700)

resolve_ref(): report breakage to the caller without warning

629cd3a (resolve_ref(): emit warnings for improperly-formatted references,
2011-09-15) made resolve_ref() warn against files that are found in the
directories the ref dwimmery looks at. The intent may be good, but these
messages come from a wrong level of the API hierarchy.

Instead record the breakage in "flags" whose purpose is to explain the
result of the function to the caller, who is in a much better position to
make intelligent decision based on the information.

This updates sha1_name.c::dwim_ref() to warn against such a broken
candidate only when it does not appear directly below $GIT_DIR to restore
the traditional behaviour, as we know many files directly underneath
$GIT_DIR/ are not refs.

Warning against "git show config --" with "$GIT_DIR/config does not look
like a well-formed ref" does not make sense, and we may later tweak the
dwimmery not to even consider them as candidates, but that is a longer
term topic.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_ref(): expose REF_ISBROKEN flagJunio C Hamano Wed, 19 Oct 2011 20:45:50 +0000 (13:45 -0700)

resolve_ref(): expose REF_ISBROKEN flag

Instead of keeping this as an internal API, let the callers find
out the reason why resolve_ref() returned NULL is not because there
was no such file in $GIT_DIR but because a file was corrupt.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes to 1.7.8Junio C Hamano Wed, 19 Oct 2011 05:03:30 +0000 (22:03 -0700)

Update draft release notes to 1.7.8

Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/t3000-ls-files-others.sh: use $SHELL_PATH to run... Brandon Casey Wed, 19 Oct 2011 16:26:02 +0000 (09:26 -0700)

t/t3000-ls-files-others.sh: use $SHELL_PATH to run git-new-workdir script

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'js/merge-edit-option'Junio C Hamano Wed, 19 Oct 2011 17:49:27 +0000 (10:49 -0700)

Merge branch 'js/merge-edit-option'

* js/merge-edit-option:
Teach merge the '[-e|--edit]' option

Conflicts:
builtin/merge.c

Merge branch 'rs/diff-whole-function'Junio C Hamano Wed, 19 Oct 2011 17:49:13 +0000 (10:49 -0700)

Merge branch 'rs/diff-whole-function'

* rs/diff-whole-function:
diff: add option to show whole functions as context
xdiff: factor out get_func_line()

Merge branch 'rs/pickaxe'Junio C Hamano Wed, 19 Oct 2011 17:49:09 +0000 (10:49 -0700)

Merge branch 'rs/pickaxe'

* rs/pickaxe:
pickaxe: factor out pickaxe
pickaxe: give diff_grep the same signature as has_changes
pickaxe: pass diff_options to contains and has_changes
pickaxe: factor out has_changes
pickaxe: plug regex/kws leak
pickaxe: plug regex leak
pickaxe: plug diff filespec leak with empty needle

Merge branch 'js/no-cherry-pick-head-after-punted'Junio C Hamano Wed, 19 Oct 2011 17:49:05 +0000 (10:49 -0700)

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

Merge branch 'bk/submodule-in-recursive-merge'Junio C Hamano Wed, 19 Oct 2011 17:48:38 +0000 (10:48 -0700)

Merge branch 'bk/submodule-in-recursive-merge'

* bk/submodule-in-recursive-merge:
submodule: Search for merges only at end of recursive merge
submodule: Demonstrate known breakage during recursive merge

Merge branch 'jm/maint-apply-detects-corrupt-patch... Junio C Hamano Wed, 19 Oct 2011 17:48:29 +0000 (10:48 -0700)

Merge branch 'jm/maint-apply-detects-corrupt-patch-header'

* jm/maint-apply-detects-corrupt-patch-header:
fix "git apply --index ..." not to deref NULL

Merge branch 'jk/config-test-cleanup'Junio C Hamano Wed, 19 Oct 2011 17:47:59 +0000 (10:47 -0700)

Merge branch 'jk/config-test-cleanup'

* jk/config-test-cleanup:
t1300: attempting to remove a non-existent .git/config is not an error

t1300: attempting to remove a non-existent .git/config... Johannes Sixt Wed, 19 Oct 2011 07:37:06 +0000 (09:37 +0200)

t1300: attempting to remove a non-existent .git/config is not an error

Since some tests before test number 79 ("quoting") are skipped, .git/config
does not exist and 'rm .git/config' fails. Fix this particular case.

While at it, move other instance of 'rm .git/config' that occur in this
file inside the test function to document that the test cases want to
protect themselves from remnants of earlier tests.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-gui: set suitable extended window manager hints.Pat Thoyts Wed, 19 Oct 2011 13:26:29 +0000 (14:26 +0100)

git-gui: set suitable extended window manager hints.

This patch uses recent Tk attributes support to specify the intended use of new
toplevels by setting the correct EWMH hint. This helps modern window managers
to apply sensible decoration for the tooltip and dialogs.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

git-gui: fix display of path in browser titleBert Wesarg Tue, 23 Nov 2010 07:37:50 +0000 (08:37 +0100)

git-gui: fix display of path in browser title

Ensure the browser path is shown on the title with a / suffix and escape
any backslashes or newlines in path elements before display.

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

Merge branch 'bw/searching' gitgui-0.15.0Pat Thoyts Wed, 19 Oct 2011 12:35:30 +0000 (13:35 +0100)

Merge branch 'bw/searching'

git-gui: enable the smart case sensitive search only... Pat Thoyts Wed, 19 Oct 2011 12:29:52 +0000 (13:29 +0100)

git-gui: enable the smart case sensitive search only if gui.search.smartcase is true

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

git-gui: catch invalid or complete regular expressions... Pat Thoyts Wed, 19 Oct 2011 12:22:33 +0000 (13:22 +0100)

git-gui: catch invalid or complete regular expressions and treat as no match.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

git-gui: theme the search and line-number entry fields... Pat Thoyts Wed, 19 Oct 2011 11:44:39 +0000 (12:44 +0100)

git-gui: theme the search and line-number entry fields on blame screen

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

Merge branch 'js/log-show-children'Junio C Hamano Wed, 19 Oct 2011 04:59:12 +0000 (21:59 -0700)

Merge branch 'js/log-show-children'

* js/log-show-children:
log --children

Merge branch 'cb/httpd-test-fix-port'Junio C Hamano Wed, 19 Oct 2011 04:59:11 +0000 (21:59 -0700)

Merge branch 'cb/httpd-test-fix-port'

* cb/httpd-test-fix-port:
use test number as port number

Merge branch 'jn/gitweb-manpages'Junio C Hamano Wed, 19 Oct 2011 04:59:11 +0000 (21:59 -0700)

Merge branch 'jn/gitweb-manpages'

* jn/gitweb-manpages:
gitweb: Add gitweb manpages to 'gitweb' package in git.spec
Documentation: Add gitweb config variables to git-config(1)
Documentation: Link to gitweb(1) and gitweb.conf(5) in other manpages
gitweb: Add gitweb(1) manpage for gitweb itself
gitweb: Add gitweb.conf(5) manpage for gitweb configuration files

Merge branch 'pt/mingw-misc-fixes'Junio C Hamano Wed, 19 Oct 2011 04:59:11 +0000 (21:59 -0700)

Merge branch 'pt/mingw-misc-fixes'

* pt/mingw-misc-fixes:
t9901: fix line-ending dependency on windows
mingw: ensure sockets are initialized before calling gethostname
mergetools: use the correct tool for Beyond Compare 3 on Windows
t9300: do not run --cat-blob-fd related tests on MinGW
git-svn: On MSYS, escape and quote SVN_SSH also if set by the user
t9001: do not fail only due to CR/LF issues
t1020: disable the pwd test on MinGW

Merge branch 'md/smtp-tls-hello-again'Junio C Hamano Wed, 19 Oct 2011 04:59:10 +0000 (21:59 -0700)

Merge branch 'md/smtp-tls-hello-again'

* md/smtp-tls-hello-again:
send-email: Honour SMTP domain when using TLS

Merge branch 'maint'Junio C Hamano Wed, 19 Oct 2011 04:42:41 +0000 (21:42 -0700)

Merge branch 'maint'

* maint:
strbuf.c: remove unnecessary strbuf_grow() from strbuf_getwholeline()

strbuf.c: remove unnecessary strbuf_grow() from strbuf_... Brandon Casey Thu, 6 Oct 2011 04:21:33 +0000 (23:21 -0500)

strbuf.c: remove unnecessary strbuf_grow() from strbuf_getwholeline()

This use of strbuf_grow() is a historical artifact that was once used to
ensure that strbuf.buf was allocated and properly nul-terminated. This
was added before the introduction of the slopbuf in b315c5c0, which
guarantees that strbuf.buf always points to a usable nul-terminated string.
So let's remove it.

Signed-off-by: Brandon Casey <drafnel@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

libperl-git: refactor Git::config_*Junio C Hamano Tue, 18 Oct 2011 09:47:01 +0000 (11:47 +0200)

libperl-git: refactor Git::config_*

Move common parts of Git::config(), Git::config_bool(), Git::config_int()
and Git::config_path() into _config_common() helper.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

inet_ntop.c: Work around GCC 4.6's detection of uniniti... Sebastian Schuberth Tue, 18 Oct 2011 16:25:50 +0000 (18:25 +0200)

inet_ntop.c: Work around GCC 4.6's detection of uninitialized variables

GCC 4.6 claims that

error: 'best.len' may be used uninitialized in this function

so silence that warning which is treated as an error by also initializing
the "len" members of the struct.

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: ask "ls-files" to list source files if availableJunio C Hamano Tue, 18 Oct 2011 07:26:18 +0000 (00:26 -0700)

Makefile: ask "ls-files" to list source files if available

The [ce]tags and cscope targets used to run "find" looking for any paths
that match '*.[chS]' to feed the list of source files to downstream xargs.

Use "git ls-files" if it is already available to us, and otherwise use a
tighter "find" expression that does not list directories and does not go
into our .git directory.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-gui: include the number of untracked files to stage... Pat Thoyts Tue, 18 Oct 2011 08:32:22 +0000 (09:32 +0100)

git-gui: include the number of untracked files to stage when asking the user

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

git-gui: new config to control staging of untracked... Bert Wesarg Fri, 14 Oct 2011 19:25:21 +0000 (21:25 +0200)

git-gui: new config to control staging of untracked files

The default is the current "ask".

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

git-gui: use "untracked" for files which are not known... Bert Wesarg Fri, 14 Oct 2011 19:25:20 +0000 (21:25 +0200)

git-gui: use "untracked" for files which are not known to git

"untracked" is the right phrase for files new to git. For example
git-status uses this phrase. Also make the question shorter.

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

git-gui: fix unintended line break in message stringBert Wesarg Fri, 14 Oct 2011 19:25:19 +0000 (21:25 +0200)

git-gui: fix unintended line break in message string

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

git-gui: add search history to searchbarBert Wesarg Fri, 14 Oct 2011 08:14:52 +0000 (10:14 +0200)

git-gui: add search history to searchbar

Use the up/down keys to browse the history.

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

git-gui: add regexp search mode to the searchbarBert Wesarg Fri, 14 Oct 2011 08:14:51 +0000 (10:14 +0200)

git-gui: add regexp search mode to the searchbar

It's off by default, but can be enabled via the config gui.search.regexp.

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

git-gui: add smart case search mode in searchbarBert Wesarg Fri, 14 Oct 2011 08:14:50 +0000 (10:14 +0200)

git-gui: add smart case search mode in searchbar

Setting config gui.search.smartcase to true, the search mode in the
searchbar (from the blame view) is by default case-insensitive. But
entering an upper case letter into the search field activates the case-
sensitive search mode.

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

git-gui: handle config booleans without valueBert Wesarg Fri, 14 Oct 2011 08:14:49 +0000 (10:14 +0200)

git-gui: handle config booleans without value

When git interprets a config variable without a value as bool it is considered
as true. But git-gui doesn't so until yet.

The value for boolean configs are also case-insensitive.

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

git-gui: fix multi selected file operationBert Wesarg Fri, 14 Oct 2011 08:19:26 +0000 (10:19 +0200)

git-gui: fix multi selected file operation

When staging a selection of files using Shift-Click to choose a range
of files then using Ctrl-T or the Stage To Commit menu item will stage
all the selected files. However if a non-sequential range is selected
using Ctrl-Click then all but the first name selected gets staged. This
commit fixes this to properly stage all selected files by explicitly
adding the path to the list before showing the diff.

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

pack-objects: rewrite add_descendants_to_write_order... Dan McGee Tue, 18 Oct 2011 05:21:24 +0000 (00:21 -0500)

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>

pack-objects: use unsigned int for counter and offset... Dan McGee Tue, 18 Oct 2011 05:21:22 +0000 (00:21 -0500)

pack-objects: use unsigned int for counter and offset values

This is done in some of the new pack layout code introduced in commit
1b4bb16b9ec331c. 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>

pack-objects: mark add_to_write_order() as inlineDan McGee Tue, 18 Oct 2011 05:21:21 +0000 (00:21 -0500)

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>

contrib: add diff highlight scriptJeff King Tue, 18 Oct 2011 04:52:20 +0000 (00:52 -0400)

contrib: add diff highlight script

This is a simple and stupid script for highlighting
differing parts of lines in a unified diff. See the README
for a discussion of the limitations.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes to 1.7.8Junio C Hamano Tue, 18 Oct 2011 05:07:57 +0000 (22:07 -0700)

Update draft release notes to 1.7.8

Signed-off-by: Junio C Hamano <gitster@pobox.com>