summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2016-03-16Merge branch 'master' of git://bogomips.org/git-svnLibravatar Junio C Hamano2-6/+14
* 'master' of git://bogomips.org/git-svn: git-svn: fix URL canonicalization during init w/ SVN 1.7+ t9117: test specifying full url to git svn init -T
2016-03-16Sync with maintLibravatar Junio C Hamano0-0/+0
* maint: list-objects: pass full pathname to callbacks list-objects: drop name_path entirely list-objects: convert name_path to a strbuf show_object_with_name: simplify by using path_name() http-push: stop using name_path tree-diff: catch integer overflow in combine_diff_path allocation add helpers for detecting size_t overflow
2016-03-16Merge branch 'jc/sane-grep'Libravatar Junio C Hamano5-4/+17
Recent versions of GNU grep is pickier than before to decide if a file is "binary" and refuse to give line-oriented hits when we expect it to, unless explicitly told with "-a" option. As our scripted Porcelains use sane_grep wrapper for line-oriented data, even when the line may contain non-ASCII payload we took from end-user data, use "grep -a" to implement sane_grep wrapper when using an implementation of "grep" that takes the "-a" option. * jc/sane-grep: rebase-i: clarify "is this commit relevant?" test sane_grep: pass "-a" if grep accepts it
2016-03-16Merge branch 'cn/deprecate-ssh-git-url'Libravatar Junio C Hamano3-5/+6
The two alternative ways to spell "ssh://" transport have been deprecated for a long time. The last mention of them has finally removed from the documentation. * cn/deprecate-ssh-git-url: Disown ssh+git and git+ssh
2016-03-16git-svn: fix URL canonicalization during init w/ SVN 1.7+Libravatar Eric Wong2-7/+9
URL canonicalization when full URLs are passed became broken when using SVN::_Core::svn_dirent_canonicalize under SVN 1.7. Ensure we canonicalize paths and URLs with appropriate functions for each type from now on as the path/URL-agnostic SVN::_Core::svn_path_canonicalize function is deprecated in SVN. Tested with the following commands: git svn init -T svn://svn.code.sf.net/p/squirrelmail/code/trunk git svn init -b svn://svn.code.sf.net/p/squirrelmail/code/branches Reported-by: Adam Dinwoodie <adam@dinwoodie.org> http://mid.gmane.org/20160315162344.GM29016@dinwoodie.org Signed-off-by: Eric Wong <normalperson@yhbt.net>
2016-03-16Merge branch 'jk/path-name-safety-2.7' into maintLibravatar Junio C Hamano10-142/+46
* jk/path-name-safety-2.7: list-objects: pass full pathname to callbacks list-objects: drop name_path entirely list-objects: convert name_path to a strbuf show_object_with_name: simplify by using path_name() http-push: stop using name_path tree-diff: catch integer overflow in combine_diff_path allocation add helpers for detecting size_t overflow
2016-03-16t9117: test specifying full url to git svn init -TLibravatar Adam Dinwoodie1-0/+6
According to the documentation, full URLs can be specified in the `-T` argument to `git svn init`. However, the canonicalization of such arguments squashes together consecutive "/"s, which unsurprisingly breaks http://, svn://, etc URLs. Add a failing test case to provide evidence of that. On systems where Subversion provides svn_path_canonicalize but not svn_dirent_canonicalize (Subversion 1.6 and earlier?), this test passes, as svn_path_canonicalize doesn't mangle the consecutive "/"s. [ew: fixed whitespace] Signed-off-by: Adam Dinwoodie <adam@dinwoodie.org> Signed-off-by: Eric Wong <normalperson@yhbt.net>
2016-03-16Merge branch 'jk/path-name-safety-2.6' into jk/path-name-safety-2.7Libravatar Junio C Hamano10-142/+46
* jk/path-name-safety-2.6: list-objects: pass full pathname to callbacks list-objects: drop name_path entirely list-objects: convert name_path to a strbuf show_object_with_name: simplify by using path_name() http-push: stop using name_path tree-diff: catch integer overflow in combine_diff_path allocation add helpers for detecting size_t overflow
2016-03-16Merge branch 'jk/path-name-safety-2.5' into jk/path-name-safety-2.6Libravatar Junio C Hamano13-146/+84
* jk/path-name-safety-2.5: list-objects: pass full pathname to callbacks list-objects: drop name_path entirely list-objects: convert name_path to a strbuf show_object_with_name: simplify by using path_name() http-push: stop using name_path tree-diff: catch integer overflow in combine_diff_path allocation add helpers for detecting size_t overflow
2016-03-16Merge branch 'jk/path-name-safety-2.4' into jk/path-name-safety-2.5Libravatar Junio C Hamano13-146/+84
* jk/path-name-safety-2.4: list-objects: pass full pathname to callbacks list-objects: drop name_path entirely list-objects: convert name_path to a strbuf show_object_with_name: simplify by using path_name() http-push: stop using name_path tree-diff: catch integer overflow in combine_diff_path allocation add helpers for detecting size_t overflow
2016-03-16list-objects: pass full pathname to callbacksLibravatar Jeff King9-58/+26
When we find a blob at "a/b/c", we currently pass this to our show_object_fn callbacks as two components: "a/b/" and "c". Callbacks which want the full value then call path_name(), which concatenates the two. But this is an inefficient interface; the path is a strbuf, and we could simply append "c" to it temporarily, then roll back the length, without creating a new copy. So we could improve this by teaching the callsites of path_name() this trick (and there are only 3). But we can also notice that no callback actually cares about the broken-down representation, and simply pass each callback the full path "a/b/c" as a string. The callback code becomes even simpler, then, as we do not have to worry about freeing an allocated buffer, nor rolling back our modification to the strbuf. This is theoretically less efficient, as some callbacks would not bother to format the final path component. But in practice this is not measurable. Since we use the same strbuf over and over, our work to grow it is amortized, and we really only pay to memcpy a few bytes. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-16list-objects: drop name_path entirelyLibravatar Jeff King9-25/+19
In the previous commit, we left name_path as a thin wrapper around a strbuf. This patch drops it entirely. As a result, every show_object_fn callback needs to be adjusted. However, none of their code needs to be changed at all, because the only use was to pass it to path_name(), which now handles the bare strbuf. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-16list-objects: convert name_path to a strbufLibravatar Jeff King3-36/+15
The "struct name_path" data is examined in only two places: we generate it in process_tree(), and we convert it to a single string in path_name(). Everyone else just passes it through to those functions. We can further note that process_tree() already keeps a single strbuf with the leading tree path, for use with tree_entry_interesting(). Instead of building a separate name_path linked list, let's just use the one we already build in "base". This reduces the amount of code (especially tricky code in path_name() which did not check for integer overflows caused by deep or large pathnames). It is also more efficient in some instances. Any time we were using tree_entry_interesting, we were building up the strbuf anyway, so this is an immediate and obvious win there. In cases where we were not, we trade off storing "pathname/" in a strbuf on the heap for each level of the path, instead of two pointers and an int on the stack (with one pointer into the tree object). On a 64-bit system, the latter is 20 bytes; so if path components are less than that on average, this has lower peak memory usage. In practice it probably doesn't matter either way; we are already holding in memory all of the tree objects leading up to each pathname, and for normal-depth pathnames, we are only talking about hundreds of bytes. This patch leaves "struct name_path" as a thin wrapper around the strbuf, to avoid disrupting callbacks. We should fix them, but leaving it out makes this diff easier to view. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-16show_object_with_name: simplify by using path_name()Libravatar Jeff King1-34/+6
When "git rev-list" shows an object with its associated path name, it does so by walking the name_path linked list and printing each component (stopping at any embedded NULs or newlines). We'd like to eventually get rid of name_path entirely in favor of a single buffer, and dropping this custom printing code is part of that. As a first step, let's use path_name() to format the list into a single buffer, and print that. This is strictly less efficient than the original, but it's a temporary step in the refactoring; our end game will be to get the fully formatted name in the first place. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-16http-push: stop using name_pathLibravatar Jeff King1-16/+7
The graph traversal code here passes along a name_path to build up the pathname at which we find each blob. But we never actually do anything with the resulting names, making it a waste of code and memory. This usage came in aa1dbc9 (Update http-push functionality, 2006-03-07), and originally the result was passed to "add_object" (which stored it, but didn't really use it, either). But we stopped using that function in 1f1e895 (Add "named object array" concept, 2006-06-19) in favor of storing just the objects themselves. Moreover, the generation of the name in process_tree() is buggy. It sticks "name" onto the end of the name_path linked list, and then passes it down again as it recurses (instead of "entry.path"). So it's a good thing this was unused, as the resulting path for "a/b/c/d" would end up as "a/a/a/a". Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-16tree-diff: catch integer overflow in combine_diff_path allocationLibravatar Jeff King2-4/+4
A combine_diff_path struct has two "flex" members allocated alongside the struct: a string to hold the pathname, and an array of parent pointers. We use an "int" to compute this, meaning we may easily overflow it if the pathname is extremely long. We can fix this by using size_t, and checking for overflow with the st_add helper. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-16add helpers for detecting size_t overflowLibravatar Jeff King1-0/+34
Performing computations on size_t variables that we feed to xmalloc and friends can be dangerous, as an integer overflow can cause us to allocate a much smaller chunk than we realized. We already have unsigned_add_overflows(), but let's add unsigned_mult_overflows() to that. Furthermore, rather than have each site manually check and die on overflow, we can provide some helpers that will: - promote the arguments to size_t, so that we know we are doing our computation in the same size of integer that will ultimately be fed to xmalloc - check and die on overflow - return the result so that computations can be done in the parameter list of xmalloc. These functions are a lot uglier to use than normal arithmetic operators (you have to do "st_add(foo, bar)" instead of "foo + bar"). To at least limit the damage, we also provide multi-valued versions. So rather than: st_add(st_add(a, b), st_add(c, d)); you can write: st_add4(a, b, c, d); This isn't nearly as elegant as a varargs function, but it's a lot harder to get it wrong. You don't have to remember to add a sentinel value at the end, and the compiler will complain if you get the number of arguments wrong. This patch adds only the numbered variants required to convert the current code base; we can easily add more later if needed. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-15RelNotes for 2.8.0: typofixLibravatar Junio C Hamano1-14/+10
Helped-by: Max Horn Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-15Merge branch 'svn-glob' of git://bogomips.org/git-svnLibravatar Junio C Hamano5-13/+258
* 'svn-glob' of git://bogomips.org/git-svn: git-svn: shorten glob error message git-svn: loosen config globs limitations
2016-03-15Merge tag 'l10n-2.8.0-rnd2' of git://github.com/git-l10n/git-poLibravatar Junio C Hamano9-11003/+12830
l10n-2.8.0-rnd2 * tag 'l10n-2.8.0-rnd2' of git://github.com/git-l10n/git-po: (22 commits) l10n: zh_CN: for git v2.8.0 l10n round 3 l10n: git.pot: Add one new message for Git 2.8.0 l10n: zh_CN: for git v2.8.0 l10n round 2 l10n: fr.po v2.8.0 round 2 l10n: ru.po: update Russian translation l10n: ko: Update Korean translation l10n: git.pot: v2.8.0 round 2 (21 new, 1 removed) l10n: zh_CN: for git v2.8.0 l10n round 1 l10n: de.po: translate 48 new messages l10n: de.po: translate "command" as "Befehl" l10n: de.po: fix interactive rebase message l10n: de.po: add space to abbreviation "z. B." l10n: de.po: fix typo l10n: TEAMS: update Ralf Thielow's email address l10n: sv.po: Update Swedish translation (2509t0f0u) l10n: sv.po: Fix inconsistent translation of "progress meter" l10n: ko.po: Update Korean translation l10n: ru.po: update Russian translation l10n: vi.po (2509t): Updated Vietnamese translation l10n: fr.po v2.8.0 round 1 2509t ...
2016-03-16l10n: zh_CN: for git v2.8.0 l10n round 3Libravatar Jiang Xin1-2/+6
Update 1 new translations (2530t0f0u) for git v2.8.0-rc2. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2016-03-16l10n: git.pot: Add one new message for Git 2.8.0Libravatar Jiang Xin1-1/+5
Add one new message came from this commit: * df22724 wt-status: allow "ahead " to be picked up by l10n Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2016-03-16Merge branch 'master' of git://github.com/git-l10n/git-poLibravatar Jiang Xin9-11003/+12822
* 'master' of git://github.com/git-l10n/git-po: l10n: zh_CN: for git v2.8.0 l10n round 2 l10n: fr.po v2.8.0 round 2 l10n: ru.po: update Russian translation l10n: ko: Update Korean translation l10n: git.pot: v2.8.0 round 2 (21 new, 1 removed) l10n: zh_CN: for git v2.8.0 l10n round 1 l10n: de.po: translate 48 new messages l10n: de.po: translate "command" as "Befehl" l10n: de.po: fix interactive rebase message l10n: de.po: add space to abbreviation "z. B." l10n: de.po: fix typo l10n: TEAMS: update Ralf Thielow's email address l10n: sv.po: Update Swedish translation (2509t0f0u) l10n: sv.po: Fix inconsistent translation of "progress meter" l10n: ko.po: Update Korean translation l10n: ru.po: update Russian translation l10n: vi.po (2509t): Updated Vietnamese translation l10n: fr.po v2.8.0 round 1 2509t l10n: fr.po: Correct case in sentence l10n: git.pot: v2.8.0 round 1 (48 new, 16 removed)
2016-03-16l10n: zh_CN: for git v2.8.0 l10n round 2Libravatar Jiang Xin1-20/+121
Update 21 new translations (2529t0f0u) for git v2.8.0-rc2. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2016-03-15git-svn: shorten glob error messageLibravatar Eric Wong4-11/+18
Error messages should attempt to fit within the confines of an 80-column terminal to avoid compatibility and accessibility problems. Furthermore the word "directories" can be misleading when used in the context of git refnames. Signed-off-by: Eric Wong <normalperson@yhbt.net>
2016-03-15git-svn: loosen config globs limitationsLibravatar Victor Leschuk3-5/+243
Expand the area of globs applicability for branches and tags in git-svn. It is now possible to use globs like 'a*e', or 'release_*'. This allows users to avoid long lines in config like: branches = branches/{release_20,release_21,release_22,...} In favor of: branches = branches/release_* [ew: amended commit message, minor formatting and style fixes] Signed-off-by: Victor Leschuk <vleschuk@accesssoftek.com> Signed-off-by: Eric Wong <normalperson@yhbt.net>
2016-03-14l10n: fr.po v2.8.0 round 2Libravatar Jean-Noel Avila1-31/+134
Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
2016-03-14Merge branch 'mg/wt-status-mismarked-i18n'Libravatar Junio C Hamano1-2/+2
* mg/wt-status-mismarked-i18n: wt-status: allow "ahead " to be picked up by l10n
2016-03-14wt-status: allow "ahead " to be picked up by l10nLibravatar Michael J Gruber1-2/+2
The extra pair of parentheses keeps the l10n engine from picking up the string. Remove them so that "ahead " ends up in git.pot. Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-13Merge branch 'russian-l10n' of https://github.com/DJm00n/git-po-ruLibravatar Jiang Xin1-24/+121
* 'russian-l10n' of https://github.com/DJm00n/git-po-ru: l10n: ru.po: update Russian translation
2016-03-13l10n: ru.po: update Russian translationLibravatar Dimitriy Ryazantcev1-24/+121
Signed-off-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>
2016-03-13l10n: ko: Update Korean translationLibravatar Changwoo Ryu1-17/+118
Signed-off-by: Changwoo Ryu <cwryu@debian.org>
2016-03-12l10n: git.pot: v2.8.0 round 2 (21 new, 1 removed)Libravatar Jiang Xin1-14/+111
Generate po/git.pot from v2.8.0-rc2 for git v2.8.0 l10n round 2. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2016-03-12Merge branch 'master' of git://github.com/git-l10n/git-poLibravatar Jiang Xin9-10936/+12256
* 'master' of git://github.com/git-l10n/git-po: l10n: zh_CN: for git v2.8.0 l10n round 1 l10n: de.po: translate 48 new messages l10n: de.po: translate "command" as "Befehl" l10n: de.po: fix interactive rebase message l10n: de.po: add space to abbreviation "z. B." l10n: de.po: fix typo l10n: TEAMS: update Ralf Thielow's email address l10n: sv.po: Update Swedish translation (2509t0f0u) l10n: sv.po: Fix inconsistent translation of "progress meter" l10n: ko.po: Update Korean translation l10n: ru.po: update Russian translation l10n: vi.po (2509t): Updated Vietnamese translation l10n: fr.po v2.8.0 round 1 2509t l10n: fr.po: Correct case in sentence l10n: git.pot: v2.8.0 round 1 (48 new, 16 removed)
2016-03-12l10n: zh_CN: for git v2.8.0 l10n round 1Libravatar Jiang Xin1-1353/+1527
Update 48 new translations (2509t0f0u) for git v2.8.0-rc0. Reviewed-by: Ray Chen <oldsharp@gmail.com> Signed-off-by: Jiang Xin <worldhello.net@gmail.com> l10n: zh_CN: review for git v2.8.0 l10n round 1
2016-03-10rebase-i: clarify "is this commit relevant?" testLibravatar Junio C Hamano1-1/+2
While I was checking all the call sites of sane_grep and sane_egrep, I noticed this one is somewhat strangely written. The lines in the file sane_grep works on all begin with 40-hex object name, so there is no real risk of confusing "test $(...) = ''" by finding something that begins with a dash, but using the status from sane_grep makes it a lot clearer what is going on. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-10sane_grep: pass "-a" if grep accepts itLibravatar Junio C Hamano4-3/+15
Newer versions of GNU grep is reported to be pickier when we feed a non-ASCII input and break some Porcelain scripts. As we know we do not feed random binary file to our own sane_grep wrapper, allow us to always pass "-a" by setting SANE_TEXT_GREP=-a Makefile variable to work it around. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-10Git 2.8-rc2Libravatar Junio C Hamano2-5/+6
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-10Sync with 2.7.3Libravatar Junio C Hamano2-1/+64
2016-03-10Git 2.7.3Libravatar Junio C Hamano4-3/+66
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-10Merge branch 'ma/update-hooks-sample-typofix' into maintLibravatar Junio C Hamano1-1/+1
* ma/update-hooks-sample-typofix: templates/hooks: fix minor typo in the sample update-hook
2016-03-10Merge branch 'dt/initial-ref-xn-commit-doc' into maintLibravatar Junio C Hamano1-0/+12
* dt/initial-ref-xn-commit-doc: refs: document transaction semantics
2016-03-10Merge branch 'ps/plug-xdl-merge-leak' into maintLibravatar Junio C Hamano1-2/+7
* ps/plug-xdl-merge-leak: xdiff/xmerge: fix memory leak in xdl_merge
2016-03-10Merge branch 'ak/git-strip-extension-from-dashed-command' into maintLibravatar Junio C Hamano2-15/+15
Code simplification. * ak/git-strip-extension-from-dashed-command: git.c: simplify stripping extension of a file in handle_builtin()
2016-03-10Merge branch 'ak/extract-argv0-last-dir-sep' into maintLibravatar Junio C Hamano1-4/+2
Code simplification. * ak/extract-argv0-last-dir-sep: exec_cmd.c: use find_last_dir_sep() for code simplification
2016-03-10Merge branch 'jk/pack-idx-corruption-safety' into maintLibravatar Junio C Hamano4-0/+207
The code to read the pack data using the offsets stored in the pack idx file has been made more carefully check the validity of the data in the idx. * jk/pack-idx-corruption-safety: sha1_file.c: mark strings for translation use_pack: handle signed off_t overflow nth_packed_object_offset: bounds-check extended offset t5313: test bounds-checks of corrupted/malicious pack/idx files
2016-03-10Merge branch 'js/config-set-in-non-repository' into maintLibravatar Junio C Hamano2-0/+14
"git config section.var value" to set a value in per-repository configuration file failed when it was run outside any repository, but didn't say the reason correctly. * js/config-set-in-non-repository: git config: report when trying to modify a non-existing repo config
2016-03-10Merge branch 'sb/submodule-module-list-fix' into maintLibravatar Junio C Hamano2-8/+27
A helper function "git submodule" uses since v2.7.0 to list the modules that match the pathspec argument given to its subcommands (e.g. "submodule add <repo> <path>") has been fixed. * sb/submodule-module-list-fix: submodule helper list: respect correct path prefix
2016-03-10Merge branch 'jk/grep-binary-workaround-in-test' into maintLibravatar Junio C Hamano2-13/+17
Recent versions of GNU grep are pickier when their input contains arbitrary binary data, which some of our tests uses. Rewrite the tests to sidestep the problem. * jk/grep-binary-workaround-in-test: t9200: avoid grep on non-ASCII data t8005: avoid grep on non-ASCII data
2016-03-10Merge branch 'mm/push-simple-doc' into maintLibravatar Junio C Hamano1-0/+7
The documentation did not clearly state that the 'simple' mode is now the default for "git push" when push.default configuration is not set. * mm/push-simple-doc: Documentation/git-push: document that 'simple' is the default