summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-03-16Git 2.8-rc3v2.8.0-rc3Junio C Hamano
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-16Merge branch 'master' of git://bogomips.org/git-svnJunio C Hamano
* '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 maintJunio C Hamano
* 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'Junio C Hamano
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'Junio C Hamano
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+Eric Wong
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 maintJunio C Hamano
* 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 -TAdam Dinwoodie
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.7Junio C Hamano
* 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.6Junio C Hamano
* 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.5Junio C Hamano
* 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 callbacksJeff King
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 entirelyJeff King
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 strbufJeff King
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()Jeff King
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_pathJeff King
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 allocationJeff King
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 overflowJeff King
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: typofixJunio C Hamano
Helped-by: Max Horn Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-15Merge branch 'svn-glob' of git://bogomips.org/git-svnJunio C Hamano
* '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-poJunio C Hamano
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 3Jiang Xin
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.0Jiang Xin
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-poJiang Xin
* '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 2Jiang Xin
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 messageEric Wong
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 limitationsVictor Leschuk
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 2Jean-Noel Avila
Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
2016-03-14Merge branch 'mg/wt-status-mismarked-i18n'Junio C Hamano
* 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 l10nMichael J Gruber
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-ruJiang Xin
* 'russian-l10n' of https://github.com/DJm00n/git-po-ru: l10n: ru.po: update Russian translation
2016-03-13l10n: ru.po: update Russian translationDimitriy Ryazantcev
Signed-off-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>
2016-03-13l10n: ko: Update Korean translationChangwoo Ryu
Signed-off-by: Changwoo Ryu <cwryu@debian.org>
2016-03-12l10n: git.pot: v2.8.0 round 2 (21 new, 1 removed)Jiang Xin
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-poJiang Xin
* '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 1Jiang Xin
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?" testJunio C Hamano
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 itJunio C Hamano
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-rc2v2.8.0-rc2Junio C Hamano
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-10Sync with 2.7.3Junio C Hamano
2016-03-10Git 2.7.3v2.7.3Junio C Hamano
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-10Merge branch 'ma/update-hooks-sample-typofix' into maintJunio C Hamano
* 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 maintJunio C Hamano
* dt/initial-ref-xn-commit-doc: refs: document transaction semantics
2016-03-10Merge branch 'ps/plug-xdl-merge-leak' into maintJunio C Hamano
* 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 maintJunio C Hamano
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 maintJunio C Hamano
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 maintJunio C Hamano
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 maintJunio C Hamano
"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 maintJunio C Hamano
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 maintJunio C Hamano
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