Code

git.git
14 years agocmd_merge(): Parse options before checking MERGE_HEAD
Johan Herland [Tue, 9 Nov 2010 21:49:58 +0000 (22:49 +0100)]
cmd_merge(): Parse options before checking MERGE_HEAD

Reorder the initial part of builtin/merge.c:cmd_merge() so that command-line
options are parsed _before_ we load the index and check for MERGE_HEAD
(and exits if it exists). This does not change the behaviour of 'git merge',
but is needed in preparation for the implementation of 'git merge --abort'
(which requires MERGE_HEAD to be present).

This patch has been improved by the following contributions:
- Junio C Hamano: fixup minor style issues

Thanks-to: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoProvide 'git notes get-ref' to easily retrieve current notes ref
Johan Herland [Tue, 9 Nov 2010 21:49:57 +0000 (22:49 +0100)]
Provide 'git notes get-ref' to easily retrieve current notes ref

Script may use 'git notes get-ref' to easily retrieve the current notes ref.

Suggested-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agogit notes merge: Add testcases for merging notes trees at different fanouts
Johan Herland [Tue, 9 Nov 2010 21:49:56 +0000 (22:49 +0100)]
git notes merge: Add testcases for merging notes trees at different fanouts

Notes trees may exist at different fanout levels internally. This
implementation detail should not be visible to the user, and it should
certainly not affect the merging of notes tree.

This patch adds testcases verifying the correctness of 'git notes merge'
when merging notes trees at different fanout levels.

This patch has been improved by the following contributions:
- Junio C Hamano: Portability: Don't string-compare 'wc -l' output

Thanks-to: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agogit notes merge: Add another auto-resolving strategy: "cat_sort_uniq"
Johan Herland [Sun, 14 Nov 2010 23:57:17 +0000 (00:57 +0100)]
git notes merge: Add another auto-resolving strategy: "cat_sort_uniq"

This new strategy is similar to "concatenate", but in addition to
concatenating the two note candidates, this strategy sorts the resulting
lines, and removes duplicate lines from the result. This is equivalent to
applying the "cat | sort | uniq" shell pipeline to the two note candidates.

This strategy is useful if the notes follow a line-based format where one
wants to avoid duplicate lines in the merge result.

Note that if either of the note candidates contain duplicate lines _prior_
to the merge, these will also be removed by this merge strategy.

The patch also contains tests and documentation for the new strategy.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agogit notes merge: --commit should fail if underlying notes ref has moved
Johan Herland [Tue, 9 Nov 2010 21:49:54 +0000 (22:49 +0100)]
git notes merge: --commit should fail if underlying notes ref has moved

When manually resolving a notes merge, if the merging ref has moved since
the merge started, we should fail to complete the merge, and alert the user
to what's going on.

This situation may arise if you start a 'git notes merge' which results in
conflicts, and you then update the current notes ref (using for example
'git notes add/copy/amend/edit/remove/prune', 'git update-ref', etc.),
before you get around to resolving the notes conflicts and calling
'git notes merge --commit'.

We detect this situation by comparing the first parent of the partial merge
commit (which was created when the merge started) to the current value of the
merging notes ref (pointed to by the .git/NOTES_MERGE_REF symref).

If we don't fail in this situation, the notes merge commit would overwrite
the updated notes ref, thus losing the changes that happened in the meantime.

The patch includes a testcase verifying that we fail correctly in this
situation.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agogit notes merge: List conflicting notes in notes merge commit message
Johan Herland [Tue, 9 Nov 2010 21:49:53 +0000 (22:49 +0100)]
git notes merge: List conflicting notes in notes merge commit message

This brings notes merge in line with regular merge's behaviour.

This patch has been improved by the following contributions:
- Ævar Arnfjörð Bjarmason: Don't use C99 comments.

Thanks-to: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agogit notes merge: Manual conflict resolution, part 2/2
Johan Herland [Tue, 9 Nov 2010 21:49:52 +0000 (22:49 +0100)]
git notes merge: Manual conflict resolution, part 2/2

When the notes merge conflicts in .git/NOTES_MERGE_WORKTREE have been
resolved, we need to record a new notes commit on the appropriate notes
ref with the resolved notes.

This patch implements 'git notes merge --commit' which the user should
run after resolving conflicts in the notes merge worktree. This command
finalizes the notes merge by recombining the partial notes tree from
part 1 with the now-resolved conflicts in the notes merge worktree in a
merge commit, and updating the appropriate ref to this merge commit.

In order to correctly finalize the merge, we need to keep track of three
things:

- The partial merge result from part 1, containing the auto-merged notes.
  This is now stored into a ref called .git/NOTES_MERGE_PARTIAL.
- The unmerged notes. These are already stored in
  .git/NOTES_MERGE_WORKTREE, thanks to part 1.
- The notes ref to be updated by the finalized merge result. This is now
  stored in a symref called .git/NOTES_MERGE_REF.

In addition to "git notes merge --commit", which uses the above details
to create the finalized notes merge commit, this patch also implements
"git notes merge --reset", which aborts the ongoing notes merge by simply
removing the files/directory described above.

FTR, "git notes merge --commit" reuses "git notes merge --reset" to remove
the information described above (.git/NOTES_MERGE_*) after the notes merge
have been successfully finalized.

The patch also contains documentation and testcases for the two new options.

This patch has been improved by the following contributions:
- Ævar Arnfjörð Bjarmason: Fix nonsense sentence in --commit description
- Sverre Rabbelier: Rename --reset to --abort

Thanks-to: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Thanks-to: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agogit notes merge: Manual conflict resolution, part 1/2
Johan Herland [Tue, 9 Nov 2010 21:49:51 +0000 (22:49 +0100)]
git notes merge: Manual conflict resolution, part 1/2

Conflicts (that are to be resolved manually) are written into a special-
purpose working tree, located at .git/NOTES_MERGE_WORKTREE. Within this
directory, conflicting notes entries are stored (with conflict markers
produced by ll_merge()) using the SHA1 of the annotated object. The
.git/NOTES_MERGE_WORKTREE directory will only contain the _conflicting_
note entries. The non-conflicting note entries (aka. the partial merge
result) are stored in 'local_tree', and the SHA1 of the resulting commit
is written to 'result_sha1'. The return value from notes_merge() is -1.

