Commit Graph

30455 Commits

Author SHA1 Message Date
Michael G. Schwern
93c3fcbe4d git-svn: attempt to mimic SVN 1.7 URL canonicalization
Previously, our URL canonicalization didn't do much of anything.
Now it actually escapes and collapses slashes.  This is mostly a cut & paste
of escape_url from git-svn.

This is closer to how SVN 1.7's canonicalization behaves.  Doing it with
1.6 lets us chase down some problems caused by more effective canonicalization
without having to deal with all the other 1.7 issues on top of that.

* Remote URLs have to be canonicalized otherwise Git::SVN->find_existing_remote
  will think they're different.

* The SVN remote is now written to the git config canonicalized.  That
  should be ok.  Adjust a test to account for that.

[ew: commit title]

Signed-off-by: Eric Wong <normalperson@yhbt.net>
2012-08-02 21:46:00 +00:00
Michael G. Schwern
1a35da0b5d t9107: fix typo
Test to check that the migration got rid of the old style git-svn directory.
It wasn't failing, just throwing a message to STDERR.

[ew: commit title]

Signed-off-by: Eric Wong <normalperson@yhbt.net>
2012-08-02 21:45:59 +00:00
Michael G. Schwern
dad9090f89 t9118: workaround inconsistency between SVN versions
SVN 1.7 will truncate "not-a%40{0}" to just "not-a".

Rather than guess what SVN is going to do for each version, make the test use
the branch name that was actually created.

[ew: commit title]

Signed-off-by: Eric Wong <normalperson@yhbt.net>
2012-08-02 21:45:58 +00:00
Michael G. Schwern
565e56c2cc Git::SVN{,::Ra}: canonicalize earlier
This canonicalizes paths and urls as early as possible so we don't
have to remember to do it at the point of use.  It will fix a swath
of SVN 1.7 problems in one go.

Its ok to double canonicalize things.

SVN 1.7 still fails, still not worrying about that.

[ew: commit title]

Signed-off-by: Eric Wong <normalperson@yhbt.net>
2012-08-02 21:45:56 +00:00
Michael G. Schwern
3def8d0884 git-svn: path canonicalization uses SVN API
All tests pass with SVN 1.6.  SVN 1.7 remains broken, not worrying
about it yet.

SVN changed its path canonicalization API between 1.6 and 1.7.
http://svnbook.red-bean.com/en/1.6/svn.developer.usingapi.html#svn.developer.usingapi.urlpath
http://svnbook.red-bean.com/en/1.7/svn.developer.usingapi.html#svn.developer.usingapi.urlpath

The SVN API does not accept foo/.. but it also doesn't canonicalize
it.  We have to do it ourselves.

[ew: commit title, fall back if SVN <= 1.6 fails to canonicalize]

Signed-off-by: Eric Wong <normalperson@yhbt.net>
2012-08-02 21:45:26 +00:00
Michael G. Schwern
8169a3908c Git::SVN::Utils: remove irrelevant comment
The code doesn't use File::Spec.

[ew: commit title]

Signed-off-by: Eric Wong <normalperson@yhbt.net>
2012-08-02 21:44:09 +00:00
Michael G. Schwern
ca475a61f8 git-svn: add join_paths() to safely concatenate paths
Otherwise you might wind up with things like...

    my $path1 = undef;
    my $path2 = 'foo';
    my $path = $path1 . '/' . $path2;

creating '/foo'.  Or this...

    my $path1 = 'foo/';
    my $path2 = 'bar';
    my $path = $path1 . '/' . $path2;

creating 'foo//bar'.

Could have used File::Spec, but I'm shying away from it due to SVN
1.7's pickiness about paths.  Felt it would be better to have our own
we can control completely.

[ew: commit title]

Signed-off-by: Eric Wong <normalperson@yhbt.net>
2012-08-02 21:44:04 +00:00
Michael G. Schwern
280ad88aa0 git-svn: factor out _collapse_dotdot function
The SVN API functions will not accept ../foo but their canonicalization
functions will not collapse it.  So we'll have to do it ourselves.

_collapse_dotdot() works better than the existing regex did.

