Junio C Hamano [Thu, 13 Dec 2012 23:51:29 +0000 (15:51 -0800)]
merge-tree: fix d/f conflicts
The previous commit documented two known breakages revolving around
a case where one side flips a tree into a blob (or vice versa),
where the original code simply gets confused and feeds a mixture of
trees and blobs into either the recursive merge-tree (and recursing
into the blob will fail) or three-way merge (and merging tree contents
together with blobs will fail).
Fix it by feeding trees (and only trees) into the recursive
merge-tree machinery and blobs (and only blobs) into the three-way
content level merge machinery separately; when this happens, the
entire merge has to be marked as conflicting at the structure level.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 7 Dec 2012 00:15:45 +0000 (16:15 -0800)]
merge-tree: add comments to clarify what these functions are doing
Rename the "branch1" parameter given to resolve() to "ours", to
clarify what is going on. Also, annotate the unresolved_directory()
function with some comments to show what decisions are made in each
step, and highlight two bugs that need to be fixed.
Add two tests to t4300 to illustrate these bugs.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 6 Dec 2012 23:53:41 +0000 (15:53 -0800)]
merge-tree: lose unused "resolve_directories"
This option is always set; simplify.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 6 Dec 2012 23:41:04 +0000 (15:41 -0800)]
merge-tree: lose unused "flags" from merge_list
Drop the unused field from the structure.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 6 Dec 2012 23:08:01 +0000 (15:08 -0800)]
Which merge_file() function do you mean?
There are two different static functions and one global function,
all of them called "merge_file()", with different signatures and
purposes. Rename them all to reduce confusion in "git grep" output:
* Rename the static one in merge-index to "merge_one_path(const char
*path)" as that function is about asking an external command to
resolve conflicts in one path.
* Rename the global one in merge-file.c that is only used by
merge-tree to "merge_blobs()", as the function takes three blobs and
returns the merged result only in-core, without doing anything to
the filesystem.
* Rename the one in merge-recursive to "merge_one_file()", just to be
fair.
Also rename merge-file.[ch] to merge-blobs.[ch].
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 4 Dec 2012 21:34:10 +0000 (13:34 -0800)]
Merge branch 'mm/status-push-pull-advise'
* mm/status-push-pull-advise:
document that statusHints affects git checkout
Matthieu Moy [Tue, 4 Dec 2012 09:15:03 +0000 (10:15 +0100)]
document that statusHints affects git checkout
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 3 Dec 2012 17:49:51 +0000 (09:49 -0800)]
Git 1.8.1-rc0
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 3 Dec 2012 17:27:29 +0000 (09:27 -0800)]
Merge branch 'mm/status-push-pull-advise'
Finishing touch to allow the new advice message squelched
with an advice.* configuration variable.
* mm/status-push-pull-advise:
status: respect advice.statusHints for ahead/behind advice
Jeff King [Mon, 3 Dec 2012 06:16:57 +0000 (01:16 -0500)]
status: respect advice.statusHints for ahead/behind advice
If the user has unset advice.statusHints, we already
suppress the "use git reset to..." hints in each stanza. The
new "use git push to publish..." hint is the same type of
hint. Let's respect statusHints for it, rather than making
the user set yet another advice flag.
Signed-off-by: Jeff King <peff@peff.net>
Acked-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 29 Nov 2012 21:57:09 +0000 (13:57 -0800)]
Update draft release notes to 1.8.1
Junio C Hamano [Thu, 29 Nov 2012 21:44:28 +0000 (13:44 -0800)]
Merge branch 'pw/p4-various-fixes'
* pw/p4-various-fixes:
git p4: remove unneeded cmd initialization
git p4: fix labelDetails typo in exception
git p4 test: display unresolvable host error
git p4: catch p4 errors when streaming file contents
git p4: handle servers without move support
git p4: catch p4 describe errors
Junio C Hamano [Thu, 29 Nov 2012 20:53:54 +0000 (12:53 -0800)]
Merge branch 'lt/diff-stat-show-0-lines'
"git diff --stat" miscounted the total number of changed lines when
binary files were involved and hidden beyond --stat-count. It also
miscounted the total number of changed files when there were
unmerged paths.
* lt/diff-stat-show-0-lines:
t4049: refocus tests
diff --shortstat: do not count "unmerged" entries
diff --stat: do not count "unmerged" entries
diff --stat: move the "total count" logic to the last loop
diff --stat: use "file" temporary variable to refer to data->files[i]
diff --stat: status of unmodified pair in diff-q is not zero
test: add failing tests for "diff --stat" to t4049
Junio C Hamano [Thu, 29 Nov 2012 20:53:50 +0000 (12:53 -0800)]
Merge branch 'fc/remote-hg'
New remote helper for hg.
* fc/remote-hg: (22 commits)
remote-hg: fix for older versions of python
remote-hg: fix for files with spaces
remote-hg: avoid bad refs
remote-hg: try the 'tip' if no checkout present
remote-hg: fix compatibility with older versions of hg
remote-hg: add missing config for basic tests
remote-hg: the author email can be null
remote-hg: add option to not track branches
remote-hg: add extra author test
remote-hg: add tests to compare with hg-git
remote-hg: add bidirectional tests
test-lib: avoid full path to store test results
remote-hg: add basic tests
remote-hg: fake bookmark when there's none
remote-hg: add compat for hg-git author fixes
remote-hg: add support for hg-git compat mode
remote-hg: match hg merge behavior
remote-hg: make sure the encoding is correct
remote-hg: add support to push URLs
remote-hg: add support for remote pushing
...
Junio C Hamano [Thu, 29 Nov 2012 20:53:38 +0000 (12:53 -0800)]
Merge branch 'mk/complete-tcsh'
Finishing touches for tcsh completion.
* mk/complete-tcsh:
Support for git aliasing for tcsh completion
Junio C Hamano [Thu, 29 Nov 2012 20:52:54 +0000 (12:52 -0800)]
Merge branch 'jc/doc-push-satellite'
* jc/doc-push-satellite:
Documentation/git-push.txt: clarify the "push from satellite" workflow
Junio C Hamano [Thu, 29 Nov 2012 20:52:49 +0000 (12:52 -0800)]
Merge branch 'km/send-email-remove-cruft-in-address'
* km/send-email-remove-cruft-in-address:
git-send-email: allow edit invalid email address
git-send-email: ask what to do with an invalid email address
git-send-email: remove invalid addresses earlier
git-send-email: fix fallback code in extract_valid_address()
git-send-email: remove garbage after email address
Junio C Hamano [Thu, 29 Nov 2012 20:52:45 +0000 (12:52 -0800)]
Merge branch 'jk/send-email-sender-prompt'
General clean-ups in various areas, originally written to support a
patch that later turned out to be unneeded.
* jk/send-email-sender-prompt:
t9001: check send-email behavior with implicit sender
t: add tests for "git var"
ident: keep separate "explicit" flags for author and committer
ident: make user_ident_explicitly_given static
t7502: factor out autoident prerequisite
test-lib: allow negation of prerequisites
Junio C Hamano [Thu, 29 Nov 2012 20:52:42 +0000 (12:52 -0800)]
Merge branch 'fc/send-email-no-sender-prompt'
* fc/send-email-no-sender-prompt:
send-email: avoid questions when user has an ident
Junio C Hamano [Thu, 29 Nov 2012 20:52:36 +0000 (12:52 -0800)]
Merge branch 'er/doc-add-new-commands'
* er/doc-add-new-commands:
Documentation: how to add a new command
Junio C Hamano [Thu, 29 Nov 2012 20:52:30 +0000 (12:52 -0800)]
Merge branch 'jl/submodule-rm'
Finishing touches to "git rm $submodule" that removes the working
tree of a submodule.
* jl/submodule-rm:
Teach rm to remove submodules when given with a trailing '/'
Junio C Hamano [Thu, 29 Nov 2012 20:52:16 +0000 (12:52 -0800)]
Merge branch 'pp/gitweb-config-underscore'
The key "gitweb.remote_heads" is not legal git config; this maps it to
"gitweb.remoteheads".
* pp/gitweb-config-underscore:
gitweb: make remote_heads config setting work
Junio C Hamano [Thu, 29 Nov 2012 20:52:10 +0000 (12:52 -0800)]
Merge branch 'fc/completion-test-simplification'
Clean up completion tests. Use of conslidated helper may make
instrumenting one particular test during debugging of the test
itself, but I think that issue should be addressed in some other
way (e.g. making sure individual tests in 9902 can be skipped).
* fc/completion-test-simplification:
completion: simplify __gitcomp() test helper
completion: refactor __gitcomp related tests
completion: consolidate test_completion*() tests
completion: simplify tests using test_completion_long()
completion: standardize final space marker in tests
completion: add comment for test_completion()
Junio C Hamano [Thu, 29 Nov 2012 20:21:17 +0000 (12:21 -0800)]
Merge branch 'maint'
* maint:
git-fast-import.txt: improve documentation for quoted paths
git-remote-mediawiki: escape ", \, and LF in file names
Matthieu Moy [Thu, 29 Nov 2012 19:11:32 +0000 (20:11 +0100)]
git-fast-import.txt: improve documentation for quoted paths
The documentation mentioned only newlines and double quotes as
characters needing escaping, but the backslash also needs it. Also, the
documentation was not clearly saying that double quotes around the file
name were required (double quotes in the examples could be interpreted as
part of the sentence, not part of the actual string).
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Matthieu Moy [Thu, 29 Nov 2012 17:00:55 +0000 (18:00 +0100)]
git-remote-mediawiki: escape ", \, and LF in file names
A mediawiki page can contain, and even start with a " character, we have
to escape it when generating the fast-export stream, as well as \
character. While we're there, also escape newlines, but I don't think we
can get them from MediaWiki pages.
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 29 Nov 2012 18:05:51 +0000 (10:05 -0800)]
Merge branch 'master' of git://github.com/git-l10n/git-po
Further l10n updates.
* 'master' of git://github.com/git-l10n/git-po:
l10n: vi.po: Update follow git-v1.8.0-273-g2d242
Junio C Hamano [Thu, 29 Nov 2012 17:46:30 +0000 (09:46 -0800)]
t4049: refocus tests
The primary thing Linus's patch wanted to change was to make sure
that 0-line change appears for a mode-only change. Update the
first test to chmod a file that we can see in the output (limited
by --stat-count) to demonstrate it. Also make sure to use test_chmod
and compare the index and the tree, so that we can run this test
even on a filesystem without permission bits.
Later two tests are about fixes to separate issues that were
introduced and/or uncovered by Linus's patch as a side effect, but
the issues are not related to mode-only changes. Remove chmod from
the tests.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Felipe Contreras [Thu, 29 Nov 2012 08:20:57 +0000 (09:20 +0100)]
completion: fix warning for zsh
Otherwise the user might get something like:
git-completion.sh:2466: command not found: compdef
If this script is loaded before compinit. The script would work either
way, but let's not be more annoying to the user.
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jiang Xin [Thu, 29 Nov 2012 08:25:40 +0000 (16:25 +0800)]
Merge git://github.com/vnwildman/git
* git://github.com/vnwildman/git:
l10n: vi.po: Update follow git-v1.8.0-273-g2d242
Junio C Hamano [Thu, 29 Nov 2012 05:58:27 +0000 (21:58 -0800)]
Merge branch 'master' of git://github.com/git-l10n/git-po
Update the localization string up to
2d242fb (Update draft release
notes for 1.8.1, 2012-11-21)
* 'master' of git://github.com/git-l10n/git-po:
l10n: Update Swedish translation (1975t0f0u)
l10n: vi.po: update to git-v1.7.12-437-g1084f
l10n: Update git.pot (14 new, 3 removed messages)
Junio C Hamano [Wed, 28 Nov 2012 21:49:33 +0000 (13:49 -0800)]
Merge branch 'maint'
Junio C Hamano [Wed, 28 Nov 2012 21:49:10 +0000 (13:49 -0800)]
Update draft release notes to 1.8.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 28 Nov 2012 21:42:36 +0000 (13:42 -0800)]
Merge branch 'fc/zsh-completion'
* fc/zsh-completion:
completion: start moving to the new zsh completion
completion: add new zsh completion
Junio C Hamano [Wed, 28 Nov 2012 21:42:30 +0000 (13:42 -0800)]
Merge branch 'mm/status-push-pull-advise'
* mm/status-push-pull-advise:
status: add advice on how to push/pull to tracking branch
Junio C Hamano [Wed, 28 Nov 2012 21:42:24 +0000 (13:42 -0800)]
Merge branch 'jk/pickaxe-textconv'
Use textconv filters when searching with "log -S".
* jk/pickaxe-textconv:
pickaxe: use textconv for -S counting
pickaxe: hoist empty needle check
Junio C Hamano [Wed, 28 Nov 2012 21:40:02 +0000 (13:40 -0800)]
Start preparing for 1.8.0.2
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Wed, 28 Nov 2012 20:06:26 +0000 (15:06 -0500)]
t9001: check send-email behavior with implicit sender
We allow send-email to use an implicitly-defined identity
for the sender (because there is still a confirmation step),
but we abort when we cannot generate such an identity. Let's
make sure that we test this.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 28 Nov 2012 20:05:30 +0000 (12:05 -0800)]
Merge branch 'rh/maint-gitweb-highlight-ext' into maint
Syntax highlighting in "gitweb" was not quite working.
* rh/maint-gitweb-highlight-ext:
gitweb.perl: fix %highlight_ext mappings
Junio C Hamano [Wed, 28 Nov 2012 20:04:32 +0000 (12:04 -0800)]
Merge branch 'pw/maint-p4-rcs-expansion-newline' into maint
"git p4" used to try expanding malformed "$keyword$" that spans
across multiple lines.
* pw/maint-p4-rcs-expansion-newline:
git p4: RCS expansion should not span newlines
Ralf Thielow [Wed, 28 Nov 2012 18:27:02 +0000 (19:27 +0100)]
completion: add options --single-branch and --branch to "git clone"
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 28 Nov 2012 18:50:20 +0000 (10:50 -0800)]
Merge branch 'fc/send-email-no-sender-prompt' into jk/send-email-sender-prompt
* fc/send-email-no-sender-prompt:
send-email: avoid questions when user has an ident
Jeff King [Wed, 28 Nov 2012 18:26:43 +0000 (13:26 -0500)]
t: add tests for "git var"
We do not currently have any explicit tests for "git var" at
all (though we do exercise it to some degree as a part of
other tests). Let's add a few basic sanity checks.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 27 Nov 2012 23:52:27 +0000 (15:52 -0800)]
Documentation/git-push.txt: clarify the "push from satellite" workflow
The context of the example to push into refs/remotes/satellite/
hierarchy of the other repository needs to be spelled out explicitly
for the value of this example to be fully appreciated. Make it so.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Felipe Contreras [Wed, 28 Nov 2012 01:01:33 +0000 (02:01 +0100)]
remote-hg: fix for older versions of python
As Amit Bakshi reported, older versions of python (< 2.7) don't have
subprocess.check_output, so let's use subprocess.Popen directly as
suggested.
Suggested-by: Amit Bakshi <ambakshi@gmail.com>
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Felipe Contreras [Wed, 28 Nov 2012 01:01:32 +0000 (02:01 +0100)]
remote-hg: fix for files with spaces
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 27 Nov 2012 22:19:36 +0000 (14:19 -0800)]
diff --shortstat: do not count "unmerged" entries
Fix the same issue as the previous one for "git diff --stat";
unmerged entries was doubly-counted.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 27 Nov 2012 21:29:08 +0000 (13:29 -0800)]
Merge branch 'maint'
Junio C Hamano [Tue, 27 Nov 2012 21:29:00 +0000 (13:29 -0800)]
Merge branch 'nd/maint-compat-fnmatch-fix' into maint
* nd/maint-compat-fnmatch-fix:
compat/fnmatch: fix off-by-one character class's length check
Junio C Hamano [Tue, 27 Nov 2012 21:28:45 +0000 (13:28 -0800)]
Merge branch 'jh/update-ref-d-through-symref' into maint
* jh/update-ref-d-through-symref:
Fix failure to delete a packed ref through a symref
t1400-update-ref: Add test verifying bug with symrefs in delete_ref()
Junio C Hamano [Tue, 27 Nov 2012 21:28:31 +0000 (13:28 -0800)]
Merge branch 'esr/maint-doc-fast-import' into maint
* esr/maint-doc-fast-import:
doc/fast-import: clarify how content states are built
Junio C Hamano [Tue, 27 Nov 2012 21:28:18 +0000 (13:28 -0800)]
Merge branch 'wtk/submodule-doc-fixup' into maint
* wtk/submodule-doc-fixup:
git-submodule: wrap branch option with "<>" in usage strings.
Junio C Hamano [Tue, 27 Nov 2012 20:05:10 +0000 (12:05 -0800)]
diff --stat: do not count "unmerged" entries
Even though we show a separate *UNMERGED* entry in the patch and
diffstat output (or in the --raw format, for that matter) in
addition to and separately from the diff against the specified stage
(defaulting to #2) for unmerged paths, they should not be counted in
the total number of files affected---that would lead to counting the
same path twice.
The separation done by the previous step makes this fix simple and
straightforward. Among the filepairs in diff_queue, paths that
weren't modified, and the extra "unmerged" entries do not count as
total number of files.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 27 Nov 2012 19:47:46 +0000 (11:47 -0800)]
diff --stat: move the "total count" logic to the last loop
The diffstat generation logic, with --stat-count limit, is
implemented as three loops.
- The first counts the width necessary to show stats up to
specified number of entries, and notes up to how many entries in
the data we need to iterate to show the graph;
- The second iterates that many times to draw the graph, adjusts
the number of "total modified files", and counts the total
added/deleted lines for the part that was shown in the graph;
- The third iterates over the remainder and only does the part to
count "total added/deleted lines" and to adjust "total modified
files" without drawing anything.
Move the logic to count added/deleted lines and modified files from
the second loop to the third loop.
This incidentally fixes a bug. The third loop was not filtering
binary changes (counted in bytes) from the total added/deleted as it
should. The second loop implemented this correctly, so if a binary
change appeared earlier than the --stat-count cutoff, the code
counted number of added/deleted lines correctly, but if it appeared
beyond the cutoff, the number of lines would have mixed with the
byte count in the buggy third loop.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 27 Nov 2012 19:24:54 +0000 (11:24 -0800)]
diff --stat: use "file" temporary variable to refer to data->files[i]
The generated code shouldn't change but it is easier to read.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 27 Nov 2012 19:17:14 +0000 (11:17 -0800)]
diff --stat: status of unmodified pair in diff-q is not zero
It is spelled DIFF_STATUS_UNKNOWN these days, and is different from zero.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 27 Nov 2012 20:55:00 +0000 (12:55 -0800)]
test: add failing tests for "diff --stat" to t4049
There are a few problems in diff.c around --stat area, partially
caused by the recent
74faaa1 (Fix "git diff --stat" for interesting
- but empty - file changes, 2012-10-17), and largely caused by the
earlier change that introduced when --stat-count was added.
Add a few test pieces to t4049 to expose the issues.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Marc Khouzam [Tue, 27 Nov 2012 04:13:41 +0000 (23:13 -0500)]
Support for git aliasing for tcsh completion
tcsh users sometimes alias the 'git' command to another name. In
this case, the user expects to only have to issue a new 'complete'
command using the alias name.
However, the tcsh script currently uses the command typed by the
user to call the appropriate function in git-completion.bash, either
_git() or _gitk(). When using an alias, this technique no longer
works.
This change specifies the real name of the command (either 'git' or
'gitk') as a parameter to the script handling tcsh completion. This
allows the user to use any alias for the 'git' or 'gitk' commands,
while still getting completion to work.
A check for the presence of ${HOME}/.git-completion.bash is also
added to help the user make use of the script properly.
Signed-off-by: Marc Khouzam <marc.khouzam@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Mark Szepieniec [Tue, 27 Nov 2012 01:37:34 +0000 (01:37 +0000)]
Documentation: improve phrasing in git-push.txt
The current version contains the sentence:
Further suppose that the other person already pushed changes leading to
A back to the original repository you two obtained the original commit
X.
which doesn't parse for me; I've changed it to
Further suppose that the other person already pushed changes leading to
A back to the original repository from which you two obtained the
original commit X.
Signed-off-by: Mark Szepieniec <mszepien@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Krzysztof Mazur [Thu, 22 Nov 2012 18:12:12 +0000 (19:12 +0100)]
git-send-email: allow edit invalid email address
In some cases the user may want to send email with "Cc:" line with
email address we cannot extract. Now we allow user to extract
such email address for us.
Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Krzysztof Mazur [Thu, 22 Nov 2012 18:12:11 +0000 (19:12 +0100)]
git-send-email: ask what to do with an invalid email address
We used to warn about invalid emails and just drop them. Such warnings
can be unnoticed by user or noticed after sending email when we are not
giving the "final sanity check [Y/n]?"
Now we quit by default.
Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net>
Suggested-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Krzysztof Mazur [Thu, 22 Nov 2012 18:12:10 +0000 (19:12 +0100)]
git-send-email: remove invalid addresses earlier
Some addresses are passed twice to unique_email_list() and invalid addresses
may be reported twice per send_message. Now we warn about them earlier
and we also remove invalid addresses.
This also removes using of undefined values for string comparison
for invalid addresses in cc list processing.
Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 26 Nov 2012 22:12:07 +0000 (14:12 -0800)]
Merge branch 'maint'
* maint:
Fix typo in remote set-head usage
Makefile: hide stderr of curl-config test
Eric S. Raymond [Mon, 26 Nov 2012 05:35:57 +0000 (00:35 -0500)]
Documentation: how to add a new command
This document contains no new policies or proposals; it attempts to
document established practices and interface requirements.
Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Antoine Pelisse [Mon, 26 Nov 2012 19:21:54 +0000 (20:21 +0100)]
Fix typo in remote set-head usage
parenthesis are not matching in `builtin_remote_sethead_usage`
as a square bracket is closing something never opened.
Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Felipe Contreras [Sat, 24 Nov 2012 11:16:19 +0000 (12:16 +0100)]
send-email: avoid questions when user has an ident
Currently we keep getting questions even when the user has properly
configured his full name and password:
Who should the emails appear to be from?
[Felipe Contreras <felipe.contreras@gmail.com>]
And once a question pops up, other questions are turned on. This is
annoying.
The reason it's safe to avoid this question is because currently the
script fails completely when the author (or committer) is not correct,
so we won't even be reaching this point in the code.
The scenarios, and the current situation:
1) No information at all, no fully qualified domain name
fatal: empty ident name (for <felipec@nysa.(none)>) not allowed
2) Only full name
fatal: unable to auto-detect email address (got 'felipec@nysa.(none)')
3) Full name + fqdm
Who should the emails appear to be from?
[Felipe Contreras <felipec@nysa.felipec.org>]
4) Full name + EMAIL
Who should the emails appear to be from?
[Felipe Contreras <felipe.contreras@gmail.com>]
5) User configured
6) GIT_COMMITTER
7) GIT_AUTHOR
All these are the same as 4)
After this patch:
1) 2) won't change: git send-email would still die
4) 5) 6) 7) will change: git send-email won't ask the user
This is good, that's what we would expect, because the identity is
explicit.
3) will change: git send-email won't ask the user
This is bad, because we will try with an address such as
'felipec@nysa.felipec.org', which is most likely not what the user
wants, but the user will get warned by default (confirm=auto), and if
not, most likely the sending won't work, which the user would readily
note and fix.
The worst possible scenario is that such mail address does work, and the
user sends an email from that address unintentionally, when in fact the
user expected to correct that address in the prompt. This is a very,
very, very unlikely scenario, with many dependencies:
1) No configured user.name/user.email
2) No specified $EMAIL
3) No configured sendemail.from
4) No specified --from argument
5) A fully qualified domain name
6) A full name in the geckos field
7) A sendmail configuration that allows sending from this domain name
8) confirm=never, or
8.1) confirm configuration not hitting, or
8.2) Getting the error, not being aware of it
9) The user expecting to correct this address in the prompt
In a more likely scenario where 7) is not the case (can't send from
nysa.felipec.org), the user will simply see the mail was not sent
properly, and fix the problem.
The much more likely scenario though, is where 5) is not the case
(nysa.(none)), and git send-email will fail right away like it does now.
So the likelihood of this affecting anybody seriously is very very slim,
and the chances of this affecting somebody slightly are still very
small. The vast majority, if not all, of git users won't be affected
negatively, and a lot will benefit from this.
Tests-by: Jeff King <peff@peff.net>
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Pete Wyckoff [Fri, 23 Nov 2012 22:35:39 +0000 (17:35 -0500)]
git p4: remove unneeded cmd initialization
It confuses pylint, and is never needed.
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Pete Wyckoff [Fri, 23 Nov 2012 22:35:38 +0000 (17:35 -0500)]
git p4: fix labelDetails typo in exception
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Pete Wyckoff [Fri, 23 Nov 2012 22:35:37 +0000 (17:35 -0500)]
git p4 test: display unresolvable host error
This test passes already. Make sure p4 diagnostic errors are displayed.
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Pete Wyckoff [Fri, 23 Nov 2012 22:35:36 +0000 (17:35 -0500)]
git p4: catch p4 errors when streaming file contents
Error messages that arise during the "p4 print" phase of
generating commits were silently ignored. Catch them,
abort the fast-import, and exit.
Without this fix, the sync/clone appears to work, but files that
are inaccessible by the p4d server will still be imported to git,
although without the proper contents. Instead the errant files
will contain a p4 error message, such as "Librarian checkout
//depot/path failed".
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Pete Wyckoff [Fri, 23 Nov 2012 22:35:35 +0000 (17:35 -0500)]
git p4: handle servers without move support
Support for the "p4 move" command was added in
8e9497c (git p4:
add support for 'p4 move' in P4Submit, 2012-07-12), which checks
to make sure that the client and server support the command.
But older versions of p4d may not handle the "-k" argument, and
newer p4d allow disabling "p4 move" with a configuration setting.
Check for both these cases by testing a p4 move command on bogus
filenames and looking for strings in the error messages.
Reported-by: Vitor Antunes <vitor.hda@gmail.com>
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Pete Wyckoff [Fri, 23 Nov 2012 22:35:34 +0000 (17:35 -0500)]
git p4: catch p4 describe errors
Group the two calls to "p4 describe" into a new helper function,
and try to validate the p4 results. The current behavior when p4
describe fails is to die with a python backtrace. The new behavior
will print the full response.
This does not solve any particular problem, but adds more
checking in hopes of narrowing down odd behavior seen on
at least two occasions.
Based-on-patch-by: Matt Arsenault <arsenm2@gmail.com>
Reported-by: Arthur <a.foulon@amesys.fr>
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Paul Gortmaker [Thu, 22 Nov 2012 03:19:57 +0000 (22:19 -0500)]
Makefile: hide stderr of curl-config test
You will get
$ make distclean 2>&1 | grep curl
/bin/sh: curl-config: not found
/bin/sh: curl-config: not found
/bin/sh: curl-config: not found
/bin/sh: curl-config: not found
/bin/sh: curl-config: not found
$
if you don't have a curl development package installed.
The intent is not to alarm the user, but just to test if there is
a new enough curl installed. However, if you look at search engine
suggested completions, the above "error" messages are confusing
people into thinking curl is a hard requirement.
Redirect this error output to /dev/null as it is not necessary to be
shown to the end users.
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Enrico Scholz [Thu, 22 Nov 2012 15:58:54 +0000 (16:58 +0100)]
emacs: make 'git-status' work with separate git dirs
when trying 'M-x git-status' in a submodule created with recent (1.7.5+)
git, the command fails with
| ... is not a git working tree
This is caused by creating submodules with '--separate-git-dir' but
still checking for a working tree by testing for a '.git' directory.
The patch fixes this by relaxing the existing detection a little bit.
Signed-off-by: Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
Acked-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Krzysztof Mazur [Thu, 22 Nov 2012 18:12:09 +0000 (19:12 +0100)]
git-send-email: fix fallback code in extract_valid_address()
In the fallback check, used when Email::Valid is not available, the
extract_valid_address() uses $1 without checking for success of matching
regex. The $1 variable may still hold the result of previous match,
which is the address when email address was in '<>' or be undefined
otherwise.
Now if match fails undefined value is always returned to indicate error.
The same value is used by Email::Valid->address() in that case.
Previously 'foo@bar' address was rejected by Email::Valid and fallback,
but '<foo@bar>' was rejected by Email::Valid, but accepted by fallback.
Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Krzysztof Mazur [Thu, 22 Nov 2012 18:12:08 +0000 (19:12 +0100)]
git-send-email: remove garbage after email address
In some cases it is useful to add additional information after the
email address on the Cc: footer in a commit log, for instance:
"Cc: Stable kernel <stable@vger.kernel.org> #v3.4 v3.5 v3.6"
However, git-send-email refuses to pick up such an invalid address
when the Email::Valid perl module is available, or just uses the
whole line as the email address.
In sanitize_address(), remove everything after the email address, so
that the result is a valid email address that makes Email::Valid
happy.
Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net>
Tested-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 26 Nov 2012 02:52:42 +0000 (18:52 -0800)]
Update draft release notes to 1.8.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 26 Nov 2012 02:44:50 +0000 (18:44 -0800)]
Merge branch 'rr/submodule-diff-config'
Allow "git diff --submodule=log" to set to be the default via
configuration.
* rr/submodule-diff-config:
submodule: display summary header in bold
diff: rename "set" variable
diff: introduce diff.submodule configuration variable
Documentation: move diff.wordRegex from config.txt to diff-config.txt
Junio C Hamano [Mon, 26 Nov 2012 02:44:41 +0000 (18:44 -0800)]
Merge branch 'nd/maint-compat-fnmatch-fix'
* nd/maint-compat-fnmatch-fix:
compat/fnmatch: fix off-by-one character class's length check
Junio C Hamano [Mon, 26 Nov 2012 02:44:36 +0000 (18:44 -0800)]
Merge branch 'bc/do-not-recurse-in-die'
* bc/do-not-recurse-in-die:
usage.c: detect recursion in die routines and bail out immediately
Junio C Hamano [Mon, 26 Nov 2012 02:44:28 +0000 (18:44 -0800)]
Merge branch 'mk/complete-tcsh'
* mk/complete-tcsh:
tcsh-completion re-using git-completion.bash
Junio C Hamano [Mon, 26 Nov 2012 02:44:17 +0000 (18:44 -0800)]
Merge branch 'jh/update-ref-d-through-symref'
"update-ref -d --deref SYM" to delete a ref through a symbolic ref
that points to it did not remove it correctly.
* jh/update-ref-d-through-symref:
Fix failure to delete a packed ref through a symref
t1400-update-ref: Add test verifying bug with symrefs in delete_ref()
Junio C Hamano [Mon, 26 Nov 2012 02:44:06 +0000 (18:44 -0800)]
Merge branch 'lt/diff-stat-show-0-lines'
We failed to mention a file without any content change but whose
permission bit was modified, or (worse yet) a new file without any
content in the "git diff --stat" output.
* lt/diff-stat-show-0-lines:
Fix "git diff --stat" for interesting - but empty - file changes
Junio C Hamano [Mon, 26 Nov 2012 02:43:54 +0000 (18:43 -0800)]
Merge branch 'sg/complete-help-undup'
* sg/complete-help-undup:
completion: remove 'help' duplicate from porcelain commands
Junio C Hamano [Mon, 26 Nov 2012 02:40:55 +0000 (18:40 -0800)]
Sync with 1.8.0.1
Junio C Hamano [Mon, 26 Nov 2012 02:40:34 +0000 (18:40 -0800)]
Git 1.8.0.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 26 Nov 2012 02:35:50 +0000 (18:35 -0800)]
Merge branch 'jk/checkout-out-of-unborn' into maint
* jk/checkout-out-of-unborn:
checkout: print a message when switching unborn branches
Junio C Hamano [Mon, 26 Nov 2012 02:35:46 +0000 (18:35 -0800)]
Merge branch 'cn/config-missing-path' into maint
* cn/config-missing-path:
config: don't segfault when given --path with a missing value
Junio C Hamano [Mon, 26 Nov 2012 02:35:41 +0000 (18:35 -0800)]
Merge branch 'jk/maint-gitweb-xss' into maint
Fixes an XSS vulnerability in gitweb.
* jk/maint-gitweb-xss:
gitweb: escape html in rss title
Marc Khouzam [Fri, 23 Nov 2012 14:02:22 +0000 (09:02 -0500)]
Completion must sort before using uniq
The user can be presented with invalid completion results
when trying to complete a 'git checkout' command. This can happen
when using a branch name prefix that matches multiple remote branches.
For example, if available branches are:
master
remotes/GitHub/maint
remotes/GitHub/master
remotes/origin/maint
remotes/origin/master
When performing completion on 'git checkout ma' the user will be
given the choices:
maint
master
However, 'git checkout maint' will fail in this case, although
completion previously said 'maint' was valid. Furthermore, when
performing completion on 'git checkout mai', no choices will be
suggested. So, the user is first told that the branch name
'maint' is valid, but when trying to complete 'mai' into 'maint',
that completion is no longer valid.
The completion results should never propose 'maint' as a valid
branch name, since 'git checkout' will refuse it.
The reason for this bug is that the uniq program only
works with sorted input. The man page states
"uniq prints the unique lines in a sorted file".
When __git_refs uses the guess heuristic employed by checkout for
tracking branches it wants to consider remote branches but only if
the branch name is unique. To do that, it calls 'uniq -u'. However
the input given to 'uniq -u' is not sorted.
Therefore, in the above example, when dealing with 'git checkout ma',
"__git_refs '' 1" will find the following list:
master
maint
master
maint
master
which, when passed to 'uniq -u' will remain the same. Therefore
'maint' will be wrongly suggested as a valid option.
When dealing with 'git checkout mai', the list will be:
maint
maint
which happens to be sorted and will be emptied by 'uniq -u',
properly ignoring 'maint'.
A solution for preventing the completion script from suggesting
such invalid branch names is to first call 'sort' and then 'uniq -u'.
Signed-off-by: Marc Khouzam <marc.khouzam@gmail.com>
Reviewed-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jens Lehmann [Thu, 22 Nov 2012 22:32:26 +0000 (23:32 +0100)]
Teach rm to remove submodules when given with a trailing '/'
Doing a "git rm submod/" on a submodule results in an error:
fatal: pathspec 'submod/' did not match any files
This is really inconvenient as e.g. using TAB completion in a shell on a
submodule automatically adds the trailing '/' when it completes the path
of the submodule directory. The user has then to remove the '/' herself to
make a "git rm" succeed. Doing a "git rm -r somedir/" is working fine, so
there is no reason why that shouldn't work for submodules too.
Teach git rm to not error out when a '/' is appended to the path of a
submodule. Achieve this by chopping off trailing slashes from the path
names given if they represent directories. Add tests to make sure that
logic only applies to directories and not to files.
Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Tran Ngoc Quan [Sat, 24 Nov 2012 00:37:35 +0000 (07:37 +0700)]
l10n: vi.po: Update follow git-v1.8.0-273-g2d242
Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
Peter Krefting [Fri, 23 Nov 2012 07:59:11 +0000 (08:59 +0100)]
l10n: Update Swedish translation (1975t0f0u)
Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
Tran Ngoc Quan [Wed, 31 Oct 2012 01:19:59 +0000 (08:19 +0700)]
l10n: vi.po: update to git-v1.7.12-437-g1084f
* updated all new messages (1967t0f0u)
* make quote become more good-looking
Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
Jiang Xin [Fri, 23 Nov 2012 06:29:02 +0000 (14:29 +0800)]
l10n: Update git.pot (14 new, 3 removed messages)
Generate po/git.pot from v1.8.0-273-g2d242, and there are 14 new and 3
removed messages.
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Junio C Hamano [Wed, 21 Nov 2012 21:23:18 +0000 (13:23 -0800)]
Update draft release notes for 1.8.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 21 Nov 2012 21:32:48 +0000 (13:32 -0800)]
Merge branch 'esr/maint-doc-fast-import'
* esr/maint-doc-fast-import:
doc/fast-import: clarify how content states are built
Junio C Hamano [Wed, 21 Nov 2012 21:25:42 +0000 (13:25 -0800)]
Merge branch 'wtk/submodule-doc-fixup'
* wtk/submodule-doc-fixup:
git-submodule: wrap branch option with "<>" in usage strings.
Junio C Hamano [Wed, 21 Nov 2012 21:17:01 +0000 (13:17 -0800)]
Merge branch 'so/prompt-command'
Updates __git_ps1 so that it can be used as $PROMPT_COMMAND,
instead of being used for command substitution in $PS1, to embed
color escape sequences in its output.
* so/prompt-command:
coloured git-prompt: paint detached HEAD marker in red
Fix up colored git-prompt
show color hints based on state of the git tree
Allow __git_ps1 to be used in PROMPT_COMMAND
Junio C Hamano [Wed, 21 Nov 2012 21:16:44 +0000 (13:16 -0800)]
Merge branch 'jk/config-ignore-duplicates'
Drop duplicate detection from "git-config --get"; this lets it
better match the internal config callbacks, which clears up some
corner cases with includes.
* jk/config-ignore-duplicates:
builtin/config.c: Fix a sparse warning
git-config: use git_config_with_options
git-config: do not complain about duplicate entries
git-config: collect values instead of immediately printing
git-config: fix regexp memory leaks on error conditions
git-config: remove memory leak of key regexp
t1300: test "git config --get-all" more thoroughly
t1300: remove redundant test
t1300: style updates