The user is told to edit the files within the .git/NOTES_MERGE_WORKTREE
directory in order to resolve the conflicts.

The patch also contains documentation and testcases for the correct setup
of .git/NOTES_MERGE_WORKTREE.

The next part will recombine the partial notes merge result with the
resolved conflicts in .git/NOTES_MERGE_WORKTREE to produce the complete
merge result.

This patch has been improved by the following contributions:
- Jonathan Nieder: Use trace_printf(...) instead of OUTPUT(o, 5, ...)

Thanks-to: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoDocumentation: Preliminary docs on 'git notes merge'
Johan Herland [Tue, 9 Nov 2010 21:49:50 +0000 (22:49 +0100)]
Documentation: Preliminary docs on 'git notes merge'

This patch has been improved by the following contributions:
- Stephen Boyd: Use "automatically resolves" instead of "auto-resolves"
- Stephen Boyd: Remove unbalanced '('

Thanks-to: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agogit notes merge: Add automatic conflict resolvers (ours, theirs, union)
Johan Herland [Sun, 14 Nov 2010 23:55:12 +0000 (00:55 +0100)]
git notes merge: Add automatic conflict resolvers (ours, theirs, union)

The new -s/--strategy command-line option to 'git notes merge' allow the user
to choose how notes merge conflicts should be resolved. There are four valid
strategies to choose from:

1. "manual" (the default): This will let the user manually resolve conflicts.
   This option currently fails with an error message. It will be implemented
   properly in future patches.

2. "ours": This automatically chooses the local version of a conflict, and
   discards the remote version.

3. "theirs": This automatically chooses the remote version of a conflict, and
   discards the local version.

4. "union": This automatically resolves the conflict by appending the remote
   version to the local version.

The strategies are implemented using the combine_notes_* functions from the
notes.h API.

The patch also includes testcases verifying the correct implementation of
these strategies.

This patch has been improved by the following contributions:
- Jonathan Nieder: Future-proof by always checking add_note() return value
- Stephen Boyd: Use test_commit
- Stephen Boyd: Use correct option name

Thanks-to: Jonathan Nieder <jrnieder@gmail.com>
Thanks-to: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agogit notes merge: Handle real, non-conflicting notes merges
Johan Herland [Sun, 14 Nov 2010 23:54:11 +0000 (00:54 +0100)]
git notes merge: Handle real, non-conflicting notes merges

This continuation of the 'git notes merge' implementation teaches notes-merge
to properly do real merges between notes trees: Two diffs are performed, one
from $base to $remote, and another from $base to $local. The paths in each
diff are normalized to SHA1 object names. The two diffs are then consolidated
into a single list of change pairs to be evaluated. Each change pair consist
of:

  - The annotated object's SHA1
  - The $base SHA1 (i.e. the common ancestor notes for this object)
  - The $local SHA1 (i.e. the current notes for this object)
  - The $remote SHA1 (i.e. the to-be-merged notes for this object)

From the pair ($base -> $local, $base -> $remote), we can determine the merge
result using regular 3-way rules. If conflicts are encountered in this
process, we fail loudly and exit (conflict handling to be added in a future
patch), If we can complete the merge without conflicts, the resulting
notes tree is committed, and the current notes ref updated.

The patch includes added testcases verifying that we can successfully do real
conflict-less merges.

This patch has been improved by the following contributions:
- Jonathan Nieder: Future-proof by always checking add_note() return value
- Stephen Boyd: Use test_commit
- Jonathan Nieder: Use trace_printf(...) instead of OUTPUT(o, 5, ...)
- Junio C Hamano: fixup minor style issues

Thanks-to: Jonathan Nieder <jrnieder@gmail.com>
Thanks-to: Stephen Boyd <bebarino@gmail.com>
Thanks-to: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agobuiltin/notes.c: Refactor creation of notes commits.
Johan Herland [Tue, 9 Nov 2010 21:49:47 +0000 (22:49 +0100)]
builtin/notes.c: Refactor creation of notes commits.

Create new function create_notes_commit() which is slightly more general than
commit_notes() (accepts multiple commit parents and does not auto-update the
notes ref). This function will be used by the notes-merge functionality in
future patches.

Also rewrite builtin/notes.c:commit_notes() to reuse this new function.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agogit notes merge: Initial implementation handling trivial merges only
Johan Herland [Tue, 9 Nov 2010 21:49:46 +0000 (22:49 +0100)]
git notes merge: Initial implementation handling trivial merges only

This initial implementation of 'git notes merge' only handles the trivial
merge cases (i.e. where the merge is either a no-op, or a fast-forward).

The patch includes testcases for these trivial merge cases.

Future patches will extend the functionality of 'git notes merge'.

This patch has been improved by the following contributions:
- Stephen Boyd: Simplify argc logic
- Stephen Boyd: Use test_commit
- Ævar Arnfjörð Bjarmason: Don't use C99 comments.
- Jonathan Nieder: Add constants for common verbosity values
- Jonathan Nieder: Use trace_printf(...) instead of OUTPUT(o, 5, ...)
- Jonathan Nieder: Remove extraneous show() function
- Jonathan Nieder: Clarify handling of empty/missing notes ref in notes_merge()
- Junio C Hamano: fixup minor style issues

Thanks-to: Stephen Boyd <bebarino@gmail.com>
Thanks-to: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Thanks-to: Jonathan Nieder <jrnieder@gmail.com>
Thanks-to: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agobuiltin/notes.c: Split notes ref DWIMmery into a separate function
Johan Herland [Tue, 9 Nov 2010 21:49:45 +0000 (22:49 +0100)]
builtin/notes.c: Split notes ref DWIMmery into a separate function

expand_notes_ref() is a new function that performs the DWIM transformation
of "foo" -> "refs/notes/foo" where notes refs are expected.

This is done in preparation for future patches which will also need this
DWIM functionality.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agonotes.c: Use two newlines (instead of one) when concatenating notes
Johan Herland [Tue, 9 Nov 2010 21:49:44 +0000 (22:49 +0100)]
notes.c: Use two newlines (instead of one) when concatenating notes

When using combine_notes_concatenate() to concatenate notes, it currently
ensures exactly one newline character between the given notes. However,
when using builtin/notes.c:create_note() to concatenate notes (e.g. by
'git notes append'), it adds a newline character to the trailing newline
of the preceding notes object, thus resulting in _two_ newlines (aka. a
blank line) separating contents of the two notes.

