git.git
17 years agoAvoid src:dst syntax as default bash completion for git push
Shawn O. Pearce [Fri, 22 Jun 2007 22:44:04 +0000 (18:44 -0400)]
Avoid src:dst syntax as default bash completion for git push

Raimund Bauer just discovered that the default bash completion for
a local branch name in a git-push line is not the best choice when
the branch does not exist on the remote system.

In the past we have always completed the local name 'test' as
"test:test", indicating that the destination name is the same as
the local name.  But this fails when "test" does not yet exist on
the remote system, as there is no "test" branch for it to match
the name against.

Fortunately git-push does the right thing when given just the
local branch, as it assumes you want to use the same name in the
destination repository.  So we now offer "test" as the completion
in a git-push line, and let git-push assume that is also the remote
branch name.

We also still support the remote branch completion after the :,
but only if the user manually adds the colon before trying to get
a completion.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoChange default man page path to /usr/share/man
Ismail Dönmez [Tue, 8 May 2007 10:49:31 +0000 (13:49 +0300)]
Change default man page path to /usr/share/man

According to FHS,

    http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSHAREMANMANUALPAGES

default man page path is $prefix/share/man.

Signed-off-by: Ismail Donmez <ismail@pardus.org.tr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoINSTALL: explain how to build documentation
Junio C Hamano [Mon, 18 Jun 2007 08:43:34 +0000 (01:43 -0700)]
INSTALL: explain how to build documentation

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agocvsserver: Actually implement --export-all
Alex Riesen [Sat, 16 Jun 2007 23:52:50 +0000 (01:52 +0200)]
cvsserver: Actually implement --export-all

Frank Lichtenheld, Fri, Jun 15, 2007 03:01:53 +0200:
> +test_expect_failure 'req_Root failure (export-all w/o whitelist)' \
> +  'cat request-anonymous | git-cvsserver --export-all pserver >log 2>&1
> +   || false'

This does not work, at least for bash in current Ubuntu:

    GNU bash, version 3.2.13(1)-release

You have to put "||" on the previous line:

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocument git log --full-diff
Jakub Narebski [Sat, 16 Jun 2007 19:03:38 +0000 (21:03 +0200)]
Document git log --full-diff

Based on description of commit 477f2b41310c4b1040a9e7f72720b9c39d82caf9
"git log --full-diff" adding this option.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocument git log --abbrev-commit, as a kind of pretty option
Jakub Narebski [Sat, 16 Jun 2007 19:03:39 +0000 (21:03 +0200)]
Document git log --abbrev-commit, as a kind of pretty option

Documentation taken from paraphrased description of "--abbrev[=<n>]"
diff option, and from description of commit 5c51c985 introducing
this option.

Note that to change number of digits one must use "--abbrev=<n>",
which affects [also] diff output.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoUse tabs for indenting definition list for options in git-log.txt
Jakub Narebski [Sat, 16 Jun 2007 19:03:37 +0000 (21:03 +0200)]
Use tabs for indenting definition list for options in git-log.txt

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocument git rev-list --timestamp
Jakub Narebski [Sat, 16 Jun 2007 19:03:42 +0000 (21:03 +0200)]
Document git rev-list --timestamp

Note that git log does not understand this option yet:

  $ git log --timestamp
  fatal: unrecognized argument: --timestamp

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocument git reflog --stale-fix
Jakub Narebski [Sat, 16 Jun 2007 19:03:46 +0000 (21:03 +0200)]
Document git reflog --stale-fix

Document --stale-fix, used in "git reflog expire --stale-fix --all"
to remove invalid reflog entries, to fix situation after running
non reflog-aware git-prune from an older git in the presence of
reflogs (see RelNotes-1.5.0.txt).

Based on description of commit 1389d9ddaa68a4cbf5018d88f971b9bbb7aaa3c9
  "reflog expire --fix-stale"
which introduced this option.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocument git rev-parse --is-inside-git-dir
Jakub Narebski [Sat, 16 Jun 2007 19:03:44 +0000 (21:03 +0200)]
Document git rev-parse --is-inside-git-dir

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocument git read-tree --trivial
Jakub Narebski [Sat, 16 Jun 2007 19:03:45 +0000 (21:03 +0200)]
Document git read-tree --trivial

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocument git rev-list --full-history
Jakub Narebski [Sat, 16 Jun 2007 19:03:43 +0000 (21:03 +0200)]
Document git rev-list --full-history

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDo not use h_errno after connect(2): the function does not set it
Alex Riesen [Tue, 12 Jun 2007 20:52:10 +0000 (22:52 +0200)]
Do not use h_errno after connect(2): the function does not set it

Randal L. Schwartz noticed compilation problems on SunOS, which made
me look at the code again. The thing is, h_errno is not used by
connect(2), it is only for functions from netdb.h, like gethostbyname.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocumentation: update "stale" links for 1.5.2.2
Junio C Hamano [Sat, 16 Jun 2007 16:10:18 +0000 (09:10 -0700)]
Documentation: update "stale" links for 1.5.2.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'jc/remote'
Junio C Hamano [Sat, 16 Jun 2007 08:22:45 +0000 (01:22 -0700)]
Merge branch 'jc/remote'

* jc/remote:
  git-push: Update description of refspecs and add examples
  remote.c: "git-push frotz" should update what matches at the source.
  remote.c: fix "git push" weak match disambiguation
  remote.c: minor clean-up of match_explicit()
  remote.c: refactor creation of new dst ref
  remote.c: refactor match_explicit_refs()

17 years agoMerge branch 'gp/branch'
Junio C Hamano [Sat, 16 Jun 2007 08:22:43 +0000 (01:22 -0700)]
Merge branch 'gp/branch'

