Olivier Marin [Tue, 10 Jun 2008 14:51:21 +0000 (16:51 +0200)]
builtin-remote: split show_or_prune() in two separate functions
This allow us to add different features to each of them and keep the
code simple at the same time. Also create a get_remote_ref_states()
to avoid duplicated code.
Signed-off-by: Olivier Marin <dkr@freesurf.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Olivier Marin [Tue, 10 Jun 2008 14:51:08 +0000 (16:51 +0200)]
remote show: fix the -n option
The perl version accepted a -n flag, to show local informations only
without querying remote heads, that seems to have been lost in the C
revrite.
This restores the older behaviour and add a test case.
Signed-off-by: Olivier Marin <dkr@freesurf.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 9 Jun 2008 23:13:10 +0000 (16:13 -0700)]
Merge branch 'js/merge-recursive'
* js/merge-recursive:
merge-recursive: respect core.autocrlf when writing out the result
Add testcase for merging in a CRLF repo
Junio C Hamano [Mon, 9 Jun 2008 23:13:08 +0000 (16:13 -0700)]
Merge branch 'maint'
* maint:
git-read-tree: document -v option.
Remove exec bit from builtin-fast-export.c
Johannes Schindelin [Mon, 9 Jun 2008 21:23:16 +0000 (22:23 +0100)]
merge-recursive: respect core.autocrlf when writing out the result
The code forgot to convert the blob contents into work tree
representation before writing it out. Also fixes leaks -- earlier
the updated blobs were never freed.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Miklos Vajna [Mon, 9 Jun 2008 20:25:15 +0000 (22:25 +0200)]
git-read-tree: document -v option.
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Marius Storm-Olsen [Mon, 9 Jun 2008 21:22:37 +0000 (22:22 +0100)]
Add testcase for merging in a CRLF repo
If you work on a repo with core.autocrlf == true, you would expect
every text file to have CRLF EOLs. However, if you by some operation,
get a conflict, then the conflicted file has LF EOLs.
Now, of course you'd go about resolving the files conflict, and then 'git
add <file>'. When you do that, you'll get the warning saying that LF will
be replaced by CRLF. Then you commit. The end result is that you have a
workingdir with a mix of LF and CRLF files, which after some more
operations may trigger a "whole file changed" diff, due to the workingdir
file now having LF EOLs.
An LF only conflict file results in the resolved file being in LF,
the commit is in LF and a warning saying that LF will be replaced
by CRLF, and the working dir ends up with a mix of CRLF and LF files.
Signed-off-by: Marius Storm-Olsen <marius@trolltech.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Lea Wiemann [Mon, 9 Jun 2008 00:02:21 +0000 (02:02 +0200)]
cat-file --batch / --batch-check: do not exit if hashes are missing
Previously, cat-file --batch / --batch-check would silently exit if it
was passed a non-existent SHA1 on stdin. Now it prints "<SHA1>
missing" as in all other cases (and as advertised in the
documentation).
Note that cat-file --batch-check (but not --batch) will still output
"error: unable to find <SHA1>" on stderr if a non-existent SHA1 is
passed, but this does not affect parsing its stdout.
Also, type <= 0 was previously using the potentially uninitialized
type variable (relying on it being 0); it is now being initialized.
Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Lea Wiemann [Sun, 8 Jun 2008 23:03:13 +0000 (01:03 +0200)]
t1006-cat-file.sh: typo
Previously timestamps were removed unconditionally (though this didn't
seem to break this test). Now they are only removed if $no_ts is
non-empty.
Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Boyd Lynn Gerber [Sun, 8 Jun 2008 20:47:54 +0000 (14:47 -0600)]
Port to 12 other Platforms.
This patch adds support to compile and run git on 12 additional platforms.
The platforms are based on UNIX Systems Labs (USL)/Novell/SYS V code base.
The most common are Novell UnixWare 2.X.X, SCO UnixWare 7.X.X,
OpenServer 5.0.X, OpenServer 6.0.X, and SCO pre OSR 5 platforms.
Looking at the the various platform headers, I find:
#if defined(_KERNEL) || !defined(_POSIX_SOURCE) \
&& !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)
which hides u_short and other typedefs that other header files on these
platforms depend on. WIth _XOPEN_SOURCE defined, sources that include
system header files that depend on the typedefs such as u_short cannot be
compiled on these platforms.
__USLC__ indicates UNIX System Labs Corperation (USLC), or a Novell-derived
compiler and/or some SysV based OS's.
__M_UNIX indicates XENIX/SCO UNIX/OpenServer 5.0.7 and prior releases
of the SCO OS's. It is used just like Apple and BSD, both of these
shouldn't have _XOPEN_SOURCE defined.
This is with suggestions and modifications from
Daniel Barkalow, Junio C Hamano, Thomas Harning, and Jeremy Maitin-Shepard.
Signed-off-by: Boyd Lynn Gerber <gerberb@zenez.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Boyd Lynn Gerber [Sun, 8 Jun 2008 15:26:15 +0000 (09:26 -0600)]
progress.c: avoid use of dynamic-sized array
Dynamically sized arrays are gcc and C99 construct. Using them hurts
portability to older compilers, although using them is nice in this case
it is not desirable. This patch removes the only use of the construct
in stop_progress_msg(); the function is about writing out a single line
of a message, and the existing callers of this function feed messages
of only bounded size anyway, so use of dynamic array is simply overkill.
Signed-off-by: Boyd Lynn Gerber <gerberb@zenez.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stephan Beyer [Sun, 8 Jun 2008 01:36:12 +0000 (03:36 +0200)]
git-name-rev.txt: document --no-undefined and --always
Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stephan Beyer [Sun, 8 Jun 2008 01:36:11 +0000 (03:36 +0200)]
git-describe.txt: document --always
Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stephan Beyer [Sun, 8 Jun 2008 01:36:10 +0000 (03:36 +0200)]
Docs: add some long/short options
Namely:
git-clean.txt: --dry-run --quiet
git-count-objects.txt: --verbose
git-quiltimport.txt: -n
git-remote.txt: -v --verbose
Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stephan Beyer [Sun, 8 Jun 2008 01:36:09 +0000 (03:36 +0200)]
Docs: Use "-l::\n--long\n" format in OPTIONS sections
The OPTIONS section of a documentation file contains a list
of the options a git command accepts.
Currently there are several variants to describe the case that
different options (almost) do the same in the OPTIONS section.
Some are:
-f, --foo::
-f|--foo::
-f | --foo::
But AsciiDoc has the special form:
-f::
--foo::
This patch applies this form to the documentation of the whole git suite,
and removes useless em-dash prevention, so \--foo becomes --foo.
Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stephan Beyer [Sun, 8 Jun 2008 01:36:08 +0000 (03:36 +0200)]
git-commit.txt: Add missing long/short options
Also split the "-c or -C <commit>" item into two separate items.
Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Pieter de Bie [Sat, 7 Jun 2008 13:34:36 +0000 (15:34 +0200)]
git-send-email: allow whitespace in addressee list
When interactively supplying addresses to send an email to with
send-email, whitespace after the separation comma (as in 'list, jc')
wasn't ignored. This meant that resolving of the alias ' jc' would
fail, sending an email only to list. With this patch, the optional
trailing whitespace is ignored.
Signed-off-by: Pieter de Bie <pdebie@ai.rug.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ask Bjørn Hansen [Sat, 7 Jun 2008 07:33:42 +0000 (00:33 -0700)]
send-email: Allow the envelope sender to be set via configuration
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ask Bjørn Hansen [Sat, 7 Jun 2008 07:19:26 +0000 (00:19 -0700)]
gitweb setup instruction: rewrite HEAD and root as well
Also add a few more hints for how to setup and configure gitweb as described
[jc: with a fix from Mike Hommey]
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stephan Beyer [Sat, 7 Jun 2008 11:06:45 +0000 (13:06 +0200)]
git-commit.txt: Correct option alternatives
This patch fixes the SYNOPSIS in git-commit.txt:
* --amend could be used in conjunction with -c/-C/-F/-m;
it is not mutually exclusive with them.
* -m and -F are not alternative options to -c/-C;
you can reuse authorship from a commit (-c/-C)
but change the message (-m/-F).
Furthermore, for long-option consistency --author <author>
is changed to --author=<author>.
Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Miklos Vajna [Sat, 7 Jun 2008 16:20:19 +0000 (18:20 +0200)]
git-rebase -i: mention the short command aliases in the todo list
git rebase -i already supports 'p', 'e' and 's' as aliases for 'pick',
'edit' and 'squash', but one could know it only by reading the source
code. If a user rebases a lot, it's quite handy, so mention these short
forms as well.
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Miklos Vajna [Sat, 7 Jun 2008 20:38:37 +0000 (22:38 +0200)]
Remove unused code in parse_commit_buffer()
The n_refs variable is no longer really used in this function, so there
is no reason to keep it.
It was introduced in
27dedf0c and the code that really used it was
removed in
7914053.
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sat, 7 Jun 2008 18:39:20 +0000 (11:39 -0700)]
http-push.c: remove duplicated code
An earlier commit
aa1dbc9 (Update http-push functionality, 2006-03-07)
borrowed some code from rev-list.c.
This copy and paste made sense back then, because mark_edges_uninteresting(),
and its helper mark_edge_parents_uninteresting(), accessed a file scope
static variable "revs" in rev-list.c, and http-push.c did not have nor care
about such a variable.
But these days they are already properly libified and live in list-objects.c
and they take "revs" as as an argument. Make use of them and lose 20 or
so lines.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johannes Sixt [Sun, 8 Jun 2008 14:40:13 +0000 (16:40 +0200)]
Remove exec bit from builtin-fast-export.c
Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johannes Sixt [Sun, 8 Jun 2008 14:34:40 +0000 (16:34 +0200)]
make_nonrelative_path: Use is_absolute_path()
This helps porting to Windows.
Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sat, 7 Jun 2008 20:05:34 +0000 (13:05 -0700)]
GIT 1.5.6-rc2
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sat, 7 Jun 2008 20:01:14 +0000 (13:01 -0700)]
Merge 1.5.5.4 in
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sat, 7 Jun 2008 18:45:48 +0000 (11:45 -0700)]
GIT 1.5.5.4
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Adam Simpkins [Thu, 5 Jun 2008 09:28:13 +0000 (02:28 -0700)]
git log --graph: print '*' for all commits, including merges
Previously, merge commits were printed with 'M' instead of '*'. This
had the potential to confuse users when not all parents of the merge
commit were included in the log output.
As Junio has pointed out, merge commits can almost always be easily
identified from the log message, anyway.
Signed-off-by: Adam Simpkins <adam@adamsimpkins.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Daniel Barkalow [Fri, 6 Jun 2008 03:15:19 +0000 (23:15 -0400)]
Use nonrelative paths instead of absolute paths for cloned repositories
Particularly for the "alternates" file, if one will be created, we
want a path that doesn't depend on the current directory, but we want
to retain any symlinks in the path as given and any in the user's view
of the current directory when the path was given.
Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Christian Couder [Fri, 6 Jun 2008 07:07:32 +0000 (09:07 +0200)]
documentation: move git(7) to git(1)
As the "git" man page describes the "git" command at the end-user
level, it seems better to move it to man section 1.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Christian Couder [Fri, 6 Jun 2008 07:07:28 +0000 (09:07 +0200)]
documentation: convert "diffcore" and "repository-layout" to man pages
This patch renames the following documents and at the same time converts
them to the man format:
diffcore.txt -> gitdiffcore.txt (man section 7)
repository-layout.txt -> gitrepository-layout.txt (man section 5)
Other documents that reference the above ones are changed accordingly.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Adam Simpkins [Thu, 5 Jun 2008 08:56:19 +0000 (01:56 -0700)]
graph API: fix "git log --graph --first-parent"
This change teaches the graph API that only the first parent of each
commit is interesting when "--first-parent" was specified.
This change also consolidates the graph parent walking logic into two
new internal functions, first_interesting_parent() and
next_interesting_parent(). A simpler fix would have been to simply
break at the end of the 2 existing for loops when
graph->revs->first_parent_only is set. However, this change seems
nicer, especially if we ever need to add any new loops over the parent
list in the future.
Signed-off-by: Adam Simpkins <adam@adamsimpkins.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Teemu Likonen [Thu, 5 Jun 2008 21:15:36 +0000 (00:15 +0300)]
Print info about "git help COMMAND" on git's main usage pages
Git's main usage pages did not show "git help" as a way to get more
information on a specific subcommand. This patch adds an info line after
the list of git commands currently printed by "git", "git help", "git
--help" and "git help --all".
Signed-off-by: Teemu Likonen <tlikonen@iki.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 6 Jun 2008 16:21:48 +0000 (09:21 -0700)]
Merge branch 'maint'
* maint:
git-for-each-ref.txt: minor improvements
name-rev: Fix segmentation fault when using --all
Lea Wiemann [Thu, 5 Jun 2008 21:01:38 +0000 (23:01 +0200)]
git-for-each-ref.txt: minor improvements
Rewrapped synopsis and removed wrong asterisk behind --count option;
clarified --sort=<key> description for multiple keys; documented that
for-each-ref supports not only glob patterns but also prefixes like
"refs/heads" as patterns, and that multiple patterns can be given.
Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Björn Steinbrink [Thu, 5 Jun 2008 23:31:55 +0000 (01:31 +0200)]
name-rev: Fix segmentation fault when using --all
In commit
da2478db "describe --always: fall back to showing an
abbreviated object name" we lost the check that skips empty entries in
the object hash table when iterating over it in cmd_name_rev. That may
cause a NULL pointer being handed to show_name(), leading to a
segmentation fault. So add that check back again.
Signed-off-by: Björn Steinbrink <B.Steinbrink@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jakub Narebski [Tue, 3 Jun 2008 14:47:10 +0000 (16:47 +0200)]
gitweb: Add charset info to "raw" output of 'text/plain' blobs
Earlier "blob_plain" view sent "charset=utf-8" only when gitweb
guessed the content type to be text by reading from it, and not when
the MIME type was obtained from /etc/mime.types, or when gitweb
couldn't guess mimetype and used $default_blob_plain_mimetype.
This fixes the bug by always add charset info from
$default_text_plain_charset (if it is defined) to "raw" (a=blob_plain)
output for 'text/plain' blobs.
Generating information for Content-Type: header got separated into
blob_contenttype() subroutine; adding charset info in a special case
was removed from blob_mimetype(), which now should return mimetype
only.
While at it cleanup code a bit: put subroutine parameter
initialization first, make error message more robust (when $file_name
is not defined) if more cryptic, remove unnecessary '"' around
variable ("$var" -> $var).
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Miklos Vajna [Wed, 4 Jun 2008 21:20:05 +0000 (23:20 +0200)]
Strbuf documentation: document most functions
All functions in strbuf.h are documented, except launch_editor().
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Dirk Suesserott [Wed, 4 Jun 2008 20:50:31 +0000 (22:50 +0200)]
Documentation/git-mailsplit: Enhanced description of -o option
Added '-o' in the description of '-o<directory>' for consistency reasons.
Signed-off-by: Dirk Suesserott <newsletter@dirk.my1.cc>
Jeff King [Wed, 4 Jun 2008 18:38:58 +0000 (14:38 -0400)]
Fix "git clone $URL" to check out the worktree when asked
The builtin-clone now does the http commit walking and the tree unpacking
in the same process, and the commit walker leaves the in-core objects in a
funny state. When forgetting the data read from the tree object, the
object should be marked "not parsed yet" for later users.
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 4 Jun 2008 20:15:59 +0000 (13:15 -0700)]
Merge branch 'maint'
* maint:
describe: match pattern for lightweight tags too
Michael Dressel [Wed, 4 Jun 2008 19:06:31 +0000 (21:06 +0200)]
describe: match pattern for lightweight tags too
The <pattern> given "git describe --match" was used only to filter tag
objects, and not to filter lightweight tags. This fixes it.
[jc: made the log to clarify this is a bugfix, not an enhancement, with
additional test]
Signed-off-by: Michael Dressel <MichaelTiloDressel@t-online.de>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 4 Jun 2008 19:10:01 +0000 (12:10 -0700)]
t7502: honor SHELL_PATH
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 4 Jun 2008 06:56:56 +0000 (23:56 -0700)]
Documentation: git-log cannot use rev-list specific options
The log family and git-rev-list share the same set of options that come
from revision walking machinery, but they both have options unique to
them. Notably, --header, --timestamp, --stdin and --quiet apply only to
rev-list. Exclude them from the git-log documentation.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Alex Riesen [Tue, 3 Jun 2008 22:16:26 +0000 (00:16 +0200)]
Fix t5516 on cygwin: it does not like double slashes at the beginning of a path
The double slashes "//" result from url./$TRASH/. expansion and the
current directory, which even in cygwin contains "/" as first
character. In cygwin such strings have special meaning: UNC path.
Accessing an UNC path built for test purpose usually fails.
Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 4 Jun 2008 01:10:08 +0000 (18:10 -0700)]
t7502: tighten loosely written test sequence
We would like to catch breakage at any step in the sequence.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 4 Jun 2008 01:08:08 +0000 (18:08 -0700)]
t7502: do not globally unset GIT_COMMITTER_* environment variables
One particular test wants to check the behaviour of the command
when these variables are not set, but the later tests should have
the reliable committer identity for repeatable tests.
Move the "unset" of the variables inside a subshell in the test
that wants to unset them.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Lea Wiemann [Tue, 3 Jun 2008 18:34:17 +0000 (20:34 +0200)]
cat-file --batch: flush stdout also when objects are missing
cat-file --batch/--batch-check only flushes stdout when the object
exists, but not when it doesn't ("<object> missing"). This makes
bidirectional pipes hang.
Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 3 Jun 2008 07:17:22 +0000 (00:17 -0700)]
GIT v1.5.6-rc1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 3 Jun 2008 05:17:42 +0000 (22:17 -0700)]
commit: drop duplicated parents
The scripted version of git-commit internally used git-commit-tree which
omitted duplicated parents given from the command line. This prevented a
nonsensical octopus merge from getting created even when you said "git
merge A B" while you are already on branch A.
However, when git-commit was rewritten in C, this sanity check was lost.
This resurrects it.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johannes Sixt [Mon, 2 Jun 2008 14:01:40 +0000 (16:01 +0200)]
rebase --interactive: Compute upstream SHA1 before switching branches
If the upstream argument to rebase (the first argument) was relative to
HEAD and the name of the branch to rebase (the second argument) was given,
the upstream would have been interpreted relative to the second argument.
In particular, this command
git rebase -i HEAD topic
would always finish with "Nothing to do". (
a1bf91e fixed the same issue
for non-interactive rebase.)
Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Kevin Ballard [Fri, 30 May 2008 21:43:40 +0000 (14:43 -0700)]
Documentation/git-filter-branch.txt: Fix description of --commit-filter
The old description was misleading and logically impossible. It claimed that
the ancestors of the original commit would be re-written to have the multiple
emitted ids as parents. Not only would this modify existing objects, but it
would create a cycle. What this actually does is pass the multiple emitted ids
to the newly-created children to use as parents.
Signed-off-by: Kevin Ballard <kevin@sb.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jakub Narebski [Mon, 2 Jun 2008 09:54:41 +0000 (11:54 +0200)]
gitweb: Fix "next" link on bottom of page
Fix search form generation to not modify $cgi->param(...)'s.
In git_header_html() we used to use $cgi->hidden(-name => "a") etc. to
generate hidden fields; unfortunately to use this form it is required
to modify $cgi->param("a") etc., which makes href(-replay,...) use
wrong replay values. This for example made the "next" link on the
bottom of the page has a=search instead of a=$action, and thus fails to
get you to the next page.
Because in CGI the value of a hidden field is "sticky", there is no
way to modify it short of modifying $cgi->param(...). Therefore it
got replaced by generating <input type="hidden" ...> element [semi]
directly.
Alternate solution would be for href(-replay,...) to use values saved
in global variables, such as $action etc., instead of (re)reading them
from $cgi->param($symbol).
The bad link was reported by Kai Blin through
http://bugs.debian.org/481902
Reported-by: Kai Blin <kai.blin@gmail.com>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Tested-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Karl Hasselström [Mon, 2 Jun 2008 22:41:44 +0000 (00:41 +0200)]
Revert "git.el: Set process-environment instead of invoking env"
This reverts commit
dbe48256b41c1e94d81f2458d7e84b1fdcb47026, which
caused mis-encoding of non-ASCII author/committer names when the
git-status mode is used to create commits.
Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 2 Jun 2008 06:45:41 +0000 (23:45 -0700)]
Merge branch 'sb/am-tests'
* sb/am-tests:
Merge t4150-am-subdir.sh and t4151-am.sh into t4150-am.sh
Add test cases for git-am
Junio C Hamano [Mon, 2 Jun 2008 06:45:37 +0000 (23:45 -0700)]
Merge branch 'lw/test-fix'
* lw/test-fix:
t/test-lib.sh: resolve symlinks in working directory, for pathname comparisons
Junio C Hamano [Mon, 2 Jun 2008 06:43:30 +0000 (23:43 -0700)]
Merge branch 'sp/remote'
* sp/remote:
Make "git-remote rm" delete refs acccording to fetch specs
Make "git-remote prune" delete refs according to fetch specs
Remove unused remote_prefix member in builtin-remote
Junio C Hamano [Mon, 2 Jun 2008 06:43:21 +0000 (23:43 -0700)]
Merge branch 'lt/pack-sync'
* lt/pack-sync:
Remove now unnecessary 'sync()' calls
Make pack creation always fsync() the result
Junio C Hamano [Mon, 2 Jun 2008 06:39:24 +0000 (23:39 -0700)]
Merge branch 'np/pack-check'
* np/pack-check:
make verify-pack a bit more useful with bad packs
Nicolas Pitre [Thu, 29 May 2008 21:34:50 +0000 (17:34 -0400)]
make verify-pack a bit more useful with bad packs
When a pack gets corrupted, its SHA1 checksum will fail. However, this
is more useful to let the test go on in order to find the actual
problem location than only complain about the SHA1 mismatch and
bail out.
Also, it is more useful to compare the stored pack SHA1 with the one in
the index file instead of the computed SHA1 since the computed SHA1
from a corrupted pack won't match the one stored in the index either.
Finally a few code and message cleanups were thrown in as a bonus.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 2 Jun 2008 06:14:11 +0000 (23:14 -0700)]
Merge branch 'jb/reset-q'
* jb/reset-q:
git-reset: honor -q and do not show progress message
Junio C Hamano [Mon, 2 Jun 2008 05:55:33 +0000 (22:55 -0700)]
Merge branch 'jc/checkout'
* 'jc/checkout':
checkout: "best effort" checkout
unpack_trees(): allow callers to differentiate worktree errors from merge errors
checkout: consolidate reset_{to_new,clean_to_new}()
checkout: make reset_clean_to_new() not die by itself
Junio C Hamano [Mon, 2 Jun 2008 05:54:16 +0000 (22:54 -0700)]
Merge branch 'lr/init-bare'
* lr/init-bare:
git-init: accept --bare option
Lea Wiemann [Sun, 1 Jun 2008 20:34:47 +0000 (22:34 +0200)]
Git.pm: fix return value of config method
If config is called in array context, it is supposed to return all
values set for the given option key. This works for all cases except
if there is no value set at all. In that case, it wrongly returns
(undef) instead of (). This fixes the return statement so that it
returns undef in scalar context but an empty array in array context.
Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Lea Wiemann [Sun, 1 Jun 2008 18:15:33 +0000 (20:15 +0200)]
glossary: improve a few links
They now point to more specific/appropriate targets.
Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Christian Couder [Thu, 29 May 2008 17:21:46 +0000 (19:21 +0200)]
Documentation: convert "glossary" and "core-tutorial" to man pages
This patch renames the following documents and at the same time converts
them to the man format:
core-tutorial.txt -> gitcore-tutorial.txt
glossary.txt -> gitglossary.txt
But as the glossary is included in the user manual and as the new
gitglossary man page cannot be included as a whole in the user manual,
the actual glossary content is now in its own "glossary-content.txt"
new file. And this file is included by both the user manual and the
gitglossary man page.
Other documents that reference the above ones are changed accordingly
and sometimes improved a little too.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Lea Wiemann [Sun, 1 Jun 2008 20:26:25 +0000 (22:26 +0200)]
Git.pm: fix documentation of hash_object
The documentation of hash_object incorrectly states that it accepts a
file handle -- in fact it doesn't, and there is even a TODO comment
for this. This fixes the documentation.
Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Adam Simpkins [Sun, 1 Jun 2008 20:56:58 +0000 (13:56 -0700)]
graph API: avoid printing unnecessary padding before some octopus merges
When an octopus merge is printed, several lines are printed before it to
move over existing branch lines to its right. This is needed to make
room for the children of the octopus merge. For example:
| | | |
| | \ \
| | \ \
| | \ \
| M---. \ \
| |\ \ \ \ \
However, this step isn't necessary if there are no branch lines to the
right of the octopus merge. Therefore, skip this step when it is not
needed, to avoid printing extra lines that don't really serve any
purpose.
Signed-off-by: Adam Simpkins <adam@adamsimpkins.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Adam Simpkins [Sun, 1 Jun 2008 20:56:57 +0000 (13:56 -0700)]
graph API: improve display of merge commits
This change improves the way merge commits are displayed, to eliminate a
few visual artifacts. Previously, merge commits were displayed as:
| M \
| |\ |
As pointed out by Teemu Likonen, this didn't look nice if the rightmost
branch line was displayed as '\' on the previous line, as it then
appeared to have an extra space in it:
| |\
| M \
| |\ |
This change updates the code so that branch lines to the right of merge
commits are printed slightly differently depending on how the previous
line was displayed:
| |\ | | | | | /
| M \ | M | | M |
| |\ \ | |\ \ | |\ \
Signed-off-by: Adam Simpkins <adam@adamsimpkins.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Christian Engwer [Tue, 27 May 2008 08:46:55 +0000 (08:46 +0000)]
git-svn fails in prop_walk if $self->{path} is not empty
If url://repo/trunk is the current Git branch, prop_walk strips trunk
from the path name. That is useful as, for example "git svn show-ignore"
should not return results like
trunk/foo
but
foo
if svn:ignore for trunk includes foo.
The problem now is that prop_walk strips trunk from the path and then
calls itself recursively. But now trunk is missing in the path and
get_dir fails, because it is called for a non existing path.
The attached patch fixed the problem, by adding the previously stipped
$self->{path} in the recursive call. I tested it with my current
git-svn repository for the commands show-ignore and show-external.
Patch was submitted through
http://bugs.debian.org/477393
Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Seth Falcon [Tue, 20 May 2008 03:29:17 +0000 (20:29 -0700)]
Add a --dry-run option to git-svn rebase
When working with multiple branches in an svn repository, it can be
useful to verify the svn repository and local tracking branch that will
be used for the rebase operation.
Signed-off-by: Seth Falcon <seth@userprimary.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Karl Hasselström [Sat, 17 May 2008 15:07:09 +0000 (17:07 +0200)]
Fix path duplication in git svn commit-diff
Given an SVN repo file:///tmp/svntest/repo, trying to commit changes
to a file proj/trunk/foo.txt in that repo with this command line
git svn commit-diff -r2 HEAD^ HEAD file:///tmp/svntest/repo/proj/trunk
gave the error message
Filesystem has no item: File not found: transaction '2-6', path
'/proj/trunk/proj/trunk/foo.txt'
This fixes the duplication.
Signed-off-by: Karl Hasselström <kha@treskal.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Shawn O. Pearce [Sun, 1 Jun 2008 04:28:04 +0000 (00:28 -0400)]
Make "git-remote rm" delete refs acccording to fetch specs
A remote may be configured to fetch into tracking branches that
don't match its name. A user may have created a remote by hand
that will fetch to a different tracking branch namespace:
[remote "alt"]
url = git://repo.or.cz/alt-git.git
fetch = refs/heads/*:refs/remotes/origin/*
When deleting remote alt we should clean up the refs whose names
start with "refs/remotes/origin/", even though the remote itself
was named alt by the user.
To avoid deleting refs used by another remote we only clear refs
that are unique to this remote. This prevents `git prune rm alt`
from removing the refs used by say origin if alt was just using a
different URL for the same repository.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Shawn O. Pearce [Sun, 1 Jun 2008 03:58:05 +0000 (23:58 -0400)]
Make "git-remote prune" delete refs according to fetch specs
A remote may be configured to fetch into tracking branches that
do not match the remote name. For example a user may have created
extra remotes that will fetch to the same tracking branch namespace,
but from different URLs:
[remote "origin"]
url = git://git.kernel.org/pub/scm/git/git.git
fetch = refs/heads/*:refs/remotes/origin/*
[remote "alt"]
url = git://repo.or.cz/alt-git.git
fetch = refs/heads/*:refs/remotes/origin/*
When running `git remote prune alt` we expect stale branches to
be removed from "refs/remotes/origin/*" and not from the unused
namespace of "refs/remotes/alt/*".
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Shawn O. Pearce [Sun, 1 Jun 2008 03:57:48 +0000 (23:57 -0400)]
Remove unused remote_prefix member in builtin-remote
Not sure when this became unused, but no code references it,
other than to populate the strbuf with an initial value.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Lea Wiemann [Sat, 31 May 2008 21:11:21 +0000 (23:11 +0200)]
t/test-lib.sh: resolve symlinks in working directory, for pathname comparisons
Without this, some tests will fail because they compare command output
of subprocesses (such as git) with $PWD -- but subprocesses have the
physical path as their working directory, whereas $PWD contains the
symlinked path. This fixes it.
Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jamis Buck [Sun, 1 Jun 2008 01:10:58 +0000 (18:10 -0700)]
git-reset: honor -q and do not show progress message
When running git-reset in a non-interactive setting, the -q switch
works for everything except the progress updates. This squelches it.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stephan Beyer [Sat, 31 May 2008 22:11:43 +0000 (00:11 +0200)]
Merge t4150-am-subdir.sh and t4151-am.sh into t4150-am.sh
This patch moves the am test cases in t4150-am.sh and the
am subdirectory test cases from t/t4150-am-subdir.sh into
t/4151-am.sh.
Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stephan Beyer [Sat, 31 May 2008 22:11:42 +0000 (00:11 +0200)]
Add test cases for git-am
Add t/t4151-am.sh that does basic testing of git-am functionality,
including:
* am applies patch correctly
* am changes committer and keeps author
* am --signoff adds Signed-off-by: line
* am stays in branch
* am --signoff does not add Signed-off-by: line if already there
* am without --keep removes Re: and [PATCH] stuff
* am --keep really keeps the subject
* am -3 falls back to 3-way merge
* am pauses on conflict
* am --skip works
* am --resolved works
* am takes patches from a Pine mailbox
* am fails on mail without patch
* am fails on empty patch
Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Linus Torvalds [Fri, 30 May 2008 15:54:46 +0000 (08:54 -0700)]
Remove now unnecessary 'sync()' calls
Since the pack-files are now always created stably on disk, there is no
need to sync() before pruning lose objects or old stale pack-files.
[jc: with Nico's clean-up]
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Linus Torvalds [Fri, 30 May 2008 15:42:16 +0000 (08:42 -0700)]
Make pack creation always fsync() the result
This means that we can depend on packs always being stable on disk,
simplifying a lot of the object serialization worries. And unlike loose
objects, serializing pack creation IO isn't going to be a performance
killer.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
John J. Franey [Thu, 29 May 2008 17:32:31 +0000 (13:32 -0400)]
Clarify description of <repository> argument to pull/fetch for naming remotes.
Alter the description of <repository> in OPTIONS section to
explicitly state that a 'remote name' is accepted.
Rewrite REMOTES section to more directly identify the
different kinds of remote-name permitted.
Signed-off-by: John J. Franey <jjfraney@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Paolo Bonzini [Thu, 29 May 2008 14:55:53 +0000 (16:55 +0200)]
rollback lock files on more signals than just SIGINT
Other signals are also common, for example SIGTERM and SIGHUP.
This patch modifies the lock file mechanism to catch more signals.
It also modifies http-push.c which was missing SIGTERM.
Signed-off-by: Paolo Bonzini <bonzini@gnu.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Miklos Vajna [Sat, 31 May 2008 00:18:08 +0000 (02:18 +0200)]
Revision walking documentation: document most important functions
Unfortunately the list is not complete, but includes the essential ones.
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jakub Narebski [Sat, 31 May 2008 18:28:18 +0000 (20:28 +0200)]
gitweb: Remove gitweb/test/ directory
Testing if gitweb handles filenames with spaces, filenames with plus
sign ('+') which encodes spaces in CGI parameters (in URLs), and
filenames with Unicode characters should be handled by gitweb tests.
Those files are remainder of the time when gitweb was project on its
own, not a part of git (with its testsuite).
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Marius Storm-Olsen [Fri, 30 May 2008 12:38:35 +0000 (14:38 +0200)]
Add shortcut in refresh_cache_ent() for marked entries.
When a cache entry has been marked as CE_VALID, the user has
promised us that any change in the work tree does not matter.
Just mark the entry as up-to-date, and continue.
Signed-off-by: Marius Storm-Olsen <marius@trolltech.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Marius Storm-Olsen [Fri, 30 May 2008 11:14:24 +0000 (13:14 +0200)]
Clearify the documentation for core.ignoreStat
The previous documentation didn't make it clear that the
"assume unchanged" was on per file basis, and not a global
flag.
Signed-off-by: Marius Storm-Olsen <marius@trolltech.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 28 May 2008 22:26:59 +0000 (15:26 -0700)]
checkout: "best effort" checkout
When unpack_trees() returned an error while switching branches, we used to
stop right there, exiting without writing the index out or switching HEAD.
This is Ok when unpack_trees() returned an error because it detected
untracked files or locally modified paths that could be overwritten by
branch switching, because that error return is done before we start to
modify the work tree. But it is undesirable if unpack_trees() already
started to update the work tree and a failure is returned because some but
not all paths are updated in the work tree, perhaps because a directory
that some files need to go in was read-only by mistake, or a file that
will be overwritten by branch switching had a mandatory lock on it and we
failed to unlink it.
This changes the behaviour upon such an error to complete the branch
switching; the files updated in the work tree will hopefully be much more
consistent with the index and HEAD derived from the switched-to branch.
We still issue error messages, and exit the command with non-zero status,
so scripted callers need to notice it.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 28 May 2008 22:12:30 +0000 (15:12 -0700)]
unpack_trees(): allow callers to differentiate worktree errors from merge errors
Instead of uniformly returning -1 on any error, this teaches
unpack_trees() to return -2 when the merge itself is Ok but worktree
refuses to get updated.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 28 May 2008 21:59:40 +0000 (14:59 -0700)]
checkout: consolidate reset_{to_new,clean_to_new}()
These two were very similar functions with only tiny bit of difference.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Luciano Rocha [Wed, 28 May 2008 18:53:57 +0000 (19:53 +0100)]
git-init: accept --bare option
It is unfortunate that "git init --bare" does not work and the only reason
why "init" did not learn its own "--bare" option is because "git --bare
init" already does the job (and as an option to the git 'potty', it is
more generic solution).
This teaches "git init" its own "--bare" option, so that both "git --bare init"
and "git init --bare" works mostly the same way.
[jc: rewrote the log message and added test]
Signed-off-by: Luciano Rocha <strange@nsk.pt>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 28 May 2008 21:54:02 +0000 (14:54 -0700)]
checkout: make reset_clean_to_new() not die by itself
Instead, have its error percolate up through the callchain and let it be
the exit status of the main command. No semantic changes yet.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 28 May 2008 21:48:57 +0000 (14:48 -0700)]
"git checkout -- paths..." should error out when paths cannot be written
When "git checkout -- paths..." cannot update work tree for whatever
reason, checkout_entry() correctly issued an error message for the path to
the end user, but the command ignored the error, causing the entire
command to succeed. This fixes it.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 29 May 2008 00:03:46 +0000 (17:03 -0700)]
Documentation: git-cherry uses git-patch-id
Geoffrey Irving noticed that git-cherry talks about comparing commits without
hinting how they are compared.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 28 May 2008 23:55:27 +0000 (16:55 -0700)]
Manual subsection to refer to other pages is SEE ALSO
Consistently say so in all caps as it is customary to do so.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Christian Couder [Wed, 28 May 2008 16:57:02 +0000 (18:57 +0200)]
bisect: use "$GIT_DIR/BISECT_START" to check if we are bisecting
It seems simpler and safer to use the BISECT_START file everywhere
to decide if we are bisecting or not, instead of using it in some
places and BISECT_NAMES in other places.
In commit
6459c7c6786aa9bda0c7a095c9db66c36da0e5f0 (Nov 18 2007,
Bisect: use "$GIT_DIR/BISECT_NAMES" to check if we are bisecting.),
we decided to use BISECT_NAMES but code changed a lot and we now
have to check BISECT_START first in the "bisect_start" function
anyway.
This patch also makes things a little bit safer by creating
the BISECT_START file first and deleting it last, and also by
adding checks in "bisect_clean_state".
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Dmitry V. Levin [Wed, 28 May 2008 15:29:36 +0000 (19:29 +0400)]
builtin-fetch.c (store_updated_refs): Honor update_local_ref() return value
Sync with builtin-fetch--tool.c where append_fetch_head()
honors update_local_ref() return value.
This fixes non fast forward fetch exit status,
http://bugzilla.altlinux.org/show_bug.cgi?id=15037
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 28 May 2008 16:47:43 +0000 (09:47 -0700)]
fix sha1_pack_index_name()
An earlier commit
633f43e (Remove redundant code, eliminate one static
variable, 2008-05-24) had a thinko (perhaps an eyeno) that broke
sha1_pack_index_name() function. One symptom of this was that the http
walker is now completely broken.
This should fix it.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 28 May 2008 06:33:22 +0000 (23:33 -0700)]
Git::cat_blob: allow using an empty blob to fix git-svn breakage
Recent "git-svn optimization" series introduced Git::cat_blob() subroutine
whose interface was broken in that it returned the size of the blob but
signalled an error by returning 0. You can never use an empty blob with
such an interface.
This fixes the interface to return a negative value to signal an error.
Reported by Björn Steinbrink.
Signed-off-by: Junio C Hamano <gitster@pobox.com>