This patch brings combine_notes_concatenate() into consistency with
builtin/notes.c:create_note(), by ensuring exactly _two_ newline characters
between concatenated notes.

The patch also changes a few notes-related selftests accordingly.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years ago(trivial) t3303: Indent with tabs instead of spaces for consistency
Johan Herland [Tue, 9 Nov 2010 21:49:43 +0000 (22:49 +0100)]
(trivial) t3303: Indent with tabs instead of spaces for consistency

The rest of the file uses tabs for indenting. Fix the one function
that doesn't.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agonotes.h/c: Propagate combine_notes_fn return value to add_note() and beyond
Johan Herland [Sun, 14 Nov 2010 23:52:26 +0000 (00:52 +0100)]
notes.h/c: Propagate combine_notes_fn return value to add_note() and beyond

The combine_notes_fn functions uses a non-zero return value to indicate
failure. However, this return value was converted to a call to die()
in note_tree_insert().

Instead, propagate this return value out to add_note(), and return it
from there to enable the caller to handle errors appropriately.

Existing add_note() callers are updated to die() upon failure, thus
preserving the current behaviour. The only exceptions are copy_note()
and notes_cache_put() where we are able to propagate the add_note()
return value instead.

This patch has been improved by the following contributions:
- Jonathan Nieder: Future-proof by always checking add_note() return value
- Jonathan Nieder: Improve clarity of final if-condition in note_tree_insert()

Thanks-to: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agonotes.h/c: Allow combine_notes functions to remove notes
Johan Herland [Tue, 9 Nov 2010 21:49:41 +0000 (22:49 +0100)]
notes.h/c: Allow combine_notes functions to remove notes

Allow combine_notes functions to request that a note be removed, by setting
the resulting note SHA1 to null_sha1 (0000000...).

For consistency, also teach note_tree_insert() to skip insertion of an empty
note (a note with entry->val_sha1 equal to null_sha1) when there is no note
to combine it with.

In general, an empty note (null_sha1) is treated identically to no note at
all, but when adding an empty note where there already exists a non-empty
note, we allow the combine_notes function to potentially record a new/changed
note. Document this behaviour, and clearly specify how combine_notes functions
are expected to handle null_sha1 in input.

Before this patch, storing null_sha1s in the notes tree were silently allowed,
causing an invalid notes tree (referring to blobs with null_sha1) to be
produced by write_notes_tree().

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agonotes.c: Reorder functions in preparation for next commit
Johan Herland [Tue, 9 Nov 2010 21:49:40 +0000 (22:49 +0100)]
notes.c: Reorder functions in preparation for next commit

This patch introduces no functional change. It consists solely of reordering
functions in notes.c to avoid use-before-declaration errors after applying
the next commit in this series.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agonotes.h: Make default_notes_ref() available in notes API
Johan Herland [Tue, 9 Nov 2010 21:49:39 +0000 (22:49 +0100)]
notes.h: Make default_notes_ref() available in notes API

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years ago(trivial) notes.h: Minor documentation fixes to copy_notes()
Johan Herland [Tue, 9 Nov 2010 21:49:38 +0000 (22:49 +0100)]
(trivial) notes.h: Minor documentation fixes to copy_notes()

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agonotes.c: Hexify SHA1 in die() message from init_notes()
Johan Herland [Tue, 9 Nov 2010 21:49:37 +0000 (22:49 +0100)]
notes.c: Hexify SHA1 in die() message from init_notes()

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agonotes: allow --dry-run for -n and --verbose for -v
René Scharfe [Fri, 6 Aug 2010 20:28:09 +0000 (22:28 +0200)]
notes: allow --dry-run for -n and --verbose for -v

For consistency with other git commands, let the prune subcommand of
git notes accept the long options --dry-run and --verbose for the
respective short ones -n and -v.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoDocument -B<n>[/<m>], -M<n> and -C<n> variants of -B, -M and -C
Matthieu Moy [Thu, 5 Aug 2010 16:14:25 +0000 (18:14 +0200)]
Document -B<n>[/<m>], -M<n> and -C<n> variants of -B, -M and -C

These options take an optional argument, but this optional argument was
not documented.

Original patch by Matthieu Moy, but documentation for -B mostly copied
from the explanations of Junio C Hamano.

While we're there, fix a typo in a comment in diffcore.h.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoDocumentation: cite git-am from git-apply
Brad King [Tue, 3 Aug 2010 18:41:50 +0000 (14:41 -0400)]
Documentation: cite git-am from git-apply

Users reading git-apply documentation may also be interested in git-am,
especially after receiving an email created with git-format-patch.  The
documentation for git-am already references git-apply.  Add the reverse.

Signed-off-by: Brad King <brad.king@kitware.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot7003: fix subdirectory-filter test
Thomas Rast [Thu, 29 Jul 2010 15:10:22 +0000 (17:10 +0200)]
t7003: fix subdirectory-filter test

The test would not fail if the filtering failed to do anything, since
in

  test -z "$(git diff HEAD directorymoved:newsubdir)"'

'directorymoved:newsubdir' is not valid, so git-diff fails without
printing anything on stdout.  But then the exit status of git-diff is
lost, whereas test -z "" succeeds.

Use 'git diff --exit-code' instead, which does the right thing and has
the added bonus of showing the differences if there are any.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoAllow "check-ref-format --branch" from subdirectory
Jonathan Nieder [Fri, 6 Aug 2010 03:39:22 +0000 (22:39 -0500)]
Allow "check-ref-format --branch" from subdirectory

check-ref-format --branch requires access to the repository
to resolve refs like @{-1}.

Noticed by Nguyễn Thái Ngọc Duy.

Cc: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agocheck-ref-format: handle subcommands in separate functions
Jonathan Nieder [Fri, 6 Aug 2010 03:36:07 +0000 (22:36 -0500)]
check-ref-format: handle subcommands in separate functions

The code for each subcommand should be easier to read and manipulate
this way.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agopretty-options.txt: match --format's documentation with implementation.
Matthieu Moy [Thu, 5 Aug 2010 13:08:05 +0000 (15:08 +0200)]
pretty-options.txt: match --format's documentation with implementation.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoMerge branch 'sv/maint-diff-q-clear-fix' into maint
Junio C Hamano [Tue, 3 Aug 2010 22:17:34 +0000 (15:17 -0700)]
Merge branch 'sv/maint-diff-q-clear-fix' into maint

