summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-07-11clone: use dir-iterator to avoid explicit dir traversalLibravatar Matheus Tavares1-22/+25
Replace usage of opendir/readdir/closedir API to traverse directories recursively, at copy_or_link_directory function, by the dir-iterator API. This simplifies the code and avoids recursive calls to copy_or_link_directory. This process also makes copy_or_link_directory call die() in case of an error on readdir or stat inside dir_iterator_advance. Previously it would just print a warning for errors on stat and ignore errors on readdir, which isn't nice because a local git clone could succeed even though the .git/objects copy didn't fully succeed. Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-07-11clone: extract function from copy_or_link_directoryLibravatar Matheus Tavares1-8/+16
Extract dir creation code snippet from copy_or_link_directory to its own function named mkdir_if_missing. This change will help to remove copy_or_link_directory's explicit recursion, which will be done in a following patch. Also makes the code more readable. Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-07-11clone: copy hidden paths at local cloneLibravatar Matheus Tavares2-1/+10
Make the copy_or_link_directory function no longer skip hidden directories. This function, used to copy .git/objects, currently skips all hidden directories but not hidden files, which is an odd behaviour. The reason for that could be unintentional: probably the intention was to skip '.' and '..' only but it ended up accidentally skipping all directories starting with '.'. Besides being more natural, the new behaviour is more permissive to the user. Also adjust tests to reflect this behaviour change. Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Co-authored-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-07-11dir-iterator: add flags parameter to dir_iterator_beginLibravatar Matheus Tavares5-36/+191
Add the possibility of giving flags to dir_iterator_begin to initialize a dir-iterator with special options. Currently possible flags are: - DIR_ITERATOR_PEDANTIC, which makes dir_iterator_advance abort immediately in the case of an error, instead of keep looking for the next valid entry; - DIR_ITERATOR_FOLLOW_SYMLINKS, which makes the iterator follow symlinks and include linked directories' contents in the iteration. These new flags will be used in a subsequent patch. Also add tests for the flags' usage and adjust refs/files-backend.c to the new dir_iterator_begin signature. Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-07-11dir-iterator: refactor state machine modelLibravatar Matheus Tavares5-122/+164
dir_iterator_advance() is a large function with two nested loops. Let's improve its readability factoring out three functions and simplifying its mechanics. The refactored model will no longer depend on level.initialized and level.dir_state to keep track of the iteration state and will perform on a single loop. Also, dir_iterator_begin() currently does not check if the given string represents a valid directory path. Since the refactored model will have to stat() the given path at initialization, let's also check for this kind of error and make dir_iterator_begin() return NULL, on failures, with errno appropriately set. And add tests for this new behavior. Improve documentation at dir-iteration.h and code comments at dir-iterator.c to reflect the changes and eliminate possible ambiguities. Finally, adjust refs/files-backend.c to check for now possible dir_iterator_begin() failures. Original-patch-by: Daniel Ferreira <bnmvco@gmail.com> Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-07-11dir-iterator: use warning_errno when possibleLibravatar Matheus Tavares1-11/+12
Change warning(..., strerror(errno)) by warning_errno(...). This helps to unify warning display besides simplifying a bit the code. Also, improve warning messages by surrounding paths with quotation marks and using more meaningful statements. Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-07-11dir-iterator: add tests for dir-iterator APILibravatar Daniel Ferreira5-0/+91
Create t/helper/test-dir-iterator.c, which prints relevant information about a directory tree iterated over with dir-iterator. Create t/t0066-dir-iterator.sh, which tests that dir-iterator does iterate through a whole directory tree as expected. Signed-off-by: Daniel Ferreira <bnmvco@gmail.com> [matheus.bernardino: update to use test-tool and some minor aesthetics] Helped-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-07-11clone: better handle symlinked files at .git/objects/Libravatar Matheus Tavares2-8/+21
There is currently an odd behaviour when locally cloning a repository with symlinks at .git/objects: using --no-hardlinks all symlinks are dereferenced but without it, Git will try to hardlink the files with the link() function, which has an OS-specific behaviour on symlinks. On OSX and NetBSD, it creates a hardlink to the file pointed by the symlink whilst on GNU/Linux, it creates a hardlink to the symlink itself. On Manjaro GNU/Linux: $ touch a $ ln -s a b $ link b c $ ls -li a b c 155 [...] a 156 [...] b -> a 156 [...] c -> a But on NetBSD: $ ls -li a b c 2609160 [...] a 2609164 [...] b -> a 2609160 [...] c It's not good to have the result of a local clone to be OS-dependent and besides that, the current behaviour on GNU/Linux may result in broken symlinks. So let's standardize this by making the hardlinks always point to dereferenced paths, instead of the symlinks themselves. Also, add tests for symlinked files at .git/objects/. Note: Git won't create symlinks at .git/objects itself, but it's better to handle this case and be friendly with users who manually create them. Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Co-authored-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-07-11clone: test for our behavior on odd objects/* contentLibravatar Ævar Arnfjörð Bjarmason1-0/+111
Add tests for what happens when we perform a local clone on a repo containing odd files at .git/object directory, such as symlinks to other dirs, or unknown files. I'm bending over backwards here to avoid a SHA-1 dependency. See [1] for an earlier and simpler version that hardcoded SHA-1s. This behavior has been the same for a *long* time, but hasn't been tested for. There's a good post-hoc argument to be made for copying over unknown things, e.g. I'd like a git version that doesn't know about the commit-graph to copy it under "clone --local" so a newer git version can make use of it. In follow-up commits we'll look at changing some of this behavior, but for now, let's just assert it as-is so we'll notice what we'll change later. 1. https://public-inbox.org/git/20190226002625.13022-5-avarab@gmail.com/ Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> [matheus.bernardino: improved and split tests in more than one patch] Helped-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-06-13Merge branch 'jk/unused-params-final-batch'Libravatar Junio C Hamano22-72/+53
* jk/unused-params-final-batch: verify-commit: simplify parameters to run_gpg_verify() show-branch: drop unused parameter from show_independent() rev-list: drop unused void pointer from finish_commit() remove_all_fetch_refspecs(): drop unused "remote" parameter receive-pack: drop unused "commands" from prepare_shallow_update() pack-objects: drop unused rev_info parameters name-rev: drop unused parameters from is_better_name() mktree: drop unused length parameter wt-status: drop unused status parameter read-cache: drop unused parameter from threaded load clone: drop dest parameter from copy_alternates() submodule: drop unused prefix parameter from some functions builtin: consistently pass cmd_* prefix to parse_options cmd_{read,write}_tree: rename "unused" variable that is used
2019-06-13Merge branch 'sb/format-patch-base-patch-id-fix'Libravatar Junio C Hamano7-32/+66
The "--base" option of "format-patch" computed the patch-ids for prerequisite patches in an unstable way, which has been updated to compute in a way that is compatible with "git patch-id --stable". * sb/format-patch-base-patch-id-fix: format-patch: make --base patch-id output stable format-patch: inform user that patch-id generation is unstable
2019-06-13Merge branch 'nd/init-relative-template-fix'Libravatar Junio C Hamano3-4/+7
A relative pathname given to "git init --template=<path> <repo>" ought to be relative to the directory "git init" gets invoked in, but it instead was made relative to the repository, which has been corrected. * nd/init-relative-template-fix: init: make --template path relative to $CWD
2019-06-13Merge branch 'ab/send-email-transferencoding-fix'Libravatar Junio C Hamano3-109/+206
Since "git send-email" learned to take 'auto' as the value for the transfer-encoding, it by mistake stopped honoring the values given to the configuration variables sendemail.transferencoding and/or sendemail.<ident>.transferencoding. This has been corrected to (finally) redoing the order of setting the default, reading the configuration and command line options. * ab/send-email-transferencoding-fix: send-email: fix regression in sendemail.identity parsing send-email: document --no-[to|cc|bcc] send-email: fix broken transferEncoding tests send-email: remove cargo-culted multi-patch pattern in tests send-email: do defaults -> config -> getopt in that order send-email: rename the @bcclist variable for consistency send-email: move the read_config() function above getopts
2019-06-07Git 2.22Libravatar Junio C Hamano1-1/+1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-06-07Merge tag 'l10n-2.22.0-rnd3' of git://github.com/git-l10n/git-poLibravatar Junio C Hamano11-33731/+43398
l10n-2.22.0-rnd3 * tag 'l10n-2.22.0-rnd3' of git://github.com/git-l10n/git-po: (25 commits) l10n: fr.po: Review French translation l10n: de.po: Update German translation l10n: de.po: improve description of 'git reset --quiet' l10n: TEAMS: Change German translation team leader l10n: bg.po: Updated Bulgarian translation (4581t) l10n: zh_CN: Revision for git v2.22.0 l10n l10n: zh_CN: for git v2.22.0 l10n round 1~3 l10n: es: 2.22.0 round 3 l10n: it.po: Updated Italian translation l10n: fr v2.22.0 rnd 3 l10n: vi.po(4581t): Updated Vietnamese translation for v2.22.0 round 3 l10n: git.pot: v2.22.0 round 3 (3 new, 2 removed) l10n: es: 2.22.0 round 2 l10n: bg.po: Updated Bulgarian translation (4580t) l10n: vi.po(4580t): Updated Vietnamese translation for v2.22.0 round 2 l10n: fr.po v2.22.0 round 2 l10n: git.pot: v2.22.0 round 2 (6 new, 3 removed) l10n: bg.po: Updated Bulgarian translation (4577t) l10n: es: 2.22.0 round 1 l10n: vi.po(4577t): Updated Vietnamese translation for v2.22.0 round 1 ...
2019-06-07Merge branch 'fr_review' of git://github.com/jnavila/gitLibravatar Jiang Xin1-15/+15
* 'fr_review' of git://github.com/jnavila/git: l10n: fr.po: Review French translation
2019-06-07Merge branch 'master' of git://github.com/alshopov/git-poLibravatar Jiang Xin1-7/+11
* 'master' of git://github.com/alshopov/git-po: l10n: bg.po: Updated Bulgarian translation (4581t)
2019-06-07l10n: fr.po: Review French translationLibravatar Cédric Malard1-15/+15
Signed-off-by: Cédric Malard <c.malard-git@valdun.net> Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
2019-06-06Merge branch 'en/merge-directory-renames-fix'Libravatar Junio C Hamano2-0/+117
Recent code restructuring of merge-recursive engine introduced a regression dealing with rename/add conflict. * en/merge-directory-renames-fix: merge-recursive: restore accidentally dropped setting of path
2019-06-06l10n: de.po: Update German translationLibravatar Matthias Rüster1-3074/+4139
Reviewed-by: Ralf Thielow <ralf.thielow@gmail.com> Signed-off-by: Matthias Rüster <matthias.ruester@gmail.com>
2019-06-06l10n: de.po: improve description of 'git reset --quiet'Libravatar Ralf Thielow1-1/+1
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
2019-06-05l10n: TEAMS: Change German translation team leaderLibravatar Matthias Rüster1-3/+3
Acked-by: Ralf Thielow <ralf.thielow@gmail.com> Signed-off-by: Matthias Rüster <matthias.ruester@gmail.com>
2019-06-05merge-recursive: restore accidentally dropped setting of pathLibravatar Elijah Newren2-0/+117
In commit 8daec1df03de ("merge-recursive: switch from (oid,mode) pairs to a diff_filespec", 2019-04-05), we actually switched from (oid,mode,path) triplets to a diff_filespec -- but most callsites in the patch only needed to worry about oid and mode so the commit message focused on that. The oversight in the commit message apparently spilled over to the code as well; one of the dozen or so callsites accidentally dropped the setting of the path in the conversion. Restore the path setting in that location. Also, this pointed out that our testsuite was lacking a good rename/add test, at least one that involved the need for merge content with the rename. Add such a test, and since rename/add vs. add/rename could possibly be important, redo the merge the opposite direction to make sure we don't have issues with the direction of the merge. These testcases failed before restoring the setting of path, but with the paths appropriately set the testcases both pass. Reported-by: Ben Humphreys <behumphreys@atlassian.com> Based-on-patch-by: SZEDER Gábor <szeder.dev@gmail.com> Tested-by: Ben Humphreys <behumphreys@atlassian.com> Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-06-05l10n: bg.po: Updated Bulgarian translation (4581t)Libravatar Alexander Shopov1-7/+11
Signed-off-by: Alexander Shopov <ash@kambanaria.org>
2019-06-05l10n: zh_CN: Revision for git v2.22.0 l10nLibravatar Fangyi Zhou2-54/+54
Revise 51 translations, improving consistency for some phrased. Update email address for Fangyi Zhou Signed-off-by: Fangyi Zhou <me@fangyi.io> Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2019-06-05l10n: zh_CN: for git v2.22.0 l10n round 1~3Libravatar Jiang Xin1-3040/+4015
Translate 274 new messages (4581t0f0u) for git 2.22.0. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2019-06-05Merge branch '2.22' of https://github.com/ChrisADR/git-poLibravatar Jiang Xin1-8/+12
* '2.22' of https://github.com/ChrisADR/git-po: l10n: es: 2.22.0 round 3
2019-06-05Merge branch 'it-l10n-wip' of github.com:AlessandroMenti/git-poLibravatar Jiang Xin1-4745/+6015
* 'it-l10n-wip' of github.com:AlessandroMenti/git-po: l10n: it.po: Updated Italian translation
2019-06-04l10n: es: 2.22.0 round 3Libravatar Christopher Diaz Riveros1-8/+12
Signed-off-by: Christopher Diaz Riveros <chrisadr@gentoo.org>
2019-06-04l10n: it.po: Updated Italian translationLibravatar Alessandro Menti1-4745/+6015
Signed-off-by: Alessandro Menti <alessandro.menti@alessandromenti.it>
2019-06-04l10n: fr v2.22.0 rnd 3Libravatar Jean-Noël Avila1-10/+16
Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
2019-06-04l10n: vi.po(4581t): Updated Vietnamese translation for v2.22.0 round 3Libravatar Tran Ngoc Quan1-12/+16
Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
2019-06-04l10n: git.pot: v2.22.0 round 3 (3 new, 2 removed)Libravatar Jiang Xin1-6/+10
Generate po/git.pot from v2.22.0-rc3 for git v2.22.0 l10n round 3. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2019-06-04Merge branch 'master' of git://git.kernel.org/pub/scm/git/gitLibravatar Jiang Xin11-126/+54
* 'master' of git://git.kernel.org/pub/scm/git/git: Git 2.22-rc3 i18n: fix typos found during l10n for git 2.22.0 RelNotes: minor typo fixes in 2.22.0 draft list-objects-filter: disable 'sparse:path' filters
2019-06-03Git 2.22-rc3Libravatar Junio C Hamano2-1/+8
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-06-03Merge branch 'cc/list-objects-filter-wo-sparse-path'Libravatar Junio C Hamano7-116/+37
Disable "--filter=sparse:path=<path>" that would allow reading from paths on the filesystem. * cc/list-objects-filter-wo-sparse-path: list-objects-filter: disable 'sparse:path' filters
2019-06-03i18n: fix typos found during l10n for git 2.22.0Libravatar Jiang Xin2-3/+3
Fix two typos introduced by the following commits: + 31fba9d3b4 (diff-parseopt: convert --[src|dst]-prefix, 2019-03-24) + ed8b4132c8 (remote-curl: mark all error messages for translation, 2019-03-05) Signed-off-by: Jiang Xin <worldhello.net@gmail.com> Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-06-03RelNotes: minor typo fixes in 2.22.0 draftLibravatar Todd Zullinger1-6/+6
Signed-off-by: Todd Zullinger <tmz@pobox.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-06-03l10n: es: 2.22.0 round 2Libravatar Christopher Diaz Riveros1-381/+394
Signed-off-by: Christopher Diaz Riveros <chrisadr@gentoo.org>
2019-06-02Merge branch 'master' of https://github.com/vnwildman/gitLibravatar Jiang Xin1-383/+396
* 'master' of https://github.com/vnwildman/git: l10n: vi.po(4580t): Updated Vietnamese translation for v2.22.0 round 2
2019-06-02Merge branch 'master' of git://github.com/alshopov/git-poLibravatar Jiang Xin1-1577/+1590
* 'master' of git://github.com/alshopov/git-po: l10n: bg.po: Updated Bulgarian translation (4580t)
2019-06-02l10n: bg.po: Updated Bulgarian translation (4580t)Libravatar Alexander Shopov1-1577/+1590
Signed-off-by: Alexander Shopov <ash@kambanaria.org>
2019-06-01l10n: vi.po(4580t): Updated Vietnamese translation for v2.22.0 round 2Libravatar Tran Ngoc Quan1-383/+396
Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
2019-05-31l10n: fr.po v2.22.0 round 2Libravatar Jean-Noël Avila1-434/+537
Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
2019-05-31l10n: git.pot: v2.22.0 round 2 (6 new, 3 removed)Libravatar Jiang Xin1-378/+391
Generate po/git.pot from v2.22.0-rc2 for git v2.22.0 l10n round 2. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2019-05-31Merge branch 'master' of git://git.kernel.org/pub/scm/git/gitLibravatar Jiang Xin95-553/+1001
* 'master' of git://git.kernel.org/pub/scm/git/git: (66 commits) Git 2.22-rc2 ...
2019-05-31Merge branch 'master' of https://github.com/Softcatala/git-poLibravatar Jiang Xin1-4465/+4516
* 'master' of https://github.com/Softcatala/git-po: l10n: Update Catalan translation
2019-05-30Git 2.22-rc2Libravatar Junio C Hamano2-1/+3
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-05-30Merge branch 'js/rebase-config-bitfix'Libravatar Junio C Hamano1-1/+1
* js/rebase-config-bitfix: rebase: replace incorrect logical negation by correct bitwise one
2019-05-30Merge branch 'es/doc-gitsubmodules-markup'Libravatar Junio C Hamano1-7/+7
Doc markup fix. * es/doc-gitsubmodules-markup: gitsubmodules: align html and nroff lists