gitweb.git
implement some resilience against pack corruptionsNicolas Pitre Tue, 24 Jun 2008 01:23:39 +0000 (21:23 -0400)

implement some resilience against pack corruptions

We should be able to fall back to loose objects or alternative packs when
a pack becomes corrupted. This is especially true when an object exists
in one pack only as a delta but its base object is corrupted. Currently
there is no way to retrieve the former object even if the later is
available in another pack or loose.

This patch allows for a delta to be resolved (with a performance cost)
using a base object from a source other than the pack where that delta
is located. Same thing for non-delta objects: rather than failing
outright, a search is made in other packs or used loose when the
currently active pack has it but corrupted.

Of course git will become extremely noisy with error messages when that
happens. However, if the operation succeeds nevertheless, a simple
'git repack -a -f -d' will "fix" the corrupted repository given that all
corrupted objects have a good duplicate somewhere in the object store,
possibly manually copied from another source.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

call init_pack_revindex() lazilyNicolas Pitre Tue, 24 Jun 2008 01:22:14 +0000 (21:22 -0400)

call init_pack_revindex() lazily

This makes life much easier for next patch, as well as being more efficient
when the revindex is actually not used.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Tue, 24 Jun 2008 00:52:02 +0000 (17:52 -0700)

Merge branch 'maint'

* maint:
git-svn: make rebuild respect rewriteRoot option
Workaround for AIX mkstemp()

git-svn: make rebuild respect rewriteRoot optionJan Krüger Tue, 24 Jun 2008 00:17:36 +0000 (02:17 +0200)

git-svn: make rebuild respect rewriteRoot option

Suppose someone fetches git-svn-ified commits from another repo and then
attempts to use 'git-svn init --rewrite-root=foo bar'. Using git svn rebase
after that will fail badly:

* For each commit tried by working_head_info, rebuild is called indirectly.
* rebuild will iterate over all commits and skip all of them because the
URL does not match. Because of that no rev_map file is generated at all.
* Thus, rebuild will run once for every commit. This takes ages.
* In the end there still isn't any rev_map file and thus working_head_info
fails.

Addressing this behaviour fixes an apparently not too uncommon problem with
providing git-svn mirrors of Subversion repositories. Some repositories are
accessed using different URLs depending on whether the user has push
privileges or not. In the latter case, an anonymous URL is often used that
differs from the push URL. Providing a mirror that is usable in both cases
becomes a lot more possible with this change.

Signed-off-by: Jan Krüger <jk@jk.gs>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Workaround for AIX mkstemp()Patrick Higgins Mon, 23 Jun 2008 21:33:41 +0000 (15:33 -0600)

Workaround for AIX mkstemp()

The AIX mkstemp will modify it's template parameter to an empty string if
the call fails. This caused a subsequent mkdir to fail.

Signed-off-by: Patrick Higgins <patrick.higgins@cexp.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t9301-fast-export.sh: Remove debug lineMichele Ballabio Mon, 23 Jun 2008 16:19:23 +0000 (18:19 +0200)

t9301-fast-export.sh: Remove debug line

Signed-off-by: Michele Ballabio <barra_cuda@katamail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Windows: Implement start_command().Johannes Sixt Fri, 7 Dec 2007 21:08:59 +0000 (22:08 +0100)

Windows: Implement start_command().

On Windows, we have spawnv() variants to run a child process instead of
fork()/exec(). In order to attach pipe ends to stdin, stdout, and stderr,
we have to use this idiom:

save1 = dup(1);
dup2(pipe[1], 1);
spawnv();
dup2(save1, 1);
close(pipe[1]);

assuming that the descriptors created by pipe() are not inheritable.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

Windows: A pipe() replacement whose ends are not inheri... Johannes Sixt Fri, 7 Dec 2007 21:05:36 +0000 (22:05 +0100)

Windows: A pipe() replacement whose ends are not inherited to children.

On Unix the idiom to use a pipe is as follows:

pipe(fd);
pid = fork();
if (!pid) {
dup2(fd[1], 1);
close(fd[1]);
close(fd[0]);
...
}
close(fd[1]);

i.e. the child process closes the both pipe ends after duplicating one
to the file descriptors where they are needed.

On Windows, which does not have fork(), we never have an opportunity to
(1) duplicate a pipe end in the child, (2) close unused pipe ends. Instead,
we must use this idiom:

save1 = dup(1);
pipe(fd);
dup2(fd[1], 1);
spawn(...);
dup2(save1, 1);
close(fd[1]);

i.e. save away the descriptor at the destination slot, replace by the pipe
end, spawn process, restore the saved file.

But there is a problem: Notice that the child did not only inherit the
dup2()ed descriptor, but also *both* original pipe ends. Although the one
end that was dup()ed could be closed before the spawn(), we cannot close
the other end - the child inherits it, no matter what.

The solution is to generate non-inheritable pipes. At the first glance,
this looks strange: The purpose of pipes is usually to be inherited to
child processes. But notice that in the course of actions as outlined
above, the pipe descriptor that we want to inherit to the child is
dup2()ed, and as it so happens, Windows's dup2() creates inheritable
duplicates.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

Windows: Wrap execve so that shell scripts can be invoked.Johannes Sixt Tue, 4 Dec 2007 11:38:32 +0000 (12:38 +0100)

Windows: Wrap execve so that shell scripts can be invoked.

When an external git command is invoked, it can be a Bourne shell script.
This patch looks into the command file to see whether it is one.
In this case, the command line is rearranged to invoke the shell
with the proper arguments.

With this change, scripted git commands work. Command line arguments
to those scripts cannot be complex (contain spaces or double-quotes), yet.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