* gp/branch:
  git-branch: cleanup config file when deleting branches

17 years agoMerge branch 'fl/cvsserver'
Junio C Hamano [Sat, 16 Jun 2007 08:22:38 +0000 (01:22 -0700)]
Merge branch 'fl/cvsserver'

* fl/cvsserver:
  cvsserver: Actually implement --export-all
  cvsserver: Let --base-path and pserver get along just fine
  cvsserver: Add some useful commandline options

17 years agoMerge branch 'lh/submodule'
Junio C Hamano [Sat, 16 Jun 2007 08:22:35 +0000 (01:22 -0700)]
Merge branch 'lh/submodule'

* lh/submodule:
  gitmodules(5): remove leading period from synopsis
  Add gitmodules(5)
  git-submodule: give submodules proper names
  Rename sections from "module" to "submodule" in .gitmodules
  git-submodule: remember to checkout after clone
  t7400: barf if git-submodule removes or replaces a file

17 years agoMerge branch 'maint' to sync with GIT 1.5.2.2
Junio C Hamano [Sat, 16 Jun 2007 08:22:10 +0000 (01:22 -0700)]
Merge branch 'maint' to sync with GIT 1.5.2.2

17 years agogit-svn: avoid string eval for defining functions
Sam Vilain [Fri, 15 Jun 2007 03:43:59 +0000 (15:43 +1200)]
git-svn: avoid string eval for defining functions

You don't need to use string eval to define new functions; assigning a
code reference to the target symbol table is enough.

Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoFix pushing to a pattern with no dst
Daniel Barkalow [Fri, 15 Jun 2007 14:22:37 +0000 (10:22 -0400)]
Fix pushing to a pattern with no dst

Refspecs with no colons are left with no dst value, because they are
interepreted differently for fetch and push. For push, they mean to
reuse the src side. Fix this for patterns.

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoGIT 1.5.2.2 v1.5.2.2
Junio C Hamano [Sat, 16 Jun 2007 06:58:18 +0000 (23:58 -0700)]
GIT 1.5.2.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocumentation: adjust to AsciiDoc 8
Junio C Hamano [Fri, 15 Jun 2007 05:20:16 +0000 (22:20 -0700)]
Documentation: adjust to AsciiDoc 8

It turns out that the attribute definition we have had for a
long time to hide "^" character from AsciiDoc 7 was not honored
by AsciiDoc 8 even under "-a asciidoc7compatible" mode.  There is
a similar breakage with the "compatible" mode with + characters.

The double colon at the end of definition list term needs
to be attached to the term, without a whitespace.  After this
minimum fixups, AsciiDoc 8 (I used 8.2.1 on Debian) with
compatibility mode seems to produce reasonably good results.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoAvoid diff cost on "git log -z"
Junio C Hamano [Sat, 16 Jun 2007 06:48:35 +0000 (23:48 -0700)]
Avoid diff cost on "git log -z"

Johannes and Marco discovered that "git log -z" spent cycles in diff even
though there is no need to actually compute diffs.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-branch --track: fix tracking branch computation.
Junio C Hamano [Sat, 16 Jun 2007 06:35:32 +0000 (23:35 -0700)]
git-branch --track: fix tracking branch computation.

The original code did not take hierarchical branch names into account at all.

[jc: cherry-picked 11f68d9 from 'master']

Tested-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years ago$EMAIL is a last resort fallback, as it's system-wide.
Junio C Hamano [Sat, 16 Jun 2007 06:33:06 +0000 (23:33 -0700)]
$EMAIL is a last resort fallback, as it's system-wide.

$EMAIL is a system-wide setup that is used for many many many
applications. If the git user chose a specific user.email setup,
then _this_ should be honoured rather than $EMAIL.

[jc: cherry-picked ec563e8 from 'master']

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agomerge-recursive: refuse to merge binary files
Johannes Schindelin [Tue, 5 Jun 2007 02:36:49 +0000 (03:36 +0100)]
merge-recursive: refuse to merge binary files

[jc: cherry-picked 9f30855 from 'master']

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMove buffer_is_binary() to xdiff-interface.h
Johannes Schindelin [Tue, 5 Jun 2007 02:36:11 +0000 (03:36 +0100)]
Move buffer_is_binary() to xdiff-interface.h

We already have two instances where we want to determine if a buffer
contains binary data as opposed to text.

[jc: cherry-picked 6bfce93e from 'master']

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoAdd a local implementation of hstrerror for the system which do not have it
Alex Riesen [Wed, 13 Jun 2007 18:54:32 +0000 (20:54 +0200)]
Add a local implementation of hstrerror for the system which do not have it

The function converts the value of h_errno (last error of name
resolver library, see netdb.h).
One of systems which supposedly do not have the function is SunOS.
POSIX does not mandate its presence.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogitmodules(5): remove leading period from synopsis
Lars Hjemli [Wed, 13 Jun 2007 22:01:10 +0000 (00:01 +0200)]
gitmodules(5): remove leading period from synopsis

Asciidoc treats a line starting with a period followed by a title as a
blocktitle element. My introduction of gitmodules(5) unfortunatly broke
the documentation build process due to this processing, since it made
asciidoc generate an illegal (empty) synopsis element. Removing the leading
period fixes the problem and also makes gitmodules(5) use the same synopsis
notation as gitattributes(5).

Noticed-by: Matthias Lederhofer <matled@gmx.net>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoGenerated spec file to be ignored is named git.spec and not git-core.spec
Jakub Narebski [Wed, 13 Jun 2007 23:12:20 +0000 (01:12 +0200)]
Generated spec file to be ignored is named git.spec and not git-core.spec

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agocvsserver: Actually implement --export-all
Frank Lichtenheld [Fri, 15 Jun 2007 01:01:53 +0000 (03:01 +0200)]
cvsserver: Actually implement --export-all