This will be used shortly when canonicalize_path() starts using the
SVN API.

[ew: commit title]

Signed-off-by: Eric Wong <normalperson@yhbt.net>
2012-08-02 21:43:58 +00:00
Michael G. Schwern
82009f3048 git-svn: use SVN 1.7 to canonicalize when possible
No change on SVN 1.6.  The tests all pass with SVN 1.6 if
canonicalize_url() does nothing, so tests passing doesn't have
much meaning.

The tests are so messed up right now with SVN 1.7 it isn't really
useful to check.  They will be useful later.

[ew: commit title]

Signed-off-by: Eric Wong <normalperson@yhbt.net>
2012-08-02 21:43:10 +00:00
Michael G. Schwern
91e6e0c56c git-svn: move canonicalization to Git::SVN::Utils
So they can be used by others.

I'd like to test them, but they're going to become SVN API wrappers shortly
and those aren't predictable.

No functional change.

[ew: commit title]

Signed-off-by: Eric Wong <normalperson@yhbt.net>
2012-08-02 21:43:02 +00:00
Michael G. Schwern
b1ea6c3829 use Git::SVN{,::RA}->url accessor globally
Note: The structure returned from Git::SVN->read_all_remotes() does not
appear to contain objects, so I'm leaving them alone.

That's everything converted over to the url and path accessors.

No functional change.

[ew: commit title]

Signed-off-by: Eric Wong <normalperson@yhbt.net>
2012-08-02 21:42:59 +00:00
Michael G. Schwern
6a8d999ed4 use Git::SVN->path accessor globally
No functional change.

[ew: commit title]

Signed-off-by: Eric Wong <normalperson@yhbt.net>
2012-08-02 21:42:58 +00:00
Michael G. Schwern
b4943dc963 Git::SVN::Ra: use accessor for URLs
Later it can canonicalize automatically.

A later change will make other things use the accessor.

No functional change.

[ew: commit title, reformatted accessor to match existing style]

Signed-off-by: Eric Wong <normalperson@yhbt.net>
2012-08-02 21:42:56 +00:00
Michael G. Schwern
06ee19e8e5 Git::SVN: use accessor for URLs internally
So later it can do automatic canonicalization.

A later patch will make other things use the accessor.

No functional change here.

[ew: commit title]
Signed-off-by: Eric Wong <normalperson@yhbt.net>
2012-08-02 21:42:47 +00:00
Michael G. Schwern
5578ed744d Git::SVN: use accessors internally for path
Then later it can be canonicalized automatically rather than everywhere
its used.

Later patch will make other things use it.

[ew: commit title, reformatted accessor to match existing style]

Signed-off-by: Eric Wong <normalperson@yhbt.net>
2012-08-02 21:42:45 +00:00
Jiang Xin
3b6137f253 l10n: Update git.pot (76 new, 4 removed messages)
Generate po/git.pot from v1.7.12-rc1-16-g05a20, and there are 76 new,
4 removed l10n messages.

 * 76 new messages are added at lines:

   230, 337-580, 4972, 4984, 4998, 5017, 5280-5378, 5654

 * 4 old messages are deleted from the previous version at lines:

   230, 4729, 4764, 5295

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2012-08-02 09:35:23 +08:00
Junio C Hamano
05a20c87ab Merge git://github.com/git-l10n/git-po
* git://github.com/git-l10n/git-po:
  l10n: de.po: translate 4 new messages
  l10n: vi.po: translate 4 new messages
  l10n: zh_CN.po: translate 4 new messages
  l10n: Update git.pot (4 new, 3 removed messages)
2012-08-01 15:59:08 -07:00
Ralf Thielow
e39beac673 git-rebase.sh: fix typo in an error message
Fix a typo in the error messages which is shown if it seems that a
rebase is already in progress.

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-08-01 13:58:47 -07:00
Thomas Rast
b622d4d11d send-email: improve RFC2047 quote parsing
The RFC2047 unquoting, used to parse email addresses in From and Cc
headers, is broken in several ways:

* It erroneously substitutes ' ' for '_' in *the whole* header, even
  outside the quoted field. [Noticed by Christoph.]

