gitweb.git
gitweb: Get rid of git_print_simplified_logJakub Narebski Tue, 24 Oct 2006 11:52:46 +0000 (13:52 +0200)

gitweb: Get rid of git_print_simplified_log

Replace calls to git_print_simplified_log with its expansion,
i.e. with calling git_print_log with appropriate options.

Remove no longer used git_print_simplified_log subroutine.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Documentation: note about contrib/.Junio C Hamano Tue, 24 Oct 2006 08:29:27 +0000 (01:29 -0700)

Documentation: note about contrib/.

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-svn: fix symlink-to-file changes when using command... Eric Wong Tue, 24 Oct 2006 09:50:37 +0000 (02:50 -0700)

git-svn: fix symlink-to-file changes when using command-line svn 1.4.0

I incorrectly thought this was hopelessly broken in svn 1.4.0,
but now it's just broken in that the old method didn't work. It
looks like svn propdel and svn propset must be used now and the
(imho) more obvious svn rm --force && svn add no longer works.

"make -C t full-svn-test" should now work.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Acked-by: Uwe Zeisberger <zeisberg@informatik.uni-freiburg.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Set $HOME for selftestsGerrit Pape Tue, 24 Oct 2006 20:00:37 +0000 (20:00 +0000)

Set $HOME for selftests

Set HOME environment variable to test trash directory and export for
selftests. This fixes the git-svn selftests with nonexistent or not
readable home, as found in at least one automated build system:

http://buildd.debian.org/fetch.cgi?&pkg=git-core&ver=1%3A1.4.2.3-2&arch=alpha&stamp=1161537466&file=log

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

t3200: git-branch testsuite updateJunio C Hamano Tue, 24 Oct 2006 05:48:45 +0000 (22:48 -0700)

t3200: git-branch testsuite update

The test expected "git branch --help" to exit successfully, but
built-ins spawn "man" when given --help, and when the test is
run, manpages may not be installed yet and "man" can legally
exit non-zero in such a case.

Also the new implementation logs "Created from master", instead
of "Created from HEAD" in the reflog, which makes a lot more
sense, so adjust the test to match that.

Signed-off-by: Junio C Hamano <junkio@cox.net>

sha1_name.c: avoid compilation warnings.Junio C Hamano Tue, 24 Oct 2006 04:15:34 +0000 (21:15 -0700)

sha1_name.c: avoid compilation warnings.

Signed-off-by: Junio C Hamano <junkio@cox.net>

gitweb: Show project's README.html if availablePetr Baudis Tue, 24 Oct 2006 03:23:46 +0000 (05:23 +0200)

gitweb: Show project's README.html if available

If the repository includes a README.html file, show it in the summary page.
The usual "this should be in the config file" argument does not apply here
since this can be larger and having such a big string in the config file
would be impractical.

I don't know if this is suitable upstream, but it's one of the repo.or.cz
custom modifications that I've thought could be interesting for others
as well.

Compared to the previous patch, this adds the '.html' extension to the
filename, so that it's clear it is, well, HTML.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>

gitweb: Do not automatically append " git" to custom... Petr Baudis Tue, 24 Oct 2006 03:18:39 +0000 (05:18 +0200)

gitweb: Do not automatically append " git" to custom site name

If you customized the site name, you probably do not want the " git"
appended so that the page title is not bastardized; I want repo.or.cz pages
titled "Public Git Hosting", not "Public Git Hosting git" (what's hosting
what?).

This slightly changes the $site_name semantics but only very
insignificantly.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>

gitweb: Make search type a popup menuPetr Baudis Tue, 24 Oct 2006 03:15:46 +0000 (05:15 +0200)

gitweb: Make search type a popup menu

This makes the multiple search types actually usable by the user;
if you don't read the gitweb source, you don't even have an idea
that you can write things like that there.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>

gitweb: Restore object-named links in item listsPetr Baudis Tue, 24 Oct 2006 03:36:10 +0000 (05:36 +0200)

gitweb: Restore object-named links in item lists

This restores the redundant links removed earlier. It supersedes my patch
to stick slashes to tree entries.