* sv/maint-diff-q-clear-fix:
  Fix DIFF_QUEUE_CLEAR refactoring

14 years agoMerge branch 'rr/svn-fe' into maint
Junio C Hamano [Tue, 3 Aug 2010 22:17:11 +0000 (15:17 -0700)]
Merge branch 'rr/svn-fe' into maint

* rr/svn-fe:
  contrib/svn-fe: Add the svn-fe target to .gitignore
  contrib/svn-fe: Fix IncludePath

14 years agoMerge branch 'pt/git-gui' into maint
Junio C Hamano [Tue, 3 Aug 2010 22:16:38 +0000 (15:16 -0700)]
Merge branch 'pt/git-gui' into maint

* pt/git-gui:
  git-gui: fix size and position of window panes on startup
  git-gui: mc cannot be used before msgcat has been loaded
  git-gui: use textconv filter for diff and blame
  git-gui: Avoid using the <<Copy>> binding as a menu accelerator on win32
  git-gui: fix shortcut creation on cygwin
  git-gui: fix PATH environment for mingw development environment
  git-gui: fix usage of _gitworktree when creating shortcut for windows
  git-gui: fix "Explore Working Copy" for Windows again
  git-gui: fix usage of themed widgets variable
  git-gui: Handle failure of core.worktree to identify the working directory.
  git-gui: check whether systems nice command works or disable it

14 years agocontrib/svn-fe: Add the svn-fe target to .gitignore
Ramkumar Ramachandra [Thu, 29 Jul 2010 05:36:20 +0000 (11:06 +0530)]
contrib/svn-fe: Add the svn-fe target to .gitignore

Add the svn-fe target to .gitignroe.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agocontrib/svn-fe: Fix IncludePath
Ramkumar Ramachandra [Thu, 29 Jul 2010 05:36:19 +0000 (11:06 +0530)]
contrib/svn-fe: Fix IncludePath

Include the path "../../vcs-svn" while compiling it in the Makefile
and change svn-fe.c to include svndump.h.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoMerge branch 'ab/tap' into maint
Junio C Hamano [Mon, 2 Aug 2010 18:53:58 +0000 (11:53 -0700)]
Merge branch 'ab/tap' into maint

* ab/tap:
  test-lib: Remove 3 year old no-op --no-python option
  test-lib: Ignore --quiet under a TAP harness

14 years agotest-lib: Remove 3 year old no-op --no-python option
Ævar Arnfjörð Bjarmason [Sat, 31 Jul 2010 16:49:53 +0000 (16:49 +0000)]
test-lib: Remove 3 year old no-op --no-python option

The --no-python option was added to test-lib.sh by Johannes Schindelin
in early 2006 in abb7c7b3. It was later turned into a no-op by Junio C
Hamano in 7cdbff14 the same year.

Over three years is long enough before removing this old wart which
was retained for backwards compatibility. Our tests have been using
NO_PYTHON and "test_have_prereq PYTHON" for a long time now.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agotest-lib: Ignore --quiet under a TAP harness
Ævar Arnfjörð Bjarmason [Sat, 31 Jul 2010 16:40:05 +0000 (16:40 +0000)]
test-lib: Ignore --quiet under a TAP harness

Running the tests with --quiet under a TAP harness will always fail,
since a TAP harness always needs actual test output to go along with
the plan that's being emitted.

Change the test-lib.sh to ignore the --quiet option under
HARNESS_ACTIVE to work around this. Then users that have --quiet in
their GIT_TEST_OPTS can run tests under prove(1) without everything
breaking.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoMerge git://repo.or.cz/git-gui into pt/git-gui
Junio C Hamano [Mon, 2 Aug 2010 16:28:30 +0000 (09:28 -0700)]
Merge git://repo.or.cz/git-gui into pt/git-gui

* git://repo.or.cz/git-gui:
  git-gui: fix size and position of window panes on startup
  git-gui: mc cannot be used before msgcat has been loaded
  git-gui: use textconv filter for diff and blame
  git-gui: Avoid using the <<Copy>> binding as a menu accelerator on win32
  git-gui: fix shortcut creation on cygwin
  git-gui: fix PATH environment for mingw development environment
  git-gui: fix usage of _gitworktree when creating shortcut for windows
  git-gui: fix "Explore Working Copy" for Windows again
  git-gui: fix usage of themed widgets variable
  git-gui: Handle failure of core.worktree to identify the working directory.
  git-gui: check whether systems nice command works or disable it

14 years agoDocumentation/rev-parse: quoting is required with --parseopt
Thomas Rast [Fri, 30 Jul 2010 15:01:50 +0000 (17:01 +0200)]
Documentation/rev-parse: quoting is required with --parseopt

When calling rev-parse --parseopt, as in the (now fixed) documented
example

  eval "$(echo "$OPTS_SPEC" | git rev-parse --parseopt -- "$@" || echo exit $?)"

the outermost quoting is required, as otherwise all runs of arbitrary
whitespace inside the resulting 'set -- ...' call would be collapsed
into a single space.

This was exposed as a result of our new use of cat <<\EOF since
47e9cd2 (parseopt: wrap rev-parse --parseopt usage for eval
consumption, 2010-06-12), but has always been a problem when handling
arguments containing e.g. newlines.

Point this out in the documentation, and in particular correct the
example that did not have the quotes.

Noticed-by: Joshua Jensen <jjensen@workspacewhiz.com>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoDocumentation: reporting bugs
Junio C Hamano [Mon, 2 Aug 2010 16:07:39 +0000 (09:07 -0700)]
Documentation: reporting bugs

Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoFix DIFF_QUEUE_CLEAR refactoring
Junio C Hamano [Mon, 2 Aug 2010 15:29:42 +0000 (08:29 -0700)]
Fix DIFF_QUEUE_CLEAR refactoring

It introduced a macro to reduce repeated assignments to three fields,
but an unrelated and incorrect change snuck in by mistake, which broke
commands like "git diff-files -p --submodule".

Noticed by Sven Verdoolaege.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agogit-gui: fix size and position of window panes on startup
Pat Thoyts [Mon, 2 Aug 2010 12:42:45 +0000 (13:42 +0100)]
git-gui: fix size and position of window panes on startup