* It is too liberal in its matching, and happily matches the start
  of one quoted chunk against the end of another, or even just
  something that looks like such an end. [Noticed by Junio.]

* It fundamentally cannot cope with encodings that are not a
  superset of ASCII, nor several (incompatible) encodings in the
  same header.

This patch fixes the first two by doing a more careful decoding of
the outer quoting (e.g. "=AB" to represent an octet whose value is
0xAB).  Fixing the fundamental issues is left for a future, more
intrusive, patch.

Noticed-by: Christoph Miebach <christoph.miebach@web.de>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-07-31 15:05:53 -07:00
Junio C Hamano
a78550831a sane_execvp(): ignore non-directory on $PATH
When you have a non-directory on your PATH, a funny thing happens:

	$ PATH=$PATH:/bin/sh git foo
	fatal: cannot exec 'git-foo': Not a directory?

Worse yet, as real commands always take precedence over aliases,
this behaviour interacts rather badly with them:

	$ PATH=$PATH:/bin/sh git -c alias.foo=show git foo -s
	fatal: cannot exec 'git-foo': Not a directory?

This is because an ENOTDIR error from the underlying execvp(2) is
reported back to the caller of our sane_execvp() wrapper as-is.

Translating it to ENOENT, just like the case where we _might_ have
the command in an unreadable directory, fixes it.  Without an alias,
we would get

	git: 'foo' is not a git command. See 'git --help'.

and we use the 'foo' alias when it is available, of course.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-07-31 12:51:30 -07:00
Junio C Hamano
97c7934049 Merge branch 'nd/maint-i18n-diffstat'
* nd/maint-i18n-diffstat:
  i18n: leave \n out of translated diffstat
2012-07-31 09:43:07 -07:00
Junio C Hamano
5fe1484a9b Merge branch 'jx/i18n-1.7.11'
Add i18n support for scripted Porcelains, and mark strings in
merge(-recursive), am, and rebase for i18n.

* jx/i18n-1.7.11:
  i18n: merge-recursive: mark strings for translation
  Remove dead code which contains bad gettext block
  i18n: am: mark more strings for translation
  rebase: remove obsolete and unused LONG_USAGE which breaks xgettext
  i18n: Rewrite gettext messages start with dash
  i18n: rebase: mark messages for translation
  i18n: New keywords for xgettext extraction from sh
2012-07-31 09:41:52 -07:00
Ralf Thielow
9c87b0d28f l10n: de.po: translate 4 new messages
Translate 4 new messages came from git.pot update in 0bbe5b4
(l10n: Update git.pot (4 new, 3 removed messages)).

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
2012-07-31 17:01:15 +02:00
Tran Ngoc Quan
fd4652ed54 l10n: vi.po: translate 4 new messages
Update Vietnamse translation to POT file in 0bbe5b4

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
2012-07-31 07:45:53 +07:00
Jiang Xin
23ff333803 l10n: zh_CN.po: translate 4 new messages
Translate 4 new messages came from git.pot update in 0bbe5b4
(l10n: Update git.pot (4 new, 3 removed messages))

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2012-07-31 06:45:33 +08:00
Junio C Hamano
3b2d763db0 Git 1.7.12-rc1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-07-30 13:20:00 -07:00
Junio C Hamano
9c9b9ede90 Sync with 1.7.11.4
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-07-30 13:18:18 -07:00
Junio C Hamano
0e4c8822e9 Git 1.7.11.4
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-07-30 13:16:51 -07:00
Junio C Hamano
f17adbce64 Merge branch 'jk/maint-commit-document-editmsg' into maint
"$GIT_DIR/COMMIT_EDITMSG" file that is used to hold the commit log
message user edits was not documented.

* jk/maint-commit-document-editmsg:
  commit: document the temporary commit message file
2012-07-30 13:05:36 -07:00
Junio C Hamano
5c992a1326 Merge branch 'jk/maint-advise-vaddf' into maint
The advise() function did not use varargs correctly to format
its message.

* jk/maint-advise-vaddf:
  advice: pass varargs to strbuf_vaddf, not strbuf_addf