Embarrassing bug number two in my options patch.

Also enforce that --export-all is only ever used together with an
explicit whitelist. Otherwise people might export every git repository
on the whole system without realising.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agocvsserver: Let --base-path and pserver get along just fine
Frank Lichtenheld [Fri, 15 Jun 2007 01:01:52 +0000 (03:01 +0200)]
cvsserver: Let --base-path and pserver get along just fine

Embarassing bug number one in my options patch.

Since the code for --base-path support rewrote
the cvsroot value after comparing it with a possible
existing value (i.e. from pserver authentication)
the check always failed.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-svn: reduce stat() calls for a backwards compatibility check
Eric Wong [Wed, 13 Jun 2007 09:37:05 +0000 (02:37 -0700)]
git-svn: reduce stat() calls for a backwards compatibility check

Also, this fixes a bug where in an odd case a remote named
"config" could get renamed to ".metadata".

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-svn: test for creating new directories over svn://
Eric Wong [Wed, 13 Jun 2007 09:37:04 +0000 (02:37 -0700)]
git-svn: test for creating new directories over svn://

As reported by Matthieu Moy, this is causing svnserve to
terminate connections, because it segfaults.

This test is disabled by default and can be enabled by setting
SVNSERVE_PORT to an unbound (for 127.0.0.1) TCP port in the
environment (in addition to SVN_TESTS=1).  I'm not comfortable
with having a test start a daemon by default and take up a port
that could potentially stay running if the test failed.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-svn: cleanup: factor out longest_common_path() function
Eric Wong [Wed, 13 Jun 2007 09:37:03 +0000 (02:37 -0700)]
git-svn: cleanup: factor out longest_common_path() function

I hadn't looked at this code in a while and had to read this
again to figure out what it did.  To avoid having to do this
again in the future, I just gave gave the hunk a descriptive
name.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogitview: run blame with -C -C
Aneesh Kumar K.V [Wed, 13 Jun 2007 08:46:16 +0000 (14:16 +0530)]
gitview: run blame with -C -C

pass -C -C option to git-blame so that blame browsing
works when the data is copied over from other files.

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogitview: Fix the blame interface.
Aneesh Kumar K.V [Wed, 13 Jun 2007 08:46:15 +0000 (14:16 +0530)]
gitview: Fix the blame interface.

The async reading from the pipe was skipping some of the
input lines. Fix the same by making sure that we add the
partial content of the previous read to the newly read
data.

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMore static
Junio C Hamano [Wed, 13 Jun 2007 08:42:05 +0000 (01:42 -0700)]
More static

There still are quite a few symbols that ought to be static.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years ago-Wold-style-definition fix
Junio C Hamano [Wed, 13 Jun 2007 08:22:51 +0000 (01:22 -0700)]
-Wold-style-definition fix

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMakefile: allow generating git.o for debugging purposes
Junio C Hamano [Wed, 13 Jun 2007 08:28:21 +0000 (01:28 -0700)]
Makefile: allow generating git.o for debugging purposes

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMakefile: common-cmds.h depends on generate-cmdlist.sh script
Junio C Hamano [Wed, 13 Jun 2007 09:00:01 +0000 (02:00 -0700)]
Makefile: common-cmds.h depends on generate-cmdlist.sh script

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'jc/blame' (early part)
Junio C Hamano [Wed, 13 Jun 2007 07:22:40 +0000 (00:22 -0700)]
Merge branch 'jc/blame' (early part)

* 'jc/blame' (early part):
  git-blame -w: ignore whitespace
  git-blame: do not indent with spaces.

17 years agorefactor dir_add_name
Jeff King [Mon, 11 Jun 2007 13:39:44 +0000 (09:39 -0400)]
refactor dir_add_name

This is in preparation for keeping two entry lists in the
dir object.

This patch adds and uses the ALLOC_GROW() macro, which
implements the commonly used idiom of growing a dynamic
array using the alloc_nr function (not just in dir.c, but
everywhere).

We also move creation of a dir_entry to dir_entry_new.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-remote show: Also shorten non-fast-forward refs in the 'push' listing
Johannes Sixt [Sat, 9 Jun 2007 20:34:16 +0000 (22:34 +0200)]
git-remote show: Also shorten non-fast-forward refs in the 'push' listing

'git-remote show remote-name' lists the refs that are pushed to the remote
by showing the 'Push' line from the config file. But before showing it,
it shortened 'refs/heads/here:refs/heads/there' to 'here:there'. However,
if the Push line is prefixed with a plus, the ref was not shortened.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogitweb: change filename/directory name of snapshots
Matthias Lederhofer [Thu, 7 Jun 2007 09:27:08 +0000 (11:27 +0200)]
gitweb: change filename/directory name of snapshots

/.git or .git is removed from the project name and the
basename of the remaining path is used as the beginning of
the filename and as the directory in the archive.

The regexp will actually not strip off /.git or .git if there
wouldn't be anything left after removing it.

Currently the full project name is used as directory in the
archive and the basename is used as filename.  For example a
repository named foo/bar/.git will have a archive named
.git-<version>.* and extract to foo/bar/.git.  With this patch
the file is named bar-<version>.* and extracts to bar.

Signed-off-by: Matthias Lederhofer <matled@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDon't dereference a strdup-returned NULL
Jim Meyering [Tue, 12 Jun 2007 20:59:21 +0000 (22:59 +0200)]
Don't dereference a strdup-returned NULL

There are only a dozen or so uses of strdup in all of git.
Of those, most seem ok, but this one isn't:

Signed-off-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'maint'
Junio C Hamano [Wed, 13 Jun 2007 04:05:09 +0000 (21:05 -0700)]
Merge branch 'maint'

* maint:

17 years agoMerge branch 'aw/cvs'
Junio C Hamano [Wed, 13 Jun 2007 04:04:52 +0000 (21:04 -0700)]
Merge branch 'aw/cvs'

* aw/cvs:
  cvsimport: add <remote>/HEAD reference in separate remotes more
  cvsimport: update documentation to include separate remotes option
  cvsimport: add support for new style remote layout

17 years agoMerge branch 'ep/cvstag'
Junio C Hamano [Wed, 13 Jun 2007 04:01:27 +0000 (21:01 -0700)]
Merge branch 'ep/cvstag'

* ep/cvstag:
  Use git-tag in git-cvsimport

17 years agoMerge branch 'ar/clone' into maint
Junio C Hamano [Wed, 13 Jun 2007 03:48:31 +0000 (20:48 -0700)]
Merge branch 'ar/clone' into maint

* ar/clone:
  Fix clone to setup the origin if its name ends with .git

17 years agoMerge branch 'sv/objfixes' into maint
Junio C Hamano [Wed, 13 Jun 2007 03:48:21 +0000 (20:48 -0700)]
Merge branch 'sv/objfixes' into maint

* sv/objfixes:
  Don't assume tree entries that are not dirs are blobs

17 years agoAdd gitmodules(5)
Lars Hjemli [Tue, 12 Jun 2007 07:05:21 +0000 (09:05 +0200)]
Add gitmodules(5)

This adds documentation for the .gitmodules file.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-submodule: give submodules proper names
Lars Hjemli [Mon, 11 Jun 2007 19:12:24 +0000 (21:12 +0200)]
git-submodule: give submodules proper names

This changes the way git-submodule uses .gitmodules: Subsections no longer
specify the submodule path, they now specify the submodule name. The
submodule path is found under the new key "submodule.<name>.path", which is
a required key.

With this change a submodule can be moved between different 'checkout paths'
without upsetting git-submodule.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoRename sections from "module" to "submodule" in .gitmodules
Lars Hjemli [Mon, 11 Jun 2007 19:12:23 +0000 (21:12 +0200)]
Rename sections from "module" to "submodule" in .gitmodules

Rename [module] to [submodule], so that it would be more
forward compatible with the proposed extension by harmonizing
the section names used in .gitmodules and .git/config.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-submodule: remember to checkout after clone
Lars Hjemli [Mon, 11 Jun 2007 19:12:22 +0000 (21:12 +0200)]
git-submodule: remember to checkout after clone

After the initial clone of a submodule, no files would be checked out in
the submodule directory if the submodule HEAD was equal to the SHA-1
specified in the index of the containing repository. This fixes the problem
by simply ignoring submodule HEAD for a fresh clone.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agot7400: barf if git-submodule removes or replaces a file
Lars Hjemli [Mon, 11 Jun 2007 19:12:21 +0000 (21:12 +0200)]
t7400: barf if git-submodule removes or replaces a file

The test for an unmolested file wouldn't fail properly if the file had been
removed or replaced by something other than a regular file. This fixes it.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoTeach diff to imply --find-copies-harder upon -C -C
Johannes Schindelin [Mon, 11 Jun 2007 20:12:19 +0000 (21:12 +0100)]
Teach diff to imply --find-copies-harder upon -C -C

Earlier, a second "-C" on the command line had no effect.
But "--find-copies-harder" is so long to type, let's make doubled -C
enable that option.  It is in line with how "git blame" handles such
doubled options to mean "work harder".

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoRemove trailing slash from $(template_dir).
Johannes Sixt [Mon, 11 Jun 2007 09:10:47 +0000 (11:10 +0200)]
Remove trailing slash from $(template_dir).

All the other directory location variables do not have the trailing
slash.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoAvoid double-slash in path names that depend on $(sharedir).
Johannes Sixt [Mon, 11 Jun 2007 08:02:17 +0000 (10:02 +0200)]
Avoid double-slash in path names that depend on $(sharedir).

Recent git-gui has the ability to determine the location of its library
files relative to the --exec-dir. Its Makefile enables this capability
depending on the install paths that are specified. However, without this
fix there is an extra slash in a path specification, so that the Makefile
does not recognize the equivalence of two paths that it compares.

A side-effect is that all "standard" builds (which do not set $(sharedir)
explicitly) now exploit above mentioned gut-gui feature.

Another side-effect is that an ugly compiled-in double-slash in
$(template_dir) is avoided.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'lh/submodule'
Junio C Hamano [Tue, 12 Jun 2007 07:17:26 +0000 (00:17 -0700)]
Merge branch 'lh/submodule'

* lh/submodule:
  git-submodule: clone during update, not during init
  git-submodule: move cloning into a separate function

17 years agoMerge branch 'maint'
Junio C Hamano [Tue, 12 Jun 2007 07:15:16 +0000 (00:15 -0700)]
Merge branch 'maint'

* maint:
  Unquote From line from patch before comparing with given from address.
  git-cherry: Document 'limit' command-line option

17 years agoMerge branch 'master' of git://repo.or.cz/git-gui
Junio C Hamano [Tue, 12 Jun 2007 07:14:47 +0000 (00:14 -0700)]
Merge branch 'master' of git://repo.or.cz/git-gui

* 'master' of git://repo.or.cz/git-gui:
  git-gui: Save geometry before the window layout is damaged
  git-gui: Give amend precedence to HEAD over MERGE_MSG
  git-gui: Include 'war on whitespace' fixes from git.git