The themed panedwindow needs to have the sash position set after the
widget has been mapped therefore apply this setting in the Map event
binding. To avoid visible redraws as the application is constructed
the main window should be withdrawn until all the widgets have been added

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
14 years agogit-gui: mc cannot be used before msgcat has been loaded
Pat Thoyts [Mon, 2 Aug 2010 11:13:05 +0000 (12:13 +0100)]
git-gui: mc cannot be used before msgcat has been loaded

If someone attempts to use an older version that Tk 8.4 the error was
masked by the lack of a mc command.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
14 years agogit-gui: use textconv filter for diff and blame
Clément Poulain [Fri, 30 Jul 2010 08:11:02 +0000 (09:11 +0100)]
git-gui: use textconv filter for diff and blame

Create a checkbox "Use Textconv For Diffs and Blame" in git-gui options.
If checked and if the driver for the concerned file exists, git-gui calls diff
and blame with --textconv option

Signed-off-by: Clément Poulain <clement.poulain@ensimag.imag.fr>
Signed-off-by: Diane Gasselin <diane.gasselin@ensimag.imag.fr>
Signed-off-by: Axel Bonnet <axel.bonnet@ensimag.imag.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
14 years agogit-gui: Avoid using the <<Copy>> binding as a menu accelerator on win32
Pat Thoyts [Mon, 8 Mar 2010 12:43:27 +0000 (12:43 +0000)]
git-gui: Avoid using the <<Copy>> binding as a menu accelerator on win32

On Windows the Control-C binding is used to copy and is mapped to the Tk
virtual event <<Copy>>. In the initial git-gui dialog this is also bound
as an accelerator for the Clone menu item. The effect is that both bindings
run, copying the text but resetting the clone page or switching to the clone
page when the user tries to copy text from one of the entry fields.
This patch avoids this by using Control-L instead for Windows only.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
14 years agogit-gui: fix shortcut creation on cygwin
Heiko Voigt [Sat, 27 Feb 2010 20:48:48 +0000 (21:48 +0100)]
git-gui: fix shortcut creation on cygwin

When the user tried to create a desktop icon with git gui on cygwin
wscript was complaining about an unknown option and displaying the
non-native path as such.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
14 years agogit-gui: fix PATH environment for mingw development environment
Heiko Voigt [Sat, 27 Feb 2010 20:47:42 +0000 (21:47 +0100)]
git-gui: fix PATH environment for mingw development environment

When creating a desktop shortcut from the gui the shortcut directly
starts wish with the git-gui script. In the msysgit development
environment some dll's reside in the mingw/bin directory which causes
that git can not start because libiconv2.dll is not found.

When using such a link the error is even more cryptic stating:
"child killed: unknown signal"

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
14 years agogit-gui: fix usage of _gitworktree when creating shortcut for windows
Heiko Voigt [Sat, 27 Feb 2010 20:45:51 +0000 (21:45 +0100)]
git-gui: fix usage of _gitworktree when creating shortcut for windows

This fixes msysGit issue 425.

Signed-off-by: Heiko Voigt <heiko.voigt@mahr.de>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
14 years agogit-gui: fix "Explore Working Copy" for Windows again
Markus Heidelberg [Thu, 25 Feb 2010 00:14:22 +0000 (01:14 +0100)]
git-gui: fix "Explore Working Copy" for Windows again

It has already been fixed in commit 454efb47 (git-gui (Win): make
"Explore Working Copy" more robust, 2009-04-01), but has been broken in
commit 21985a11 (git-gui: handle non-standard worktree locations,
2010-01-23) by accidentally replacing too much with a new variable.

The problem can be reproduced when starting git-gui from within a
subdirectory. The solution is to convert the path name, explorer.exe is
invoked with, to a platform native name.

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
14 years agoFix git rebase --continue to work with touched files
David D. Kilzer [Wed, 28 Jul 2010 08:20:16 +0000 (01:20 -0700)]
Fix git rebase --continue to work with touched files

When performing a non-interactive rebase, sometimes
"git rebase --continue" will fail if an unmodified file is
touched in the working directory:

    You must edit all merge conflicts and then
    mark them as resolved using git add

This is caused by "git diff-files" reporting a difference
between the index and the filesystem:

    :100644 100644 d00491...... 000000...... M file

The fix is to run "git update-index --refresh" before
"git diff-files" as is done in git-rebase--interactive.

Signed-off-by: David D. Kilzer <ddkilzer@kilzer.net>
Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoDocument ls-files -t as semi-obsolete.
Matthieu Moy [Wed, 28 Jul 2010 07:24:27 +0000 (09:24 +0200)]
Document ls-files -t as semi-obsolete.

The behavior of "git ls-files -t" is very misleading (see
http://thread.gmane.org/gmane.comp.version-control.git/126516 and
http://thread.gmane.org/gmane.comp.version-control.git/144394/focus=144397
for examples of mislead users) and badly documented, hence we point the
users to superior alternatives.

The feature is marked as "semi-obsolete" but not "scheduled for removal"
since it's a plumbing command, scripts might use it, and Git testsuite
already uses it to test the state of the index.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoGit 1.7.2.1 v1.7.2.1
Junio C Hamano [Tue, 27 Jul 2010 23:42:47 +0000 (16:42 -0700)]
Git 1.7.2.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoSync with 1.7.1.2
Junio C Hamano [Tue, 27 Jul 2010 23:40:15 +0000 (16:40 -0700)]
Sync with 1.7.1.2

14 years agoGit 1.7.1.2 v1.7.1.2
Junio C Hamano [Tue, 27 Jul 2010 22:04:49 +0000 (15:04 -0700)]
Git 1.7.1.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoSync with 1.7.0 series
Junio C Hamano [Tue, 27 Jul 2010 22:01:36 +0000 (15:01 -0700)]
Sync with 1.7.0 series

14 years agoGit 1.7.0.7 v1.7.0.7
Junio C Hamano [Tue, 27 Jul 2010 21:07:41 +0000 (14:07 -0700)]
Git 1.7.0.7

Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoconfig --get --path: check for unset $HOME
Jonathan Nieder [Mon, 26 Jul 2010 15:06:51 +0000 (10:06 -0500)]
config --get --path: check for unset $HOME

If $HOME is unset (as in some automated build situations),
currently

git config --path path.home "~"
git config --path --get path.home