2012-07-30 13:05:25 -07:00
Junio C Hamano
2e3710bdf9 Merge branch 'kk/maint-commit-tree' into maint
"git commit-tree" learned a more natural "-p <parent> <tree>" order
of arguments long time ago, but recently forgot it by mistake.

* kk/maint-commit-tree:
  Revert "git-commit-tree(1): update synopsis"
  commit-tree: resurrect command line parsing updates
2012-07-30 13:05:13 -07:00
Junio C Hamano
70f6be7aa9 Merge branch 'jv/maint-no-ext-diff' into maint
"git diff --no-ext-diff" did not output anything for a typechange
filepair when GIT_EXTERNAL_DIFF is in effect.

* jv/maint-no-ext-diff:
  diff: test precedence of external diff drivers
  diff: correctly disable external_diff with --no-ext-diff
2012-07-30 13:04:59 -07:00
Junio C Hamano
9b67f560f4 Merge branch 'pg/maint-1.7.9-am-where-is-patch' into maint
When "git am" failed, old timers knew to check .git/rebase-apply/patch
to see what went wrong, but we never told the users about it.

* pg/maint-1.7.9-am-where-is-patch:
  am: indicate where a failed patch is to be found
2012-07-30 13:04:39 -07:00
Junio C Hamano
8ba105dda8 Merge branch 'jl/maint-1.7.10-recurse-submodules-with-symlink' into maint
When "git submodule add" clones a submodule repository, it can get
confused where to store the resulting submodule repository in the
superproject's .git/ directory when there is a symbolic link in the
path to the current directory.

* jl/maint-1.7.10-recurse-submodules-with-symlink:
  submodules: don't stumble over symbolic links when cloning recursively
2012-07-30 13:04:18 -07:00
Junio C Hamano
80ffb7570f Merge branch 'jc/maint-filter-branch-epoch-date' into maint
In 1.7.9 era, we taught "git rebase" about the raw timestamp format
but we did not teach the same trick to "filter-branch", which rolled
a similar logic on its own.

* jc/maint-filter-branch-epoch-date:
  t7003: add test to filter a branch with a commit at epoch
  date.c: Fix off by one error in object-header date parsing
  filter-branch: do not forget the '@' prefix to force git-timestamp
2012-07-30 13:04:18 -07:00
Junio C Hamano
3e6d071747 Merge branch 'rj/maint-grep-remove-redundant-test'
"git grep" stopped spawning an external "grep" long time ago, but a
duplicated test to check internal and external "grep" was left
behind.

* rj/maint-grep-remove-redundant-test:
  t7810-*.sh: Remove redundant test
2012-07-30 12:56:42 -07:00
Junio C Hamano
8de8bb8051 Merge branch 'dg/submodule-in-dismembered-working-tree'
Finishing touches to the new test script.

* dg/submodule-in-dismembered-working-tree:
  t7409: make sure submodule is initialized and updated in more detail
2012-07-30 12:56:25 -07:00
Daniel Graña
95e7705310 t7409: make sure submodule is initialized and updated in more detail
The earlier test did not even make sure that the correct commit is
checked out in the submodule directory.  Inspect the result in a bit
more detail.

Signed-off-by: Daniel Graña <dangra@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-07-30 12:56:14 -07:00
Junio C Hamano
fbea95ce10 Merge branch 'hv/link-alt-odb-entry'
The code to avoid mistaken attempt to add the object directory
itself as its own alternate could read beyond end of a string while
comparison.

* hv/link-alt-odb-entry:
  link_alt_odb_entry: fix read over array bounds reported by valgrind
2012-07-30 12:55:01 -07:00
Florian Achleitner
dff9d65dc6 Add explanatory comment for transport-helpers refs mapping.
The patch below adds a comment to fetch_with_import() explaining the
loop that saves the fetched commit names after 'git fast-import' has
done its work.  It avoids some confusion about which refs the
fast-import stream is supposed to use to write its result.

Signed-off-by: Florian Achleitner <florian.achleitner.2.6.31@gmail.com>
Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-07-30 12:22:35 -07:00
Junio C Hamano
ad6a599c0a t7406: fix misleading "rev-parse --max-count=1 HEAD"
The test happened to use "rev-parse --max-count=1 HEAD" consistently
to prepare the expected output and the actual output, so the
comparison between them gave us a correct success/failure because
both output had irrelevant "--max-count=1" in it.