Sorry about the previous version of the patch, an unrelated snapshot link
addition to tree entries slipped through (and it it didn't even compile);
I've dropped the idea of snapshot links in tree entries in the meantime
anyway.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'master' into jc/webJunio C Hamano Tue, 24 Oct 2006 03:53:38 +0000 (20:53 -0700)

Merge branch 'master' into jc/web

* master: (114 commits)
gitweb: Fix setting $/ in parse_commit()
daemon: do not die on older clients.
xdiff/xemit.c (xdl_find_func): Elide trailing white space in a context header.
git-clone: honor --quiet
Documentation for the [remote] config
prune-packed: Fix uninitialized variable.
ignore-errors requires cl
git-send-email: do not pass custom Date: header
Use column indexes in git-cvsserver where necessary.
gitweb: Add '..' (up directory) to tree view if applicable
gitweb: Improve git_print_page_path
pager: default to LESS=FRSX not LESS=FRS
Make prune also run prune-packed
git-vc: better installation instructions
gitweb: Do not esc_html $basedir argument to git_print_tree_entry
gitweb: Whitespace cleanup - tabs are for indent, spaces are for align (2)
Fix usagestring for git-branch
git-merge: show usage if run without arguments
add the capability for index-pack to read from a stream
git-clone: define die() and use it.
...

Make git-branch a builtinLars Hjemli Mon, 23 Oct 2006 21:27:45 +0000 (23:27 +0200)

Make git-branch a builtin

This replaces git-branch.sh with builtin-branch.c

The changes is basically a patch from Kristian Høgsberg, updated
to apply onto current 'next'

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Built-in cherryRene Scharfe Mon, 23 Oct 2006 23:01:57 +0000 (01:01 +0200)

Built-in cherry

This replaces the shell script git-cherry with a version written in C.

The behaviour of the new version differs from the original in two
points: it has no long help any more, and it is handling the (optional)
third parameter a bit differently. Basically, it does the equivalent
of

ours=`git-rev-list $ours ^$limit ^$upstream`

instead of

ours=`git-rev-list $ours ^$limit`

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'maint'Junio C Hamano Tue, 24 Oct 2006 02:29:05 +0000 (19:29 -0700)

Merge branch 'maint'

* maint:
gitweb: Fix setting $/ in parse_commit()
daemon: do not die on older clients.
xdiff/xemit.c (xdl_find_func): Elide trailing white space in a context header.
git-clone: honor --quiet
Documentation for the [remote] config
prune-packed: Fix uninitialized variable.

gitweb: Fix setting $/ in parse_commit() v1.4.3.2Petr Baudis Tue, 24 Oct 2006 00:39:14 +0000 (02:39 +0200)

gitweb: Fix setting $/ in parse_commit()

If the commit couldn't have been read, $/ wasn't restored to \n properly,
causing random havoc like git_get_ref_list() returning the ref names with
trailing \n.

Aside of potential confusion in the body of git_search(), no other $/
surprises are hopefully hidden in the code.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>

daemon: do not die on older clients.Junio C Hamano Tue, 24 Oct 2006 01:26:05 +0000 (18:26 -0700)

daemon: do not die on older clients.

In the older times, the clients did not say which host they were trying
to connect, and the code we recently added did not quite handle the
older clients correctly.

Noticed by Simon Arlott.

Signed-off-by: Junio C Hamano <junkio@cox.net>

xdiff/xemit.c (xdl_find_func): Elide trailing white... Jim Meyering Mon, 23 Oct 2006 20:22:25 +0000 (22:22 +0200)

xdiff/xemit.c (xdl_find_func): Elide trailing white space in a context header.

This removes trailing blanks from git-generated diff headers
the same way a similar patch did that for GNU diff:

http://article.gmane.org/gmane.comp.gnu.utils.bugs/13839

That is, it removes trailing blanks on the hunk header line that
shows the function name.

Signed-off-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-clone: honor --quietJim Meyering Mon, 23 Oct 2006 13:59:48 +0000 (15:59 +0200)

git-clone: honor --quiet

I noticed that a cron-launched "git-clone --quiet" was generating
progress output to standard error -- and thus always spamming me.
The offending output was due to git-clone invoking git-read-tree with
its undocumented -v option.
This change turns off "-v" for --quiet.

Signed-off-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Documentation for the [remote] configSanti Béjar Mon, 23 Oct 2006 16:42:14 +0000 (18:42 +0200)

Documentation for the [remote] config

Signed-off-by: Santi Béjar <sbejar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

prune-packed: Fix uninitialized variable.Alexandre Julliard Mon, 23 Oct 2006 16:26:39 +0000 (18:26 +0200)

prune-packed: Fix uninitialized variable.

The dryrun variable was made local instead of static by the previous
commit, and local variables aren't initialized to zero.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

ignore-errors requires clKarl Hasselström Mon, 23 Oct 2006 00:02:42 +0000 (17:02 -0700)

ignore-errors requires cl

vc-git complains that it can't find the definition of ignore-errors
unless I (require 'cl). So I guess the correct place to do that is in
the file itself.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-send-email: do not pass custom Date: headerEric Wong Mon, 23 Oct 2006 07:46:37 +0000 (00:46 -0700)

git-send-email: do not pass custom Date: header

We already generate a Date: header based on when the patch was
emailed. git-format-patch includes the Date: header of the
patch. Having two Date: headers is just confusing, so we
just use the current Date:

Often the mailed patches in a patch series are created over a
series of several hours or days, so the Date: header from the
original commit is incorrect for email, and often far off enough
for spam filters to complain.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Use column indexes in git-cvsserver where necessary.Shawn Pearce Mon, 23 Oct 2006 05:09:35 +0000 (01:09 -0400)

Use column indexes in git-cvsserver where necessary.

Tonight I found a git-cvsserver instance spending a lot of time in
disk IO while trying to process operations against a Git repository
with >30,000 objects contained in it.

Blowing away my SQLLite database and rebuilding all tables with
indexes on the attributes that git-cvsserver frequently runs queries
against seems to have resolved the issue quite nicely.

Since the indexes shouldn't hurt performance on small repositories
and always helps on larger repositories we should just always create
them when creating the revision storage tables.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

gitweb: Add '..' (up directory) to tree view if applicableJakub Narebski Sat, 21 Oct 2006 15:54:44 +0000 (17:54 +0200)

gitweb: Add '..' (up directory) to tree view if applicable

Adds '..' (up directory) link at the top of "tree" view listing,
if both $hash_base and $file_name are provided, and $file_name
is not empty string.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

gitweb: Improve git_print_page_pathJakub Narebski Sat, 21 Oct 2006 15:53:55 +0000 (17:53 +0200)

gitweb: Improve git_print_page_path

Add link to "tree root" (root directory) also for not defined name,
for example for "tree" action without defined "file_name" which means
"tree root".

Add " / " at the end of path when $type eq "tree".

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'np/pack'Junio C Hamano Mon, 23 Oct 2006 05:51:42 +0000 (22:51 -0700)

Merge branch 'np/pack'

* np/pack:
add the capability for index-pack to read from a stream
index-pack: compare only the first 20-bytes of the key.
git-repack: repo.usedeltabaseoffset
pack-objects: document --delta-base-offset option
allow delta data reuse even if base object is a preferred base
zap a debug remnant
let the GIT native protocol use offsets to delta base when possible
make pack data reuse compatible with both delta types
make git-pack-objects able to create deltas with offset to base
teach git-index-pack about deltas with offset to base
teach git-unpack-objects about deltas with offset to base
introduce delta objects with offset to base

Merge branch 'maint'Junio C Hamano Mon, 23 Oct 2006 05:40:30 +0000 (22:40 -0700)

Merge branch 'maint'

* maint:
pager: default to LESS=FRSX not LESS=FRS
Make prune also run prune-packed
git-vc: better installation instructions
gitweb: Do not esc_html $basedir argument to git_print_tree_entry
gitweb: Whitespace cleanup - tabs are for indent, spaces are for align (2)
Fix usagestring for git-branch
git-merge: show usage if run without arguments

pager: default to LESS=FRSX not LESS=FRSJunio C Hamano Mon, 23 Oct 2006 03:28:10 +0000 (20:28 -0700)

pager: default to LESS=FRSX not LESS=FRS

Signed-off-by: Junio C Hamano <junkio@cox.net>

Make prune also run prune-packedJ. Bruce Fields Sun, 22 Oct 2006 23:01:23 +0000 (19:01 -0400)

Make prune also run prune-packed

Both the git-prune manpage and everday.txt say that git-prune should also prune
unpacked objects that are also found in packs, by running git prune-packed.

Junio thought this was "a regression when prune was rewritten as a built-in."

So modify prune to call prune-packed again.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>

git-vc: better installation instructionsKarl Hasselström Sun, 22 Oct 2006 18:46:36 +0000 (20:46 +0200)

git-vc: better installation instructions

Provide some more detailed installation instructions, for the
elisp-challenged among us.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

gitweb: Do not esc_html $basedir argument to git_print_... Jakub Narebski Sat, 21 Oct 2006 15:53:09 +0000 (17:53 +0200)

gitweb: Do not esc_html $basedir argument to git_print_tree_entry

In git_tree, rename $base variable (which is passed as $basedir
argument to git_print_tree_entry) to $basedir. Do not esc_html
$basedir, as it is part of file_name ('f') argument in link and not
printed. Add '/' at the end only if $basedir is not empty (it is empty
for top directory) and doesn't end in '/' already.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

gitweb: Whitespace cleanup - tabs are for indent, space... Jakub Narebski Sat, 21 Oct 2006 15:52:19 +0000 (17:52 +0200)

gitweb: Whitespace cleanup - tabs are for indent, spaces are for align (2)

Code should be aligned the same way, regardless of tab size.
Use tabs for indent, but spaces for align.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Fix usagestring for git-branchLars Hjemli Sun, 22 Oct 2006 11:30:24 +0000 (13:30 +0200)

Fix usagestring for git-branch

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-merge: show usage if run without argumentsRene Scharfe Sat, 21 Oct 2006 18:51:04 +0000 (20:51 +0200)

git-merge: show usage if run without arguments

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-pickaxe: swap comparison loop used for -CJunio C Hamano Sat, 21 Oct 2006 10:30:53 +0000 (03:30 -0700)

git-pickaxe: swap comparison loop used for -C

When assigning blames for code movements across file boundaries,
we used to iterate over blame entries (i.e. groups of lines to
be blamed) in the outer loop and compared each entry with paths
in the parent commit in an inner loop. This meant that we
opened the blob data from each path number of times.

Reorganize the loop so that we read the same path only once, and
compare it against all relevant blame entries.

This should perform better, but seems to give mixed results,
though.

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-pickaxe: get rid of wasteful find_origin().Junio C Hamano Sat, 21 Oct 2006 09:56:33 +0000 (02:56 -0700)

git-pickaxe: get rid of wasteful find_origin().

After finding out which path in the parent to scan to pass
blames, using get_tree_entry() to extract the blob information
again was quite wasteful, since diff-tree already gave us that
information. Separate the function to create an origin out as
get_origin().

You'll never know what is more efficient unless you try and/or
think hard. I somehow thought that extracting one known path
out of commit's tree is cheaper than running a diff-tree for the
current path between the commit and its parent, but it is not
the case. In real, non-toy projects, most commits do not touch
the path you are interested in, and if the path is a few levels
away from the toplevel, whole-subdirectory comparison logic
diff-tree allows us to skip opening lower subdirectories.

This commit rewrites find_origin() function to use a single-path
diff-tree to see if the parent has the same blob as the current
suspect, which is cheaper than extracting the blob information
using get_tree_entry() and comparing it with what the current
suspect has. This shaves about 6% overhead when annotating
kernel/sched.c in the Linux kernel repository on my machine.
The saving rises to 25% for arch/i386/kernel/Makefile.

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-pickaxe: do not confuse two origins that are the... Junio C Hamano Sat, 21 Oct 2006 07:41:38 +0000 (00:41 -0700)

git-pickaxe: do not confuse two origins that are the same.

It used to be that we can compare the address of the origin
structure to determine if they are the same because they are
always registered with scoreboard. After introduction of the
loop to try finding the best split, that is not true anymore.

The current code has rather serious leaks with origin structure,
but more importantly it gets confused when two origins that
points at the same commit and same path.

We might eventually have to refcount and gc origin, but let's
fix the correctness issue first.

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-pickaxe: do not keep commit buffer.Junio C Hamano Sat, 21 Oct 2006 06:49:31 +0000 (23:49 -0700)

git-pickaxe: do not keep commit buffer.

We need the commit buffer data while generating the final result,
but until then we do not need them.

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-pickaxe: introduce heuristics to avoid "trivial... Junio C Hamano Fri, 20 Oct 2006 22:37:12 +0000 (15:37 -0700)

git-pickaxe: introduce heuristics to avoid "trivial" chunks

This adds scoring logic to blame_entry to prevent blames on very
trivial chunks (e.g. lots of empty lines, indent followed by a
closing brace) from being passed down to unrelated lines in the
parent.

The current heuristics are quite simple and may need to be
tweaked later, but we need to start somewhere.

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-pickaxe: improve "best match" heuristicsJunio C Hamano Fri, 20 Oct 2006 21:51:12 +0000 (14:51 -0700)

git-pickaxe: improve "best match" heuristics

Instead of comparing number of lines matched, look at the
matched characters and count alnums, so that we do not pass
blame on not-so-interesting lines, such as an empty line and
a line that is indentation followed by a closing brace.

Add an option --score-debug to show the score of each
blame_entry while we cook this further on the "next" branch.

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-pickaxe: fix nth_line()Junio C Hamano Sat, 21 Oct 2006 01:48:18 +0000 (18:48 -0700)

git-pickaxe: fix nth_line()

We would want to be able to refer to the end of the file as
"the beginning of Nth line" for a file that is N lines long.

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-pickaxe: pagenate output by default.Junio C Hamano Sat, 21 Oct 2006 01:37:10 +0000 (18:37 -0700)

git-pickaxe: pagenate output by default.

Signed-off-by: Junio C Hamano <junkio@cox.net>

add the capability for index-pack to read from a streamNicolas Pitre Fri, 20 Oct 2006 18:45:21 +0000 (14:45 -0400)

add the capability for index-pack to read from a stream

This patch only adds the streaming capability to index-pack. Although
the code is different it has the exact same functionality as before to
make sure nothing broke.

This is in preparation for receiving packs over the net, parse them on
the fly, fix them up if they are "thin" packs, and keep the resulting
pack instead of exploding it into loose objects. But such functionality
should come separately.

One immediate advantage of this patch is that index-pack can now deal
with packs up to 4GB in size even on 32-bit architectures since the pack
is not entirely mmap()'d all at once anymore.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-clone: define die() and use it.Dmitry V. Levin Fri, 20 Oct 2006 19:38:31 +0000 (23:38 +0400)

git-clone: define die() and use it.

Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'maint'Junio C Hamano Fri, 20 Oct 2006 23:51:05 +0000 (16:51 -0700)

Merge branch 'maint'

* maint:
Fix typo in show-index.c
pager: default to LESS=FRS

Fix typo in show-index.c v1.4.3.1Lars Hjemli Fri, 20 Oct 2006 21:24:32 +0000 (23:24 +0200)

Fix typo in show-index.c

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

pager: default to LESS=FRSJunio C Hamano Fri, 20 Oct 2006 23:37:49 +0000 (16:37 -0700)

pager: default to LESS=FRS

Recent change to paginate "git diff" by default is often irritating
when you do not have any change (or very small change) in your working
tree.

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-pickaxe -C: blame cut-and-pasted lines.Junio C Hamano Fri, 20 Oct 2006 01:50:17 +0000 (18:50 -0700)

git-pickaxe -C: blame cut-and-pasted lines.

This completes the initial round of git-pickaxe. In addition to
the detection of line movements we already have, this finds new
lines that were created by moving or cutting-and-pasting lines
from different files in the parent.

With this,

git pickaxe -f -n -C v1.4.0 -- revision.c

finds that a major part of that file actually came from
rev-list.c when Linus split the latter at commit ae563642 and
blames them to earlier commits that touch rev-list.c.

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-pickaxe -M: blame line movements within a file.Junio C Hamano Fri, 20 Oct 2006 01:49:30 +0000 (18:49 -0700)

git-pickaxe -M: blame line movements within a file.

This makes pickaxe more intelligent than the classic blame.

A typical example is a change that moves one static C function
from lower part of the file to upper part of the same file,
because you added a new caller in the middle.

The versions in the parent and the child would look like this:

parent child

A static foo() {
B ...
C }
D A
E B
F C
G D
static foo() { ... call foo();
... E
} F
H G
H

With the classic blame algorithm, we can blame lines A B C D E F
G and H to the parent. The child is guilty of introducing the
line "... call foo();", and the blame is placed on the child.
However, the classic blame algorithm fails to notice that the
implementation of foo() at the top of the file is not new, and
moved from the lower part of the parent.

This commit introduces detection of such line movements, and
correctly blames the lines that were simply moved in the file to
the parent.

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-pickaxe: blame rewritten.Junio C Hamano Thu, 19 Oct 2006 23:00:04 +0000 (16:00 -0700)

git-pickaxe: blame rewritten.

Currently it does what git-blame does, but only faster.

More importantly, its internal structure is designed to support
content movement (aka cut-and-paste) more easily by allowing
more than one paths to be taken from the same commit.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'maint'Junio C Hamano Fri, 20 Oct 2006 04:28:12 +0000 (21:28 -0700)

Merge branch 'maint'

* maint:
git-apply: prepare for upcoming GNU diff -u format change.

git-apply: prepare for upcoming GNU diff -u format... Linus Torvalds Fri, 20 Oct 2006 02:26:08 +0000 (19:26 -0700)

git-apply: prepare for upcoming GNU diff -u format change.

The latest GNU diff from CVS emits an empty line to express
an empty context line, instead of more traditional "single
white space followed by a newline". Do not get broken by it.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Don't use $author_name undefined when $from contains... Jim Meyering Thu, 19 Oct 2006 08:33:01 +0000 (10:33 +0200)

Don't use $author_name undefined when $from contains no /\s</.

I noticed a case not handled in a recent patch.
Demonstrate it like this:

$ touch new-file
$ git-send-email --dry-run --from j --to k new-file 2>err
new-file
OK. Log says:
Date: Thu, 19 Oct 2006 10:26:24 +0200
Sendmail: /usr/sbin/sendmail
From: j
Subject:
Cc:
To: k

Result: OK
$ cat err
Use of uninitialized value in pattern match (m//) at /p/bin/git-send-email line 416.
Use of uninitialized value in concatenation (.) or string at /p/bin/git-send-email line 420.
Use of uninitialized value in concatenation (.) or string at /p/bin/git-send-email line 468.

There's a patch for the $author_name part below.

The example above shows that $subject may also be used uninitialized.
That should be easy to fix, too.

Signed-off-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

ref-log: fix D/F conflict coming from deleted refs.Junio C Hamano Thu, 19 Oct 2006 08:28:47 +0000 (01:28 -0700)

ref-log: fix D/F conflict coming from deleted refs.

After deleting a branch l/k, you should be able to create a
branch l. Earlier we added remove_empty_directories() on the
ref creation side to remove leftover .git/refs/l directory but
we also need a matching code to remove .git/logs/refs/l
directory.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'mw/pathinfo'Junio C Hamano Thu, 19 Oct 2006 05:09:11 +0000 (22:09 -0700)

Merge branch 'mw/pathinfo'

* mw/pathinfo:
gitweb: Fix search form when PATH_INFO is enabled
gitweb: Document features better
gitweb: warn if feature cannot be overridden.
gitweb: start to generate PATH_INFO URLs.

Conflicts:

gitweb/README

Merge branch 'js/diff'Junio C Hamano Thu, 19 Oct 2006 05:09:03 +0000 (22:09 -0700)

Merge branch 'js/diff'

* js/diff:
Turn on recursive with --summary

Merge branch 'jc/send-email'Junio C Hamano Thu, 19 Oct 2006 05:09:00 +0000 (22:09 -0700)

Merge branch 'jc/send-email'

* jc/send-email:
Make git-send-email detect mbox-style patches more readily
git-send-email: real name with period need to be dq-quoted on From: line
git-send-email: do not drop custom headers the user prepared

Merge branch 'jc/grep'Junio C Hamano Thu, 19 Oct 2006 05:08:58 +0000 (22:08 -0700)

Merge branch 'jc/grep'

* jc/grep:
teach revision walker about --all-match.
grep --all-match

Merge early part of branch 'jc/diff-apply-patch'Junio C Hamano Thu, 19 Oct 2006 05:08:46 +0000 (22:08 -0700)

Merge early part of branch 'jc/diff-apply-patch'

Merge branch 'jc/diff-numstat'Junio C Hamano Thu, 19 Oct 2006 05:08:42 +0000 (22:08 -0700)

Merge branch 'jc/diff-numstat'

* jc/diff-numstat:
diff --numstat

Merge branch 'pb/bisect'Junio C Hamano Thu, 19 Oct 2006 05:08:39 +0000 (22:08 -0700)

Merge branch 'pb/bisect'

* pb/bisect:
bisect reset: Leave the tree in usable state if git-checkout failed

Merge branch 'mw/send-email'Junio C Hamano Thu, 19 Oct 2006 05:08:37 +0000 (22:08 -0700)

Merge branch 'mw/send-email'

* mw/send-email:
Add --dry-run option to git-send-email

Merge branch 'rs/rebase'Junio C Hamano Thu, 19 Oct 2006 05:08:31 +0000 (22:08 -0700)

Merge branch 'rs/rebase'

* rs/rebase:
git-rebase: Add a -v option to show a diffstat of the changes upstream at the start of a rebase.
git-rebase: Use --ignore-if-in-upstream option when executing git-format-patch.

Merge branch 'sb/fetch'Junio C Hamano Thu, 19 Oct 2006 05:08:29 +0000 (22:08 -0700)

Merge branch 'sb/fetch'

* sb/fetch:
merge and resolve: Output short hashes and .. in "Updating ..."
fetch: Misc output cleanup

Merge branch 'sk/svn'Junio C Hamano Thu, 19 Oct 2006 05:08:26 +0000 (22:08 -0700)

Merge branch 'sk/svn'

* sk/svn:
git-svnimport.perl: copying directory from original SVN place

Merge branch 'rs/zip'Junio C Hamano Thu, 19 Oct 2006 05:08:24 +0000 (22:08 -0700)

Merge branch 'rs/zip'

* rs/zip:
git-archive --format=zip: add symlink support
git-archive --format=zip: use default version ID

Add revspec documentation for ':path', ':[0-3]:path... pclouds@gmail.com Thu, 19 Oct 2006 03:04:55 +0000 (10:04 +0700)

Add revspec documentation for ':path', ':[0-3]:path' and git-describe

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

Reject hexstring longer than 40-bytes in get_short_sha1()pclouds@gmail.com Thu, 19 Oct 2006 01:34:41 +0000 (08:34 +0700)

Reject hexstring longer than 40-bytes in get_short_sha1()

Such a string can never be a valid object name.

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

reduce delta head inflated sizeNicolas Pitre Wed, 18 Oct 2006 19:56:22 +0000 (15:56 -0400)

reduce delta head inflated size

Supposing that both the base and result sizes were both full size 64-bit
values, their encoding would occupy only 9.2 bytes each. Therefore
inflating 64 bytes is way overkill. Limit it to 20 bytes instead which
should be plenty enough for a couple years to come.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

[PATCH] gitk: Fix nextfile() and add prevfile()OGAWA Hirofumi Wed, 27 Sep 2006 03:32:19 +0000 (12:32 +0900)

[PATCH] gitk: Fix nextfile() and add prevfile()

The current nextfile() jumps to last hunk, but I think this is not
intention, probably, it's forgetting to add "break;". And this
patch also adds prevfile(), it jumps to previous hunk.

Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Signed-off-by: Paul Mackerras <paulus@samba.org>

index-pack: compare only the first 20-bytes of the... Nicolas Pitre Tue, 17 Oct 2006 20:23:26 +0000 (16:23 -0400)

index-pack: compare only the first 20-bytes of the key.

The "union delta_base" is a strange beast. It is a 20-byte
binary blob key to search a binary searchable deltas[] array,
each element of which uses it to represent its base object with
either a full 20-byte SHA-1 or an offset in the pack. Which
representation is used is determined by another field of the
deltas[] array element, obj->type, so there is no room for
confusion, as long as we make sure we compare the keys for the
same type only with appropriate length. The code compared the
full union with memcmp().

When storing the in-pack offset, the union was first cleared
before storing an unsigned long, so comparison worked fine.

On 64-bit architectures, however, the union typically is 24-byte
long; the code did not clear the remaining 4-byte alignment
padding when storing a full 20-byte SHA-1 representation. Using
memcmp() to compare the whole union was wrong.

This fixes the comparison to look at the first 20-bytes of the
union, regardless of the architecture. As long as ulong is
smaller than 20-bytes this works fine.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-imap-send: Strip smtp From_ header from imap message. v1.4.3Markus Amsler Thu, 12 Oct 2006 22:19:35 +0000 (00:19 +0200)

git-imap-send: Strip smtp From_ header from imap message.

Cyrus imap refuses messages with a 'From ' Header.

[jc: Mike McCormack says this is fine with Courier as well.]

Signed-off-by: Markus Amsler <markus.amsler@oribi.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

add proper dependancies on the xdiff sourceAndy Whitcroft Tue, 17 Oct 2006 18:08:08 +0000 (19:08 +0100)

add proper dependancies on the xdiff source

We are not rebuilding the xdiff library when its header files change.
Add dependancies for those to the main Makefile.

Signed-off-by: Andy Whitcroft <apw@shadowen.org>
Acked-by: Ryan Anderson <ryan@google.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

bisect reset: Leave the tree in usable state if git... Petr Baudis Mon, 16 Oct 2006 00:59:25 +0000 (02:59 +0200)

bisect reset: Leave the tree in usable state if git-checkout failed

I had local modifications in the tree and doing bisect reset required me to
manually edit .git/HEAD.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'maint'Junio C Hamano Tue, 17 Oct 2006 04:58:54 +0000 (21:58 -0700)

Merge branch 'maint'

* maint:
Fix hash function in xdiff library

Fix hash function in xdiff library v1.4.2.4Linus Torvalds Tue, 17 Oct 2006 02:58:54 +0000 (19:58 -0700)

Fix hash function in xdiff library

Jim Mayering noticed that xdiff library took insanely long time
when comparing files with many identical lines.

This was because the hash function used in the library is broken
on 64-bit architectures and caused too many collisions.

http://thread.gmane.org/gmane.comp.version-control.git/28962/focus=28994

Acked-by: Davide Libenzi <davidel@xmaliserver.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-revert with conflicts to behave as git-merge with... Luben Tuikov Thu, 12 Oct 2006 21:52:42 +0000 (14:52 -0700)

git-revert with conflicts to behave as git-merge with conflicts

In a busy project, reverting a commit almost always results
in a conflict between one or more files (depending on the
commit being reverted). It is useful to record this
conflict in the commit-to-be message of the resulting commit
(after the resolve). The process now becomes:

git-revert <SHA-1>
<git complains and prints failed automatic>
<user manually resolves>
git-update-index <resolved files>
git-commit -s

And the commit message is now a merge of the revert commit
message and the conflict commit message, giving the user a
chance to edit it or add more information:

Signed-off-by: Luben Tuikov <ltuikov@yahoo.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

svnimport: Fix broken tags being generatedPetr Baudis Mon, 16 Oct 2006 01:00:37 +0000 (03:00 +0200)

svnimport: Fix broken tags being generated

Currently git-svnimport generates broken tags missing the timespec in the
'tagger' line. This is a random stab at a minimal fix.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Replace open-coded version of hash_sha1_file()Rene Scharfe Sun, 15 Oct 2006 12:02:18 +0000 (14:02 +0200)

Replace open-coded version of hash_sha1_file()

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Make write_sha1_file_prepare() voidRene Scharfe Sun, 15 Oct 2006 12:02:03 +0000 (14:02 +0200)

Make write_sha1_file_prepare() void

Move file name generation from write_sha1_file_prepare() to the one
caller that cares and make it a void function.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>

gitweb: use for-each-ref to show the latest activity... Junio C Hamano Sun, 15 Oct 2006 10:29:09 +0000 (03:29 -0700)

gitweb: use for-each-ref to show the latest activity across branches

The project list page shows last change from the HEAD branch but
often people would want to view activity on any branch.

Unfortunately that is fairly expensive without the core-side
support. for-each-ref was invented exactly for that.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Revert "move pack creation to version 3"Junio C Hamano Sun, 15 Oct 2006 06:37:41 +0000 (23:37 -0700)

Revert "move pack creation to version 3"

This reverts commit 16854571aae6302f457c5fbee41ac64669b09595.
Git as recent as v1.1.6 do not understand version 3 delta.

v1.2.0 is Ok and I personally would say it is old enough, but
the improvement between version 2 and version 3 delta is not
bit enough to justify breaking older clients.

We should resurrect this later, but when we do so we shold
make it conditional.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'jc/http' v1.4.3-rc3Junio C Hamano Sun, 15 Oct 2006 01:25:28 +0000 (18:25 -0700)

Merge branch 'jc/http'

* jc/http:
Add WEBDAV timeout to http-fetch.

clone: the given repository dir should be relative... Yasushi SHOJI Sat, 14 Oct 2006 12:02:51 +0000 (21:02 +0900)

clone: the given repository dir should be relative to $PWD

the repository argument for git-clone should be relative to $PWD
instead of the given target directory. The old behavior gave us
surprising success and you need a few minute to know why it worked.

GIT_DIR is already exported so no need to cd into $D. And this makes
$PWD for git-fetch-pack, which is the actual command to take the given
repository dir, the same as git-clone.

Signed-off-by: Yasushi SHOJI <yashi@atmark-techno.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsserver: fix "cvs diff" in a subdirectoryJohannes Schindelin Tue, 10 Oct 2006 22:33:28 +0000 (00:33 +0200)

cvsserver: fix "cvs diff" in a subdirectory

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsserver: Show correct letters for modified, removed... Johannes Schindelin Tue, 10 Oct 2006 22:20:43 +0000 (00:20 +0200)

cvsserver: Show correct letters for modified, removed and added files

Earlier, cvsserver showed always an 'U', sometimes even without a space
between the 'U' and the name. Now, the correct letter is shown, with a
space.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-svn: reduce memory usage for large commitsEric Wong Sat, 14 Oct 2006 22:48:35 +0000 (15:48 -0700)

git-svn: reduce memory usage for large commits

apply_textdelta and send_stream can use a separate pool from the
rest of the editor interface, so we'll use a separate SVN::Pool
for them and clear the pool after each file is sent to SVN.

This drastically reduces memory usage per-changeset committed,
and makes large commits (and initial imports) of several
thousand files possible.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Fix tracing when GIT_TRACE is set to an empty string.Christian Couder Sat, 14 Oct 2006 14:05:25 +0000 (16:05 +0200)

Fix tracing when GIT_TRACE is set to an empty string.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Make write_sha1_file_prepare() staticRene Scharfe Sat, 14 Oct 2006 10:45:45 +0000 (12:45 +0200)

Make write_sha1_file_prepare() static

There are no callers of write_sha1_file_prepare() left outside of
sha1_file.c, so make it static.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Add hash_sha1_file()Rene Scharfe Sat, 14 Oct 2006 10:45:36 +0000 (12:45 +0200)

Add hash_sha1_file()

Most callers of write_sha1_file_prepare() are only interested in the
resulting hash but don't care about the returned file name or the header.
This patch adds a simple wrapper named hash_sha1_file() which does just
that, and converts potential callers.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-svn: fix commits over svn+ssh://Eric Wong Sat, 14 Oct 2006 09:02:37 +0000 (02:02 -0700)

git-svn: fix commits over svn+ssh://

Once a get_commit_editor has been called from an SVN session, RA
layer operations are not allowed (well, unless you're using
file:// or http(s)://). So we'll pass an alternate SVN::Ra
object to our editor object for running 'check-path'.

This should fix commits over svnserve (svn:// without ssh, too).

Closes Debian bug #392702, thanks to Pierre Habouzit for
reporting the bug.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

diff --numstatJunio C Hamano Thu, 12 Oct 2006 10:01:00 +0000 (03:01 -0700)

diff --numstat

[jc: with documentation from Jakub]

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-repack: repo.usedeltabaseoffsetJunio C Hamano Sat, 14 Oct 2006 04:28:58 +0000 (21:28 -0700)

git-repack: repo.usedeltabaseoffset

When configuration variable `repack.UseDeltaBaseOffset` is set
for the repository, the command passes `--delta-base-offset`
option to `git-pack-objects`; this typically results in slightly
smaller packs, but the generated packs are incompatible with
versions of git older than (and including) v1.4.3.

We will make it default to true sometime in the future, but not
for a while.

Signed-off-by: Junio C Hamano <junkio@cox.net>

t4015: work-around here document problem on Cygwin.Junio C Hamano Fri, 13 Oct 2006 21:20:27 +0000 (14:20 -0700)

t4015: work-around here document problem on Cygwin.

Signed-off-by: Junio C Hamano <junio@twinsun.com>

Documentation: add missing second colons and remove... Rene Scharfe Thu, 12 Oct 2006 16:26:34 +0000 (18:26 +0200)

Documentation: add missing second colons and remove a typo

It takes two colons to mark text as item label.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>

diff: fix 2 whitespace issuesJohannes Schindelin Thu, 12 Oct 2006 12:22:14 +0000 (14:22 +0200)

diff: fix 2 whitespace issues

When whitespace or whitespace change was ignored, the function
xdl_recmatch() returned memcmp() style differences, which is wrong,
since it should return 0 on non-match.

Also, there were three horrible off-by-one bugs, even leading to wrong
hashes in the whitespace special handling.

The issue was noticed by Ray Lehtiniemi.

For good measure, this commit adds a test.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

apply --numstat -z: line termination fix.Junio C Hamano Thu, 12 Oct 2006 09:57:39 +0000 (02:57 -0700)

apply --numstat -z: line termination fix.

Signed-off-by: Junio C Hamano <junkio@cox.net>

gitweb: spell "blame --porcelain" with -pJunio C Hamano Thu, 12 Oct 2006 07:47:03 +0000 (00:47 -0700)

gitweb: spell "blame --porcelain" with -p

Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'jc/blame' into jc/web-blameJunio C Hamano Thu, 12 Oct 2006 07:46:06 +0000 (00:46 -0700)

Merge branch 'jc/blame' into jc/web-blame

* jc/blame:
blame: Document and add help text for -f, -n, and -p
Remove git-annotate.perl and create a builtin-alias for git-blame

blame: Document and add help text for -f, -n, and -pJunio C Hamano Thu, 12 Oct 2006 07:44:27 +0000 (00:44 -0700)

blame: Document and add help text for -f, -n, and -p

New options --show-name, --show-number and --porcelain were not
documented. Also add -p as a short-hand for --porcelain for
consistency.

Signed-off-by: Junio C Hamano <junkio@cox.net>