aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Merge branch 'jx/zh_CN-proposed' of github.com:jiangxin/gitJiang Xin2017-10-24
|\ | | | | | | | | | | * 'jx/zh_CN-proposed' of github.com:jiangxin/git: l10n: zh_CN: review for git v2.15.0 l10n round 2 l10n: zh_CN: for git v2.15.0 l10n round 2
| * l10n: zh_CN: review for git v2.15.0 l10n round 2Ray Chen2017-10-24
| | | | | | | | Signed-off-by: Ray Chen <oldsharp@gmail.com>
| * l10n: zh_CN: for git v2.15.0 l10n round 2Jiang Xin2017-10-24
|/ | | | | | | Translate 69 messages (3245t0f0u) for git v2.15.0-rc2. Signed-off-by: Jiang Xin <worldhello.net@gmail.com> Reviewed-by: 依云 <lilydjwg@gmail.com>
* Merge branch 'master' of https://github.com/ralfth/git-po-deJiang Xin2017-10-24
|\ | | | | | | | | | | * 'master' of https://github.com/ralfth/git-po-de: l10n: de.po: fix typos l10n: de.po: translate 70 new messages
| * l10n: de.po: fix typosAndre Hinrichs2017-10-23
| | | | | | | | | | Signed-off-by: Andre Hinrichs <andre.hinrichs@gmx.de> Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
| * l10n: de.po: translate 70 new messagesRalf Thielow2017-10-23
|/ | | | | | | | Translate 70 new messages came from git.pot update in 25eab542b (l10n: git.pot: v2.15.0 round 1 (68 new, 36 removed)) and 9c07fab78 (l10n: git.pot: v2.15.0 round 2 (2 new, 2 removed)). Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
* l10n: ru.po: update Russian translationDimitriy Ryazantcev2017-10-22
| | | | Signed-off-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>
* Merge branch 'master' of https://github.com/vnwildman/gitJiang Xin2017-10-22
|\ | | | | | | | | * 'master' of https://github.com/vnwildman/git: l10n: vi.po(3245t): Updated Vietnamese translation for v2.15.0 round 2
| * l10n: vi.po(3245t): Updated Vietnamese translation for v2.15.0 round 2Tran Ngoc Quan2017-10-19
| | | | | | | | Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
* | Merge branch 'l10n_fr_v2.15.0r2' of git://github.com/jnavila/gitJiang Xin2017-10-19
|\ \ | | | | | | | | | | | | | | | | | | * 'l10n_fr_v2.15.0r2' of git://github.com/jnavila/git: l10n: fr.po: v2.15.0 round 2 l10n: fr.po change translation of "First, rewinding" l10n: fr.po fix some mistakes
| * | l10n: fr.po: v2.15.0 round 2Jean-Noel Avila2017-10-18
| | | | | | | | | | | | Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
| * | l10n: fr.po change translation of "First, rewinding"Nicolas Cornu2017-10-18
| | | | | | | | | | | | Signed-off-by: Nicolas Cornu <nicolac76@yahoo.fr>
| * | l10n: fr.po fix some mistakesJean-Noel Avila2017-10-18
| |/ | | | | | | | | Reported-by: Christophe Jaillet <christophe.jaillet@wanadoo.fr> Signed-off-by: Jean-Noel Avila <jean-noel.avila@scantech.fr>
* | Merge branch 'master' of git://github.com/nafmo/git-l10n-svJiang Xin2017-10-19
|\ \ | | | | | | | | | | | | * 'master' of git://github.com/nafmo/git-l10n-sv: l10n: sv.po: Update Swedish translation (3245t0f0u)
| * | l10n: sv.po: Update Swedish translation (3245t0f0u)Peter Krefting2017-10-18
| |/ | | | | | | Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
* | Merge branch 'master' of https://github.com/Softcatala/git-poJiang Xin2017-10-19
|\ \ | | | | | | | | | | | | * 'master' of https://github.com/Softcatala/git-po: l10n: Update Catalan translation
| * | l10n: Update Catalan translationJordi Mas2017-10-17
| |/ | | | | | | Signed-off-by: Jordi Mas <jmas@softcatala.org>
* | Merge branch 'translation' of https://github.com/ChrisADR/git-poJiang Xin2017-10-19
|\ \ | | | | | | | | | | | | * 'translation' of https://github.com/ChrisADR/git-po: l10n: es.po: v2.15.0 round 2
| * | l10n: es.po: v2.15.0 round 2Christopher Díaz Riveros2017-10-16
| |/ | | | | | | | | | | Spanish translation for v2.15.0 Signed-off-by: Christopher Díaz Riveros <chrisadr@gentoo.org>
* | l10n: ko.po: Update Korean translationChangwoo Ryu2017-10-17
|/ | | | Signed-off-by: Changwoo Ryu <cwryu@debian.org>
* l10n: git.pot: v2.15.0 round 2 (2 new, 2 removed)Jiang Xin2017-10-17
| | | | | | Generate po/git.pot from v2.15.0-rc1 for git v2.15.0 l10n round 2. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
* Merge branch 'master' of git://github.com/git-l10n/git-poJiang Xin2017-10-17
|\ | | | | | | | | | | | | | | | | | | | | | | * 'master' of git://github.com/git-l10n/git-po: l10n: ru.po: update Russian translation l10n: bg.po: Updated Bulgarian translation (3245t) l10n: sv.po: Update Swedish translation (3245t0f0u) l10n: vi.po(3245t): Updated Vietnamese translation for v2.15.0 l10n: es.po: Update translation v2.15.0 round 1 l10n: git.pot: v2.15.0 round 1 (68 new, 36 removed) l10n: es.po: spanish added to TEAMS l10n: es.po: initial Spanish version git 2.14.0
| * l10n: ru.po: update Russian translationDimitriy Ryazantcev2017-10-15
| | | | | | | | Signed-off-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>
| * Merge branch 'master' of git://github.com/alshopov/git-poJiang Xin2017-10-14
| |\ | | | | | | | | | | | | * 'master' of git://github.com/alshopov/git-po: l10n: bg.po: Updated Bulgarian translation (3245t)
| | * l10n: bg.po: Updated Bulgarian translation (3245t)Alexander Shopov2017-10-14
| | | | | | | | | | | | Signed-off-by: Alexander Shopov <ash@kambanaria.org>
| * | l10n: sv.po: Update Swedish translation (3245t0f0u)Peter Krefting2017-10-11
| |/ | | | | | | Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
| * Merge branch 'master' of https://github.com/vnwildman/gitJiang Xin2017-10-11
| |\ | | | | | | | | | | | | * 'master' of https://github.com/vnwildman/git: l10n: vi.po(3245t): Updated Vietnamese translation for v2.15.0
| | * l10n: vi.po(3245t): Updated Vietnamese translation for v2.15.0Tran Ngoc Quan2017-10-09
| | | | | | | | | | | | Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
| * | l10n: es.po: Update translation v2.15.0 round 1Christopher Díaz2017-10-08
| |/ | | | | | | Signed-off-by: Christopher Díaz <christopher.diaz.riv@gmail.com>
| * Merge branch 'maint' of git://github.com/git-l10n/git-poJiang Xin2017-10-08
| |\ | | | | | | | | | | | | | | | * 'maint' of git://github.com/git-l10n/git-po: l10n: es.po: spanish added to TEAMS l10n: es.po: initial Spanish version git 2.14.0
| | * l10n: es.po: spanish added to TEAMSChristopher Díaz2017-08-27
| | | | | | | | | | | | Signed-off-by: Christopher Díaz <christopher.diaz.riv@gmail.com>
| | * l10n: es.po: initial Spanish version git 2.14.0Christopher Díaz2017-08-27
| | | | | | | | | | | | Signed-off-by: Christopher Díaz <christopher.diaz.riv@gmail.com>
| * | l10n: git.pot: v2.15.0 round 1 (68 new, 36 removed)Jiang Xin2017-10-08
| | | | | | | | | | | | | | | | | | | | | Generate po/git.pot from commit d35688db19 ("Prepare for -rc1", 2017-10-07) for git v2.15.0 l10n round 1. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
* | | Git 2.15-rc1Junio C Hamano2017-10-11
| | | | | | | | | | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | Merge branch 'ls/filter-process-delayed'Junio C Hamano2017-10-11
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bugfixes to an already graduated series. * ls/filter-process-delayed: write_entry: untangle symlink and regular-file cases write_entry: avoid reading blobs in CE_RETRY case write_entry: fix leak when retrying delayed filter entry.c: check if file exists after checkout entry.c: update cache entry only for existing files
| * | | write_entry: untangle symlink and regular-file casesJeff King2017-10-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The write_entry() function switches on the mode of the entry we're going to write out. The cases for S_IFLNK and S_IFREG are lumped together. In earlier versions of the code, this made some sense. They have a shared preamble (which reads the blob content), a short type-specific body, and a shared conclusion (which writes out the file contents; always for S_IFREG and only sometimes for S_IFLNK). But over time this has grown to make less sense. The preamble now has conditional bits for each type, and the S_IFREG body has grown a lot more complicated. It's hard to follow the logic of which code is running for which mode. Let's give each mode its own case arm. We will still share the conclusion code, which means we now jump to it with a goto. Ideally we'd pull that shared code into its own function, but it touches so much internal state in the write_entry() function that the end result is actually harder to follow than the goto. While we're here, we'll touch up a few bits of whitespace to make the beginning and endings of the cases easier to read. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | write_entry: avoid reading blobs in CE_RETRY caseJeff King2017-10-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When retrying a delayed filter-process request, we don't need to send the blob to the filter a second time. However, we read it unconditionally into a buffer, only to later throw away that buffer. We can make this more efficient by skipping the read in the first place when it isn't necessary. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | write_entry: fix leak when retrying delayed filterJeff King2017-10-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When write_entry() retries a delayed filter request, we don't need to send the blob content to the filter again, and set the pointer to NULL. But doing so means we leak the contents we read earlier from read_blob_entry(). Let's make sure to free it before dropping the pointer. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | entry.c: check if file exists after checkoutLars Schneider2017-10-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we are checking out a file and somebody else racily deletes our file, then we would write garbage to the cache entry. Fix that by checking the result of the lstat() call on that file. Print an error to the user if the file does not exist. Reported-by: Jeff King <peff@peff.net> Signed-off-by: Lars Schneider <larsxschneider@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | entry.c: update cache entry only for existing filesLars Schneider2017-10-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In 2841e8f ("convert: add "status=delayed" to filter process protocol", 2017-06-30) we taught the filter process protocol to delay responses. That means an external filter might answer in the first write_entry() call on a file that requires filtering "I got your request, but I can't answer right now. Ask again later!". As Git got no answer, we do not write anything to the filesystem. Consequently, the lstat() call in the finish block of the function writes garbage to the cache entry. The garbage is eventually overwritten when the filter answers with the final file content in a subsequent write_entry() call. Fix the brief time window of garbage in the cache entry by adding a special finish block that does nothing for delayed responses. The cache entry is written properly in a subsequent write_entry() call where the filter responds with the final file content. Reported-by: Jeff King <peff@peff.net> Signed-off-by: Lars Schneider <larsxschneider@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | Merge branch 'ds/avoid-overflow-in-midpoint-computation'Junio C Hamano2017-10-11
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Code clean-up. * ds/avoid-overflow-in-midpoint-computation: cleanup: fix possible overflow errors in binary search
| * | | | cleanup: fix possible overflow errors in binary searchDerrick Stolee2017-10-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A common mistake when writing binary search is to allow possible integer overflow by using the simple average: mid = (min + max) / 2; Instead, use the overflow-safe version: mid = min + (max - min) / 2; This translation is safe since the operation occurs inside a loop conditioned on "min < max". The included changes were found using the following git grep: git grep '/ *2;' '*.c' Making this cleanup will prevent future review friction when a new binary search is contructed based on existing code. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Reviewed-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | Merge branch 'tb/complete-describe'Junio C Hamano2017-10-11
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Docfix. * tb/complete-describe: completion: add --broken and --dirty to describe
| * | | | | completion: add --broken and --dirty to describeThomas Braun2017-10-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the flags for broken and dirty were implemented in b0176ce6b5 (builtin/describe: introduce --broken flag, 2017-03-21) and 9f67d2e827 (Teach "git describe" --dirty option, 2009-10-21) the completion was not updated, although these flags are useful completions. Add them. Signed-off-by: Thomas Braun <thomas.braun@virtuell-zuhause.de> Helped-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | Merge branch 'sb/test-cmp-expect-actual'Junio C Hamano2017-10-11
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Test tweak. * sb/test-cmp-expect-actual: tests: fix diff order arguments in test_cmp
| * | | | | | tests: fix diff order arguments in test_cmpStefan Beller2017-10-07
| | |/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix the argument order for test_cmp. When given the expected result first the diff shows the actual output with '+' and the expectation with '-', which is the convention for our tests. Signed-off-by: Stefan Beller <sbeller@google.com> Reviewed-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | Merge branch 'jk/refs-df-conflict'Junio C Hamano2017-10-11
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | An ancient bug that made Git misbehave with creation/renaming of refs has been fixed. * jk/refs-df-conflict: refs_resolve_ref_unsafe: handle d/f conflicts for writes t3308: create a real ref directory/file conflict
| * | | | | | refs_resolve_ref_unsafe: handle d/f conflicts for writesJeff King2017-10-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If our call to refs_read_raw_ref() fails, we check errno to see if the ref is simply missing, or if we encountered a more serious error. If it's just missing, then in "write" mode (i.e., when RESOLVE_REFS_READING is not set), this is perfectly fine. However, checking for ENOENT isn't sufficient to catch all missing-ref cases. In the filesystem backend, we may also see EISDIR when we try to resolve "a" and "a/b" exists. Likewise, we may see ENOTDIR if we try to resolve "a/b" and "a" exists. In both of those cases, we know that our resolved ref doesn't exist, but we return an error (rather than reporting the refname and returning a null sha1). This has been broken for a long time, but nobody really noticed because the next step after resolving without the READING flag is usually to lock the ref and write it. But in both of those cases, the write will fail with the same errno due to the directory/file conflict. There are two cases where we can notice this, though: 1. If we try to write "a" and there's a leftover directory already at "a", even though there is no ref "a/b". The actual write is smart enough to move the empty "a" out of the way. This is reasonably rare, if only because the writing code has to do an independent resolution before trying its write (because the actual update_ref() code handles this case fine). The notes-merge code does this, and before the fix in the prior commit t3308 erroneously expected this case to fail. 2. When resolving symbolic refs, we typically do not use the READING flag because we want to resolve even symrefs that point to unborn refs. Even if those unborn refs could not actually be written because of d/f conflicts with existing refs. You can see this by asking "git symbolic-ref" to report the target of a symref pointing past a d/f conflict. We can fix the problem by recognizing the other "missing" errnos and treating them like ENOENT. This should be safe to do even for callers who are then going to actually write the ref, because the actual writing process will fail if the d/f conflict is a real one (and t1404 checks these cases). Arguably this should be the responsibility of the files-backend to normalize all "missing ref" errors into ENOENT (since something like EISDIR may not be meaningful at all to a database backend). However other callers of refs_read_raw_ref() may actually care about the distinction; putting this into resolve_ref() is the minimal fix for now. The new tests in t1401 use git-symbolic-ref, which is the most direct way to check the resolution by itself. Interestingly we actually had a test that setup this case already, but we only used it to verify that the funny state could be overwritten, not that it could be resolved. We also add a new test in t3200, as "branch -m" was the original motivation for looking into this. What happens is this: 0. HEAD is pointing to branch "a" 1. The user asks to rename "a" to "a/b". 2. We create "a/b" and delete "a". 3. We then try to update any worktree HEADs that point to the renamed ref (including the main repo HEAD). To do that, we have to resolve each HEAD. But now our HEAD is pointing at "a", and we get EISDIR due to the loose "a/b". As a result, we think there is no HEAD, and we do not update it. It now points to the bogus "a". Interestingly this case used to work, but only accidentally. Before 31824d180d (branch: fix branch renaming not updating HEADs correctly, 2017-08-24), we'd update any HEAD which we couldn't resolve. That was wrong, but it papered over the fact that we were incorrectly failing to resolve HEAD. So while the bug demonstrated by the git-symbolic-ref is quite old, the regression to "branch -m" is recent. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | | t3308: create a real ref directory/file conflictJeff King2017-10-07
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A test in t3308 wants to make sure that we don't accidentally merge into "refs/notes/dir" when it exists as a directory, so it does: mkdir .git/refs/notes/dir git -c core.notesRef=refs/notes/dir merge ... and expects the second command to fail. But that understimates the refs code, which is smart enough to remove useless directories in the refs hierarchy. The test succeeded only because of a bug which prevented resolving refs/notes/dir for writing, even though an actual ref update would succeed. In preparation for fixing that bug, let's switch to creating a real ref in refs/notes/dir, which is a more realistic situation. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | Merge branch 'rs/rs-mailmap'Junio C Hamano2017-10-11
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | * rs/rs-mailmap: .mailmap: normalize name for René Scharfe