summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2021-01-20merge-ort: implement apply_dir_rename() and check_dir_renamed()Libravatar Elijah Newren1-2/+35
Both of these are copied from merge-recursive.c, with just minor tweaks due to using strmap API and not having a non_unique_new_dir field. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-01-20merge-ort: implement compute_collisions()Libravatar Elijah Newren1-1/+67
This is nearly a wholesale copy of compute_collisions() from merge-recursive.c, and the logic remains the same, but it has been tweaked slightly due to: * using strmap.h API (instead of direct hashmaps) * allocation/freeing of data structures were done separately in merge_start() and clear_or_reinit_internal_opts() in an earlier patch in this series * there is no non_unique_new_dir data field in merge-ort; that will be handled a different way It does depend on two new functions, apply_dir_rename() and check_dir_renamed() which were introduced with simple die-not-yet-implemented shells and will be implemented in subsequent patches. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-01-20merge-ort: modify collect_renames() for directory rename handlingLibravatar Elijah Newren1-4/+74
collect_renames() is similar to merge-recursive.c's get_renames(), but lacks the directory rename handling found in the latter. Port that code structure over to merge-ort. This introduces three new die-not-yet-implemented functions that will be defined in future commits. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-01-20merge-ort: implement handle_directory_level_conflicts()Libravatar Elijah Newren1-1/+18
This is modelled on the version of handle_directory_level_conflicts() from merge-recursive.c, but is massively simplified due to the following factors: * strmap API provides simplifications over using direct hashmap * we have a dirs_removed field in struct rename_info that we have an easy way to populate from collect_merge_info(); this was already used in compute_rename_counts() and thus we do not need to check for condition #2. * The removal of condition #2 by handling it earlier in the code also obviates the need to check for condition #3 -- if both sides renamed a directory, meaning that the directory no longer exists on either side, then neither side could have added any new files to that directory, and thus there are no files whose locations we need to move due to such a directory rename. In fact, the same logic that makes condition #3 irrelevant means condition #1 is also irrelevant so we could drop this function. However, it is cheap to check if both sides rename the same directory, and doing so can save future computation. So, simply remove any directories that both sides renamed from the list of directory renames. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-01-20merge-ort: implement compute_rename_counts()Libravatar Elijah Newren1-2/+52
This function is based on the first half of get_directory_renames() from merge-recursive.c; as part of the implementation, factor out a routine, increment_count(), to update the bookkeeping to track the number of items renamed into new directories. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-01-20merge-ort: copy get_renamed_dir_portion() from merge-recursive.cLibravatar Elijah Newren1-0/+104
Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-01-20merge-ort: add outline of get_provisional_directory_renames()Libravatar Elijah Newren1-1/+56
This function is based on merge-recursive.c's get_directory_renames(), except that the first half has been split out into a not-yet-implemented compute_rename_counts(). The primary difference here is our lack of the non_unique_new_dir boolean in our strmap. The lack of that field will at first cause us to fail testcase 2b of t6423; however, future optimizations will obviate the need for that ugly field so we have just left it out. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-01-20merge-ort: add outline for computing directory renamesLibravatar Elijah Newren1-1/+24
Port some directory rename handling changes from merge-recursive.c's detect_and_process_renames() to the same-named function of merge-ort.c. This does not yet add any use or handling of directory renames, just the outline for where we start to compute them. Thus, a future patch will add port additional changes to merge-ort's detect_and_process_renames(). Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-01-07merge-ort: collect which directories are removed in dirs_removedLibravatar Elijah Newren1-0/+27
Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-01-07merge-ort: initialize and free new directory rename data structuresLibravatar Elijah Newren1-0/+35
Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-01-07merge-ort: add new data structures for directory rename detectionLibravatar Elijah Newren1-3/+31
Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-01-07Merge branch 'en/merge-ort-3' into en/ort-directory-renameLibravatar Junio C Hamano1-16/+430
* en/merge-ort-3: merge-ort: add implementation of type-changed rename handling merge-ort: add implementation of normal rename handling merge-ort: add implementation of rename collisions merge-ort: add implementation of rename/delete conflicts merge-ort: add implementation of both sides renaming differently merge-ort: add implementation of both sides renaming identically merge-ort: add basic outline for process_renames() merge-ort: implement compare_pairs() and collect_renames() merge-ort: implement detect_regular_renames() merge-ort: add initial outline for basic rename detection merge-ort: add basic data structures for handling renames
2021-01-06The first batch in 2.31 cycleLibravatar Junio C Hamano3-2/+34
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-01-06Merge branch 'es/perf-export-fix'Libravatar Junio C Hamano1-4/+1
Tweak unneeded recursion from a test framework helper function. * es/perf-export-fix: t/perf: avoid unnecessary test_export() recursion
2021-01-06Merge branch 'fc/t6030-bisect-reset-removes-auxiliary-files'Libravatar Junio C Hamano1-8/+8
A 3-year old test that was not testing anything useful has been corrected. * fc/t6030-bisect-reset-removes-auxiliary-files: test: bisect-porcelain: fix location of files
2021-01-06Merge branch 'es/worktree-repair-both-moved'Libravatar Junio C Hamano4-1/+73
"git worktree repair" learned to deal with the case where both the repository and the worktree moved. * es/worktree-repair-both-moved: worktree: teach `repair` to fix multi-directional breakage
2021-01-06Merge branch 'en/merge-ort-recursive'Libravatar Junio C Hamano5-18/+138
The ORT merge strategy learned to synthesize virtual ancestor tree by recursively merging multiple merge bases together, just like the recursive backend has done for years. * en/merge-ort-recursive: merge-ort: implement merge_incore_recursive() merge-ort: make clear_internal_opts() aware of partial clearing merge-ort: copy a few small helper functions from merge-recursive.c commit: move reverse_commit_list() from merge-recursive
2021-01-06Merge branch 'fc/pull-merge-rebase'Libravatar Junio C Hamano2-32/+104
When a user does not tell "git pull" to use rebase or merge, the command gives a loud message telling a user to choose between rebase or merge but creates a merge anyway, forcing users who would want to rebase to redo the operation. Fix an early part of this problem by tightening the condition to give the message---there is no reason to stop or force the user to choose between rebase or merge if the history fast-forwards. * fc/pull-merge-rebase: pull: display default warning only when non-ff pull: correct condition to trigger non-ff advice pull: get rid of unnecessary global variable pull: give the advice for choosing rebase/merge much later pull: refactor fast-forward check
2021-01-06Merge branch 'en/merge-ort-2'Libravatar Junio C Hamano1-19/+191
More "ORT" merge strategy. * en/merge-ort-2: merge-ort: add modify/delete handling and delayed output processing merge-ort: add die-not-implemented stub handle_content_merge() function merge-ort: add function grouping comments merge-ort: add a paths_to_free field to merge_options_internal merge-ort: add a path_conflict field to merge_options_internal merge-ort: add a clear_internal_opts helper merge-ort: add a few includes
2021-01-06Merge branch 'en/merge-ort-impl'Libravatar Junio C Hamano4-5/+1256
The merge backend "done right" starts to emerge. * en/merge-ort-impl: merge-ort: free data structures in merge_finalize() merge-ort: add implementation of record_conflicted_index_entries() tree: enable cmp_cache_name_compare() to be used elsewhere merge-ort: add implementation of checkout() merge-ort: basic outline for merge_switch_to_result() merge-ort: step 3 of tree writing -- handling subdirectories as we go merge-ort: step 2 of tree writing -- function to create tree object merge-ort: step 1 of tree writing -- record basenames, modes, and oids merge-ort: have process_entries operate in a defined order merge-ort: add a preliminary simple process_entries() implementation merge-ort: avoid recursing into identical trees merge-ort: record stage and auxiliary info for every path merge-ort: compute a few more useful fields for collect_merge_info merge-ort: avoid repeating fill_tree_descriptor() on the same tree merge-ort: implement a very basic collect_merge_info() merge-ort: add an err() function similar to one from merge-recursive merge-ort: use histogram diff merge-ort: port merge_start() from merge-recursive merge-ort: add some high-level algorithm structure merge-ort: setup basic internal data structures
2021-01-06Merge branch 'tb/pack-bitmap'Libravatar Junio C Hamano10-296/+578
Various improvements to the codepath that writes out pack bitmaps. * tb/pack-bitmap: (24 commits) pack-bitmap-write: better reuse bitmaps pack-bitmap-write: relax unique revwalk condition pack-bitmap-write: use existing bitmaps pack-bitmap: factor out 'add_commit_to_bitmap()' pack-bitmap: factor out 'bitmap_for_commit()' pack-bitmap-write: ignore BITMAP_FLAG_REUSE pack-bitmap-write: build fewer intermediate bitmaps pack-bitmap.c: check reads more aggressively when loading pack-bitmap-write: rename children to reverse_edges t5310: add branch-based checks commit: implement commit_list_contains() bitmap: implement bitmap_is_subset() pack-bitmap-write: fill bitmap with commit history pack-bitmap-write: pass ownership of intermediate bitmaps pack-bitmap-write: reimplement bitmap writing ewah: add bitmap_dup() function ewah: implement bitmap_or() ewah: make bitmap growth less aggressive ewah: factor out bitmap growth rev-list: die when --test-bitmap detects a mismatch ...
2021-01-06Merge branch 'ab/trailers-extra-format'Libravatar Junio C Hamano5-19/+141
The "--format=%(trailers)" mechanism gets enhanced to make it easier to design output for machine consumption. * ab/trailers-extra-format: pretty format %(trailers): add a "key_value_separator" pretty format %(trailers): add a "keyonly" pretty-format %(trailers): fix broken standalone "valueonly" pretty format %(trailers) doc: avoid repetition pretty format %(trailers) test: split a long line
2021-01-06Merge branch 'pk/subsub-fetch-fix-take-2'Libravatar Junio C Hamano2-1/+123
"git fetch --recurse-submodules" fix (second attempt). * pk/subsub-fetch-fix-take-2: submodules: fix of regression on fetching of non-init subsub-repo
2020-12-27Git 2.30Libravatar Junio C Hamano2-12/+9
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-12-27Merge branch 'pb/doc-git-linkit-fix'Libravatar Junio C Hamano1-2/+2
Docfix. * pb/doc-git-linkit-fix: git.txt: fix typos in 'linkgit' macro invocation
2020-12-27Merge tag 'l10n-2.30.0-rnd2' of https://github.com/git-l10n/git-poLibravatar Junio C Hamano12-26547/+53354
l10n for Git 2.30.0 round 2 * tag 'l10n-2.30.0-rnd2' of https://github.com/git-l10n/git-po: l10n: zh_CN: for git v2.30.0 l10n round 1 and 2 l10n: zh_TW.po: v2.30.0 round 2 (1 untranslated) l10n: pl.po: add translation and set team leader l10n: pl.po: started Polish translation l10n: de.po: Update German translation for Git 2.30.0 l10n: Update Catalan translation l10n: bg.po: Updated Bulgarian translation (5037t) l10n: fr.po v2.30.0 rnd 2 l10n: tr: v2.30.0-r2 l10n: sv.po: Update Swedish translation (5037t0f0u) l10n: vi.po(5037t): v2.30.0 rnd 2 l10n: git.pot: v2.30.0 round 2 (1 new, 2 removed) l10n: Update Catalan translation l10n: fr.po: v2.30.0 rnd 1 l10n: fr.po Fix a typo l10n: fr fix misleading message l10n: tr: v2.30.0-r1 l10n: sv.po: Update Swedish translation (5038t0f0u) l10n: git.pot: v2.30.0 round 1 (70 new, 45 removed)
2020-12-27l10n: zh_CN: for git v2.30.0 l10n round 1 and 2Libravatar Jiang Xin1-2475/+2588
Translate 71 new messages (5037t0f0u) for git 2.30.0. Reviewed-by: 依云 <lilydjwg@gmail.com> Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2020-12-25Merge branch 'l10n/zh_TW/201223' of github.com:l10n-tw/git-poLibravatar Jiang Xin1-2744/+2602
* 'l10n/zh_TW/201223' of github.com:l10n-tw/git-po: l10n: zh_TW.po: v2.30.0 round 2 (1 untranslated)
2020-12-25l10n: zh_TW.po: v2.30.0 round 2 (1 untranslated)Libravatar pan934121-2744/+2602
Signed-off-by: pan93412 <pan93412@gmail.com>
2020-12-23l10n: pl.po: add translation and set team leaderLibravatar Arusekk2-8992/+22386
Signed-off-by: Arusekk <arek_koz@o2.pl>
2020-12-23Git 2.30-rc2Libravatar Junio C Hamano2-1/+6
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-12-23Merge branch 'nk/refspecs-negative-fix'Libravatar Junio C Hamano2-3/+64
Hotfix for recent regression. * nk/refspecs-negative-fix: negative-refspec: improve comment on query_matches_negative_refspec negative-refspec: fix segfault on : refspec
2020-12-23Merge branch 'ma/maintenance-crontab-fix'Libravatar Junio C Hamano3-5/+20
Hotfix for a topic of this cycle. * ma/maintenance-crontab-fix: t7900-maintenance: test for magic markers gc: fix handling of crontab magic markers git-maintenance.txt: add missing word
2020-12-23Merge branch 'dl/checkout-p-merge-base'Libravatar Junio C Hamano2-2/+9
Fix to a regression introduced during this cycle. * dl/checkout-p-merge-base: checkout -p: handle tree arguments correctly again
2020-12-23Merge branch 'js/no-more-prepare-for-main-in-test'Libravatar Junio C Hamano11-619/+621
Test coverage fix. * js/no-more-prepare-for-main-in-test: tests: drop the `PREPARE_FOR_MAIN_BRANCH` prereq t9902: use `main` as initial branch name t6302: use `main` as initial branch name t5703: use `main` as initial branch name t5510: use `main` as initial branch name t5505: finalize transitioning to using the branch name `main` t3205: finalize transitioning to using the branch name `main` t3203: complete the transition to using the branch name `main` t3201: finalize transitioning to using the branch name `main` t3200: finish transitioning to the initial branch name `main` t1400: use `main` as initial branch name
2020-12-23Merge branch 'jx/pack-redundant-on-single-pack'Libravatar Junio C Hamano2-4/+39
"git pack-redandant" when there is only one packfile used to crash, which has been corrected. * jx/pack-redundant-on-single-pack: pack-redundant: fix crash when one packfile in repo
2020-12-23l10n: pl.po: started Polish translationLibravatar m4sk1n1-0/+12579
Signed-off-by: Arusekk <arek_koz@o2.pl>
2020-12-23l10n: de.po: Update German translation for Git 2.30.0Libravatar Matthias Rüster1-2600/+2729
Reviewed-by: Ralf Thielow <ralf.thielow@gmail.com> Reviewed-by: Phillip Szelat <phillip.szelat@gmail.com> Signed-off-by: Matthias Rüster <matthias.ruester@gmail.com>
2020-12-23Merge branch 'master' of github.com:Softcatala/git-poLibravatar Jiang Xin1-1082/+755
* 'master' of github.com:Softcatala/git-po: l10n: Update Catalan translation
2020-12-22t/perf: avoid unnecessary test_export() recursionLibravatar Eric Sunshine1-4/+1
test_export() has been self-recursive since its inception even though a simple for-loop would have served just as well to append its arguments to the `test_export_` variable separated by the pipe character "|". Recently `test_export_` was changed instead to a space-separated list of tokens to be exported, an operation which can be accomplished via a single simple assignment, with no need for looping or recursion. Therefore, simplify the implementation. While at it, take advantage of the fact that variable names to be exported are shell identifiers, thus won't be composed of special characters or whitespace, thus simple a `$*` can be used rather than magical `"$@"`. Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-12-22git.txt: fix typos in 'linkgit' macro invocationLibravatar Philippe Blain1-2/+2
The 'linkgit' Asciidoc macro is misspelled as 'linkit' in the description of 'GIT_SEQUENCE_EDITOR' since the addition of that variable to git(1) in 902a126eca (doc: mention GIT_SEQUENCE_EDITOR and 'sequence.editor' more, 2020-08-31). Also, it uses two colons instead of one. Fix that. Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-12-22l10n: Update Catalan translationLibravatar Jordi Mas1-1082/+755
Signed-off-by: Jordi Mas <jmas@softcatala.org>
2020-12-22l10n: bg.po: Updated Bulgarian translation (5037t)Libravatar Alexander Shopov1-2480/+2600
Signed-off-by: Alexander Shopov <ash@kambanaria.org>
2020-12-21negative-refspec: improve comment on query_matches_negative_refspecLibravatar Nipunn Koorapati1-0/+6
Comment did not adequately explain how the two loops work together to achieve the goal of querying for matching of any negative refspec. Signed-off-by: Nipunn Koorapati <nipunn@dropbox.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-12-21negative-refspec: fix segfault on : refspecLibravatar Nipunn Koorapati2-3/+58
The logic added to check for negative pathspec match by c0192df630 (refspec: add support for negative refspecs, 2020-09-30) looks at refspec->src assuming it is never NULL, however when remote.origin.push is set to ":", then refspec->src is NULL, causing a segfault within strcmp. Tell git to handle matching refspec by adding the needle to the set of positively matched refspecs, since matching ":" refspecs match anything as src. Add test for matching refspec pushes fetch-negative-refspec both individually and in combination with a negative refspec. Signed-off-by: Nipunn Koorapati <nipunn@dropbox.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-12-22Merge branch 'fr_2.30_rnd2' of github.com:jnavila/gitLibravatar Jiang Xin1-382/+419
* 'fr_2.30_rnd2' of github.com:jnavila/git: l10n: fr.po v2.30.0 rnd 2
2020-12-21t7900-maintenance: test for magic markersLibravatar Martin Ågren1-0/+9
When we insert our "BEGIN" and "END" markers into the cron table, it's so that a Git version from many years into the future would be able to identify this region in the cron table. Let's add a test to make sure that these markers don't ever change. Signed-off-by: Martin Ågren <martin.agren@gmail.com> Acked-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-12-21gc: fix handling of crontab magic markersLibravatar Martin Ågren2-4/+10
On `git maintenance start`, we add a few entries to the user's cron table. We wrap our entries using two magic markers, "# BEGIN GIT MAINTENANCE SCHEDULE" and "# END GIT MAINTENANCE SCHEDULE". At a later `git maintenance stop`, we will go through the table and remove these lines. Or rather, we will remove the "BEGIN" marker, the "END" marker and everything between them. Alas, we have a bug in how we detect the "END" marker: we don't. As we loop through all the lines of the crontab, if we are in the "old region", i.e., the region we're aiming to remove, we make an early `continue` and don't get as far as checking for the "END" marker. Thus, once we've seen our "BEGIN", we remove everything until the end of the file. Rewrite the logic for identifying these markers. There are four cases that are mutually exclusive: The current line starts a region or it ends it, or it's firmly within the region, or it's outside of it (and should be printed). Signed-off-by: Martin Ågren <martin.agren@gmail.com> Acked-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-12-21git-maintenance.txt: add missing wordLibravatar Martin Ågren1-1/+1
Add a missing "a" before "bunch". Signed-off-by: Martin Ågren <martin.agren@gmail.com> Acked-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-12-21checkout -p: handle tree arguments correctly againLibravatar Johannes Schindelin2-2/+9
This fixes a segmentation fault. The bug is caused by dereferencing `new_branch_info->commit` when it is `NULL`, which is the case when the tree-ish argument is actually a tree, not a commit-ish. This was introduced in 5602b500c3c (builtin/checkout: fix `git checkout -p HEAD...` bug, 2020-10-07), where we tried to ensure that the special tree-ish `HEAD...` is handled correctly. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>