Windows: Implement setitimer() and sigaction().Johannes Sixt Tue, 13 Nov 2007 09:14:45 +0000 (10:14 +0100)

Windows: Implement setitimer() and sigaction().

The timer is implemented using a thread that calls the signal handler
at regular intervals.

We also replace Windows's signal() function because we must intercept
that SIGALRM is set (which is used when a timer is canceled).

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

Windows: Fix PRIuMAX definition.Johannes Sixt Fri, 23 Mar 2007 09:57:05 +0000 (10:57 +0100)

Windows: Fix PRIuMAX definition.

Since GIT calls into Microsoft's MSVCRT.DLL, it must use the printf
format that this DLL uses for 64-bit integers, which is %I64u instead
of %llu.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

Windows: Implement gettimeofday().Johannes Sixt Sat, 1 Dec 2007 20:51:20 +0000 (21:51 +0100)

Windows: Implement gettimeofday().

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

Make my_mktime() public and rename it to tm_to_time_t()Johannes Sixt Mon, 23 Jun 2008 06:31:41 +0000 (08:31 +0200)

Make my_mktime() public and rename it to tm_to_time_t()

We will use it from the MinGW port's gettimeofday() substitution.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

Windows: Work around misbehaved rename().Johannes Sixt Fri, 7 Dec 2007 21:19:40 +0000 (22:19 +0100)

Windows: Work around misbehaved rename().

Windows's rename() is based on the MoveFile() API, which fails if the
destination exists. Here we work around the problem by using MoveFileEx().
Furthermore, the posixly correct error is returned if the destination is
a directory.

The implementation is still slightly incomplete, however, because of the
missing error code translation: We assume that the failure is due to
permissions.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

Windows: always chmod(, 0666) before unlink().Johannes Schindelin Tue, 23 Jan 2007 12:39:09 +0000 (13:39 +0100)

Windows: always chmod(, 0666) before unlink().

On Windows, read-only files cannot be deleted. To make sure that
deletion does not fail because of this, always call chmod() before
unlink().

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

Windows: A minimal implemention of getpwuid().Johannes Sixt Sat, 1 Dec 2007 21:09:17 +0000 (22:09 +0100)

Windows: A minimal implemention of getpwuid().

getpwuid() is implemented just enough that GIT does not issue errors.
Since the information that it returns is not very useful, users are
required to set up user.name and user.email configuration.

All uses of getpwuid() are like getpwuid(getuid()), hence, the return value
of getuid() is irrelevant and the uid parameter is not even looked at.

Side note: getpwnam() is only used to resolve '~' and '~username' paths,
which is an idiom not known on Windows, hence, we don't implement it.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

Windows: Implement a wrapper of the open() function.Johannes Sixt Thu, 15 Nov 2007 21:22:47 +0000 (22:22 +0100)

Windows: Implement a wrapper of the open() function.

The wrapper does two things:
- Requests to open /dev/null are redirected to open the nul pseudo file.
- A request to open a file that currently exists as a directory on
Windows fails with EACCES; this is changed to EISDIR.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

Windows: Strip ".exe" from the program name.Johannes Sixt Sat, 8 Dec 2007 19:57:25 +0000 (20:57 +0100)

Windows: Strip ".exe" from the program name.

Before we can successfully parse a builtin command from the program name
we must strip off unneeded parts, that is, the file extension.

Furthermore, we must take Windows style path names into account when we
parse the program name.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

Windows: Handle absolute paths in safe_create_leading_d... Johannes Sixt Fri, 30 Nov 2007 20:36:00 +0000 (21:36 +0100)

Windows: Handle absolute paths in safe_create_leading_directories().

In this function we must be careful to handle drive-local paths else there
is a danger that it runs into an infinite loop.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

Windows: Treat Windows style path names.Johannes Sixt Wed, 5 Mar 2008 20:51:27 +0000 (21:51 +0100)

Windows: Treat Windows style path names.

GIT's guts work with a forward slash as a path separators. We do not change
that. Rather we make sure that only "normalized" paths enter the depths
of the machinery.

We have to translate backslashes to forward slashes in the prefix and in
command line arguments. Fortunately, all of them are passed through
functions in setup.c.

A macro has_dos_drive_path() is defined that checks whether a path begins
with a drive letter+colon combination. This predicate is always false on
Unix. Another macro is_dir_sep() abstracts that a backslash is also a
directory separator on Windows.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

setup.c: Prepare for Windows directory separators.Johannes Sixt Sat, 1 Mar 2008 20:11:14 +0000 (21:11 +0100)

setup.c: Prepare for Windows directory separators.

This turns two switch/case statements into an if-else-if cascade because
we later do not want to have

case '/':
#ifdef __MINGW32__
case '\\':
#endif

but use a predicate is_dir_sep(foo) in order to check for the directory
separator.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

Shrink the git binary a bit by avoiding unnecessary... Linus Torvalds Sun, 22 Jun 2008 19:19:25 +0000 (12:19 -0700)

Shrink the git binary a bit by avoiding unnecessary inline functions

So I was looking at the disgusting size of the git binary, and even with
the debugging removed, and using -Os instead of -O2, the size of the text
section was pretty high. In this day and age I guess almost a megabyte of
text isn't really all that surprising, but it still doesn't exactly make
me think "lean and mean".

With -Os, a surprising amount of text space is wasted on inline functions
that end up just being replicated multiple times, and where performance
really isn't a valid reason to inline them. In particular, the trivial
wrapper functions like "xmalloc()" are used _everywhere_, and making them
inline just duplicates the text (and the string we use to 'die()' on
failure) unnecessarily.