segfaults.  Error out with

Failed to expand user dir in: '~/'

instead.

Reported-by: Julien Cristau <jcristau@debian.org>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agocommit: remove full stop from usage help for -u
Stephen Boyd [Tue, 27 Jul 2010 05:40:32 +0000 (22:40 -0700)]
commit: remove full stop from usage help for -u

From api-parse-options.txt:

  `description` is a short string to describe the effect of the option.
  It shall begin with a lower-case letter and a full stop (`.`) shall be
  omitted at the end.

It also makes it less confusing if the argument is 'no.' or 'no'.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoClarify help message when no remote is specified in fetch/pull.
Matthieu Moy [Mon, 26 Jul 2010 16:32:09 +0000 (18:32 +0200)]
Clarify help message when no remote is specified in fetch/pull.

The message is especially confusing when "git fetch" is ran from "git
pull", for users not aware of "git fetch". The new message makes it clear
that "fetch" means "fetch new revisions", and gives hint on the solution.

We don't add a advice.* configuration option since this message doesn't
appear in normal use, and shouldn't disturb advanced users.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoMakefile: add check-docs exception for gitrevisions
Thomas Rast [Mon, 26 Jul 2010 08:40:58 +0000 (10:40 +0200)]
Makefile: add check-docs exception for gitrevisions

The manpage was added in 1ed6f2c (Documentation: gitrevisions,
2010-07-05), but since it does not have a corresponding git command,
it needs an exception for check-docs.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Acked-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoFix 'git' wrapper usage string
Thomas Rast [Mon, 26 Jul 2010 08:36:24 +0000 (10:36 +0200)]
Fix 'git' wrapper usage string

8b1fa77 (Allow passing of configuration parameters in the command
line, 2010-03-26) forgot the closing ']' for the -c option.

While we're there, also rewrap.  Instead of folding the last two lines
together, try to highlight that COMMAND is required by starting a line
with it.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoDocumentation/git-push: Explain status output in more detail
Thomas Rast [Sat, 24 Jul 2010 16:03:15 +0000 (18:03 +0200)]
Documentation/git-push: Explain status output in more detail

Mention the effects of the receive.deny* family of options for the
"remote rejected" case.  While there, also split up the explanation
into an easier-to-parse list format.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoDocument receive.denyDeleteCurrent
Thomas Rast [Sat, 24 Jul 2010 16:07:53 +0000 (18:07 +0200)]
Document receive.denyDeleteCurrent

This option was introduced by 747ca24 (receive-pack:
receive.denyDeleteCurrent, 2009-02-08) but never documented.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoCast execl*() NULL sentinels to (char *)
Thomas Rast [Sat, 24 Jul 2010 15:20:23 +0000 (17:20 +0200)]
Cast execl*() NULL sentinels to (char *)

The NULL sentinel argument to the execl*() family of calls must be
cast to (char *), as otherwise:

- platforms where NULL is just 0 (not (void *)) would pass an int

- (admittedly esoteric) platforms where NULL is (void *)0 and (void *)
  and (char *) have different memory layouts would pass the wrong kind
  of pointer

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agogit-read-tree.txt: acknowledge the directory matching bug in sparse checkout
Nguyễn Thái Ngọc Duy [Sun, 25 Jul 2010 09:30:32 +0000 (16:30 +0700)]
git-read-tree.txt: acknowledge the directory matching bug in sparse checkout

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoINSTALL: configure /etc/xml/catalog to build docs on Cygwin
Jon Seymour [Sun, 25 Jul 2010 03:57:35 +0000 (13:57 +1000)]
INSTALL: configure /etc/xml/catalog to build docs on Cygwin

Without additional configuration steps, the documentation build on Cygwin
fails because the XML catalog is missing required rewrites for certain
docbook resources.

This patch documents the required configuration.

Signed-off-by: Jon Seymour <jon.seymour@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot3700-add: fix dependence on stdout and stderr buffering
Johannes Sixt [Thu, 22 Jul 2010 08:13:33 +0000 (10:13 +0200)]
t3700-add: fix dependence on stdout and stderr buffering

One test case checked the stdout and stderr of 'git add' by constructing a
single 'expect' file that contained both streams. But when the command
runs, the order of stdout and stderr output is unpredictable because it
depends on how the streams are buffered. At least on Windows, the buffering
is different from what the test case expected. Hence, check the two output
texts separately.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Acked-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agogit-rebase--interactive.sh: use printf instead of echo to print commit message
Brandon Casey [Thu, 22 Jul 2010 19:15:11 +0000 (14:15 -0500)]
git-rebase--interactive.sh: use printf instead of echo to print commit message

On systems with an echo which defaults to the XSI-conformant behavior
(Solaris, or others using Ksh), echo will interpret certain backslashed
characters as control sequences.  This can cause a problem for interactive
rebase when it is used to rebase commits whose commit "subject" (the first
line) contains any of these backslashed sequences.  In this case, echo will
substitute the control sequence for the backslashed characters and either
the rebased commit message will differ from the original, or the rebase
process will fail.  Neither is desirable.

So work around this issue by replacing the echo statements used to print
out portions of the commit message, with printf.

Also, add a test to test for this breakage.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Acked-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoAdd a google-chrome option for web--browse
Nathan W. Panike [Thu, 22 Jul 2010 16:58:20 +0000 (11:58 -0500)]
Add a google-chrome option for web--browse

On some systems, the chrome browser is named google-chrome.  We add
support for this case.

Signed-off-by: Nathan W. Panike <nathan.panike@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoMerge branch 'maint-1.7.1' into maint
Junio C Hamano [Mon, 26 Jul 2010 06:13:41 +0000 (23:13 -0700)]
Merge branch 'maint-1.7.1' into maint

* maint-1.7.1:
  request-pull.txt: Document -p option
  Check size of path buffer before writing into it

14 years agoMerge branch 'maint-1.7.0' into maint-1.7.1
Junio C Hamano [Mon, 26 Jul 2010 04:53:27 +0000 (21:53 -0700)]
Merge branch 'maint-1.7.0' into maint-1.7.1

* maint-1.7.0:
  request-pull.txt: Document -p option
  Check size of path buffer before writing into it

14 years agoMerge branch 'maint-1.6.6' into maint-1.7.0
Junio C Hamano [Mon, 26 Jul 2010 04:52:48 +0000 (21:52 -0700)]
Merge branch 'maint-1.6.6' into maint-1.7.0