But that is not an excuse to keep it broken.  Replace it a more
meaningful construct "rev-parse --verify HEAD".

Noticed by Daniel Graña while working on his submodule tests.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-07-30 10:52:29 -07:00
Junio C Hamano
9409c7a5b3 config: "git config baa" should exit with status 1
We instead failed with an undocumented exit status 255.
Also define a "catch-all" status and document it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-07-30 08:51:26 -07:00
Jiang Xin
0bbe5b483d l10n: Update git.pot (4 new, 3 removed messages)
Generate po/git.pot from v1.7.12-rc0-54-g9e211, and there are 4 new,
3 removed l10n messages.

 * 4 new messages are added at lines:
   1254, 1264, 1459, 1523

 * 3 old messages are deleted from the previous version at lines:
   1254, 1273, 2854

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2012-07-30 10:24:47 +08:00
Ramsay Jones
4ca945389f t7810-*.sh: Remove redundant test
Since commit bbc09c22 ("grep: rip out support for external grep",
12-01-2010), test number 60 ("grep -C1 hunk mark between files") is
essentially the same as test number 59.

Test 59 was intended to verify the behaviour of git-grep resulting
from multiple invocations of an external grep. As part of the test,
it creates and adds 1024 files to the index, which is now wasted
effort.

Remove test 59, since it is now redundant.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-07-29 18:08:50 -07:00
Ramsay Jones
425b8a22aa t1100-*.sh: Fix an intermittent test failure
In particular, the final test ('flags and then non flags') fails
intermittently, depending on how much time elapsed between the
invocations of "git commit-tree" when creating the commits which
later have their commit id's compared. For example, if the commits
for childid-3 and childid-4 are created 1 or more seconds apart,
then the commits, which would otherwise be identical, will have
different commit id's.

In order to make the test reproducible, we remove the variability
by setting the author and committer times to a well defined state.
We accomplish this with a single call to 'test_tick' at the start
of the test.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-07-29 18:07:47 -07:00
Heiko Voigt
cb2912c324 link_alt_odb_entry: fix read over array bounds reported by valgrind
pfxlen can be longer than the path in objdir when relative_base
contains the path to gits object directory.  Here we are interested
in checking if ent->base[] (the part that corresponds to .git/objects)
is the same string as objdir, and the code NUL-terminated ent->base[]
to

	LEADING PATH\0XX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\0

in preparation for these "duplicate check" step (before we return
from the function, the first NUL is turned into '/' so that we can
fill XX when probing for loose objects).  All we need to do is to
compare the string with the path to our object directory.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-07-29 18:02:51 -07:00
Martin von Zweigbergk
51f4de3ac9 cherry: remove redundant check for merge commit
While walking the revision list in get_patch_ids and cmd_cherry, we
check for each commit if there is more than one parent and ignore
the commit if that is the case. Instead, set rev_info.max_parents to
1 and let the revision traversal code handle it for us.

Signed-off-by: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-07-29 17:39:56 -07:00
Martin von Zweigbergk
38a44bc59a cherry: don't set ignored rev_info options
Ever since cherry was built-in in e827633 (Built-in cherry,
2006-10-24), it has set a bunch of options on the the rev_info that
are only used while outputting a patch. But since the built-in cherry
command never needs to output any patch (it uses add_commit_patch_id
and has_commit_patch_id instead), these options are just distractions,
so remove them.

Signed-off-by: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-07-29 17:37:11 -07:00
Jeff King
07a71b851a t: add missing executable bit to t7409
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-07-29 15:20:42 -07:00
Jeff King
c479d14a80 fsck: detect null sha1 in tree entries
Short of somebody happening to beat the 1 in 2^160 odds of
actually generating content that hashes to the null sha1, we
should never see this value in a tree entry. So let's have
fsck warn if it it seen.

As in the previous commit, we test both blob and submodule
entries to future-proof the test suite against the
implementation depending on connectivity to notice the
error.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-07-29 15:14:08 -07:00