So this just moves them into a "wrapper.c" file, getting rid of a tiny bit
of unnecessary bloat. The following numbers are both with "CFLAGS=-Os":

Before:
[torvalds@woody git]$ size git
text data bss dec hex filename
700460 15160 292184 1007804 f60bc git

After:
[torvalds@woody git]$ size git
text data bss dec hex filename
670540 15160 292184 977884 eebdc git

so it saves almost 30k of text-space (it actually saves more than that
with the default -O2, but I don't think that's necessarily a very relevant
number from a "try to shrink git" standpoint).

It might conceivably have a performance impact, but none of this should be
_that_ performance critical. The real cost is not generally in the wrapper
anyway, but in the code it wraps (ie the cost of "xread()" is all in the
read itself, not in the trivial wrapping of it).

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Mon, 23 Jun 2008 01:39:37 +0000 (18:39 -0700)

Merge branch 'maint'

* maint:
Extend parse-options test suite
api-parse-options.txt: Introduce documentation for parse options API
parse-options.c: fix documentation syntax of optional arguments
api-builtin.txt: update and fix typo

Extend parse-options test suiteStephan Beyer Sun, 22 Jun 2008 15:04:26 +0000 (17:04 +0200)

Extend parse-options test suite

This patch serves two purposes:
1. test-parse-option.c should be a more complete
example for the parse-options API, and
2. there have been no tests for OPT_CALLBACK,
OPT_DATE, OPT_BIT, OPT_SET_INT and OPT_SET_PTR
before.

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

api-parse-options.txt: Introduce documentation for... Stephan Beyer Sun, 22 Jun 2008 15:04:25 +0000 (17:04 +0200)

api-parse-options.txt: Introduce documentation for parse options API

Add some documentation of basics, macros and callback
implementation of the parse-options API.

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

parse-options.c: fix documentation syntax of optional... Michele Ballabio Sun, 22 Jun 2008 14:39:04 +0000 (16:39 +0200)

parse-options.c: fix documentation syntax of optional arguments

When an argument for an option is optional, short options don't need a
space between the option and the argument, and long options need a "=".
Otherwise, arguments are misinterpreted.

Signed-off-by: Michele Ballabio <barra_cuda@katamail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

api-builtin.txt: update and fix typoStephan Beyer Sat, 21 Jun 2008 23:54:36 +0000 (01:54 +0200)

api-builtin.txt: update and fix typo

Mention NEED_WORK_TREE flag and command-list.txt.
Fix "bulit-in" typo and AsciiDoc-formatting of a paragraph.

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-rebase.sh: Add check if rebase is in progressStephan Beyer Sun, 22 Jun 2008 14:07:02 +0000 (16:07 +0200)

git-rebase.sh: Add check if rebase is in progress

"git rebase --continue" and friends gave nonsense errors when there is no
rebase in progress.

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t3404: stricter tests for git-rebase--interactiveStephan Beyer Sat, 21 Jun 2008 23:55:50 +0000 (01:55 +0200)

t3404: stricter tests for git-rebase--interactive

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

api-builtin.txt: update and fix typoStephan Beyer Sat, 21 Jun 2008 23:54:36 +0000 (01:54 +0200)

api-builtin.txt: update and fix typo

Mention NEED_WORK_TREE flag and command-list.txt.
Fix "bulit-in" typo and AsciiDoc-formatting of a paragraph.

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'rs/archive-ignore'Junio C Hamano Sun, 22 Jun 2008 21:46:11 +0000 (14:46 -0700)

Merge branch 'rs/archive-ignore'

* rs/archive-ignore:
Teach new attribute 'export-ignore' to git-archive

Merge branch 'lt/racy-empty'Junio C Hamano Sun, 22 Jun 2008 21:34:20 +0000 (14:34 -0700)

Merge branch 'lt/racy-empty'

* lt/racy-empty:
racy-git: an empty blob has a fixed object name

Merge branch 'sn/static'Junio C Hamano Sun, 22 Jun 2008 21:34:09 +0000 (14:34 -0700)

Merge branch 'sn/static'

* sn/static:
config.c: make git_env_bool() static
environment.c: remove unused function

Merge branch 'jc/maint-combine-diff-pre-context'Junio C Hamano Sun, 22 Jun 2008 21:33:56 +0000 (14:33 -0700)

Merge branch 'jc/maint-combine-diff-pre-context'

* jc/maint-combine-diff-pre-context:
diff -c/--cc: do not include uninteresting deletion before leading context

Merge branch 'lt/maint-gitdir-relative'Junio C Hamano Sun, 22 Jun 2008 21:33:53 +0000 (14:33 -0700)

Merge branch 'lt/maint-gitdir-relative'

* lt/maint-gitdir-relative:
Make git_dir a path relative to work_tree in setup_work_tree()

Merge branch 'jk/test'Junio C Hamano Sun, 22 Jun 2008 21:33:02 +0000 (14:33 -0700)

Merge branch 'jk/test'

* jk/test:
enable whitespace checking of test scripts
avoid trailing whitespace in zero-change diffstat lines
avoid whitespace on empty line in automatic usage message
mask necessary whitespace policy violations in test scripts
fix whitespace violations in test scripts

Merge branch 'pb/fast-export'Junio C Hamano Sun, 22 Jun 2008 21:32:58 +0000 (14:32 -0700)

Merge branch 'pb/fast-export'

* pb/fast-export:
builtin-fast-export: Add importing and exporting of revision marks

Merge branch 'mo/status-untracked'Junio C Hamano Sun, 22 Jun 2008 21:32:27 +0000 (14:32 -0700)

Merge branch 'mo/status-untracked'