17 years agoUnquote From line from patch before comparing with given from address.
Kristian Høgsberg [Mon, 11 Jun 2007 17:04:40 +0000 (13:04 -0400)]
Unquote From line from patch before comparing with given from address.

This makes --suppress-from actually work when you're unfortunate enough
to have non-ASCII in your name.  Also, if there's a match use the optionally
RFC2047 quoted version from the email.

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-cherry: Document 'limit' command-line option
Luiz Fernando N. Capitulino [Mon, 11 Jun 2007 12:56:56 +0000 (09:56 -0300)]
git-cherry: Document 'limit' command-line option

Signed-off-by: Luiz Fernando N. Capitulino <lcapitulino@mandriva.com.br>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'maint' of git://repo.or.cz/git-gui into maint
Junio C Hamano [Tue, 12 Jun 2007 07:05:24 +0000 (00:05 -0700)]
Merge branch 'maint' of git://repo.or.cz/git-gui into maint

* 'maint' of git://repo.or.cz/git-gui:
  git-gui: Save geometry before the window layout is damaged
  git-gui: Give amend precedence to HEAD over MERGE_MSG
  git-gui: Include 'war on whitespace' fixes from git.git

17 years agoMerge branch 'maint'
Shawn O. Pearce [Tue, 12 Jun 2007 03:58:11 +0000 (23:58 -0400)]
Merge branch 'maint'

* maint:
  git-gui: Save geometry before the window layout is damaged
  git-gui: Give amend precedence to HEAD over MERGE_MSG

17 years agogit-gui: Save geometry before the window layout is damaged
Shawn O. Pearce [Tue, 12 Jun 2007 03:52:43 +0000 (23:52 -0400)]
git-gui: Save geometry before the window layout is damaged

Because Tk does not assure us the order that it will process
children in before it destroys the main toplevel we cannot safely
save our geometry data during a "bind . <Destroy>" event binding.
The geometry may have already changed as a result of a one or
more children being removed from the layout.  This was pointed
out in gitk by Mark Levedahl, and patched over there by commit
b6047c5a8166a71e01c6b63ebbb67c6894d95114.

So we now also use "wm protocol . WM_DELETE_WINDOW" to detect when
the window is closed by the user, and forward that close event to
our main do_quit routine.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Give amend precedence to HEAD over MERGE_MSG
Shawn O. Pearce [Mon, 11 Jun 2007 23:39:55 +0000 (19:39 -0400)]
git-gui: Give amend precedence to HEAD over MERGE_MSG

Apparently git-commit.sh (the command line commit user interface in
core Git) always gives precedence to the prior commit's message if
`commit --amend` is used and a $GIT_DIR/MERGE_MSG file also exists.

We actually were doing the same here in git-gui, but the amended
message got lost if $GIT_DIR/MERGE_MSG already existed because
we started a rescan immediately after loading the prior commit's
body into the edit buffer.  When that happened the rescan found
MERGE_MSG existed and replaced the commit message buffer with the
contents of that file.  This meant the user never saw us pick up
the commit message of the prior commit we are about to replace.

Johannes Sixt <J.Sixt@eudaptics.com> found this bug in git-gui by
running `git cherry-pick -n $someid` and then trying to amend the
prior commit in git-gui, thus combining the contents of $someid
with the contents of HEAD, and reusing the commit message of HEAD,
not $someid.  With the recent changes to make cherry-pick use the
$GIT_DIR/MERGE_MSG file Johannes saw git-gui pick up the message
of $someid, not HEAD.  Now we always use HEAD if we are amending.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoMerge branch 'maint'
Shawn O. Pearce [Mon, 11 Jun 2007 23:06:15 +0000 (19:06 -0400)]
Merge branch 'maint'

* maint:
  git-gui: Include 'war on whitespace' fixes from git.git

17 years agogit-gui: Include 'war on whitespace' fixes from git.git
Shawn O. Pearce [Mon, 11 Jun 2007 23:06:10 +0000 (19:06 -0400)]
git-gui: Include 'war on whitespace' fixes from git.git

Earlier git.git applied a large "war on whitespace" patch that was
created using 'apply --whitespace=strip'.  Unfortunately a few of
git-gui's own files got caught in the mix and were also cleaned up.
That was a6080a0a44d5ead84db3dabbbc80e82df838533d.

This patch is needed in git-gui.git to reapply those exact same
changes here, otherwise our version generator script is unable to
obtain our version number from git-describe when we are hosted in
the git.git repository.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoMerge branch 'master' of git://repo.or.cz/git-gui
Junio C Hamano [Mon, 11 Jun 2007 07:52:43 +0000 (00:52 -0700)]
Merge branch 'master' of git://repo.or.cz/git-gui

* 'master' of git://repo.or.cz/git-gui:
  git-gui: Internalize symbolic-ref HEAD reading logic
  git-gui: Expose the merge.diffstat configuration option
  git-gui: Allow users to delete remote branches
  git-gui: Allow users to rename branches through 'branch -m'
  git-gui: Disable tearoff menus on Windows, Mac OS X
  git-gui: Provide fatal error if library is unavailable
  git-gui: Enable verbose Tcl loading earlier
  git-gui: Show the git-gui library path in 'About git-gui'
  git-gui: GUI support for running 'git remote prune <name>'
  git gui 0.8.0

17 years agoMerge branch 'maint'
Junio C Hamano [Mon, 11 Jun 2007 07:52:37 +0000 (00:52 -0700)]
Merge branch 'maint'

