https://github.com/git/git

sort by:
Revision Author Date Message Commit Date
bb85775 Git 2.3.3 Signed-off-by: Junio C Hamano <gitster@pobox.com> 14 March 2015, 05:57:25 UTC
4b23b5d Merge branch 'mr/doc-clean-f-f' into maint Documentation update. * mr/doc-clean-f-f: Documentation/git-clean.txt: document that -f may need to be given twice 14 March 2015, 05:56:12 UTC
113bc16 Merge branch 'ak/t5516-typofix' into maint * ak/t5516-typofix: t5516: correct misspelled pushInsteadOf 14 March 2015, 05:56:11 UTC
bb8f6de Merge branch 'jc/diff-test-updates' into maint Test clean-up. * jc/diff-test-updates: test_ln_s_add: refresh stat info of fake symbolic links t4008: modernise style t/diff-lib: check exact object names in compare_diff_raw tests: do not borrow from COPYING and README from the real source t4010: correct expected object names t9300: correct expected object names t4008: correct stale comments 14 March 2015, 05:56:10 UTC
3aab60b Merge branch 'jk/diffcore-rename-duplicate' into maint A corrupt input to "git diff -M" can cause us to segfault. * jk/diffcore-rename-duplicate: diffcore-rename: avoid processing duplicate destinations diffcore-rename: split locate_rename_dst into two functions 14 March 2015, 05:56:08 UTC
ae8ada4 Merge branch 'bw/kwset-use-unsigned' into maint The borrowed code in kwset API did not follow our usual convention to use "unsigned char" to store values that range from 0-255. * bw/kwset-use-unsigned: kwset: use unsigned char to store values with high-bit set 14 March 2015, 05:56:07 UTC
2408f3b Merge branch 'nd/grep-exclude-standard-help-fix' into maint Description given by "grep -h" for its --exclude-standard option was phrased poorly. * nd/grep-exclude-standard-help-fix: grep: correct help string for --exclude-standard 14 March 2015, 05:56:06 UTC
3af1bca Merge branch 'mg/doc-remote-tags-or-not' into maint "git remote add" mentioned "--tags" and "--no-tags" and was not clear that fetch from the remote in the future will use the default behaviour when neither is given to override it. * mg/doc-remote-tags-or-not: git-remote.txt: describe behavior without --tags and --no-tags 14 March 2015, 05:56:05 UTC
a4b4f9b Merge branch 'mk/diff-shortstat-dirstat-fix' into maint "git diff --shortstat --dirstat=changes" showed a dirstat based on lines that was never asked by the end user in addition to the dirstat that the user asked for. * mk/diff-shortstat-dirstat-fix: diff --shortstat --dirstat: remove duplicate output 14 March 2015, 05:56:04 UTC
30a52c1 Merge branch 'ms/submodule-update-config-doc' into maint The interaction between "git submodule update" and the submodule.*.update configuration was not clearly documented. * ms/submodule-update-config-doc: submodule: improve documentation of update subcommand 14 March 2015, 05:56:03 UTC
5244a31 Merge branch 'jc/apply-beyond-symlink' into maint "git apply" was not very careful about reading from, removing, updating and creating paths outside the working tree (under --index/--cached) or the current directory (when used as a replacement for GNU patch). * jc/apply-beyond-symlink: apply: do not touch a file beyond a symbolic link apply: do not read from beyond a symbolic link apply: do not read from the filesystem under --index apply: reject input that touches outside the working area 14 March 2015, 05:56:02 UTC
1469d99 Merge branch 'rs/daemon-interpolate' into maint "git daemon" looked up the hostname even when "%CH" and "%IP" interpolations are not requested, which was unnecessary. * rs/daemon-interpolate: daemon: use callback to build interpolated path daemon: look up client-supplied hostname lazily 14 March 2015, 05:56:01 UTC
c722ba4 Merge branch 'jk/daemon-interpolate' into maint The "interpolated-path" option of "git daemon" inserted any string client declared on the "host=" capability request without checking. Sanitize and limit %H and %CH to a saner and a valid DNS name. * jk/daemon-interpolate: daemon: sanitize incoming virtual hostname t5570: test git-daemon's --interpolated-path option git_connect: let user override virtual-host we send to daemon 14 March 2015, 05:55:59 UTC
1165ae6 Git 2.3.2 Signed-off-by: Junio C Hamano <gitster@pobox.com> 06 March 2015, 22:58:14 UTC
f69f5f1 Merge branch 'rj/no-xopen-source-for-cygwin' into maint Code cleanups. * rj/no-xopen-source-for-cygwin: git-compat-util.h: remove redundant code 06 March 2015, 22:57:58 UTC
f56a5f4 Merge branch 'rs/simple-cleanups' into maint Code cleanups. * rs/simple-cleanups: sha1_name: use strlcpy() to copy strings pretty: use starts_with() to check for a prefix for-each-ref: use skip_prefix() to avoid duplicate string comparison connect: use strcmp() for string comparison 06 March 2015, 22:57:57 UTC
d86679f Merge branch 'mm/am-c-doc' into maint The configuration variable 'mailinfo.scissors' was hard to discover in the documentation. * mm/am-c-doc: Documentation/git-am.txt: mention mailinfo.scissors config variable Documentation/config.txt: document mailinfo.scissors 06 March 2015, 22:57:56 UTC
2e7ca27 Merge branch 'ew/svn-maint-fixes' into maint Correct a breakage to git-svn around v2.2 era that triggers premature closing of FileHandle. * ew/svn-maint-fixes: Git::SVN::*: avoid premature FileHandle closure git-svn: fix localtime=true on non-glibc environments 06 March 2015, 22:57:55 UTC
e1db59e Merge branch 'km/send-email-getopt-long-workarounds' into maint Even though we officially haven't dropped Perl 5.8 support, the Getopt::Long package that came with it does not support "--no-" prefix to negate a boolean option; manually add support to help people with older Getopt::Long package. * km/send-email-getopt-long-workarounds: git-send-email.perl: support no- prefix with older GetOptions 06 March 2015, 22:57:54 UTC
3ebda3e Prepare for 2.3.2 05 March 2015, 21:15:53 UTC
1e299f5 Merge branch 'sb/plug-leak-in-make-cache-entry' into maint "update-index --refresh" used to leak when an entry cannot be refreshed for whatever reason. * sb/plug-leak-in-make-cache-entry: read-cache.c: free cache entry when refreshing fails 05 March 2015, 21:13:14 UTC
4e0d620 Merge branch 'jk/fast-import-die-nicely-fix' into maint "git fast-import" used to crash when it could not close and conclude the resulting packfile cleanly. * jk/fast-import-die-nicely-fix: fast-import: avoid running end_packfile recursively 05 March 2015, 21:13:13 UTC
007f7f6 Merge branch 'es/blame-commit-info-fix' into maint "git blame" died, trying to free an uninitialized piece of memory. * es/blame-commit-info-fix: builtin/blame: destroy initialized commit_info only 05 March 2015, 21:13:12 UTC
3336757 Merge branch 'ab/merge-file-prefix' into maint "git merge-file" did not work correctly in a subdirectory. * ab/merge-file-prefix: merge-file: correctly open files when in a subdir 05 March 2015, 21:13:11 UTC
3630be2 Merge branch 'ps/submodule-sanitize-path-upon-add' into maint "git submodule add" failed to squash "path/to/././submodule" to "path/to/submodule". * ps/submodule-sanitize-path-upon-add: git-submodule.sh: fix '/././' path normalization 05 March 2015, 21:13:10 UTC
cbc8d6d Merge branch 'jk/prune-mtime' into maint In v2.2.0, we broke "git prune" that runs in a repository that borrows from an alternate object store. * jk/prune-mtime: sha1_file: fix iterating loose alternate objects for_each_loose_file_in_objdir: take an optional strbuf path 05 March 2015, 21:13:08 UTC
f5a191d Merge branch 'tc/curl-vernum-output-broken-in-7.11' into maint Certain older vintages of cURL give irregular output from "curl-config --vernum", which confused our build system. * tc/curl-vernum-output-broken-in-7.11: Makefile: handle broken curl version number in version check 05 March 2015, 21:13:07 UTC
e591339 Merge branch 'es/squelch-openssl-warnings-on-macosx' into maint An earlier workaround to squelch unhelpful deprecation warnings from the complier on Mac OSX unnecessarily set minimum required version of the OS, which the user might want to raise (or lower) for other reasons. * es/squelch-openssl-warnings-on-macosx: git-compat-util: do not step on MAC_OS_X_VERSION_MIN_REQUIRED 05 March 2015, 21:13:07 UTC
c11c154 Merge branch 'jc/conf-var-doc' into maint Longstanding configuration variable naming rules has been added to the documentation. * jc/conf-var-doc: CodingGuidelines: describe naming rules for configuration variables config.txt: mark deprecated variables more prominently config.txt: clarify that add.ignore-errors is deprecated 05 March 2015, 21:13:05 UTC
518d1c3 Merge branch 'av/wincred-with-at-in-username-fix' into maint The credential helper for Windows (in contrib/) used to mishandle a user name with an at-sign in it. * av/wincred-with-at-in-username-fix: wincred: fix get credential if username has "@" 05 March 2015, 21:13:04 UTC
ab09f58 Merge branch 'ch/new-gpg-drops-rfc-1991' into maint Older GnuPG implementations may not correctly import the keyring material we prepare for the tests to use. * ch/new-gpg-drops-rfc-1991: t/lib-gpg: sanity-check that we can actually sign t/lib-gpg: include separate public keys in keyring.gpg 05 March 2015, 21:13:04 UTC
069dea8 Merge branch 'jc/remote-set-url-doc' into maint Clarify in the documentation that "remote.<nick>.pushURL" and "remote.<nick>.URL" are there to name the same repository accessed via different transports, not two separate repositories. * jc/remote-set-url-doc: Documentation/git-remote.txt: stress that set-url is not for triangular 05 March 2015, 21:13:03 UTC
abfed73 Merge branch 'jk/pack-bitmap' into maint The pack bitmap support did not build with older versions of GCC. * jk/pack-bitmap: ewah: fix building with gcc < 3.4.0 05 March 2015, 21:13:02 UTC
2250406 Merge branch 'jk/config-no-ungetc-eof' into maint Reading configuration from a blob object, when it ends with a lone CR, use to confuse the configuration parser. * jk/config-no-ungetc-eof: config_buf_ungetc: warn when pushing back a random character config: do not ungetc EOF 05 March 2015, 21:13:00 UTC
3bef3c1 Merge branch 'jk/decimal-width-for-uintmax' into maint We didn't format an integer that wouldn't fit in "int" but in "uintmax_t" correctly. * jk/decimal-width-for-uintmax: decimal_width: avoid integer overflow 05 March 2015, 21:12:59 UTC
b1cffbf Merge branch 'jc/push-cert' into maint "git push --signed" gave an incorrectly worded error message when the other side did not support the capability. * jc/push-cert: transport-helper: fix typo in error message when --signed is not supported 05 March 2015, 21:12:58 UTC
6db0497 Merge branch 'mh/deref-symref-over-helper-transport' into maint "git fetch" over a remote-helper that cannot respond to "list" command could not fetch from a symbolic reference e.g. HEAD. * mh/deref-symref-over-helper-transport: transport-helper: do not request symbolic refs to remote helpers 05 March 2015, 21:12:57 UTC
aaa90f5 Merge branch 'ks/rebase-i-abbrev' into maint The insn sheet "git rebase -i" creates did not fully honor core.abbrev settings. * ks/rebase-i-abbrev: rebase -i: use full object name internally throughout the script 05 March 2015, 21:12:56 UTC
be2804c Merge branch 'dp/remove-duplicated-header-inclusion' into maint Code clean-up. * dp/remove-duplicated-header-inclusion: do not include the same header twice 05 March 2015, 21:12:55 UTC
552f699 Merge branch 'sb/hex-object-name-is-at-most-41-bytes-long' into maint Code clean-up. * sb/hex-object-name-is-at-most-41-bytes-long: hex.c: reduce memory footprint of sha1_to_hex static buffers 05 March 2015, 21:12:55 UTC
a628d50 Merge branch 'ak/git-pm-typofix' into maint Typofix in comments. * ak/git-pm-typofix: Git.pm: two minor typo fixes 05 March 2015, 21:12:53 UTC
8fd37b3 Merge branch 'jk/sanity' into maint The tests that wanted to see that file becomes unreadable after running "chmod a-r file", and the tests that wanted to make sure it is not run as root, we used "can we write into the / directory?" as a cheap substitute, but on some platforms that is not a good heuristics. The tests and their prerequisites have been updated to check what they really require. * jk/sanity: test-lib.sh: set prerequisite SANITY by testing what we really need tests: correct misuses of POSIXPERM t/lib-httpd: switch SANITY check for NOT_ROOT 05 March 2015, 21:12:52 UTC
eb32c66 t5516: correct misspelled pushInsteadOf A future breakage to "git push" to make it incorrectly pay attention to pushInsteadOf when it should not will be left uncaught without this change. Signed-off-by: Anders Kaseorg <andersk@mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com> 03 March 2015, 20:07:18 UTC
5c31acf submodule: improve documentation of update subcommand The documentation of 'git submodule update' has several problems: 1) It mentions that value 'none' of submodule.$name.update can be overridden by --checkout, but other combinations of configuration values and command line options are not mentioned. 2) The documentation of submodule.$name.update is scattered across three places, which is confusing. 3) The documentation of submodule.$name.update in gitmodules.txt is incorrect, because the code always uses the value from .git/config and never from .gitmodules. 4) Documentation of --force was incomplete, because it is only effective in case of checkout method of update. Fix all these problems by documenting submodule.*.update in git-submodule.txt and make everybody else refer to it. Helped-by: Junio C Hamano <gitster@pobox.com> Helped-by: Jens Lehmann <Jens.Lehmann@web.de> Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz> Signed-off-by: Junio C Hamano <gitster@pobox.com> 02 March 2015, 22:59:55 UTC
aaba0ab git-remote.txt: describe behavior without --tags and --no-tags Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 02 March 2015, 20:48:23 UTC
189c860 kwset: use unsigned char to store values with high-bit set Sun Studio on Solaris issues warnings about improper initialization values being used when defining tolower_trans_tbl[] in ctype.c. The array wants to store values with high-bit set and treat them as values between 128 to 255. Unlike the rest of the Git codebase where we explicitly specify 'unsigned char' for such variables and arrays, however, kwset code we borrowed from elsewhere uses 'char' for this and other variables. Fix the declarations to explicitly use 'unsigned char' where necessary to bring it in line with the rest of the Git. Signed-off-by: Ben Walton <bdwalton@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 02 March 2015, 20:32:24 UTC
ab27389 diff --shortstat --dirstat: remove duplicate output When --shortstat is used in conjunction with --dirstat=changes, git diff will output the dirstat information twice: first as calculated by the 'lines' algorithm, then as calculated by the 'changes' algorithm: $ git diff --dirstat=changes,10 --shortstat v2.2.0..v2.2.1 23 files changed, 453 insertions(+), 54 deletions(-) 33.5% Documentation/RelNotes/ 26.2% t/ 46.6% Documentation/RelNotes/ 16.6% t/ The same duplication happens for --shortstat together with --dirstat=files, but not for --shortstat together with --dirstat=lines. Limit output to only include one dirstat part, calculated as specified by the --dirstat parameter. Also, add test for this. Signed-off-by: Mårten Kongstad <marten.kongstad@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 02 March 2015, 19:31:27 UTC
4d6be03 diffcore-rename: avoid processing duplicate destinations The rename code cannot handle an input where we have duplicate destinations (i.e., more than one diff_filepair in the queue with the same string in its pair->two->path). We end up allocating only one slot in the rename_dst mapping. If we fill in the diff_filepair for that slot, when we re-queue the results, we may queue that filepair multiple times. When the diff is finally flushed, the filepair is processed and free()d multiple times, leading to heap corruption. This situation should only happen when a tree diff sees duplicates in one of the trees (see the added test for a detailed example). Rather than handle it, the sanest thing is just to turn off rename detection altogether for the diff. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 27 February 2015, 21:41:29 UTC
f98c2f7 diffcore-rename: split locate_rename_dst into two functions This function manages the mapping of destination pathnames to filepairs, and it handles both insertion and lookup. This makes the return value a bit confusing, as we return a newly created entry (even though no caller cares), and have no room to indicate to the caller that an entry already existed. Instead, let's break this up into two distinct functions, both backed by a common binary search. The binary search will use our normal "return the index if we found something, or negative index minus one to show where it would have gone" semantics. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 27 February 2015, 21:41:21 UTC
77fdb8a grep: correct help string for --exclude-standard The current help string is about --no-exclude-standard. But "git grep -h" would show --exclude-standard instead. Flip the string. See 0a93fb8 (grep: teach --untracked and --exclude-standard options - 2011-09-27) for more info about these options. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 27 February 2015, 20:22:41 UTC
e426311 Git::SVN::*: avoid premature FileHandle closure Since b19138b (git-svn: Make it incrementally faster by minimizing temp files, v1.6.0), git-svn has been using the Git.pm temp_acquire and temp_release mechanism to avoid unnecessary temp file churn and provide a speed boost. However, that change introduced a call to temp_acquire inside the Git::SVN::Fetcher::close_file function for an 'svn_hash' temp file. Because an SVN::Pool is active at the time this function is called, if the Git::temp_acquire function ends up actually creating a new FileHandle for the temp file (which it will the first time it's called with the name 'svn_hash') that FileHandle will end up in the SVN::Pool and should that pool have SVN::Pool::clear called on it that FileHandle will be closed out from under Git::temp_acquire. Since the only call site to Git::temp_acquire with the name 'svn_hash' is inside the close_file function, if an 'svn_hash' temp file is ever created its FileHandle is guaranteed to be created in the active SVN::Pool. This has not been a problem in the past because the SVN::Pool was not being cleared. However, since dfa72fdb (git-svn: reload RA every log-window-size, v2.2.0) the pool has been getting cleared periodically at which point the FileHandle for the 'svn_hash' temp file gets closed. Any subsequent calls to Git::temp_acquire for 'svn_hash', however, succeed without creating/opening a new temporary file since it still has the now invalid FileHandle in its cache. Callers that then attempt to use that FileHandle fail with an error. We avoid this problem by making sure the 'svn_hash' temp file is created in the same place the 'svn_delta_...' and 'git_blob_...' temp files are (and then temp_release'd) so that it can be safely used inside the close_file function without having its FileHandle end up in an SVN::Pool that gets cleared. Additionally the Git.pm cat_blob function creates a bidirectional pipe FileHandle using the IPC::Open2::open2 function. If that handle is created too late, it also gets caught up in the SVN::Pool and incorrectly closed by the SVN::Pool::clear call. But this only seems to happen with more recent versions of Perl and svn. To avoid this problem we add an explicit call to _open_cat_blob_if_needed before the first call to SVN::Pool->new_default to make sure the open2 handle does not end up in the SVN::Pool. Signed-off-by: Kyle J. McKay <mackyle@gmail.com> Signed-off-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 26 February 2015, 22:02:34 UTC
45c956b git-svn: fix localtime=true on non-glibc environments git svn uses POSIX::strftime('%s', $sec, $min, ...) to make unix epoch time. But lowercase %s formatting character is a GNU extention. This causes problem in git svn fetch --localtime on non-glibc systems, such as msys or cygwin. Using Time::Local::timelocal($sec, $min, ...) fixes it. Signed-off-by: Ryuichi Kokubo <ryu1kkb@gmail.com> Signed-off-by: Eric Wong <normalperson@yhbt.net> Notes: lowercase %s format character in strftime is a GNU extension and not widely supported. POSIX::strftime affected by underlying crt's strftime because POSIX::strftime just calls crt's one. Time::Local is good function to replace POSIX::strftime because it's a perl core module function. Document about Time::Local. http://perldoc.perl.org/Time/Local.html These are specifications of strftime. The GNU C Library Reference Manual. http://www.gnu.org/software/libc/manual/html_node/Formatting-Calendar-Time.html perl POSIX module's strftime document. It does not have '%s'. http://perldoc.perl.org/POSIX.html strftime document of Microsort Windows C Run-Time library. https://msdn.microsoft.com/en-us/library/fe06s4ak.aspx The Open Group's old specification does not have '%s' too. http://pubs.opengroup.org/onlinepubs/007908799/xsh/strftime.html On my environment, following problems happened. - msys : git svn fetch does not progress at all with perl.exe consuming CPU. - cygwin : git svn fetch progresses but time stamp information is dropped. Every commits have unix epoch timestamp. I would like to thank git developer and contibutors. git helps me so much everyday. Thank you. Signed-off-by: Junio C Hamano <gitster@pobox.com> 26 February 2015, 22:02:34 UTC
bcd57cb Documentation/git-clean.txt: document that -f may need to be given twice This is needed in build automation where the tree really needs to be reset to known state. Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi> Signed-off-by: Junio C Hamano <gitster@pobox.com> 26 February 2015, 21:10:40 UTC
8004647 Git 2.3.1 Signed-off-by: Junio C Hamano <gitster@pobox.com> 25 February 2015, 06:14:42 UTC
7bc4c01 Merge branch 'ak/add-i-empty-candidates' into maint The interactive "show a list and let the user choose from it" interface "add -i" used showed and prompted to the user even when the candidate list was empty, against which the only "choice" the user could have made was to choose nothing. * ak/add-i-empty-candidates: add -i: return from list_and_choose if there is no candidate 25 February 2015, 06:10:42 UTC
2764442 Merge branch 'jc/apply-ws-fix-expands' into maint "git apply --whitespace=fix" used to under-allocate the memory when the fix resulted in a longer text than the original patch. * jc/apply-ws-fix-expands: apply: count the size of postimage correctly apply: make update_pre_post_images() sanity check the given postlen apply.c: typofix 25 February 2015, 06:10:41 UTC
254a3eb Merge branch 'jc/doc-log-rev-list-options' into maint "git log --help" used to show rev-list options that are irrelevant to the "log" command. * jc/doc-log-rev-list-options: Documentation: what does "git log --indexed-objects" even mean? 25 February 2015, 06:10:40 UTC
7070c03 Merge branch 'mg/commit-author-no-match-malformed-message' into maint The error message from "git commit", when a non-existing author name was given as value to the "--author=" parameter, has been reworded to avoid misunderstanding. * mg/commit-author-no-match-malformed-message: commit: reword --author error message 25 February 2015, 06:10:38 UTC
117c1b3 Merge branch 'jk/dumb-http-idx-fetch-fix' into maint A broken pack .idx file in the receiving repository prevented the dumb http transport from fetching a good copy of it from the other side. * jk/dumb-http-idx-fetch-fix: dumb-http: do not pass NULL path to parse_pack_index 25 February 2015, 06:10:37 UTC
9f8410b Merge branch 'jc/diff-format-doc' into maint The documentation incorrectly said that C(opy) and R(ename) are the only ones that can be followed by the score number in the output in the --raw format. * jc/diff-format-doc: diff-format doc: a score can follow M for rewrite 25 February 2015, 06:10:36 UTC
b9efce1 Merge branch 'jk/remote-curl-an-array-in-struct-cannot-be-null' into maint Fix a misspelled conditional that is always true. * jk/remote-curl-an-array-in-struct-cannot-be-null: do not check truth value of flex arrays 25 February 2015, 06:10:35 UTC
93baadb Merge branch 'jk/status-read-branch-name-fix' into maint Code to read branch name from various files in .git/ directory would have misbehaved if the code to write them left an empty file. * jk/status-read-branch-name-fix: read_and_strip_branch: fix typo'd address-of operator 25 February 2015, 06:10:22 UTC
2fc85f0 Merge branch 'mg/push-repo-option-doc' into maint The "git push" documentation made the "--repo=<there>" option easily misunderstood. * mg/push-repo-option-doc: git-push.txt: document the behavior of --repo 25 February 2015, 06:10:19 UTC
8f3d03d Merge branch 'bc/http-fallback-to-password-after-krb-fails' into maint After attempting and failing a password-less authentication (e.g. kerberos), libcURL refuses to fall back to password based Basic authentication without a bit of help/encouragement. * bc/http-fallback-to-password-after-krb-fails: remote-curl: fall back to Basic auth if Negotiate fails 25 February 2015, 06:10:17 UTC
6606129 Merge branch 'dk/format-patch-ignore-diff-submodule' into maint Setting diff.submodule to 'log' made "git format-patch" produce broken patches. * dk/format-patch-ignore-diff-submodule: format-patch: ignore diff.submodule setting t4255: test am submodule with diff.submodule 25 February 2015, 06:10:15 UTC
74419c2 Merge branch 'jn/rerere-fail-on-auto-update-failure' into maint "git rerere" (invoked internally from many mergy operations) did not correctly signal errors when told to update the working tree files and failed to do so for whatever reason. * jn/rerere-fail-on-auto-update-failure: rerere: error out on autoupdate failure 25 February 2015, 06:10:13 UTC
faf723a Merge branch 'jk/blame-commit-label' into maint "git blame HEAD -- missing" failed to correctly say "HEAD" when it tried to say "No such path 'missing' in HEAD". * jk/blame-commit-label: blame.c: fix garbled error message use xstrdup_or_null to replace ternary conditionals builtin/commit.c: use xstrdup_or_null instead of envdup builtin/apply.c: use xstrdup_or_null instead of null_strdup git-compat-util: add xstrdup_or_null helper 25 February 2015, 06:09:54 UTC
817d03e test_ln_s_add: refresh stat info of fake symbolic links We have a helper function test_ln_s_add that inserts a symbolic link into the index even if the file system does not support symbolic links. There is a small flaw in the emulation path: the added entry does not pick up stat information of the fake symbolic link from the file system, as a consequence, the index is not exactly the same as for the "regular" path (where symbolic links are available). To fix this, just call git update-index again. This flaw was revealed by the earlier change that tightened compare_diff_raw(), because a test case in t4008 depends on the correctly updated index. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com> 23 February 2015, 19:45:39 UTC
33baa69 git-compat-util.h: remove redundant code Since commit 3a0a3a89 ("git-compat-util.h: don't define _XOPEN_SOURCE on cygwin", 23-11-2014) removed the definition of _XOPEN_SOURCE on cygwin, the code within a pre-processor conditional further down the file became redundant. Remove the redundant code. This effectively reverts commit 41b20017 ("Fix an "implicit function definition" warning", 03-03-2007). Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com> 23 February 2015, 02:56:23 UTC
2ce63e9 sha1_name: use strlcpy() to copy strings Use strlcpy() instead of calling strncpy() and then setting the last byte of the target buffer to NUL explicitly. This shortens and simplifies the code a bit. Signed-of-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 22 February 2015, 20:01:38 UTC
68d6d6e pretty: use starts_with() to check for a prefix Simplify the code and avoid duplication by using starts_with() instead of strlen() and strncmp() to check if a line starts with "encoding ". Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 22 February 2015, 20:01:37 UTC
008d5d0 for-each-ref: use skip_prefix() to avoid duplicate string comparison Use skip_prefix() to get the part after "color:" (if present) and only compare it with "reset" instead of comparing the whole string again. This gets rid of the duplicate "color:" part of the string constant. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 22 February 2015, 20:01:37 UTC
2ae7f90 connect: use strcmp() for string comparison Get rid of magic string length constants and simply compare the strings using strcmp(). This makes the intent of the code a bit clearer. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 22 February 2015, 20:01:37 UTC
afb5de7 Documentation/git-am.txt: mention mailinfo.scissors config variable It was already documented, but the user had to follow the link to git-mailinfo.txt to find it. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com> 20 February 2015, 23:09:23 UTC
d5c4b18 Documentation/config.txt: document mailinfo.scissors The variable was documented in git-mailinfo.txt, but not in config.txt. The detailed documentation is still the one of --scissors in git-mailinfo.txt, but we give enough information here to let the user understand what it is about, and to make it easy to find it (e.g. searching ">8" and "8<" finds it). Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com> 20 February 2015, 23:07:19 UTC
ef2956a Git.pm: two minor typo fixes Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 18 February 2015, 20:29:00 UTC
dc8edc8 daemon: use callback to build interpolated path Provide a callback function for strbuf_expand() instead of using the helper strbuf_expand_dict_cb(). While the resulting code is longer, it only looks up the canonical hostname and IP address if at least one of the placeholders %CH and %IP are used with --interpolated-path. Use a struct for passing the directory to the callback function instead of passing it directly to avoid having to cast away its const qualifier. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 17 February 2015, 21:40:49 UTC
edef953 daemon: look up client-supplied hostname lazily Look up canonical hostname and IP address using getaddrinfo(3) or gethostbyname(3) only if --interpolated-path or --access-hook were specified. Do that by introducing getter functions for canon_hostname and ip_address and using them for all read accesses. These wrappers call the new helper lookup_hostname(), which sets the variables only at its first call. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 17 February 2015, 21:40:36 UTC
b485373 daemon: sanitize incoming virtual hostname We use the daemon_avoid_alias function to make sure that the pathname the user gives us is sane. However, after applying that check, we might then interpolate the path using a string given by the server admin, but which may contain more untrusted data from the client. We should be sure to sanitize this data, as well. We cannot use daemon_avoid_alias here, as it is more strict than we need in requiring a leading '/'. At the same time, we can be much more strict here. We are interpreting a hostname, which should not contain slashes or excessive runs of dots, as those things are not allowed in DNS names. Note that in addition to cleansing the hostname field, we must check the "canonical hostname" (%CH) as well as the port (%P), which we take as a raw string. For the canonical hostname, this comes from an actual DNS lookup on the accessed IP, which makes it a much less likely vector for problems. But it does not hurt to sanitize it in the same way. Unfortunately we cannot test this case easily, as it would involve a custom hostname lookup. We do not need to check %IP, as it comes straight from inet_ntop, so must have a sane form. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 17 February 2015, 21:15:30 UTC
5248f2d t5570: test git-daemon's --interpolated-path option We did not test this at all; let's just give a basic sanity check that we can find a path based on virtual hosting, and that the downcase canonicalization works. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 17 February 2015, 21:15:07 UTC
94bc83c git_connect: let user override virtual-host we send to daemon When we connect to a git-daemon at a given host and port, we actually send the string "localhost:9418" to the other side, which allows it to do virtual-hosting lookups. For testing and debugging, we'd like to be able to send arbitrary strings, rather than the hostname we actually connected to. Using "insteadOf" config does not work for this purpose, as the hostname determination happens at a very low level, right before we feed the hostname to our lookup routines. You could use /etc/hosts or similar to get around this, but we cannot do that portably from our test suite. Instead, this patch provides an environment variable that can be used to send an arbitrary string. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 17 February 2015, 21:15:07 UTC
bc1c2ca read-cache.c: free cache entry when refreshing fails This fixes a memory leak when building the cache entries as refresh_cache_entry may decide to return NULL, but it does not free the cache entry structure which was passed in as an argument. Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 17 February 2015, 18:42:43 UTC
f471494 git-send-email.perl: support no- prefix with older GetOptions Only Perl version 5.8.0 or later is required, but that comes with an older Getopt::Long (2.32) that does not support the 'no-' prefix. Support for that was added in Getopt::Long version 2.33. Since the help only mentions the 'no-' prefix and not the 'no' prefix, add explicit support for the 'no-' prefix to support older GetOptions versions. Reported-by: Tom G. Christensen <tgc@statsbiblioteket.dk> Signed-off-by: Kyle J. McKay <mackyle@gmail.com> Tested-by: Tom G. Christensen <tgc@statsbiblioteket.dk> Signed-off-by: Junio C Hamano <gitster@pobox.com> 16 February 2015, 21:26:51 UTC
f400e51 test-lib.sh: set prerequisite SANITY by testing what we really need What we wanted out of the SANITY precondition is that the filesystem behaves sensibly with permission bits settings. - You should not be able to remove a file in a read-only directory, - You should not be able to tell if a file in a directory exists if the directory lacks read or execute permission bits. We used to cheat by approximating that condition with "is the / writable?" test and/or "are we running as root?" test. Neither test is sufficient or appropriate in environments like Cygwin. Signed-off-by: Torsten Bögershausen <tboegi@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> 15 February 2015, 23:48:38 UTC
db7b9e3 t4008: modernise style Update this ancient test script to a more modern style in which the expected result is prepared inside the body of the test that uses it. Also, instead of using $tree, a shell variable, throughout the test script, create a tag that points at it, to make it easier to manually debug the test script in its trash directory. Signed-off-by: Junio C Hamano <gitster@pobox.com> 15 February 2015, 23:38:16 UTC
bd9150b t/diff-lib: check exact object names in compare_diff_raw The "sanitize" helper wanted to strip the similarity and dissimilarity scores when making comparison, but it was stripping away the object names as well. While we do not want to require the exact object names the tests expect to be maintained, as it would be seen as an extra burden, this would have prevented us catching a silly bug such as showing non 0{40} object name on the preimage side of an addition or on the postimage side of a deletion, because all [0-9a-f]{40} strings were considered equally OK. In the longer term, when a test only wants to see the status of the change without having to worry about object names, it should be rewritten not to inspect the raw format. Signed-off-by: Junio C Hamano <gitster@pobox.com> 15 February 2015, 23:38:16 UTC
459b8d2 tests: do not borrow from COPYING and README from the real source These two files have been modified since the tests started using as test input, making the exact object names they expect to be different from what actually happens in the trash repository they use to run tests. Instead, take a snapshot of these two files and keep them in t/diff-lib/ so that we can update the real ones without having to worry about breaking tests. Signed-off-by: Junio C Hamano <gitster@pobox.com> 15 February 2015, 23:38:10 UTC
bb8db1b t4010: correct expected object names The output the test expects is bogus. It was left unnoticed only because compare_diff_raw, which only cares about the add/delete/rename/copy was used to check the result. Signed-off-by: Junio C Hamano <gitster@pobox.com> 15 February 2015, 23:38:10 UTC
2c0ab4d t9300: correct expected object names The output the test #36 expects is bogus. There are no blob objects whose names are 36a590... or 046d037... when this test was run. It was left unnoticed only because compare_diff_raw, which only cares about the add/delete/rename/copy was used to check the result. Signed-off-by: Junio C Hamano <gitster@pobox.com> 15 February 2015, 23:38:09 UTC
f2b4f0a t4008: correct stale comments A complete rewrite of a single file was originally designed to be expressed as a deletion immediately followed by a creation of the same file, and the comments in the test updated here were written to reflect that design decision made in f345b0a0 (Add -B flag to diff-* brothers., 2005-05-30). However, we later realized that a complete rewrite is merely how a textual diff should be represented at 366175ef (Rework -B output., 2005-06-19), and updated the actual tests. But we forgot to update the introductory text while doing so. Signed-off-by: Junio C Hamano <gitster@pobox.com> 15 February 2015, 23:38:09 UTC
0b868f0 hex.c: reduce memory footprint of sha1_to_hex static buffers 41 bytes is the exact number of bytes needed for having the returned hex string represented. 50 seems to be an arbitrary number, such that there are no benefits from alignment to certain address boundaries. Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 13 February 2015, 21:42:17 UTC
5d30851 do not include the same header twice A few files include the same header file directly more than once. As all these headers protect themselves against repeated inclusion by the "#ifndef FOO_H / #define FOO_H / ... / #endif" idiom, leave only the first inclusion and remove the later inclusion as a no-op clean-up. Signed-off-by: Дилян Палаузов <git-dpa@aegee.org> Signed-off-by: Junio C Hamano <gitster@pobox.com> 13 February 2015, 21:16:12 UTC
45917f0 transport-helper: fix typo in error message when --signed is not supported Signed-off-by: Mike Hommey <mh@glandium.org> Signed-off-by: Junio C Hamano <gitster@pobox.com> 12 February 2015, 20:31:28 UTC
204a8ff merge-file: correctly open files when in a subdir run_setup_gently() is called before merge-file. This may result in changing current working directory, which wasn't taken into account when opening a file for writing. Fix by prepending the passed prefix. Previous var is left so that error messages keep referring to the file from the user's working directory perspective. Signed-off-by: Aleksander Boruch-Gruszecki <aleksander.boruchgruszecki@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 11 February 2015, 19:01:50 UTC
e0d201b apply: do not touch a file beyond a symbolic link Because Git tracks symbolic links as symbolic links, a path that has a symbolic link in its leading part (e.g. path/to/dir/file, where path/to/dir is a symbolic link to somewhere else, be it inside or outside the working tree) can never appear in a patch that validly applies, unless the same patch first removes the symbolic link to allow a directory to be created there. Detect and reject such a patch. Things to note: - Unfortunately, we cannot reuse the has_symlink_leading_path() from dir.c, as that is only about the working tree, but "git apply" can be told to apply the patch only to the index or to both the index and to the working tree. - We cannot directly use has_symlink_leading_path() even when we are applying only to the working tree, as an early patch of a valid input may remove a symbolic link path/to/dir and then a later patch of the input may create a path path/to/dir/file, but "git apply" first checks the input without touching either the index or the working tree. The leading symbolic link check must be done on the interim result we compute in-core (i.e. after the first patch, there is no path/to/dir symbolic link and it is perfectly valid to create path/to/dir/file). Similarly, when an input creates a symbolic link path/to/dir and then creates a file path/to/dir/file, we need to flag it as an error without actually creating path/to/dir symbolic link in the filesystem. Instead, for any patch in the input that leaves a path (i.e. a non deletion) in the result, we check all leading paths against the resulting tree that the patch would create by inspecting all the patches in the input and then the target of patch application (either the index or the working tree). This way, we catch a mischief or a mistake to add a symbolic link path/to/dir and a file path/to/dir/file at the same time, while allowing a valid patch that removes a symbolic link path/to/dir and then adds a file path/to/dir/file. Signed-off-by: Junio C Hamano <gitster@pobox.com> 10 February 2015, 22:19:48 UTC
fdc2c3a apply: do not read from beyond a symbolic link We should reject a patch, whether it renames/copies dir/file to elsewhere with or without modificiation, or updates dir/file in place, if "dir/" part is actually a symbolic link to elsewhere, by making sure that the code to read the preimage does not read from a path that is beyond a symbolic link. Signed-off-by: Junio C Hamano <gitster@pobox.com> 10 February 2015, 21:41:39 UTC
3c37a2e apply: do not read from the filesystem under --index We currently read the preimage to apply a patch from the index only when the --cached option is given. Do so also when the command is running under the --index option. With --index, the index entry and the working tree file for a path that is involved in a patch must be identical, so this should not affect the result, but by reading from the index, we will get the protection to avoid reading an unintended path beyond a symbolic link automatically. Signed-off-by: Junio C Hamano <gitster@pobox.com> 10 February 2015, 21:41:16 UTC
c536c07 apply: reject input that touches outside the working area By default, a patch that affects outside the working area (either a Git controlled working tree, or the current working directory when "git apply" is used as a replacement of GNU patch) is rejected as a mistake (or a mischief). Git itself does not create such a patch, unless the user bends over backwards and specifies a non-standard prefix to "git diff" and friends. When `git apply` is used as a "better GNU patch", the user can pass the `--unsafe-paths` option to override this safety check. This option has no effect when `--index` or `--cached` is in use. The new test was stolen from Jeff King with slight enhancements. Note that a few new tests for touching outside the working area by following a symbolic link are still expected to fail at this step, but will be fixed in later steps. Signed-off-by: Junio C Hamano <gitster@pobox.com> 10 February 2015, 21:40:20 UTC
5e915f3 fast-import: avoid running end_packfile recursively When an import has finished, we run end_packfile() to finalize the data and move the packfile into place. If this process fails, we call die() and end up in our die_nicely() handler. Which unfortunately includes running end_packfile to save any progress we made. We enter the function again, and start operating on the pack_data struct while it is in an inconsistent state, leading to a segfault. One way to trigger this is to simply start two identical fast-imports at the same time. They will both create the same packfiles, which will then try to create identically named ".keep" files. One will win the race, and the other will die(), and end up with the segfault. Since 3c078b9, we already reset the pack_data pointer to NULL at the end of end_packfile. That covers the case of us calling die() right after end_packfile, before we have reinitialized the pack_data pointer. This new problem is quite similar, except that we are worried about calling die() _during_ end_packfile, not right after. Ideally we would simply set pack_data to NULL as soon as we enter the function, and operate on a copy of the pointer. Unfortunately, it is not so easy. pack_data is a global, and end_packfile calls into other functions which operate on the global directly. We would have to teach each of these to take an argument, and there is no guarantee that we would catch all of the spots. Instead, we can simply use a static flag to avoid recursively entering the function. This is a little less elegant, but it's short and fool-proof. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> 10 February 2015, 18:35:32 UTC
e600592 builtin/blame: destroy initialized commit_info only Since ea02ffa3 (mailmap: simplify map_user() interface, 2013-01-05), find_alignment() has been invoking commit_info_destroy() on an uninitialized auto 'struct commit_info' (when METAINFO_SHOWN is not set). commit_info_destroy() calls strbuf_release() for each 'commit_info' strbuf member, which randomly invokes free() on whatever random stack value happens to reside in strbuf.buf, thus leading to periodic crashes. Reported-by: Dilyan Palauzov <dilyan.palauzov@aegee.org> Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> 10 February 2015, 18:31:48 UTC
back to top