* mo/status-untracked:
Add configuration option for default untracked files mode
Add argument 'no' commit/status option -u|--untracked-files
Add an optional <mode> argument to commit/status -u|--untracked-files option

Conflicts:

Documentation/git-commit.txt

Merge branch 'kh/update-ref'Junio C Hamano Sun, 22 Jun 2008 21:31:57 +0000 (14:31 -0700)

Merge branch 'kh/update-ref'

* kh/update-ref:
Make old sha1 optional with git update-ref -d
Clean up builtin-update-ref's option parsing

Merge branch 'jn/web'Junio C Hamano Sun, 22 Jun 2008 21:31:49 +0000 (14:31 -0700)

Merge branch 'jn/web'

* jn/web:
gitweb: Separate generating 'sort by' table header
gitweb: Separate filling list of projects info

Merge branch 'rg/gitweb'Junio C Hamano Sun, 22 Jun 2008 21:31:44 +0000 (14:31 -0700)

Merge branch 'rg/gitweb'

* rg/gitweb:
gitweb: remove git_blame and rename git_blame2 to git_blame

Windows: Use the Windows style PATH separator ';'.Johannes Sixt Mon, 3 Dec 2007 20:55:57 +0000 (21:55 +0100)

Windows: Use the Windows style PATH separator ';'.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

Add target architecture MinGW.Johannes Sixt Sat, 1 Dec 2007 20:24:59 +0000 (21:24 +0100)

Add target architecture MinGW.

With this change GIT can be compiled and linked using MinGW. Builtins
that only read the repository such as the log family and grep already
work.

Simple stubs are provided for a number of functions that the Windows C
runtime does not offer. They will be completed in later patches.
However, a fix for the snprintf/vsnprintf replacement is applied here
to avoid buffer overflows.

Dmitry Kakurin pointed out that access(..., X_OK) would always fails on
Vista and suggested the -D__USE_MINGW_ACCESS workaround.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

Compile some programs only conditionally.Johannes Sixt Sat, 1 Dec 2007 10:10:54 +0000 (11:10 +0100)

Compile some programs only conditionally.

These programs depend on difficult to emulate POSIX functionality.
On Windows, we won't compile them.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

Add compat/regex.[ch] and compat/fnmatch.[ch].Johannes Sixt Sun, 9 Dec 2007 14:43:34 +0000 (15:43 +0100)

Add compat/regex.[ch] and compat/fnmatch.[ch].

We don't have fnmatch and regular expressions on Windows. We borrow
fnmatch.[ch] from the GNU C library (license is LGPL 2 or later) and
GNU regexp (regexp.c[ch], license is GPL 2 or later). Note that regexp.c
was changed slightly to avoid warnings with gcc.

We make the addition of these files an extra commit so as not to clutter
the next commits.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>

rerere.autoupdateJunio C Hamano Sun, 22 Jun 2008 09:04:31 +0000 (02:04 -0700)

rerere.autoupdate

When this configuration is set, paths that are autoresolved by git-rerere
are updated in the index as well.

t4200: fix rerere testJunio C Hamano Sun, 22 Jun 2008 09:03:26 +0000 (02:03 -0700)

t4200: fix rerere test

The test used "diff-files -q" which is not about reporting if there is
a difference at all. Instead, make sure that the path remains as
conflicting in the index after rerere autoresolves it, as we will be
adding rerere.autoupdate configuration with the next patch.

rerere: remove dubious "tail_optimization"Junio C Hamano Sun, 22 Jun 2008 07:27:46 +0000 (00:27 -0700)

rerere: remove dubious "tail_optimization"

It is dubious if it is cheaper to shift entries repeatedly using memmove()
to collect entries that needs to be written out in front of an array than
simply marking the entries to be skipped. In addition, the label called this
"tail optimization", but this obviously is not what people usually call
with that name.

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

git-rerere: detect unparsable conflictsJunio C Hamano Sun, 22 Jun 2008 07:21:28 +0000 (00:21 -0700)

git-rerere: detect unparsable conflicts

rerere did not detect the case where <<< === >>> markers did not match.

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

rerere: rerere_created_at() and has_resolution() abstra... Junio C Hamano Sun, 22 Jun 2008 06:28:58 +0000 (23:28 -0700)

rerere: rerere_created_at() and has_resolution() abstraction

There were too many places in the code how an entry in the rerere database
looks like, and the garbage_collect() function that iterates over
subdirectories of the rr-cache directory was the worse offender.

Introduce two helper functions, rerere_created_at() and has_resolution(),
to abstract out the logic a bit better.

Incidentally this fixes a small memory leak in garbage_collect()
function. The path list to collect the entries to be pruned were defined
to strdup the paths but the caller was feeding a path after doing an extra
copy. Because the list does not have to be sorted by conflict signature
hash, we use path_list_append() instead of path_list_insert().

While we are at it, make a conflicted hunk comparision in handle_file() a
bit easier to read.

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

Correct documentation for git-push --mirrorShawn O. Pearce Sat, 21 Jun 2008 03:25:25 +0000 (23:25 -0400)

Correct documentation for git-push --mirror

This option behaves more like:

