Simon Hausmann [Thu, 17 May 2007 17:44:50 +0000 (19:44 +0200)]
Removed cleantags command. It doesn't have any meaning anymore.
Signed-off-by: Simon Hausmann <redacted>
Simon Hausmann [Thu, 17 May 2007 07:13:54 +0000 (09:13 +0200)]
Clean up code duplication for revision parsing and fix previous commit to not
import into remotes/p4 (yet!).
Signed-off-by: Simon Hausmann <redacted>
Simon Hausmann [Thu, 17 May 2007 07:02:45 +0000 (09:02 +0200)]
Always pass a sha1 for the initial parent so that git-fast-import doesn't think
it's creating a new branch from itself. It's a sensible error in general but
in the case of incremental imports we have to apply force :)
Signed-off-by: Simon Hausmann <redacted>
Simon Hausmann [Thu, 17 May 2007 05:42:38 +0000 (07:42 +0200)]
Fixing syncing (gitdir discovery / cd) for bare repositories
Signed-off-by: Simon Hausmann <redacted>
Michael Hendricks [Thu, 17 May 2007 05:15:16 +0000 (23:15 -0600)]
git-send-email: allow leading white space on mutt aliases
mutt version 1.5.14 (perhaps earlier versions too) permits alias files to have
white space before the 'alias' keyword.
Signed-off-by: Michael Hendricks <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Thu, 17 May 2007 04:04:16 +0000 (21:04 -0700)]
gitweb: fix another use of undefined value
Pasky and Jakub competed fixing these and in the confusion this ended up
not being covered.
Signed-off-by: Junio C Hamano <redacted>
Johannes Schindelin [Thu, 10 May 2007 10:36:15 +0000 (12:36 +0200)]
Add a birdview-on-the-source-code section to the user manual
In http://thread.gmane.org/gmane.comp.version-control.git/42479,
a birdview on the source code was requested.
J. Bruce Fields suggested that my reply should be included in the
user manual, and there was nothing of an outcry, so here it is,
not 2 months later.
It includes modifications as suggested by J. Bruce Fields, Karl
Hasselström and Daniel Barkalow.
Signed-off-by: Johannes Schindelin <redacted>
Jakub Narebski [Wed, 16 May 2007 22:05:55 +0000 (00:05 +0200)]
gitweb: Empty patch for merge means trivial merge, not no differences
Earlier commit
4280cde95fa4e3fb012eb6d0c239a7777baaf60c made gitweb
show "No differences found" message for empty diff, for the HTML
output. But for merge commits, either -c format we use or --cc format,
empty diff doesn't mean no differences, but trivial merge.
Show "Trivial merge" message instead of "No differences found" for
merges.
While at it reword conditional in the code for easier reading.
Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
Michael S. Tsirkin [Wed, 16 May 2007 17:09:41 +0000 (20:09 +0300)]
connect: display connection progress
Make git notify the user about host resolution/connection attempts.
This is useful both as a progress indicator on slow links, and helps
reassure the user there are no firewall problems.
Signed-off-by: Michael S. Tsirkin <redacted>
Acked-by: Linus Torvalds <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Wed, 16 May 2007 19:43:05 +0000 (12:43 -0700)]
Merge branch 'maint'
* maint:
format-patch: add MIME-Version header when we add content-type.
Fixed link in user-manual
import-tars: Use the "Link indicator" to identify directories
git name-rev writes beyond the end of malloc() with large generations
Documentation/branch: fix small typo in -D example
Jakub Narebski [Tue, 15 May 2007 23:56:10 +0000 (01:56 +0200)]
gitweb: Separate search regexp from search text
Separate search text, which is saved in $searchtext global variable,
and is used in links, as default value for the textfield in search
form, and for pickaxe search, from search regexp, which is saved in
$search_regexp global variable, and is used as parameter to --grep,
--committer or --author options to git-rev-list, and for searching
commit body in gitweb. For now $search_regexp is unconditionallt
equal to quotemeta($searchtext), meaning that we always search for
fixed string.
This fixes bug where 'next page' links for 'search' view didn't work
for searchtext containing quotable characters, like `@'.
Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
Jakub Narebski [Tue, 15 May 2007 23:59:55 +0000 (01:59 +0200)]
gitweb: Do not use absolute font sizes
David Kågedal proposed that gitweb should explicitely request
being somewhat smaller than normal, because it has good use for
long lines. However gitweb presents a table with several
columns, so having wider line is OK for it. Therefore explicit
'font-size: small' would make sense. Apparently many people on
the list seem to agree with him.
Signed-off-by: Junio C Hamano <redacted>
Jeff King [Tue, 15 May 2007 15:35:13 +0000 (11:35 -0400)]
format-patch: add MIME-Version header when we add content-type.
When we add Content-Type: header, we should also add
MIME-Version: header as well.
Signed-off-by: Junio C Hamano <redacted>
Steffen Prohaska [Wed, 16 May 2007 05:48:47 +0000 (07:48 +0200)]
Fixed link in user-manual
link to git-mergetool was broken.
Signed-off-by: Steffen Prohaska <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Wed, 16 May 2007 19:13:55 +0000 (12:13 -0700)]
Merge branch 'maint' of git://repo.or.cz/git/fastimport into maint
* 'maint' of git://repo.or.cz/git/fastimport:
import-tars: Use the "Link indicator" to identify directories
Johannes Schindelin [Wed, 16 May 2007 16:22:26 +0000 (17:22 +0100)]
import-tars: Use the "Link indicator" to identify directories
Earlier, we used the mode to determine if a name was associated with
a directory. This fails, since some tar programs do not set the mode
correctly. However, the link indicator _has_ to be set correctly.
Noticed by Chris Riddoch.
Signed-off-by: Johannes Schindelin <redacted>
Acked-by: Junio C Hamano <redacted>
Signed-off-by: Shawn O. Pearce <redacted>
Simon Hausmann [Wed, 16 May 2007 11:15:34 +0000 (13:15 +0200)]
A little todo note before I forget it :), based on a suggestion from Lars.
Signed-off-by: Simon Hausmann <redacted>
Simon Hausmann [Wed, 16 May 2007 10:12:39 +0000 (12:12 +0200)]
Fix calling git-p4 rebase from within a subdirectory (git rebase wants to be in toplevel)
Signed-off-by: Simon Hausmann <redacted>
Simon Hausmann [Wed, 16 May 2007 07:43:13 +0000 (09:43 +0200)]
Give a better hint if git-p4 submit fails
Signed-off-by: Simon Hausmann <redacted>
Simon Hausmann [Wed, 16 May 2007 07:41:26 +0000 (09:41 +0200)]
Added the possibility of skipping patches during git-p4 submit
Signed-off-by: Simon Hausmann <redacted>
Johan Herland [Tue, 15 May 2007 12:49:22 +0000 (14:49 +0200)]
Ensure return value from xread() is always stored into an ssize_t
This patch fixes all calls to xread() where the return value is not
stored into an ssize_t. The patch should not have any effect whatsoever,
other than putting better/more appropriate type names on variables.
Signed-off-by: Johan Herland <redacted>
Signed-off-by: Junio C Hamano <redacted>
Johan Herland [Tue, 15 May 2007 12:39:25 +0000 (14:39 +0200)]
Fix signedness on return value from xread()
The return value from xread() is ssize_t.
Paolo Teti <redacted> pointed out that in this case, the
signed return value was assigned to an unsigned type (size_t). This patch
fixes that.
Signed-off-by: Johan Herland <redacted>
Signed-off-by: Junio C Hamano <redacted>
Andy Whitcroft [Tue, 15 May 2007 16:33:25 +0000 (17:33 +0100)]
git name-rev writes beyond the end of malloc() with large generations
When using git name-rev on my kernel tree I triggered a malloc()
corruption warning from glibc.
apw@pinky$ git log --pretty=one $N/base.. | git name-rev --stdin
*** glibc detected *** malloc(): memory corruption: 0x0bff8950 ***
Aborted
This comes from name_rev() which is building the name of the revision
in a malloc'd string, which it sprintf's into:
char *new_name = xmalloc(len + 8);
[...]
sprintf(new_name, "%.*s~%d^%d", len, tip_name,
generation, parent_number);
This allocation is only sufficient if the generation number is
less than 5 digits, in my case generation was 13432. In reality
parent_number can be up to 16 so that also can require two digits,
reducing us to 3 digits before we are at risk of blowing this
allocation.
This patch introduces a decimal_length() which approximates the
number of digits a type may hold, it produces the following:
Type Longest Value Len Est
---- ------------- --- ---
unsigned char 256 3 4
unsigned short 65536 5 6
unsigned long
4294967296 10 11
unsigned long long
18446744073709551616 20 21
char -128 4 4
short -32768 6 6
long -
2147483648 11 11
long long -
9223372036854775808 20 21
This is then used to size the new_name.
Signed-off-by: Andy Whitcroft <redacted>
Signed-off-by: Junio C Hamano <redacted>
Simon Hausmann [Tue, 15 May 2007 21:06:43 +0000 (23:06 +0200)]
Make git-p4 work with bare repositories.
Signed-off-by: Simon Hausmann <redacted>
Simon Hausmann [Tue, 15 May 2007 14:15:26 +0000 (16:15 +0200)]
Fix git-p4 clone //depot/project (head import)
Signed-off-by: Simon Hausmann <redacted>
Marius Storm-Olsen [Tue, 15 May 2007 13:51:25 +0000 (15:51 +0200)]
Make the command call silent
Signed-off-by: Marius Storm-Olsen <redacted>
Simon Hausmann [Tue, 15 May 2007 14:07:02 +0000 (16:07 +0200)]
Converted to unix newlines
Signed-off-by: Simon Hausmann <redacted>
Simon Hausmann [Tue, 15 May 2007 13:15:39 +0000 (15:15 +0200)]
Make submitting work on Windows.
Signed-off-by: Simon Hausmann <redacted>
Simon Hausmann [Tue, 15 May 2007 12:57:57 +0000 (14:57 +0200)]
Make sure all popen calls use binary mode (for Windows) and
also make gitBranchExists work on Windows.
Signed-off-by: Simon Hausmann <redacted>
Simon Hausmann [Tue, 15 May 2007 12:42:56 +0000 (14:42 +0200)]
Added a little .bat wrapper from Marius
Signed-off-by: Simon Hausmann <redacted>
Simon Hausmann [Tue, 15 May 2007 12:31:06 +0000 (14:31 +0200)]
Use the subprocess module instead of popen2 to make it work on Windows.
Signed-off-by: Simon Hausmann <redacted>
Quy Tonthat [Tue, 15 May 2007 02:51:02 +0000 (12:51 +1000)]
Documentation/branch: fix small typo in -D example
Signed-off-by: Quy Tonthat <redacted>
Signed-off-by: Junio C Hamano <redacted>
Steffen Prohaska [Wed, 9 May 2007 23:06:36 +0000 (01:06 +0200)]
Optimized cvsexportcommit: calling 'cvs status' once instead of once per touched file.
Runtime is now independent of the number of modified files.
The old implementation executed 'cvs status' for each file touched by the patch
to be applied. The new code calls 'cvs status' only once with all touched files
and parses cvs's output to collect all available status information.
Signed-off-by: Steffen Prohaska <redacted>
Signed-off-by: Junio C Hamano <redacted>
Andy Parkins [Mon, 14 May 2007 13:37:25 +0000 (14:37 +0100)]
Use $Id$ as the ident attribute keyword rather than $ident$ to be consistent with other VCSs
$Id$ is present already in SVN and CVS; it would mean that people
converting their existing repositories won't have to make any changes to
the source files should they want to make use of the ident attribute.
Given that it's a feature that's meant to calm those very people, it
seems obtuse to make them edit every file just to make use of it.
I think that bzr uses $Id$; Mercurial has examples hooks for $Id$;
monotone has $Id$ on its wishlist. I can't think of a good reason not
to stick with the de-facto standard and call ours $Id$ instead of
$ident$.
Signed-off-by: Andy Parkins <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Tue, 15 May 2007 01:50:01 +0000 (18:50 -0700)]
Merge branch 'maint'
* maint:
Prepare for 1.5.1.5 Release Notes
gitweb: Add a few comments about %feature hash
git-am: Clean up the asciidoc documentation
Documentation: format-patch has no --mbox option
builtin-log.c: Fix typo in comment
Fix git-clone buglet for remote case.
Junio C Hamano [Tue, 15 May 2007 00:49:55 +0000 (17:49 -0700)]
Prepare for 1.5.1.5 Release Notes
Hopefully we will have 1.5.2 soonish, to contain all of these,
but we should summarize what we have done regardless.
Signed-off-by: Junio C Hamano <redacted>
Jakub Narebski [Mon, 14 May 2007 23:55:44 +0000 (01:55 +0200)]
gitweb: Add a few comments about %feature hash
Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
Frank Lichtenheld [Mon, 14 May 2007 14:44:53 +0000 (16:44 +0200)]
git-am: Clean up the asciidoc documentation
Add --keep to synopsis.
The synopsys used a mix of tabs and spaces, unify to use only
spaces.
Shuffle options around in synopsys and description for grouping
them logically.
Add more gitlink references to other commands.
Various grammatical fixes and improvements.
Signed-off-by: Frank Lichtenheld <redacted>
Signed-off-by: Junio C Hamano <redacted>
Frank Lichtenheld [Mon, 14 May 2007 14:44:52 +0000 (16:44 +0200)]
Documentation: format-patch has no --mbox option
git-applymbox and git-mailinfo refer to a --mbox option of
git-format-patch when talking about their -k options. But there
is no such option. What -k does to the former two commands is
to keep the Subject: lines unmunged, meant to be used on output
generated with format-patch -k.
Signed-off-by: Frank Lichtenheld <redacted>
Signed-off-by: Junio C Hamano <redacted>
Frank Lichtenheld [Mon, 14 May 2007 14:44:51 +0000 (16:44 +0200)]
builtin-log.c: Fix typo in comment
s/fmt-patch/format-patch/
Signed-off-by: Frank Lichtenheld <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Mon, 14 May 2007 21:24:02 +0000 (14:24 -0700)]
Fix git-clone buglet for remote case.
c2f599e09fd0496413d1744b5b89b9b5c223555d introduced a buglet while
cloning from a remote URL; we forgot to squelch the unnecessary
error message when we try to cd to the given "remote" name,
in order to see if it is a local directory.
Signed-off-by: Junio C Hamano <redacted>
Frank Lichtenheld [Sun, 13 May 2007 17:49:05 +0000 (19:49 +0200)]
cvsserver: Don't send mixed messages to clients
After we send I HATE YOU we should probably exit and not happily
continue with I LOVE YOU and further communication.
Most clients will probably just exit and ignore everything we
send after the I HATE YOU and it is not a security problem
either because we don't really care about the user name anyway.
But it is still the right thing to do.
[jc: with a minor fixup to its exit code...]
Signed-off-by: Frank Lichtenheld <redacted>
Acked-by: "Martin Langhoff" <redacted>
Signed-off-by: Junio C Hamano <redacted>
Jeff King [Mon, 14 May 2007 00:39:11 +0000 (20:39 -0400)]
Documentation/git-add: clarify -u with path limiting
Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
Jakub Narebski [Sun, 13 May 2007 23:25:45 +0000 (01:25 +0200)]
Documentation: Split description of pretty formats of commit log
Split description of pretty formats into list of pretty options
(--pretty and --encoding) in new file Documentation/pretty-options.txt
and description of formats itself as a separate "PRETTY FORMATS"
section in pretty-formats.txt
While at it correct formatting a bit, to be better laid out in the
resulting manpages: git-rev-list(1), git-show(1), git-log(1) and
git-diff-tree(1). Those manpages now include pretty options in the
same place as it was before, and description of formats just after
all options.
Inspired by the split into two filesdocumentation for merge strategies:
Documentation/merge-options.txt and Documentation/merge-strategies.txt
Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
Jakub Narebski [Sun, 13 May 2007 10:39:22 +0000 (12:39 +0200)]
gitweb: Fix "Use of unitialized value" warnings in empty repository
Fix it so gitweb doesn't write "Use of unitialized value..." warnings
(which gets written in web server logs) for empty (no commits)
repository.
In empty repository "last change" (last activity) doesn't make sense;
also there is no sense in parsing commits which aren't there.
In projects list for empty repositories gitweb now writes "No commits"
using "noage" class, instead of leaving cell empty, in the last change
column.
Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sun, 13 May 2007 20:34:40 +0000 (13:34 -0700)]
Merge branch 'maint'
* maint:
git-svn: don't attempt to minimize URLs by default
git-svn: fix segfaults due to initial SVN pool being cleared
git-svn: clean up caching of SVN::Ra functions
git-svn: don't drop the username from URLs when dcommit is run
RPM spec: include files in technical/ to package.
Remove stale non-static-inline prototype for tree_entry_extract()
git-config: test for 'do not forget "a.b.var" ends "a.var" section'.
git-config: do not forget seeing "a.b.var" means we are out of "a.var" section.
Frank Lichtenheld [Sun, 13 May 2007 00:16:24 +0000 (02:16 +0200)]
cvsserver: Limit config parser to needed options
Change the configuration parser so that it ignores
everything except for ^gitcvs.((ext|pserver).)?
This greatly reduces the risk of failing while
parsing some unknown and irrelevant config option.
The bug that triggered this change was that the
parsing doesn't handle sections that have a
subsection and a variable with the same name.
While this bug still remains, all remaining
causes can be attributed to user error, since
there are no defined variables gitcvs.ext and
gitcvs.pserver.
Signed-off-by: Frank Lichtenheld <redacted>
Signed-off-by: Junio C Hamano <redacted>
Jakub Narebski [Sat, 12 May 2007 19:16:34 +0000 (21:16 +0200)]
gitweb: Check if requested object exists
Try to avoid "Use of uninitialized value ..." errors caused by bad
revision, incorrect filename, wrong object id, bad file etc. (wrong
value of 'h', 'hb', 'f', etc. parameters). This avoids polluting web
server errors log.
Correct git_get_hash_by_path and parse_commit_text (and, in turn,
parse_commit) to return undef if object does not exist. Check in
git_tag if requested tag exists.
Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sat, 12 May 2007 18:47:38 +0000 (11:47 -0700)]
Link to HTML version of external doc if available
Currently
$ git grep '\([^t]\|^\)'link: user-manual.txt
gives four hits that refer to .txt version of the documentation
set, but at least "hooks" and "cvs-migration" have HTML variants
installed, so refer to them instead.
Signed-off-by: Junio C Hamano <redacted>
Eric Wong [Sun, 13 May 2007 16:58:14 +0000 (09:58 -0700)]
git-svn: don't attempt to minimize URLs by default
For tracking branches and tags, git-svn prefers to connect
to the root of the repository or at least the level that
houses branches and tags as well as trunk. However, users
that are accustomed to tracking a single directory have
no use for this feature.
As pointed out by Junio, users may not have permissions to
connect to connect to a higher-level path in the repository.
While the current minimize_url() function detects lack of
permissions to certain paths _after_ successful logins, it
cannot effectively determine if it is trying to access a
login-only portion of a repo when the user expects to
connect to a part where anonymous access is allowed.
For people used to the git-svnimport switches of
--trunk, --tags, --branches, they'll already pass the
repository root (or root+subdirectory), so minimize URL
isn't of too much use to them, either.
For people *not* used to git-svnimport, git-svn also
supports:
git svn init --minimize-url \
--trunk http://repository-root/foo/trunk \
--branches http://repository-root/foo/branches \
--tags http://repository-root/foo/tags
And this is where the new --minimize-url command-line switch
comes in to allow for this behavior to continue working.
Eric Wong [Sun, 13 May 2007 08:04:44 +0000 (01:04 -0700)]
git-svn: fix segfaults due to initial SVN pool being cleared
Some parts of SVN always seem to use it, even if the SVN::Ra
object we're using is no longer used and we've created a new one
in its place. It's also true that only one SVN::Ra connection
can exist at once... Using SVN::Pool->new_default when the
SVN::Ra object is created doesn't seem to help very much,
either...
Hopefully this fixes all segfault problems users have been
experiencing over the past few months.
Signed-off-by: Eric Wong <redacted>
Eric Wong [Sun, 13 May 2007 08:04:43 +0000 (01:04 -0700)]
git-svn: clean up caching of SVN::Ra functions
This patch was originally intended to make the Perl GC more
sensitive to the SVN::Pool objects and not accidentally clean
them up when they shouldn't be (causing segfaults). That didn't
work, but this patch makes the code a bit cleaner regardless
Put our caches for get_dir and check_path calls directly into
the SVN::Ra object so they auto-expire when it is destroyed.
dirents returned by get_dir() no longer needs the pool object
stored persistently along with the cache data, as they'll be
converted to native Perl hash references.
Since calling rev_proplist repeatedly per-revision is no longer
needed in git-svn, we do not cache calls to it.
Signed-off-by: Eric Wong <redacted>
Eric Wong [Sat, 12 May 2007 21:36:20 +0000 (14:36 -0700)]
git-svn: don't drop the username from URLs when dcommit is run
We no longer store usernames in URLs stored in git-svn-id lines
for dcommit, so we shouldn't rely on those URLs when connecting
to the remote repository to commit.
Quy Tonthat [Sun, 13 May 2007 11:41:45 +0000 (21:41 +1000)]
RPM spec: include files in technical/ to package.
Not only that they are interesting to users, some of the
files are linked to by the included "Git User's Manual"
Signed-off-by: Quy Tonthat <redacted>
Signed-off-by: Junio C Hamano <redacted>
Matthieu Castet [Sun, 13 May 2007 18:57:00 +0000 (11:57 -0700)]
Remove stale non-static-inline prototype for tree_entry_extract()
When
4651ece8 made the function a "static inline", it should
have removd the stale prototype but everybody missed that.
Thomas Glanzmann noticed this broke compilation with Forte12
compiler on his Sun boxes.
Signed-off-by: Junio C Hamano <redacted>
Steffen Prohaska [Sun, 13 May 2007 07:12:52 +0000 (09:12 +0200)]
git-config: test for 'do not forget "a.b.var" ends "a.var" section'.
Added test for mentioned bugfix.
Signed-off-by: Steffen Prohaska <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sun, 13 May 2007 04:49:33 +0000 (21:49 -0700)]
git-config: do not forget seeing "a.b.var" means we are out of "a.var" section.
Earlier code tried to be half-careful and knew the logic that
seeing "a.var" after seeing "a.b.var" is a sign of the previous
"a.b." section has ended, but forgot it has to handle the other
way. Seeing "a.b.var" after seeing "a.var" is a sign that "a."
section has ended, so a new "a.var2" variable should be added
before the location "a.b.var" appears.
Signed-off-by: Junio C Hamano <redacted>
Jan Hudec [Sat, 12 May 2007 21:43:11 +0000 (23:43 +0200)]
Minor fixup to documentation of hooks in git-receive-pack.
Small additional changes to the
cbb84e5d174cf33fd4dcf3136de50a886ff9a2e2
commit, which introduced documentation to pre-receive and post-receive:
- Mention that stdout and stderr are equivalent.
- Add one cross-section link and fix one other.
- Fix information on advantages of post-receive over post-update.
Signed-off-by: Jan Hudec <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sat, 12 May 2007 20:16:21 +0000 (13:16 -0700)]
Merge branch 'maint'
* maint:
checkout: allow detaching to HEAD even when switching to the tip of a branch
Updated documentation of hooks in git-receive-pack.
Allow fetching references from any namespace
tiny fix in documentation of git-clone
Fix an unmatched comment end in arm/sha1_arm.S
Junio C Hamano [Thu, 29 Mar 2007 08:02:50 +0000 (01:02 -0700)]
checkout: allow detaching to HEAD even when switching to the tip of a branch
You cannot currently checkout the tip of an existing branch
without moving to the branch.
This allows you to detach your HEAD and place it at such a
commit, with:
$ git checkout master^0
Signed-off-by: Junio C Hamano <redacted>
Jan Hudec [Sat, 12 May 2007 17:11:13 +0000 (19:11 +0200)]
Updated documentation of hooks in git-receive-pack.
Added documentation of pre-receive and post-receive hooks and updated
documentation of update and post-update hooks.
[jc: with minor copy-editing]
Signed-off-by: Jan Hudec <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio Hamano [Fri, 11 May 2007 23:35:18 +0000 (16:35 -0700)]
t9400: Use the repository config and nothing else.
git-cvsserver has a bug in its configuration file output parser
that makes it choke if the configuration has these:
[diff]
color = auto
[diff.color]
whitespace = blue reverse
This needs to be fixed, but thanks to that bug, a separate bug
in t9400 test script was discovered. The test discarded
GIT_CONFIG instead of pointing at the proper one to be used in
the exoprted repository. This allowed user's .gitconfig and (if
exists) systemwide /etc/gitconfig to affect the outcome of the
test, which is a big no-no.
The patch fixes the problem in the test. Fixing the
git-cvsserver's configuration parser is left as an exercise to
motivated volunteers ;-)
Signed-off-by: Junio C Hamano <redacted>
Alex Riesen [Fri, 11 May 2007 20:35:22 +0000 (22:35 +0200)]
Allow fetching references from any namespace
not only from the three defined: heads, tags and remotes.
Noticed when I tried to fetch the references created by git-p4-import.bat:
they are placed into separate namespace (refs/p4import/, to avoid showing
them in git-branch output). As canon_refs_list_for_fetch always prepended
refs/heads/ it was impossible, and annoying: it worked before. Normally,
the p4import references are useless anywhere but in the directory managed
by perforce, but in this special case the cloned directory was supposed
to be a backup, including the p4import branch: it keeps information about
where the imported perforce state came from.
Signed-off-by: Alex Riesen <redacted>
Signed-off-by: Junio C Hamano <redacted>
Lars Hjemli [Fri, 11 May 2007 16:55:21 +0000 (18:55 +0200)]
git-archive: don't die when repository uses subprojects
Both archive-tar and archive-zip needed to be taught about subprojects.
The tar function died when trying to read the subproject commit object,
while the zip function reported "unsupported file mode".
This fixes both by representing the subproject as an empty directory.
Signed-off-by: Lars Hjemli <redacted>
Signed-off-by: Junio C Hamano <redacted>
Steffen Prohaska [Sat, 12 May 2007 11:32:34 +0000 (13:32 +0200)]
tiny fix in documentation of git-clone
path in example was missing '../'
Signed-off-by: Steffen Prohaska <redacted>
Signed-off-by: Junio C Hamano <redacted>
Jakub Narebski [Sat, 12 May 2007 10:42:32 +0000 (12:42 +0200)]
gitweb: Test if $from_id and $to_id are defined before comparison
Get rid of "Use of uninitialized value in string eq at
gitweb/gitweb.perl line 2320" warning caused by the fact that "empty"
patches, consisting only of extended git diff header and with patch
body empty, such as patch for pure rename, does not have "index" line
in extended diff header. For such patches $from_id and $to_id, filled
from parsing extended diff header, are undefined. But such patches
cannot be continuation patches.
Test if $from_id and $to_id are defined before comparing them with
$diffinfo.
Signed-off-by: Jakub Narebski <redacted>
Signed-off-by: Junio C Hamano <redacted>
Marco Costalba [Sat, 12 May 2007 10:35:29 +0000 (12:35 +0200)]
Fix an unmatched comment end in arm/sha1_arm.S
Signed-off-by: Marco Costalba <redacted>
Acked-by: Nicolas Pitre <redacted>
Signed-off-by: Junio C Hamano <redacted>
Jeff King [Sat, 12 May 2007 06:42:00 +0000 (02:42 -0400)]
git-add: allow path limiting with -u
Rather than updating all working tree paths, we limit
ourselves to paths listed on the command line.
Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Fri, 11 May 2007 06:44:53 +0000 (23:44 -0700)]
read-tree -m -u: avoid getting confused by intermediate symlinks.
When switching from a branch with both x86_64/boot/Makefile and
i386/boot/Makefile to another branch that has x86_64/boot as a
symlink pointing at ../i386/boot, the code incorrectly removed
i386/boot/Makefile.
This was because we first removed everything under x86_64/boot
to make room to create a symbolic link x86_64/boot, then removed
x86_64/boot/Makefile which no longer exists but now is pointing
at i386/boot/Makefile, thanks to the symlink we just created.
This fixes it by using the has_symlink_leading_path() function
introduced previously for git-apply in the checkout codepath.
Earlier, "git checkout" was broken in t4122 test due to this
bug, and the test had an extra "git reset --hard" as a
workaround, which is removed because it is not needed anymore.
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sat, 12 May 2007 05:26:08 +0000 (22:26 -0700)]
apply: do not get confused by symlinks in the middle
HPA noticed that git-rebase fails when changes involve symlinks
in the middle of the hierarchy. Consider:
* The tree state before the patch is applied has arch/x86_64/boot
as a symlink pointing at ../i386/boot/
* The patch tries to remove arch/x86_64/boot symlink, and
create bunch of files there: .gitignore, Makefile, etc.
git-apply tries to be careful while applying patches; it never
touches the working tree until it is convinced that the patch
would apply cleanly. One of the check it does is that when it
knows a path is going to be created by the patch, it runs
lstat() on the path to make sure it does not exist.
This leads to a false alarm. Because we do not touch the
working tree before all the check passes, when we try to make
sure that arch/x86_64/boot/.gitignore does not exist yet, we
haven't removed the arch/x86_64/boot symlink. The lstat() check
ends up seeing arch/i386/boot/.gitignore through the
yet-to-be-removed symlink, and says "Hey, you already have a
file there, but what you fed me is a patch to create a new
file. I am not going to clobber what you have in the working
tree."
We have similar checks to see a file we are going to modify does
exist and match the preimage of the diff, which is done by
directly opening and reading the file.
For a file we are going to delete, we make sure that it does
exist and matches what is going to be removed (a removal patch
records the full preimage, so we check what you have in your
working tree matches it in full -- otherwise we would risk
losing your local changes), which again is done by directly
opening and reading the file.
These checks need to be adjusted so that they are not fooled by
symlinks in the middle.
- To make sure something does not exist, first lstat(). If it
does not exist, it does not, so be happy. If it _does_, we
might be getting fooled by a symlink in the middle, so break
leading paths and see if there are symlinks involved. When
we are checking for a path a/b/c/d, if any of a, a/b, a/b/c
is a symlink, then a/b/c/d does _NOT_ exist, for the purpose
of our test.
This would fix this particular case you saw, and would not
add extra overhead in the usual case.
- To make sure something already exists, first lstat(). If it
does not exist, barf (up to this, we already do). Even if it
does seem to exist, we might be getting fooled by a symlink
in the middle, so make sure leading paths are not symlinks.
This would make the normal codepath much more expensive for
deep trees, which is a bit worrisome.
This patch implements the first side of the check "making sure
it does not exist". The latter "making sure it exists" check is
not done yet, so applying the patch in reverse would still
fail, but we have to start from somewhere.
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sat, 12 May 2007 05:11:07 +0000 (22:11 -0700)]
Add has_symlink_leading_path() function.
When we are applying a patch that creates a blob at a path, or
when we are switching from a branch that does not have a blob at
the path to another branch that has one, we need to make sure
that there is nothing at the path in the working tree, as such a
file is a local modification made by the user that would be lost
by the operation.
Normally, lstat() on the path and making sure ENOENT is returned
is good enough for that purpose. However there is a twist. We
may be creating a regular file arch/x86_64/boot/Makefile, while
removing an existing symbolic link at arch/x86_64/boot that
points at existing ../i386/boot directory that has Makefile in
it. We always first check without touching filesystem and then
perform the actual operation, so when we verify the new file,
arch/x86_64/boot/Makefile, does not exist, we haven't removed
the symbolic link arc/x86_64/boot symbolic link yet. lstat() on
the file sees through the symbolic link and reports the file is
there, which is not what we want.
The function has_symlink_leading_path() function takes a path,
and sees if any of the leading directory component is a symbolic
link.
When files in a new directory are created, we tend to process
them together because both index and tree are sorted. The
function takes advantage of this and allows the caller to cache
and reuse which symbolic link on the filesystem caused the
function to return true.
The calling sequence would be:
char last_symlink[PATH_MAX];
*last_symlink = '\0';
for each index entry {
if (!lose)
continue;
if (lstat(it))
if (errno == ENOENT)
; /* happy */
else
error;
else if (has_symlink_leading_path(it, last_symlink))
; /* happy */
else
error; /* would lose local changes */
unlink_entry(it, last_symlink);
}
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Fri, 11 May 2007 04:59:13 +0000 (21:59 -0700)]
Minor copyediting on Release Notes for 1.5.2
Signed-off-by: Junio C Hamano <redacted>
James Bowes [Sat, 5 May 2007 20:48:54 +0000 (16:48 -0400)]
Add colour support in rebase and merge tree diff stats output.
The rebase and merge commands used diff-tree to display the summary stats of
what files had changed from the operation. diff-tree does not read the
diff ui configuration options, so the diff.color setting was not used.
Have rebase and merge call diff rather than diff-tree, which does read the
diff ui options.
Signed-off-by: James Bowes <redacted>
Signed-off-by: Junio C Hamano <redacted>
Sven Verdoolaege [Wed, 9 May 2007 10:33:20 +0000 (12:33 +0200)]
git-update-ref: add --no-deref option for overwriting/detaching ref
git-checkout is also adapted to make use of this new option
instead of the handcrafted command sequence.
Signed-off-by: Sven Verdoolaege <redacted>
Signed-off-by: Junio C Hamano <redacted>
Theodore Tso [Wed, 9 May 2007 19:48:39 +0000 (15:48 -0400)]
Add --aggressive option to 'git gc'
This option causes 'git gc' to more aggressively optimize the
repository at the cost of taking much more wall clock and CPU time.
Today this option causes git-pack-objects to use --no-use-delta
option, and it allows the --window parameter to be set via the
gc.aggressiveWindow configuration parameter.
Signed-off-by: "Theodore Ts'o" <redacted>
Signed-off-by: Junio C Hamano <redacted>
Dana How [Wed, 9 May 2007 20:56:50 +0000 (13:56 -0700)]
Custom compression levels for objects and packs
Add config variables pack.compression and core.loosecompression ,
and switch --compression=level to pack-objects.
Loose objects will be compressed using core.loosecompression if set,
else core.compression if set, else Z_BEST_SPEED.
Packed objects will be compressed using --compression=level if seen,
else pack.compression if set, else core.compression if set,
else Z_DEFAULT_COMPRESSION. This is the "pack compression level".
Loose objects added to a pack undeltified will be recompressed
to the pack compression level if it is unequal to the current
loose compression level by the preceding rules, or if the loose
object was written while core.legacyheaders = true. Newly
deltified loose objects are always compressed to the current
pack compression level.
Previously packed objects added to a pack are recompressed
to the current pack compression level exactly when their
deltification status changes, since the previous pack data
cannot be reused.
In either case, the --no-reuse-object switch from the first
patch below will always force recompression to the current pack
compression level, instead of assuming the pack compression level
hasn't changed and pack data can be reused when possible.
This applies on top of the following patches from Nicolas Pitre:
[PATCH] allow for undeltified objects not to be reused
[PATCH] make "repack -f" imply "pack-objects --no-reuse-object"
Signed-off-by: Dana L. How <redacted>
Signed-off-by: Junio C Hamano <redacted>
Nicolas Pitre [Wed, 9 May 2007 18:42:42 +0000 (14:42 -0400)]
deprecate the new loose object header format
Now that we encourage and actively preserve objects in a packed form
more agressively than we did at the time the new loose object format and
core.legacyheaders were introduced, that extra loose object format
doesn't appear to be worth it anymore.
Because the packing of loose objects has to go through the delta match
loop anyway, and since most of them should end up being deltified in
most cases, there is really little advantage to have this parallel loose
object format as the CPU savings it might provide is rather lost in the
noise in the end.
This patch gets rid of core.legacyheaders, preserve the legacy format as
the only writable loose object format and deprecate the other one to
keep things simpler.
Signed-off-by: Nicolas Pitre <redacted>
Signed-off-by: Junio C Hamano <redacted>
Nicolas Pitre [Wed, 9 May 2007 16:59:40 +0000 (12:59 -0400)]
make "repack -f" imply "pack-objects --no-reuse-object"
Recomputing delta is much more expensive than recompressing
anyway, and when the user says 'repack -f', it is a sign that
the user is willing to spend CPU cycles.
Signed-off-by: Nicolas Pitre <redacted>
Signed-off-by: Junio C Hamano <redacted>
Nicolas Pitre [Wed, 9 May 2007 16:31:28 +0000 (12:31 -0400)]
allow for undeltified objects not to be reused
Currently non deltified object data is always reused when possible.
This means that any change to core.compression has no effect on those
objects as they don't get recompressed when repacking them.
Let's add a --no-reuse-object flag to git-repack in order to force
recompression of all objects when desired.
Signed-off-by: Nicolas Pitre <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Thu, 10 May 2007 21:49:36 +0000 (14:49 -0700)]
GIT v1.5.2-rc3
Signed-off-by: Junio C Hamano <redacted>
Michael Hendricks [Thu, 10 May 2007 22:09:38 +0000 (16:09 -0600)]
Document 'git-log --decorate'
Signed-off-by: Michael Hendricks <redacted>
Signed-off-by: Junio C Hamano <redacted>
Shawn O. Pearce [Thu, 10 May 2007 22:10:36 +0000 (18:10 -0400)]
Correct error message in revert/cherry-pick
We now write to MERGE_MSG, not .msg. I missed this earlier
when I changed the target we write to.
Signed-off-by: Shawn O. Pearce <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Thu, 10 May 2007 22:08:18 +0000 (15:08 -0700)]
Merge branch 'master' of git://repo.or.cz/git-gui
* 'master' of git://repo.or.cz/git-gui:
git gui 0.7.0
git-gui: Paperbag fix blame in subdirectory
git-gui: Format author/committer times in ISO format
git-gui: Cleanup minor nits in blame code
git-gui: Generate blame on uncommitted working tree file
git-gui: Smarter command line parsing for browser, blame
git-gui: Use prefix if blame is run in a subdirectory
git-gui: Convert blame to the "class" way of doing things
git-gui: Don't attempt to inline array reads in methods
git-gui: Convert browser, console to "class" format
git-gui: Define a simple class/method system
git-gui: Allow shift-{k,j} to select a range of branches to merge
git-gui: Call changes "Staged" and "Unstaged" in file list titles.
Shawn O. Pearce [Thu, 10 May 2007 21:54:45 +0000 (17:54 -0400)]
git gui 0.7.0
Signed-off-by: Shawn O. Pearce <redacted>
Shawn O. Pearce [Wed, 9 May 2007 22:35:04 +0000 (18:35 -0400)]
git-gui: Paperbag fix blame in subdirectory
Signed-off-by: Shawn O. Pearce <redacted>
Junio C Hamano [Thu, 10 May 2007 21:48:04 +0000 (14:48 -0700)]
Merge branch 'maint'
* maint:
Fix documentation of tag in git-fast-import.txt
Properly handle '0' filenames in import-tars
Junio C Hamano [Thu, 10 May 2007 21:47:14 +0000 (14:47 -0700)]
Merge branch 'maint' of git://repo.or.cz/git/fastimport into maint
* 'maint' of git://repo.or.cz/git/fastimport:
Fix documentation of tag in git-fast-import.txt
Properly handle '0' filenames in import-tars
Richard P. Curnow [Wed, 9 May 2007 22:13:44 +0000 (23:13 +0100)]
Fix documentation of tag in git-fast-import.txt
The tag command does not take a trailing LF.
Signed-off-by: Richard P. Curnow <redacted>
Signed-off-by: Shawn O. Pearce <redacted>
Shawn O. Pearce [Thu, 10 May 2007 21:31:27 +0000 (17:31 -0400)]
Merge branch 'gfi-maint' into maint
* gfi-maint:
Properly handle '0' filenames in import-tars
Petr Baudis [Wed, 9 May 2007 01:41:50 +0000 (03:41 +0200)]
gitweb: Do not use absolute font sizes
Avoid specifying font sizes in pixels, since that is just pure evil.
Pointed out by Chris Riddoch.
Note that this is pretty much just a proposal; I didn't test if everything
fits perfectly right, but things seem to be pretty much okay. repo.or.cz
uses it now as a test drive - if you find any visual quirks, please point
them out, with a patch if possible since I'm total CSS noob and debugging
CSS is an extremely painful experience for me.
Note that this patch actually does change visual look of gitweb in Firefox
with my resolution and default settings - everything is bigger and I can't
explain the joy of actually seeing gitweb text that is in _readable_ size;
also, my horizontal screen real estate feels better used now. But judging
from the look of most modern webpages on the 'net, most people prefer
reading the web with strained eyes and/or a magnifying glass (I wonder what
species of scientists should look into this mystifying phenomenon) - so,
please tell us what you think.
Maybe we might want to get rid of absolute sizes other than font sizes in
the CSS file too in the long term.
Signed-off-by: Petr Baudis <redacted>
Signed-off-by: Junio C Hamano <redacted>
Petr Baudis [Wed, 9 May 2007 10:49:41 +0000 (12:49 +0200)]
Git.pm: config_boolean() -> config_bool()
This patch renames config_boolean() to config_bool() for consistency with
the commandline interface and because it is shorter but still obvious. ;-)
It also changes the return value from some obscure string to real Perl
boolean, allowing for clean user code.
Signed-off-by: Petr Baudis <redacted>
Junio C Hamano [Thu, 10 May 2007 20:52:54 +0000 (13:52 -0700)]
Merge branch 'maint'
* maint:
.mailmap: add some aliases
SPECIFYING RANGES typo fix: it it => it is
git-clone: don't get fooled by $PWD
Fix documentation of tag in git-fast-import.txt
Junio C Hamano [Thu, 10 May 2007 20:24:21 +0000 (13:24 -0700)]
.mailmap: add some aliases
Jari Aalto [Mon, 30 Apr 2007 18:37:57 +0000 (21:37 +0300)]
SPECIFYING RANGES typo fix: it it => it is
Signed-off-by: Jari Aalto <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Thu, 10 May 2007 00:11:15 +0000 (17:11 -0700)]
git-clone: don't get fooled by $PWD
If you have /home/me/git symlink pointing at /pub/git/mine,
trying to clone from /pub/git/his/ using relative path would not
work as expected:
$ cd /home/me
$ cd git
$ ls ../
his mine
$ git clone -l -s -n ../his/stuff.git
This is because "cd ../his/stuff.git" done inside git-clone to
check if the repository is local is confused by $PWD, which is
set to /home/me, and tries to go to /home/his/stuff.git which is
different from /pub/git/his/stuff.git.
We could probably say "set -P" (or "cd -P") instead, if we know
the shell is POSIX, but the way the patch is coded is probably
more portable.
[jc: this is updated with Andy Whitcroft's improvements]
Signed-off-by: Junio C Hamano <redacted>
Gerrit Pape [Thu, 10 May 2007 07:32:07 +0000 (07:32 +0000)]
gitweb: choose appropriate view for file type if a= parameter missing
gitweb URLs use the a= parameter for the view to use on the given path, such
as "blob" or "tree". Currently, if a gitweb URL omits the a= parameter,
gitweb just shows the top-level repository summary, regardless of the path
given. gitweb could instead choose an appropriate view based on the file
type: blob for blobs (files), tree for trees (directories), and summary if
no path given (the URL included no f= parameter, or an empty f= parameter).
Apart from making gitweb more robust and supporting URL editing more easily,
this change would aid the creation of shortcuts to git repositories using
simple substitution, such as:
http://example.org/git/?p=path/to/repo.git;hb=HEAD;f=%s
With this patch, if given the hash through the h= parameter, or the hash
base (hb=) and a filename (f=), gitweb uses cat-file -t to automatically set
the a= parameter.
This feature was requested by Josh Triplett through
http://bugs.debian.org/410465
Signed-off-by: Gerrit Pape <redacted>
Signed-off-by: Junio C Hamano <redacted>
Quy Tonthat [Thu, 10 May 2007 07:03:15 +0000 (17:03 +1000)]
Added new git-gui library files to rpm spec
"make rpm" breaks without these files.
Signed-off-by: Quy Tonthat <redacted>
Signed-off-by: Junio C Hamano <redacted>
Richard P. Curnow [Wed, 9 May 2007 22:13:44 +0000 (23:13 +0100)]
Fix documentation of tag in git-fast-import.txt
The tag command does not take a trailing LF.
Signed-off-by: Richard P. Curnow <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Wed, 9 May 2007 16:19:42 +0000 (09:19 -0700)]
t9400: skip cvsserver test if Perl SQLite interface is unavailable
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Wed, 9 May 2007 07:33:40 +0000 (00:33 -0700)]
Merge branch 'fl/cvsserver'
* fl/cvsserver:
cvsserver: Add test cases for git-cvsserver