* maint: (46 commits)
  git-gui: Changed blame header bar background to match main window
  git-gui: Favor the original annotations over the recent ones
  git-gui: Improve our labeling of blame annotation types
  git-gui: Use three colors for the blame viewer background
  git-gui: Jump to original line in blame viewer
  git-gui: Display both commits in our tooltips
  git-gui: Run blame twice on the same file and display both outputs
  git-gui: Display the "Loading annotation..." message in italic
  git-gui: Rename fields in blame viewer to better descriptions
  git-gui: Label the uncommitted blame history entry
  git-gui: Switch internal blame structure to Tcl lists
  git-gui: Cleanup redundant column management in blame viewer
  git-gui: Better document our blame variables
  git-gui: Remove unused commit_list from blame viewer
  git-gui: Automatically expand the line number column as needed
  git-gui: Make the line number column slightly wider in blame
  git-gui: Use lighter colors in blame view
  git-gui: Remove unnecessary space between columns in blame viewer
  git-gui: Remove the loaded column from the blame viewer
  git-gui: Clip the commit summaries in the blame history menu
  ...

17 years agoMerge branch 'maint' of git://repo.or.cz/git-gui into maint
Junio C Hamano [Mon, 11 Jun 2007 07:51:39 +0000 (00:51 -0700)]
Merge branch 'maint' of git://repo.or.cz/git-gui into maint

* 'maint' of git://repo.or.cz/git-gui: (46 commits)
  git-gui: Changed blame header bar background to match main window
  git-gui: Favor the original annotations over the recent ones
  git-gui: Improve our labeling of blame annotation types
  git-gui: Use three colors for the blame viewer background
  git-gui: Jump to original line in blame viewer
  git-gui: Display both commits in our tooltips
  git-gui: Run blame twice on the same file and display both outputs
  git-gui: Display the "Loading annotation..." message in italic
  git-gui: Rename fields in blame viewer to better descriptions
  git-gui: Label the uncommitted blame history entry
  git-gui: Switch internal blame structure to Tcl lists
  git-gui: Cleanup redundant column management in blame viewer
  git-gui: Better document our blame variables
  git-gui: Remove unused commit_list from blame viewer
  git-gui: Automatically expand the line number column as needed
  git-gui: Make the line number column slightly wider in blame
  git-gui: Use lighter colors in blame view
  git-gui: Remove unnecessary space between columns in blame viewer
  git-gui: Remove the loaded column from the blame viewer
  git-gui: Clip the commit summaries in the blame history menu
  ...

17 years agoMerge branch 'maint'
Shawn O. Pearce [Mon, 11 Jun 2007 06:14:21 +0000 (02:14 -0400)]
Merge branch 'maint'

* maint: (38 commits)
  git-gui: Changed blame header bar background to match main window
  git-gui: Favor the original annotations over the recent ones
  git-gui: Improve our labeling of blame annotation types
  git-gui: Use three colors for the blame viewer background
  git-gui: Jump to original line in blame viewer
  git-gui: Display both commits in our tooltips
  git-gui: Run blame twice on the same file and display both outputs
  git-gui: Display the "Loading annotation..." message in italic
  git-gui: Rename fields in blame viewer to better descriptions
  git-gui: Label the uncommitted blame history entry
  git-gui: Switch internal blame structure to Tcl lists
  git-gui: Cleanup redundant column management in blame viewer
  git-gui: Better document our blame variables
  git-gui: Remove unused commit_list from blame viewer
  git-gui: Automatically expand the line number column as needed
  git-gui: Make the line number column slightly wider in blame
  git-gui: Use lighter colors in blame view
  git-gui: Remove unnecessary space between columns in blame viewer
  git-gui: Remove the loaded column from the blame viewer
  git-gui: Clip the commit summaries in the blame history menu
  ...

17 years agogitweb: '--cc' for merges in 'commitdiff' view
Jakub Narebski [Fri, 8 Jun 2007 11:33:28 +0000 (13:33 +0200)]
gitweb: '--cc' for merges in 'commitdiff' view

Allow choosing between '-c' (combined diff) and '--cc' (compact
combined) diff format in 'commitdiff' view for merge (multiparent)
commits.  Default is now '--cc'.

In the bottom part of navigation bar there is link allowing to change
diff format: "combined" for '-c' (when using '--cc') and "compact" for
'--cc' (when using '-c'), just on the right of "raw" link to
'commitdiff_plain" view.

About patchset part of diff --cc output: the difftree (whatchanged
table) has "patch" links to anchors to individual patches (on the same
page). The --cc option further compresses the patch output by
omitting some hunks; when this optimization makes all hunks disappear,
the patch is not shown (like in any other "empty diff" case). But the
fact that patch has been simplified out is not reflected in the raw
(difftree) part of diff output; the raw part is the same for '-c' and
'--cc' options. As correcting difftree is rather out of the question,
as it would require scanning patchset part before writing out
difftree, we add "Simple merge" empty diffs as a place to have anchor
to in place of those simplified out and removed patches.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogitweb: Add links to blobdiffs in from-file/to-file header for merges
Jakub Narebski [Fri, 8 Jun 2007 11:32:44 +0000 (13:32 +0200)]
gitweb: Add links to blobdiffs in from-file/to-file header for merges

Add links to diff to file ('blobdiff' view) for each of individual
versions of the file in a merge commit to the from-file/to-file header
in the patch part of combined 'commitdiff' view for merges.

The from-file/to-file header for combined diff now looks like:

  --- _1_/_git-gui/git-gui.sh_
  --- _2_/_git-gui.sh_
  +++ b/_git-gui/git-gui.sh_

where _<filename>_ link is link to appropriate version of a file
('blob' view), and _<n>_ is link to respective diff to mentioned
version of a file ('blobdiff' view). There is even hint provided in
the form of title attribute.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogitweb: Create special from-file/to-file header for combined diff
Jakub Narebski [Fri, 8 Jun 2007 11:29:49 +0000 (13:29 +0200)]
gitweb: Create special from-file/to-file header for combined diff