* maint-1.6.6:
  request-pull.txt: Document -p option
  Check size of path buffer before writing into it
  rev-parse: fix --parse-opt --keep-dashdash --stop-at-non-option

14 years agoMerge branch 'maint-1.6.5' into maint-1.6.6
Junio C Hamano [Mon, 26 Jul 2010 04:52:29 +0000 (21:52 -0700)]
Merge branch 'maint-1.6.5' into maint-1.6.6

* maint-1.6.5:
  request-pull.txt: Document -p option
  Check size of path buffer before writing into it
  rev-parse: fix --parse-opt --keep-dashdash --stop-at-non-option

14 years agorequest-pull.txt: Document -p option
Stephen Boyd [Fri, 23 Jul 2010 16:31:27 +0000 (09:31 -0700)]
request-pull.txt: Document -p option

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoMerge branch 'maint-1.6.4' into maint-1.6.5
Junio C Hamano [Mon, 26 Jul 2010 04:51:58 +0000 (21:51 -0700)]
Merge branch 'maint-1.6.4' into maint-1.6.5

* maint-1.6.4:
  Check size of path buffer before writing into it
  rev-parse: fix --parse-opt --keep-dashdash --stop-at-non-option

14 years agoCheck size of path buffer before writing into it
Greg Brockman [Tue, 20 Jul 2010 04:46:21 +0000 (00:46 -0400)]
Check size of path buffer before writing into it

This prevents a buffer overrun that could otherwise be triggered by
creating a file called '.git' with contents

  gitdir: (something really long)

Signed-off-by: Greg Brockman <gdb@mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agogit-instaweb: Don't assume Apache executable is named apache2
Dan McGee [Wed, 30 Jun 2010 12:29:08 +0000 (07:29 -0500)]
git-instaweb: Don't assume Apache executable is named apache2

On Arch Linux, the executable for the Apache HTTP server keeps
the 'httpd' name and is not named 'apache2'. The path to the
server modules also contains 'httpd' rather than 'apache2'.
Remove some of these assumptions and add the httpd name in where
it may be required. Finally, make some slight style adjustments
to the code we are touching to make it fit the style of the rest
of the script.

Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
14 years agogit-instaweb: Fix Apache environment variable passing
Dan McGee [Wed, 30 Jun 2010 02:44:59 +0000 (21:44 -0500)]
git-instaweb: Fix Apache environment variable passing

We were passing the non-existent GIT_EXEC_DIR through instead of the real
GIT_EXEC_PATH. In addition, these weren't being passed at all for CGI (non
mod_perl) execution so get them included there as well.

Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
14 years agogit-instaweb: Fix custom apache log placement
Dan McGee [Wed, 30 Jun 2010 02:44:58 +0000 (21:44 -0500)]
git-instaweb: Fix custom apache log placement

'CustomLog' is provided by mod_log_config so we need to include the module
in our generated config. This was added in d94775e1f9a.

Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
14 years agoGit 1.7.2 v1.7.2
Junio C Hamano [Wed, 21 Jul 2010 19:55:50 +0000 (12:55 -0700)]
Git 1.7.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agotests: correct "does reflog exist?" tests
Junio C Hamano [Wed, 21 Jul 2010 19:47:48 +0000 (12:47 -0700)]
tests: correct "does reflog exist?" tests

These two tests weren't about how "git reflog show <branch>" exits when
there is no reflog, but were about "checkout" and "branch" create or not
create reflog when creating a new <branch>.  Update the tests to check
what we are interested in, using "git rev-parse --verify".

Also lose tests based on "test -f .git/logs/refs/heads/<branch>" from
nearby, to avoid exposing this particular implementation detail
unnecessarily.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot/: work around one-shot variable assignment with test_must_fail
Brandon Casey [Tue, 20 Jul 2010 21:55:31 +0000 (16:55 -0500)]
t/: work around one-shot variable assignment with test_must_fail

See e2007832552ccea9befed9003580c494f09e666e

Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot/README: correct an exception when breaking a && chain in tests
Jonathan Nieder [Wed, 21 Jul 2010 00:01:01 +0000 (19:01 -0500)]
t/README: correct an exception when breaking a && chain in tests