git push $url +refs/*:refs/*

than it does like:

git push $url +refs/heads/*:refs/heads/* +refs/tags/*:refs/tags/*

so we should document it to be more clear about that.

Suggested-by: Marek Zawirski <marek.zawirski@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/README: Add 'Skipping Tests' section below 'Running... Jakub Narebski Fri, 20 Jun 2008 21:10:50 +0000 (23:10 +0200)

t/README: Add 'Skipping Tests' section below 'Running Tests'

Add description of GIT_SKIP_TESTS variable, taken almost verbatim
(adjusting for conventions in t/README) from the commit message in

04ece59 (GIT_SKIP_TESTS: allow users to omit tests that are known to break)

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

Print errno upon failure to open the COMMIT_EDITMSG... Cristian Peraferrer Fri, 20 Jun 2008 15:24:20 +0000 (17:24 +0200)

Print errno upon failure to open the COMMIT_EDITMSG file

When the COMMIT_EDITMSG cannot be opened, give more information to the user
by giving the 'errno' information.

Signed-off-by: Cristian Peraferrer <corellian.c@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add target "install-html" the the top level MakefileTeemu Likonen Tue, 10 Jun 2008 08:34:25 +0000 (11:34 +0300)

Add target "install-html" the the top level Makefile

This makes it possible to install html documents from the top level
directory. Previously such target was only in Documentation/Makefile.

Signed-off-by: Teemu Likonen <tlikonen@iki.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-gui: Fix accidental staged state toggle when clicki... Richard Quirk Fri, 20 Jun 2008 14:58:15 +0000 (16:58 +0200)

git-gui: Fix accidental staged state toggle when clicking top pixel row

If a text widget is asked the index at x,y with y == 0 or y == 1 it will
always return 1.0 as the nearest index, regardless of the x position.

This means that clicking the top 2 pixels of the Unstaged/Staged Changes
lists caused the state of the file there to be toggled. This patch
checks that the pixel clicked is greater than 1, so there is less chance
of accidentally staging or unstaging changes.

Signed-off-by: Richard Quirk <richard.quirk@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

bash: Add more option completions for 'git log'Teemu Likonen Fri, 20 Jun 2008 13:02:10 +0000 (16:02 +0300)

bash: Add more option completions for 'git log'

Options added: --walk-reflogs --stat --numstat --shortstat
--decorate --diff-filter= --color-words

Signed-off-by: Teemu Likonen <tlikonen@iki.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add a helper script to send patches with Mozilla Thunde... Lukas Sandström Thu, 19 Jun 2008 23:21:33 +0000 (01:21 +0200)

Add a helper script to send patches with Mozilla Thunderbird

The script appp.sh can be used with the External Editor extension for
Mozilla Thunderbird in order to be able to send inline patches in an
easy way.

Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: standarize HTTP status codesLea Wiemann Thu, 19 Jun 2008 20:03:21 +0000 (22:03 +0200)

gitweb: standarize HTTP status codes

Many error status codes simply default to 403 Forbidden, which is not
correct in most cases. This patch makes gitweb return semantically
correct status codes.

For convenience the die_error function now only takes the status code
without reason as first parameter (e.g. 404 instead of "404 Not
Found"), and it now defaults to 500 (Internal Server Error), even
though the default is not used anywhere.

Also documented status code conventions in die_error.

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

config.c: make git_env_bool() staticしらいしななこ Wed, 18 Jun 2008 23:21:11 +0000 (08:21 +0900)

config.c: make git_env_bool() static

This function is not used by any other file.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

environment.c: remove unused functionしらいしななこ Wed, 18 Jun 2008 23:21:09 +0000 (08:21 +0900)

environment.c: remove unused function

get_refs_directory() is not used anywhere.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Make git_dir a path relative to work_tree in setup_work... Linus Torvalds Thu, 19 Jun 2008 19:34:06 +0000 (12:34 -0700)

Make git_dir a path relative to work_tree in setup_work_tree()

Once we find the absolute paths for git_dir and work_tree, we can make
git_dir a relative path since we know pwd will be work_tree. This should
save the kernel some time traversing the path to work_tree all the time
if git_dir is inside work_tree.

Daniel's patch didn't apply for me as-is, so I recreated it with some
differences, and here are the numbers from ten runs each.

There is some IO for me - probably due to more-or-less random flushing of
the journal - so the variation is bigger than I'd like, but whatever:

Before:
real 0m8.135s
real 0m7.933s
real 0m8.080s
real 0m7.954s
real 0m7.949s
real 0m8.112s
real 0m7.934s
real 0m8.059s
real 0m7.979s
real 0m8.038s

After:
real 0m7.685s
real 0m7.968s
real 0m7.703s
real 0m7.850s
real 0m7.995s
real 0m7.817s
real 0m7.963s
real 0m7.955s
real 0m7.848s
real 0m7.969s

Now, going by "best of ten" (on the assumption that the longer numbers
are all due to IO), I'm saying a 7.933s -> 7.685s reduction, and it does
seem to be outside of the noise (ie the "after" case never broke 8s, while
the "before" case did so half the time).

So looks like about 3% to me.

Doing it for a slightly smaller test-case (just the "arch" subdirectory)
gets more stable numbers probably due to not filling the journal with
metadata updates, so we have:

Before:
real 0m1.633s
real 0m1.633s
real 0m1.633s
real 0m1.632s
real 0m1.632s
real 0m1.630s
real 0m1.634s
real 0m1.631s
real 0m1.632s
real 0m1.632s

After:
real 0m1.610s
real 0m1.609s
real 0m1.610s
real 0m1.608s
real 0m1.607s
real 0m1.610s
real 0m1.609s
real 0m1.611s
real 0m1.608s
real 0m1.611s

where I'ld just take the averages and say 1.632 vs 1.610, which is just
over 1% peformance improvement.

So it's not in the noise, but it's not as big as I initially thought and
measured.

(That said, it obviously depends on how deep the working directory path is
too, and whether it is behind NFS or something else that might need to
cause more work to look up).

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

Merge branch 'maint'Junio C Hamano Thu, 19 Jun 2008 23:30:48 +0000 (16:30 -0700)

Merge branch 'maint'

* maint:
Documentation: fix formatting in git-svn
t7502-commit.sh: test_must_fail doesn't work with inline environment variables
completion: add --graph to log command completion
git-merge.sh: fix typo in usage message: sucesses --> succeeds

Documentation: fix formatting in git-svnJan Krüger Thu, 19 Jun 2008 22:41:42 +0000 (00:41 +0200)

Documentation: fix formatting in git-svn

Due to a misplaced list block separator, general hints about the config
file options got indented at the same level as the description of the last
option, making it easy to miss them.

Signed-off-by: Jan Krüger <jk@jk.gs>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t7502-commit.sh: test_must_fail doesn't work with inlin... Brandon Casey Thu, 19 Jun 2008 17:32:02 +0000 (12:32 -0500)

t7502-commit.sh: test_must_fail doesn't work with inline environment variables

When the arguments to test_must_fail() begin with a variable assignment,
test_must_fail() attempts to execute the variable assignment as a command.
This fails, and so test_must_fail returns with a successful status value
without running the command it was intended to test.

For example, the following script:

#!/bin/sh
test_must_fail () {
"$@"
test $? -gt 0 -a $? -le 129
}
foo='wo adrian'
test_must_fail foo='yo adrian' sh -c 'echo foo: $foo'

always exits zero and prints the message:

test.sh: line 3: foo=yo adrian: command not found

Test 16 calls test_must_fail in such a way and therefore has not been
testing whether git 'do[es] not fire editor in the presence of conflicts'.

A workaround is to set and export the variable in a normal way, not
using one-shot notation. Because this would affect the remainder of
the process, the test is done inside a subshell.

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

completion: add --graph to log command completionDan McGee Thu, 19 Jun 2008 21:15:53 +0000 (16:15 -0500)

completion: add --graph to log command completion

Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Move all dashed-form commands to libexecdirNguyễn Thái Ngọc Duy Wed, 28 Nov 2007 16:21:57 +0000 (23:21 +0700)

Move all dashed-form commands to libexecdir

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

Teach "git clone" to pack refsJohan Herland Sun, 15 Jun 2008 14:06:16 +0000 (16:06 +0200)

Teach "git clone" to pack refs

In repos with many refs, it is unlikely that most refs will ever change.
This fact is already exploited by "git gc" by executing "git pack-refs"
to consolidate all refs into a single file.

When cloning a repo with many refs, it does not make sense to create the
loose refs in the first place, just to have the next "git gc" consolidate
them into one file. Instead, make "git clone" create the packed refs file
immediately, and forego the loose refs completely.

Signed-off-by: Johan Herland <johan@herland.net>
Acked-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Prepare testsuite for a "git clone" that packs refsJohan Herland Sun, 15 Jun 2008 23:16:53 +0000 (01:16 +0200)

Prepare testsuite for a "git clone" that packs refs

t5515-fetch-merge-logic removes many, but not all, refs between each test.
This is done by removing the corresponding refs/foo/* files in the .git/refs
hierarchy. However, once "git clone" starts producing packed refs, these refs
will no longer be in the .git/refs hierarchy, but rather listed in
.git/packed-refs. This patch teaches t5515-fetch-merge-logic to remove the
refs using "git update-ref -d" which properly handles packed refs.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Move pack_refs() and friends into libgitJohan Herland Sun, 15 Jun 2008 14:05:06 +0000 (16:05 +0200)

Move pack_refs() and friends into libgit

This moves pack_refs() and underlying functionality into the library,
to make pack-refs functionality easily available to all git programs.

Most of builtin-pack-refs.c has been moved verbatim into a new file
pack-refs.c that is compiled into libgit.a. A corresponding header
file, pack-refs.h, has also been added, declaring pack_refs() and
the #defines associated with the flags parameter to pack_refs().

This patch introduces no other changes in functionality.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Incorporate fetched packs in future object traversalJohan Herland Sun, 15 Jun 2008 14:04:20 +0000 (16:04 +0200)

Incorporate fetched packs in future object traversal

Immediately after fetching a pack, we should call reprepare_packed_git() to
make sure the objects in the pack are reachable. Otherwise, we will fail to
look up objects that are present only in the fetched pack.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin-fast-export: Add importing and exporting of... Pieter de Bie Wed, 11 Jun 2008 11:17:04 +0000 (13:17 +0200)

builtin-fast-export: Add importing and exporting of revision marks

This adds the --import-marks and --export-marks to fast-export. These import
and export the marks used to for all revisions exported in a similar fashion
to what fast-import does. The format is the same as fast-import, so you can
create a bidirectional importer / exporter by using the same marks file on
both sides.

Signed-off-by: Pieter de Bie <pdebie@ai.rug.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git.pm: add test suiteLea Wiemann Thu, 19 Jun 2008 20:32:49 +0000 (22:32 +0200)

Git.pm: add test suite

Add a shell script (t/t9700-perl-git.sh) that sets up a git repository
and a perl script (t/t9700/test.pl) that runs the actual tests.

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/test-lib.sh: add test_external and test_external_with... Lea Wiemann Thu, 19 Jun 2008 18:18:03 +0000 (20:18 +0200)

t/test-lib.sh: add test_external and test_external_without_stderr

This is for running external test scripts in other programming
languages that provide continuous output about their tests. Using
test_expect_success (like "test_expect_success 'description' 'perl
test-script.pl'") doesn't suffice here because test_expect_success
eats stdout in non-verbose mode, which is not fixable without major
file descriptor trickery.

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

test-lib.sh: add --long-tests optionLea Wiemann Tue, 17 Jun 2008 01:29:02 +0000 (03:29 +0200)

test-lib.sh: add --long-tests option

Add a --long-tests option to test-lib.sh, which enables tests to
selectively run more exhaustive (longer running, potentially
brute-force) tests. Such exhaustive tests would only be useful if one
works on the specific module that is being tested -- for a general "cd
t/; make" to check whether everything is OK, such exhaustive tests
shouldn't be run by default since the longer it takes to run the
tests, the less often they are actually run.

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

racy-git: an empty blob has a fixed object nameLinus Torvalds Tue, 10 Jun 2008 17:44:43 +0000 (10:44 -0700)

racy-git: an empty blob has a fixed object name

We use size=0 as the magic token to say the entry is known to be racily
clean, but a sequence that does:

- update the path with a non-empty blob and write the index;
- update an unrelated path and write the index -- this smudges
the above entry;
- truncate the path to size zero.

would make both the size field for the path in the index and the size on
the filesystem zero. We should not mistake it as a clean index entry.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Remove the use of '--' in merge program invocationPatrick Higgins Mon, 16 Jun 2008 23:33:41 +0000 (17:33 -0600)

Remove the use of '--' in merge program invocation

Put a "./" at the beginning of all paths given to the merge program so
that filenames beginning with a '-' character don't get interpreted as
options.

This deals with a problem where kdiff3 can be compiled with or without
support for the '--' separator between options and filenames.

Signed-off-by: Patrick Higgins <patrick.higgins@cexp.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-merge.sh: fix typo in usage message: sucesses ... Brandon Casey Wed, 18 Jun 2008 20:16:08 +0000 (15:16 -0500)

git-merge.sh: fix typo in usage message: sucesses --> succeeds

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

diff -c/--cc: do not include uninteresting deletion... Junio C Hamano Thu, 19 Jun 2008 06:59:41 +0000 (23:59 -0700)

diff -c/--cc: do not include uninteresting deletion before leading context

When we include a few uninteresting lines before the interesting ones as
context, we are only interested in seeing the surviving lines themselves
and not the deleted lines that are before them. Mark the added leading
context lines in give_context() and not show deleted lines form them.

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

Add config option to enable 'fsync()' of object filesLinus Torvalds Wed, 18 Jun 2008 22:18:44 +0000 (15:18 -0700)

Add config option to enable 'fsync()' of object files

As explained in the documentation[*] this is totally useless on
filesystems that do ordered/journalled data writes, but it can be a
useful safety feature on filesystems like HFS+ that only journal the
metadata, not the actual file contents.

It defaults to off, although we could presumably in theory some day
auto-enable it on a per-filesystem basis.

[*] Yes, I updated the docs for the thing. Hell really _has_ frozen
over, and the four horsemen are probably just beyond the horizon.
EVERYBODY PANIC!

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Split up default "i18n" and "branch" config parsing... Linus Torvalds Wed, 18 Jun 2008 22:00:11 +0000 (15:00 -0700)

Split up default "i18n" and "branch" config parsing into helper routines

.. just to finish it off. We'll leave the pager color config alone,
since it is such an odd-ball special case anyway.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Split up default "user" config parsing into helper... Linus Torvalds Wed, 18 Jun 2008 21:40:35 +0000 (14:40 -0700)

Split up default "user" config parsing into helper routine

This follows the example of the "core" config, and splits out the
default "user" config option parsing into a helper routine.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Split up default "core" config parsing into helper... Linus Torvalds Wed, 18 Jun 2008 21:37:18 +0000 (14:37 -0700)

Split up default "core" config parsing into helper routine

It makes the code a bit easier to read, and in theory a bit faster too
(no need to compare all the different "core.*" strings against non-core
config options).

The config system really should get something of a complete overhaul,
but in the absense of that, this at least improves on it a tiny bit.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

GIT 1.5.6 v1.5.6Junio C Hamano Wed, 18 Jun 2008 20:09:43 +0000 (13:09 -0700)

GIT 1.5.6

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

clean up error conventions of remote.c:match_explicitJeff King Mon, 16 Jun 2008 16:15:02 +0000 (12:15 -0400)

clean up error conventions of remote.c:match_explicit

match_explicit is called for each push refspec to try to
fully resolve the source and destination sides of the
refspec. Currently, we look at each refspec and report
errors on both the source and the dest side before aborting.

It makes sense to report errors for each refspec, since an
error in one is independent of an error in the other.
However, reporting errors on the 'dst' side of a refspec if
there has been an error on the 'src' side does not
necessarily make sense, since the interpretation of the
'dst' side depends on the 'src' side (for example, when
creating a new unqualified remote ref, we use the same type
as the src ref).

This patch lets match_explicit return early when the src
side of the refspec is bogus. We still look at all of the
refspecs before aborting the push, though.

At the same time, we clean up the call signature, which
previously took an extra "errs" flag. This was pointless, as
we didn't act on that flag, but rather just passed it back
to the caller. Instead, we now use the more traditional
"return -1" to signal an error, and the caller aggregates
the error count.

This change fixes two bugs, as well:

- the early return avoids a segfault when passing a NULL
matched_src to guess_ref()

- the check for multiple sources pointing to a single dest
aborted if the "err" flag was set. Presumably the intent
was not to bother with the check if we had no
matched_src. However, since the err flag was passed in
from the caller, we might abort the check just because a
previous refspec had a problem, which doesn't make
sense.

In practice, this didn't matter, since due to the error
flag we end up aborting the push anyway.

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

Fix approxidate("never") to always return 0Olivier Marin Tue, 17 Jun 2008 16:34:57 +0000 (18:34 +0200)

Fix approxidate("never") to always return 0

Commit af66366a9feb0194ed04b1f538998021ece268a8 introduced the keyword
"never" to be used with approxidate() but defined it with a fixed date
without taking care of timezone. As a result approxidate() will return
a timestamp in the future with a negative timezone.

With this patch, approxidate("never") always return 0 whatever your
timezone is.

Signed-off-by: Olivier Marin <dkr@freesurf.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-am: head -1 is obsolete and doesn't work on some... Alejandro Mery Tue, 17 Jun 2008 11:43:57 +0000 (13:43 +0200)

git-am: head -1 is obsolete and doesn't work on some new systems

head -<n> was deprecated by POSIX, and as modern versions of coreutils
package don't support it at least one exports _POSIX2_VERSION=199209
it's fails on some systems.

head -n<n> is portable, but sed <n>q is even more.

Signed-off-by: Alejandro Mery <amery@geeks.cl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin-rerere: fix a small leakJunio C Hamano Tue, 17 Jun 2008 07:23:31 +0000 (00:23 -0700)

builtin-rerere: fix a small leak

The data read from MERGE_RR file is kept in path-list by hanging textual
40-byte conflict signature to path of the blob that contains the
conflict. The signature is strdup'ed twice, and the second copy is given
to the path-list, leaking the first copy.

Signed-off-by: Junio C Hamano <junio@pobox.com>
Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>

gitweb: remove unused parse_ref methodLea Wiemann Tue, 17 Jun 2008 06:25:28 +0000 (08:25 +0200)

gitweb: remove unused parse_ref method

The parse_ref method became unused in cd1464083c, but the author
decided to leave it in. Now it gets in the way of refactoring, so
let's remove it.

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: quote commands properly when calling the shellLea Wiemann Tue, 17 Jun 2008 21:46:35 +0000 (23:46 +0200)

gitweb: quote commands properly when calling the shell

This eliminates the function git_cmd_str, which was used for composing
command lines, and adds a quote_command function, which quotes all of
its arguments (as in quote.c).

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_file.c: simplify parse_pack_index()Junio C Hamano Tue, 17 Jun 2008 05:19:00 +0000 (22:19 -0700)

sha1_file.c: simplify parse_pack_index()

It was implemented as a thin wrapper around an otherwise unused
helper function parse_pack_index_file(). The code becomes simpler
and easier to read by consolidating the two.

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

create_tempfile: make sure that leading directories... Junio C Hamano Tue, 17 Jun 2008 05:02:12 +0000 (22:02 -0700)

create_tempfile: make sure that leading directories can be accessible by peers

In a shared repository, we should make sure adjust_shared_perm() is called
after creating the initial fan-out directories under objects/ directory.

Earlier an logico called the function only when mkdir() failed; we should
do so when mkdir() succeeded.

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

write_loose_object: don't bother trying to read an... Linus Torvalds Tue, 17 Jun 2008 00:17:10 +0000 (17:17 -0700)

write_loose_object: don't bother trying to read an old object

Before even calling this, all callers have done a "has_sha1_file(sha1)"
or "has_loose_object(sha1)" check, so there is no point in doing a
second check.

If something races with us on object creation, we handle that in the
final link() that moves it to the right place.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

path-list documentation: document all functions and... Miklos Vajna Sun, 15 Jun 2008 12:06:43 +0000 (14:06 +0200)

path-list documentation: document all functions and data structures

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

run-command documentation: fix "memset()" parameterMiklos Vajna Sat, 14 Jun 2008 01:01:59 +0000 (03:01 +0200)

run-command documentation: fix "memset()" parameter

When initializing the struct async and struct child_process structures,
the documentation suggested "clearing" the structure with '0' instead of
'\0'. It is enough to use integer zero here.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Tue, 17 Jun 2008 00:39:50 +0000 (17:39 -0700)

Merge branch 'maint'

* maint:
diff.c: fix emit_line() again not to add extra line

diff.c: fix emit_line() again not to add extra lineJunio C Hamano Tue, 17 Jun 2008 00:37:21 +0000 (17:37 -0700)

diff.c: fix emit_line() again not to add extra line

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

Merge branch 'maint'Junio C Hamano Mon, 16 Jun 2008 23:14:22 +0000 (16:14 -0700)

Merge branch 'maint'

* maint:
diff: reset color before printing newline

diff: reset color before printing newlineSZEDER Gábor Mon, 16 Jun 2008 22:00:02 +0000 (00:00 +0200)

diff: reset color before printing newline

It worked that way since commit 50f575fc (Tweak diff colors,
2006-06-22), but commit c1795bb0 (Unify whitespace checking, 2007-12-13)
changed it. This patch restores the old behaviour.

Besides Linus' arguments in the log message of 50f575fc, resetting color
before printing newline is also important to keep 'git add --patch'
happy. If the last line(s) of a file are removed, then that hunk will
end with a colored line. However, if the newline comes before the color
reset, then the diff output will have an additional line at the end
containing only the reset sequence. This causes trouble in
git-add--interactive.perl's parse_diff function, because @colored will
have one more element than @diff, and that last element will contain the
color reset. The elements of these arrays will then be copied to @hunk,
but only as many as the number of elements in @diff. As a result the
last color reset is lost and all subsequent terminal output will be
printed in color.

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

Make git reflog expire honour core.sharedRepository.Pierre Habouzit Sun, 15 Jun 2008 21:37:42 +0000 (23:37 +0200)

Make git reflog expire honour core.sharedRepository.

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update RPM spec to drop curl executable requirementJunio C Hamano Sun, 15 Jun 2008 20:47:14 +0000 (13:47 -0700)

Update RPM spec to drop curl executable requirement

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