Instead of using default, diff(1) like from-file/to-file header for
combined diff (for a merge commit), which looks like:

  --- a/git-gui/git-gui.sh
  +++ b/_git-gui/git-gui.sh_

(where _link_ denotes [hidden] hyperlink), create from-file(n)/to-file
header, using "--- <n>/_<filename>_" for each of parents, e.g.:

  --- 1/_git-gui/git-gui.sh_
  --- 2/_git-gui.sh_
  +++ b/_git-gui/git-gui.sh_

Test it on one of merge commits involving rename, e.g.
  95f97567c1887d77f3a46b42d8622c76414d964d (rename at top)
  5bac4a671907604b5fb4e24ff682d5b0e8431931 (file from one branch)

This is mainly meant to easier see renames in a merge commit.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogitweb: Split git_patchset_body into separate subroutines
Jakub Narebski [Fri, 8 Jun 2007 11:27:42 +0000 (13:27 +0200)]
gitweb: Split git_patchset_body into separate subroutines

This commit makes git_patchset_body easier to read, and reduces level of
nesting and indent level. It adds more lines that it removes because of
extra parameter passing in subroutines, and subroutine calls in
git_patchset_body. Also because there are few added comments.

Below there are descriptions of all split-off subroutines:

Separate formatting "git diff" header into format_git_diff_header_line.
While at it fix it so it always escapes pathname. It would be even more
useful if we decide to use `--cc' for merges, and need to generate by
hand empty patches for anchors.

Separate formatting extended (git) diff header lines into
format_extended_diff_header_line. This one is copied without changes.

Separate formatting two-lines from-file/to-file diff header into
format_diff_from_to_header subroutine. While at it fix it so it always
escapes pathname. Beware calling convention: it takes _two_ lines.

Separate generating %from and %to hashes (with info used among others to
generate hyperlinks) into parse_from_to_diffinfo subroutine. This one is
copied without changes.

Separate checking if file was deleted (and among others therefore does
not have link to the result file) into is_deleted subroutine. This would
allow us to easily change the algotithm to find if file is_deleted in
the result.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogitweb: Improve "next" link in commitdiff view
Jakub Narebski [Fri, 8 Jun 2007 11:26:31 +0000 (13:26 +0200)]
gitweb: Improve "next" link in commitdiff view

Check if 'hp' (hash_parent) parameter to 'commitdiff' view is one of
'h' (hash) commit parents, i.e. if commitdiff is of the form
"<commit>^<n> <commit>", and mark it as such in the bottom part of
navigation bar. The "next" link in commitdiff view was introduced
in commit 151602df00b8e5c5b4a8193f59a94b85f9b5aebc

If 'hb' is n-th parent of 'h', show the following at the bottom
of navigation bar:
  (from parent n: _commit_)

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogitweb: Provide links to commitdiff to each parent in 'commitdiff' view
Jakub Narebski [Fri, 8 Jun 2007 11:24:56 +0000 (13:24 +0200)]
gitweb: Provide links to commitdiff to each parent in 'commitdiff' view

Since commit-fb1dde4a we show combined diff for merges in 'commitdiff'
view, and since commit-208ecb2e also in 'commit' view. Sometimes
though one would want to see diff to one of merge commit parents. It
is easy in 'commit' view: in the commit header part there are "diff"
links for each of parent header. This commit adds such links also for
'commitdiff' view.

Add to difftree / whatchanged table row with "1", "2", ... links to
'commitdiff' view for diff with n-th parent for merge commits, as a
table header.  This is visible only in 'comitdiff' view, and only for
a merge commit (comit with more than one parent).

To save space links are shown as "n", where "n" is number of a parent,
and not as for example shortened (to 7 characters) sha1 of a parent
commit.  To make it easier to discover what links is for, each link
has 'title' attribute explaining the link.

Note that one would need to remember that difftree table in 'commit'
view has one less column (it doesn't have "patch" link column), if one
would want to add such table header also in 'commit' view.

Example output:
                          1       2       3
  Makefile      patch | diff1 | diff2 | diff3 | blob | history
  cache.h       patch | diff1 | diff2 | diff3 | blob | history

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'maint'
Junio C Hamano [Sun, 10 Jun 2007 23:45:08 +0000 (16:45 -0700)]
Merge branch 'maint'

* maint:
  tutorial: use "project history" instead of "changelog" in header
  Documentation: user-manual todo
  user-manual: add a missing section ID
  Fix typo in remote branch example in git user manual
  user-manual: quick-start updates

17 years agomktag: minimally update the description.
Junio C Hamano [Sun, 10 Jun 2007 23:00:36 +0000 (16:00 -0700)]
mktag: minimally update the description.

It lacked a description for the (historically) optional tagger header line.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMakefile: add an explicit rule for building assembly output
Linus Torvalds [Wed, 30 May 2007 17:42:41 +0000 (10:42 -0700)]
Makefile: add an explicit rule for building assembly output

In the kernel we have a rule for *.c -> *.s files exactly because
it's nice to be able to easily say "ok, what does that generate".

Here's a patch to add such a rule to git too, in case anybody is
interested. It makes it much simpler to just do

make sha1_file.s

and look at the compiler-generated output that way, rather than having to
fire up gdb on the resulting binary.

(Add -fverbose-asm or something if you want to, it can make the result
even more readable)

[jc: add *.s to .gitignore]

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agotutorial: use "project history" instead of "changelog" in header
J. Bruce Fields [Sun, 10 Jun 2007 20:20:34 +0000 (16:20 -0400)]
tutorial: use "project history" instead of "changelog" in header

The word "changelog" seems a little too much like jargon to me, and beginners
must understand section headers so they know where to look for help.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agoDocumentation: user-manual todo
J. Bruce Fields [Tue, 6 Feb 2007 07:55:07 +0000 (02:55 -0500)]
Documentation: user-manual todo

Some more user-manual todo's: how to share objects between repositories, how to
recover.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agouser-manual: add a missing section ID
J. Bruce Fields [Tue, 5 Jun 2007 22:42:58 +0000 (18:42 -0400)]
user-manual: add a missing section ID

I forgot to give an ID for this section.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agoFix typo in remote branch example in git user manual
Gerrit Pape [Tue, 5 Jun 2007 08:47:51 +0000 (08:47 +0000)]
Fix typo in remote branch example in git user manual

In Documentation/user-manual.txt the example
 $ git checkout --track -b origin/maint maint
under "Getting updates with git pull", should read
 $ git checkout --track -b maint origin/maint

This was noticed by Ron, and reported through
 http://bugs.debian.org/427502

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agouser-manual: quick-start updates
J. Bruce Fields [Tue, 5 Jun 2007 22:33:27 +0000 (18:33 -0400)]
user-manual: quick-start updates

Update text to reflect new position in appendix.

Update the name to reflect the fact that this is closer to reference
than tutorial documentation (as suggested by Jonas Fonseca).

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agogit-mergetool: Make default selection of merge-tool more intelligent
Theodore Ts'o [Sun, 10 Jun 2007 15:17:30 +0000 (11:17 -0400)]
git-mergetool: Make default selection of merge-tool more intelligent

Make git-mergetool prefer meld under GNOME, and kdiff3 under KDE.  When
considering emerge and vimdiff, check $VISUAL and $EDITOR to see which the
user might prefer.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Cc: Josh Triplett <josh@freedesktop.org>
17 years ago[PATCH] git-mergetool: Allow gvimdiff to be used as a mergetool
Dan McGee [Wed, 6 Jun 2007 01:19:47 +0000 (21:19 -0400)]
[PATCH] git-mergetool: Allow gvimdiff to be used as a mergetool

Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Acked-by: "Theodore Ts'o" <tytso@mit.edu>
17 years agogit-blame -w: ignore whitespace
Junio C Hamano [Sun, 10 Jun 2007 01:14:56 +0000 (18:14 -0700)]
git-blame -w: ignore whitespace

When refactoring code to split one iteration of a too deeply
nested loop into a separate function, it inevitably makes the
indentation levels shallower (that's the sole point of such a
refactoring).  With "git blame -w", you can ignore such
re-indentation and pass blame for such moved lines to the
parent.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-blame: do not indent with spaces.
Junio C Hamano [Sun, 10 Jun 2007 01:15:24 +0000 (18:15 -0700)]
git-blame: do not indent with spaces.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-branch: cleanup config file when deleting branches
Gerrit Pape [Sat, 9 Jun 2007 12:40:35 +0000 (12:40 +0000)]
git-branch: cleanup config file when deleting branches

When deleting branches, remove the sections referring to these branches
from the config file.

Signed-off-by: Gerrit Pape <pape@smarden.org>
17 years agogit-push: Update description of refspecs and add examples
Junio C Hamano [Sat, 9 Jun 2007 18:01:23 +0000 (11:01 -0700)]
git-push: Update description of refspecs and add examples

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoremote.c: "git-push frotz" should update what matches at the source.
Junio C Hamano [Sat, 9 Jun 2007 08:37:14 +0000 (01:37 -0700)]
remote.c: "git-push frotz" should update what matches at the source.

Earlier, when the local repository has a branch "frotz" and the
remote repository has a tag "frotz" (but not branch "frotz"),
"git-push frotz" mistakenly updated the tag at the remote side.
This was because the partial refname matching code was applied
independently on both source and destination side.

With this fix, when a colon-less refspec is given to git-push,
we first match it with the refs in the source repository, and
update the matching ref in the destination repository.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoremote.c: fix "git push" weak match disambiguation
Junio C Hamano [Sat, 9 Jun 2007 08:23:53 +0000 (01:23 -0700)]
remote.c: fix "git push" weak match disambiguation

When "git push A:B" is given, and A (or B) is not a full refname
that begins with refs/, we require an unambiguous match with an
existing ref.  For this purpose, a match with a local branch or
a tag (i.e. refs/heads/A and refs/tags/A) is called a "strong
match", and any other match is called a "weak match".  A partial
refname is unambiguous when there is only one strong match with
any number of weak matches, or when there is only one weak match
and no other match.

However, as reported by Sparse with Ramsay Jones recently,
count_refspec_match() function had a bug where a variable in an
inner block masked a different variable of the same name, which
caused the weak matches to be ignored.

This fixes it, and adds tests for the fix.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoremote.c: minor clean-up of match_explicit()
Junio C Hamano [Sat, 9 Jun 2007 07:14:04 +0000 (00:14 -0700)]
remote.c: minor clean-up of match_explicit()

When checking what ref the source refspec matches, we have no
business setting the default for the destination, so move that
code lower.  Also simplify the result from the code block that
matches the source side by making it set matched_src only upon
unambiguous match.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoremote.c: refactor creation of new dst ref
Junio C Hamano [Sat, 9 Jun 2007 07:07:34 +0000 (00:07 -0700)]
remote.c: refactor creation of new dst ref

This refactors open-coded sequence to create a new "struct ref"
and link it to the tail of dst list into a new function.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoremote.c: refactor match_explicit_refs()
Junio C Hamano [Sat, 9 Jun 2007 06:22:58 +0000 (23:22 -0700)]
remote.c: refactor match_explicit_refs()

This does not change functionality; just splits one block that
is deeply nested and indented out of a huge loop into a separate
function.

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