The correct advice should have been taken from c289c31 (t/t7006: ignore
return status of shell's unset builtin, 2010-06-02).  A real-life issue
we experienced was with "unset", not with "export" (exporting an
unset variable may have similar portability issues, though).

Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot/{t5541,lib-httpd}: replace problematic '!()' notation with test_must_fail
Brandon Casey [Tue, 20 Jul 2010 18:27:55 +0000 (13:27 -0500)]
t/{t5541,lib-httpd}: replace problematic '!()' notation with test_must_fail

The '!()' notation is interpreted as a pattern-list on Ksh.  The Ksh man
page describe it as follows:

   !(pattern-list)
      Matches anything except one of the given patterns.

Ksh performs a file glob using the pattern-list and then tries to execute
the first file in the list.  If a space is added between the '!' and the
open parens, then Ksh will not interpret it as a pattern list, but in this
case, it is preferred to use test_must_fail, so lets do so.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agot/t3700: convert two uses of negation operator '!' to use test_must_fail
Brandon Casey [Tue, 20 Jul 2010 15:24:47 +0000 (10:24 -0500)]
t/t3700: convert two uses of negation operator '!' to use test_must_fail

These two lines use the negation '!' operator to negate the result of a
simple command.  Since these commands do not contain any pipes or other
complexities, the test_must_fail function can be used and is preferred
since it will additionally detect termination due to a signal.

This was noticed because the second use of '!' does not include a space
between the '!' and the opening parens.  Ksh interprets this as follows:

   !(pattern-list)
      Matches anything except one of the given patterns.

Ksh performs a file glob using the pattern-list and then tries to execute
the first file in the list.  If a space is added between the '!' and the
open parens, then Ksh will not interpret it as a pattern list, but in this
case, it is preferred to use test_must_fail, so lets do so.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoMerge branch 'maint'
Junio C Hamano [Tue, 20 Jul 2010 18:29:30 +0000 (11:29 -0700)]
Merge branch 'maint'

* maint:
  t/README: clarify test_must_fail description
  Check size of path buffer before writing into it

Conflicts:
t/README

14 years agot/README: clarify test_must_fail description
Brandon Casey [Tue, 20 Jul 2010 17:17:12 +0000 (12:17 -0500)]
t/README: clarify test_must_fail description

Some have found the wording of the description to be somewhat ambiguous
with respect to when it is desirable to use test_must_fail instead of
"! <git-command>".  Tweak the wording somewhat to hopefully clarify that
it is _because_ test_must_fail can detect segmentation fault that it is
desirable to use it instead of "! <git-command>".

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoCheck size of path buffer before writing into it
Greg Brockman [Tue, 20 Jul 2010 04:46:21 +0000 (00:46 -0400)]
Check size of path buffer before writing into it

This prevents a buffer overrun that could otherwise be triggered by
creating a file called '.git' with contents

  gitdir: (something really long)

Signed-off-by: Greg Brockman <gdb@mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoMerge branch 'maint'
Junio C Hamano [Mon, 19 Jul 2010 18:21:08 +0000 (11:21 -0700)]
Merge branch 'maint'

* maint:
  update-server-info: Shorten read_pack_info_file()
  Documentation: Explain git-mergetool's use of temporary files

14 years agoupdate-server-info: Shorten read_pack_info_file()
Ralf Thielow [Mon, 19 Jul 2010 16:26:12 +0000 (18:26 +0200)]
update-server-info: Shorten read_pack_info_file()

The correct responses to a D and a T line in .git/objects/info/packs
are the same, so combine their case arms.  In both cases we already
‘goto’ out of the switch so while at it, remove a redundant ‘break’
to avoid yet another line of code.

Signed-off-by: Ralf Thielow <ralf.thielow@googlemail.com>
Reviewed-by: Jonathan Nieder <jrnieder <at> gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agogit add: Add --ignore-missing to SYNOPSIS
Ævar Arnfjörð Bjarmason [Sat, 17 Jul 2010 15:33:15 +0000 (15:33 +0000)]
git add: Add --ignore-missing to SYNOPSIS

All the git add options were listed in the synopsis until the
--ignore-missing option was added. Change that so that the git add
documentation now has the complete listing.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agogit submodule add: Remove old docs about implicit -f
Ævar Arnfjörð Bjarmason [Sat, 17 Jul 2010 15:53:45 +0000 (15:53 +0000)]
git submodule add: Remove old docs about implicit -f

git submodule add no longer implicitly adds with --force. Remove
references to the old functionality in the documentation.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Acked-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agogit submodule add: Require the new --force option to add ignored paths
Jens Lehmann [Sat, 17 Jul 2010 15:11:43 +0000 (17:11 +0200)]
git submodule add: Require the new --force option to add ignored paths

To make the behavior of "git submodule add" more consistent with "git add"
ignored submodule paths should not be silently added when they match an
entry in a .gitignore file. To be able to override that default behavior
in the same way as we can do that for "git add", the new option "--force"
is introduced.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Acked-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoMerge branch 'jl/add-n-ignore-missing'
Junio C Hamano [Mon, 19 Jul 2010 18:09:38 +0000 (11:09 -0700)]
Merge branch 'jl/add-n-ignore-missing'

* jl/add-n-ignore-missing:
  git add: Add the "--ignore-missing" option for the dry run

14 years agoDocumentation: Explain git-mergetool's use of temporary files
David Aguilar [Sun, 18 Jul 2010 01:46:48 +0000 (18:46 -0700)]
Documentation: Explain git-mergetool's use of temporary files

'git mergetool' creates '*.orig' backup files in its
default configuration.  Mention this in its documentation.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agogit-svn: write memoized data explicitly to avoid Storable bug
Sergey Vlasov [Sun, 18 Jul 2010 12:17:49 +0000 (16:17 +0400)]
git-svn: write memoized data explicitly to avoid Storable bug

Apparently using the Storable module during global destruction is
unsafe - there is a bug which can cause segmentation faults:

  http://rt.cpan.org/Public/Bug/Display.html?id=36087
  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=482355

The persistent memoization support introduced in commit 8bff7c538
relied on global destruction to write cached data, which was leading
to segfaults in some Perl configurations.  Calling Memoize::unmemoize
in the END block forces the cache writeout to be performed earlier,
thus avoiding the bug.

Signed-off-by: Sergey Vlasov <vsu@altlinux.ru>
Acked-by: Eric Wong <normalperson@yhbt.net>
14 years agoMerge branch 'jc/diff-merge-base-multi'
Junio C Hamano [Fri, 16 Jul 2010 22:45:35 +0000 (15:45 -0700)]
Merge branch 'jc/diff-merge-base-multi'

* jc/diff-merge-base-multi:
  diff A...B: do not limit the syntax too narrowly

14 years agoOnly run aggregate-results over actual counts
Thomas Rast [Fri, 16 Jul 2010 09:37:44 +0000 (11:37 +0200)]
Only run aggregate-results over actual counts

The current make target 'aggregate-results' scanned all files matching
test-results/t*-*.  Normally these are only the test counts (and the
exit values, which are ignored), but with --tee the suite also dumps
all output.  Furthermore, with --verbose t1450 contains several lines
starting with "broken link from ..." which matches the criteria used
by aggregate-results.sh.

Rename the counts output files to *.counts, and only scan those.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Acked-by: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agoAdd a sample user for the svndump library
Jonathan Nieder [Thu, 15 Jul 2010 16:25:39 +0000 (18:25 +0200)]
Add a sample user for the svndump library

The svn-fe tool takes a Subversion dump file as input and produces
a fast-import stream as output.  This can be useful as a low-level
tool in building other importers, or for debugging the vcs-svn
library.

 make svn-fe
 make svn-fe.1

to test.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 years agodiff A...B: do not limit the syntax too narrowly
Junio C Hamano [Fri, 16 Jul 2010 19:08:24 +0000 (12:08 -0700)]
diff A...B: do not limit the syntax too narrowly

Earlier we tried to make sure that the trees we get are what A...B
syntax produced, by checking that earlier ones are all marked
uninteresting (which has to be true as they are merge bases),
there are two remaining ones that are interesting, and they are
marked as non-symmetric-left and symmetric-left respectively.

The "the last two must be interesting" condition is however wrong when one
is an ancestor of the other between A and B (i.e. fast-forward).  In such
a case, one of them is marked uninteresting.