diff --git a/Documentation/RelNotes/2.52.0.adoc b/Documentation/RelNotes/2.52.0.adoc index 45e7f0a24408e6..fc78d22567b154 100644 --- a/Documentation/RelNotes/2.52.0.adoc +++ b/Documentation/RelNotes/2.52.0.adoc @@ -17,10 +17,10 @@ UI, Workflows & Features * A new command "git last-modified" has been added to show the closest ancestor commit that touched each path. - * "git refs exists" that works like "git show-ref --exists" has been - added. + * The "git refs exists" command that works like "git show-ref --exists" + has been added. - * "repo info" learns a short-hand option "-z" that is the same as + * "git repo info" learns the short-hand option "-z" that is the same as "--format=nul", and learns to report the objects format used in the repository. @@ -53,7 +53,7 @@ UI, Workflows & Features * Configuration variables that take a pathname as a value (e.g. blame.ignorerevsfile) can be marked as optional by prefixing - ":(optoinal)" before its value. + ":(optional)" before its value. * Show 'P'ipe command in "git add -p". @@ -433,7 +433,10 @@ including security updates, are included in this release. * The version of macos image used in GitHub CI has been updated to macos-14, as the macos-13 that we have been using got deprecated. + Perforce binary used there has been changed to arm64 version to + match. (merge 73b9cdb7c4 jc/ci-use-macos-14 later to maint). + (merge ffff0bb0da jc/ci-use-arm64-p4-on-macos later to maint). * Other code cleanup, docfix, build fix, etc. (merge 529a60a885 ua/t1517-short-help-tests later to maint). diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN index a6b31f2857271b..8d5bbf7b6d3efd 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -1,6 +1,6 @@ #!/bin/sh -DEF_VER=v2.52.0-rc2 +DEF_VER=v2.52.0 LF=' ' diff --git a/builtin/last-modified.c b/builtin/last-modified.c index ae8b36a2c3515c..b0ecbdc5400d13 100644 --- a/builtin/last-modified.c +++ b/builtin/last-modified.c @@ -2,26 +2,32 @@ #include "bloom.h" #include "builtin.h" #include "commit-graph.h" +#include "commit-slab.h" #include "commit.h" #include "config.h" -#include "environment.h" #include "diff.h" #include "diffcore.h" #include "environment.h" +#include "ewah/ewok.h" #include "hashmap.h" #include "hex.h" -#include "log-tree.h" #include "object-name.h" #include "object.h" #include "parse-options.h" +#include "prio-queue.h" #include "quote.h" #include "repository.h" #include "revision.h" +/* Remember to update object flag allocation in object.h */ +#define PARENT1 (1u<<16) /* used instead of SEEN */ +#define PARENT2 (1u<<17) /* used instead of BOTTOM, BOUNDARY */ + struct last_modified_entry { struct hashmap_entry hashent; struct object_id oid; struct bloom_key key; + size_t diff_idx; const char path[FLEX_ARRAY]; }; @@ -37,13 +43,45 @@ static int last_modified_entry_hashcmp(const void *unused UNUSED, return strcmp(ent1->path, path ? path : ent2->path); } +/* + * Hold a bitmap for each commit we're working with. In the bitmap, each bit + * represents a path in `lm->all_paths`. An active bit indicates the path still + * needs to be associated to a commit. + */ +define_commit_slab(active_paths_for_commit, struct bitmap *); + struct last_modified { struct hashmap paths; struct rev_info rev; bool recursive; bool show_trees; + + const char **all_paths; + size_t all_paths_nr; + struct active_paths_for_commit active_paths; + + /* 'scratch' to avoid allocating a bitmap every process_parent() */ + struct bitmap *scratch; }; +static struct bitmap *active_paths_for(struct last_modified *lm, struct commit *c) +{ + struct bitmap **bitmap = active_paths_for_commit_at(&lm->active_paths, c); + if (!*bitmap) + *bitmap = bitmap_word_alloc(lm->all_paths_nr / BITS_IN_EWORD + 1); + + return *bitmap; +} + +static void active_paths_free(struct last_modified *lm, struct commit *c) +{ + struct bitmap **bitmap = active_paths_for_commit_at(&lm->active_paths, c); + if (*bitmap) { + bitmap_free(*bitmap); + *bitmap = NULL; + } +} + static void last_modified_release(struct last_modified *lm) { struct hashmap_iter iter; @@ -54,6 +92,8 @@ static void last_modified_release(struct last_modified *lm) hashmap_clear_and_free(&lm->paths, struct last_modified_entry, hashent); release_revisions(&lm->rev); + + free(lm->all_paths); } struct last_modified_callback_data { @@ -146,7 +186,7 @@ static void mark_path(const char *path, const struct object_id *oid, * Is it arriving at a version of interest, or is it from a side branch * which did not contribute to the final state? */ - if (!oideq(oid, &ent->oid)) + if (oid && !oideq(oid, &ent->oid)) return; last_modified_emit(data->lm, path, data->commit); @@ -196,7 +236,17 @@ static void last_modified_diff(struct diff_queue_struct *q, } } -static bool maybe_changed_path(struct last_modified *lm, struct commit *origin) +static void pass_to_parent(struct bitmap *c, + struct bitmap *p, + size_t pos) +{ + bitmap_unset(c, pos); + bitmap_set(p, pos); +} + +static bool maybe_changed_path(struct last_modified *lm, + struct commit *origin, + struct bitmap *active) { struct bloom_filter *filter; struct last_modified_entry *ent; @@ -213,6 +263,9 @@ static bool maybe_changed_path(struct last_modified *lm, struct commit *origin) return true; hashmap_for_each_entry(&lm->paths, &iter, ent, hashent) { + if (active && !bitmap_get(active, ent->diff_idx)) + continue; + if (bloom_filter_contains(filter, &ent->key, lm->rev.bloom_filter_settings)) return true; @@ -220,42 +273,202 @@ static bool maybe_changed_path(struct last_modified *lm, struct commit *origin) return false; } +static void process_parent(struct last_modified *lm, + struct prio_queue *queue, + struct commit *c, struct bitmap *active_c, + struct commit *parent, int parent_i) +{ + struct bitmap *active_p; + + repo_parse_commit(lm->rev.repo, parent); + active_p = active_paths_for(lm, parent); + + /* + * The first time entering this function for this commit (i.e. first parent) + * see if Bloom filters will tell us it's worth to do the diff. + */ + if (parent_i || maybe_changed_path(lm, c, active_c)) { + diff_tree_oid(&parent->object.oid, + &c->object.oid, "", &lm->rev.diffopt); + diffcore_std(&lm->rev.diffopt); + } + + /* + * Test each path for TREESAME-ness against the parent. If a path is + * TREESAME, pass it on to this parent. + * + * First, collect all paths that are *not* TREESAME in 'scratch'. + * Then, pass paths that *are* TREESAME and active to the parent. + */ + for (int i = 0; i < diff_queued_diff.nr; i++) { + struct diff_filepair *fp = diff_queued_diff.queue[i]; + const char *path = fp->two->path; + struct last_modified_entry *ent = + hashmap_get_entry_from_hash(&lm->paths, strhash(path), path, + struct last_modified_entry, hashent); + if (ent) { + size_t k = ent->diff_idx; + if (bitmap_get(active_c, k)) + bitmap_set(lm->scratch, k); + } + } + for (size_t i = 0; i < lm->all_paths_nr; i++) { + if (bitmap_get(active_c, i) && !bitmap_get(lm->scratch, i)) + pass_to_parent(active_c, active_p, i); + } + + /* + * If parent has any active paths, put it on the queue (if not already). + */ + if (!bitmap_is_empty(active_p) && !(parent->object.flags & PARENT1)) { + parent->object.flags |= PARENT1; + prio_queue_put(queue, parent); + } + if (!(parent->object.flags & PARENT1)) + active_paths_free(lm, parent); + + memset(lm->scratch->words, 0x0, lm->scratch->word_alloc); + diff_queue_clear(&diff_queued_diff); +} + static int last_modified_run(struct last_modified *lm) { + int max_count, queue_popped = 0; + struct prio_queue queue = { compare_commits_by_gen_then_commit_date }; + struct prio_queue not_queue = { compare_commits_by_gen_then_commit_date }; + struct commit_list *list; struct last_modified_callback_data data = { .lm = lm }; lm->rev.diffopt.output_format = DIFF_FORMAT_CALLBACK; lm->rev.diffopt.format_callback = last_modified_diff; lm->rev.diffopt.format_callback_data = &data; + lm->rev.no_walk = 1; prepare_revision_walk(&lm->rev); - while (hashmap_get_size(&lm->paths)) { - data.commit = get_revision(&lm->rev); - if (!data.commit) - BUG("paths remaining beyond boundary in last-modified"); + max_count = lm->rev.max_count; + + init_active_paths_for_commit(&lm->active_paths); + lm->scratch = bitmap_word_alloc(lm->all_paths_nr); + + /* + * lm->rev.commits holds the set of boundary commits for our walk. + * + * Loop through each such commit, and place it in the appropriate queue. + */ + for (list = lm->rev.commits; list; list = list->next) { + struct commit *c = list->item; + + if (c->object.flags & BOTTOM) { + prio_queue_put(¬_queue, c); + c->object.flags |= PARENT2; + } else if (!(c->object.flags & PARENT1)) { + /* + * If the commit is a starting point (and hasn't been + * seen yet), then initialize the set of interesting + * paths, too. + */ + struct bitmap *active; + + prio_queue_put(&queue, c); + c->object.flags |= PARENT1; + + active = active_paths_for(lm, c); + for (size_t i = 0; i < lm->all_paths_nr; i++) + bitmap_set(active, i); + } + } - if (data.commit->object.flags & BOUNDARY) { + while (queue.nr) { + int parent_i; + struct commit_list *p; + struct commit *c = prio_queue_get(&queue); + struct bitmap *active_c = active_paths_for(lm, c); + + if ((0 <= max_count && max_count < ++queue_popped) || + (c->object.flags & PARENT2)) { + /* + * Either a boundary commit, or we have already seen too + * many others. Either way, stop here. + */ + c->object.flags |= PARENT2 | BOUNDARY; + data.commit = c; diff_tree_oid(lm->rev.repo->hash_algo->empty_tree, - &data.commit->object.oid, "", - &lm->rev.diffopt); + &c->object.oid, + "", &lm->rev.diffopt); diff_flush(&lm->rev.diffopt); + goto cleanup; + } - break; + /* + * Otherwise, make sure that 'c' isn't reachable from anything + * in the '--not' queue. + */ + repo_parse_commit(lm->rev.repo, c); + + while (not_queue.nr) { + struct commit_list *np; + struct commit *n = prio_queue_get(¬_queue); + + repo_parse_commit(lm->rev.repo, n); + + for (np = n->parents; np; np = np->next) { + if (!(np->item->object.flags & PARENT2)) { + prio_queue_put(¬_queue, np->item); + np->item->object.flags |= PARENT2; + } + } + + if (commit_graph_generation(n) < commit_graph_generation(c)) + break; } - if (!maybe_changed_path(lm, data.commit)) - continue; + /* + * Look at each parent and pass on each path that's TREESAME + * with that parent. Stop early when no active paths remain. + */ + for (p = c->parents, parent_i = 0; p; p = p->next, parent_i++) { + process_parent(lm, &queue, + c, active_c, + p->item, parent_i); + + if (bitmap_is_empty(active_c)) + break; + } + + /* + * Paths that remain active, or not TREESAME with any parent, + * were changed by 'c'. + */ + if (!bitmap_is_empty(active_c)) { + data.commit = c; + for (size_t i = 0; i < lm->all_paths_nr; i++) { + if (bitmap_get(active_c, i)) + mark_path(lm->all_paths[i], NULL, &data); + } + } - log_tree_commit(&lm->rev, data.commit); +cleanup: + active_paths_free(lm, c); } + if (hashmap_get_size(&lm->paths)) + BUG("paths remaining beyond boundary in last-modified"); + + clear_prio_queue(¬_queue); + clear_prio_queue(&queue); + clear_active_paths_for_commit(&lm->active_paths); + bitmap_free(lm->scratch); + return 0; } static int last_modified_init(struct last_modified *lm, struct repository *r, const char *prefix, int argc, const char **argv) { + struct hashmap_iter iter; + struct last_modified_entry *ent; + hashmap_init(&lm->paths, last_modified_entry_hashcmp, NULL, 0); repo_init_revisions(r, &lm->rev, prefix); @@ -280,6 +493,13 @@ static int last_modified_init(struct last_modified *lm, struct repository *r, if (populate_paths_from_revs(lm) < 0) return error(_("unable to setup last-modified")); + CALLOC_ARRAY(lm->all_paths, hashmap_get_size(&lm->paths)); + lm->all_paths_nr = 0; + hashmap_for_each_entry(&lm->paths, &iter, ent, hashent) { + ent->diff_idx = lm->all_paths_nr++; + lm->all_paths[ent->diff_idx] = ent->path; + } + return 0; } diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh index a37dc8885b60ca..4719c20844ee8d 100755 --- a/ci/install-dependencies.sh +++ b/ci/install-dependencies.sh @@ -110,7 +110,7 @@ macos-*) # Uncomment this block if you want to run `git p4` tests: # mkdir -p "$CUSTOM_PATH" - # wget -q "$P4WHENCE/bin.macosx1015x86_64/helix-core-server.tgz" && + # wget -q "$P4WHENCE/bin.macosx12arm64/helix-core-server.tgz" && # tar -xf helix-core-server.tgz -C "$CUSTOM_PATH" p4 p4d && # sudo xattr -d com.apple.quarantine "$CUSTOM_PATH/p4" "$CUSTOM_PATH/p4d" 2>/dev/null || true # rm helix-core-server.tgz diff --git a/object.h b/object.h index 8c3c1c46e1bf04..fa504a09c0a48d 100644 --- a/object.h +++ b/object.h @@ -75,6 +75,7 @@ void object_array_init(struct object_array *array); * http-push.c: 11-----14 * commit-graph.c: 15 * commit-reach.c: 16-----19 + * builtin/last-modified.c: 1617 * sha1-name.c: 20 * list-objects-filter.c: 21 * bloom.c: 2122 diff --git a/po/bg.po b/po/bg.po index d45d363b20cbc0..047febfc82b18f 100644 --- a/po/bg.po +++ b/po/bg.po @@ -239,7 +239,11 @@ # score оценка за съвпадение # raw необработен # mbox файл с поща -# +# cost цена +# nominated отбелязан +# initial branch първоначален клон +# garbage повредени данни +# keep file файл за запазване на директория # # ------------------------ # „$var“ - може да не сработва за shell има gettext и eval_gettext - проверка - намират се лесно по „$ @@ -266,17 +270,17 @@ # for i in `sort -u FILES`; do cnt=`grep $i FILES | wc -l`; echo $cnt $i ;done | sort -n msgid "" msgstr "" -"Project-Id-Version: git 2.48\n" +"Project-Id-Version: git v2.52.0-rc1\n" "Report-Msgid-Bugs-To: Git Mailing List \n" -"POT-Creation-Date: 2025-08-13 22:06+0200\n" -"PO-Revision-Date: 2025-08-13 22:07+0200\n" +"POT-Creation-Date: 2025-11-06 23:58+0000\n" +"PO-Revision-Date: 2025-11-09 18:23+0100\n" "Last-Translator: Alexander Shopov \n" "Language-Team: Bulgarian \n" -"Language: bg\n" +"Language: bg\\n\"\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: Plural-Forms: nplurals=2; plural=(n != 1);\n" #, c-format msgid "%s cannot be negative" @@ -821,21 +825,24 @@ msgid "Nothing was applied.\n" msgstr "Нищо не е приложено.\n" msgid "" -"j - leave this hunk undecided, see next undecided hunk\n" -"J - leave this hunk undecided, see next hunk\n" -"k - leave this hunk undecided, see previous undecided hunk\n" -"K - leave this hunk undecided, see previous hunk\n" +"j - go to the next undecided hunk, roll over at the bottom\n" +"J - go to the next hunk, roll over at the bottom\n" +"k - go to the previous undecided hunk, roll over at the top\n" +"K - go to the previous hunk, roll over at the top\n" "g - select a hunk to go to\n" "/ - search for a hunk matching the given regex\n" "s - split the current hunk into smaller hunks\n" "e - manually edit the current hunk\n" -"p - print the current hunk, 'P' to use the pager\n" +"p - print the current hunk\n" +"P - print the current hunk using the pager\n" "? - print help\n" msgstr "" -"j — без решение за парчето, към следващото парче без решение\n" -"J — без решение за парчето, към следващото парче\n" -"k — без решение за парчето, към предишното парче без решение\n" -"K — без решение за парчето, към предишното парче\n" +"j — без решение за парчето, към следващото парче без решение, превъртане " +"след края\n" +"J — без решение за парчето, към следващото парче, превъртане след края\n" +"k — без решение за парчето, към предишното парче без решение, превъртане " +"след началото\n" +"K — без решение за парчето, към предишното парче, превъртане след началото\n" "g — избор към кое парче да се премине\n" "/ — търсене на парче, напасващо към даден регулярен израз\n" "s — разделяне на текущото парче на по-малки\n" @@ -848,11 +855,11 @@ msgstr "" msgid "Only one letter is expected, got '%s'" msgstr "Очаква се само един знак, а не „%s“" -msgid "No previous hunk" -msgstr "Няма друго парче преди това" +msgid "No other hunk" +msgstr "Няма друго парче" -msgid "No next hunk" -msgstr "Няма друго парче след това" +msgid "No other undecided hunk" +msgstr "Няма друго парче без решение" msgid "No other hunks to goto" msgstr "Няма други парчета" @@ -2683,15 +2690,20 @@ msgid "Restrict the missing objects to the current sparse-checkout" msgstr "Ограничаване на липсващите обекти до текущото частично хранилище" msgid "" -"git bisect start [--term-(new|bad)= --term-(old|good)=] [--no-" -"checkout] [--first-parent] [ [...]] [--] [...]" +"git bisect start [--term-(bad|new)= --term-(good|old)=]\n" +" [--no-checkout] [--first-parent] [ [...]] [--] " +"[...]" msgstr "" -"git bisect start [--term-(new,bad)=УПРАВЛЯВАЩА_ДУМА --term-" -"(old,good)=УПРАВЛЯВАЩА_ДУМА] [--no-checkout] [--first-parent] [ЛОШО " -"[ДОБРО…]] [--] [ШАБЛОН_ЗА_ПЪТИЩА…]" +"git bisect start [--term-(bad|new)=УПРАВЛЯВАЩА_ДУМА --term-(good|" +"old)=УПРАВЛЯВАЩА_ДУМА]\n" +" [--no-checkout] [--first-parent] [ЛОШО [ДОБРО…]]\n" +" [--] [ШАБЛОН_ЗА_ПЪТИЩА…]" -msgid "git bisect (good|bad) [...]" -msgstr "git bisect (good|bad) [ВЕРСИЯ…]" +msgid "git bisect (bad|new|) []" +msgstr "git bisect (bad|new|УПРАВЛЯВАЩА_ДУМА) [ВЕРСИЯ]" + +msgid "git bisect (good|old|) [...]" +msgstr "git bisect (good|old|УПРАВЛЯВАЩА_ДУМА) [ВЕРСИЯ…]" msgid "git bisect skip [(|)...]" msgstr "git bisect skip [(ВЕРСИЯ|ДИАПАЗОН)…]" @@ -2993,7 +3005,7 @@ msgstr "" "изключена)" msgid "show work cost statistics" -msgstr "извеждане на статистика за извършените действия" +msgstr "извеждане на статистика за цената на извършените действия" msgid "force progress reporting" msgstr "извеждане на напредъка" @@ -6000,6 +6012,14 @@ msgstr "обходени са %lu подавания\n" msgid "found %i tags; gave up search at %s\n" msgstr "открити са %i етикета. Търсенето приключи при „%s“\n" +#, c-format +msgid "cannot search for blob '%s' on an unborn branch" +msgstr "обектът-BLOB „%s“ не може да се търси в неродѐн клон" + +#, c-format +msgid "blob '%s' not reachable from HEAD" +msgstr "обектът-BLOB „%s“ е недостежим от HEAD" + #, c-format msgid "describe %s\n" msgstr "описание на „%s“\n" @@ -6143,6 +6163,9 @@ msgstr "неправилна опция: %s" msgid "%s...%s: no merge base" msgstr "„%s..%s“: липсва база за сливане" +msgid "cannot come back to cwd" +msgstr "процесът не може да се върне към предишната работна директория" + msgid "Not a git repository" msgstr "Не е хранилище на Git" @@ -6254,9 +6277,139 @@ msgstr "не е зададена команда за „--extcmd=КОМАНДА msgid "git fast-export []" msgstr "git fast-export [ОПЦИЯ_ЗА_СПИСЪКА_С_ВЕРСИИ…]" -msgid "Error: Cannot export nested tags unless --mark-tags is specified." +#, c-format +msgid "unknown %s mode: %s" +msgstr "непознат режим за „%s“: %s" + +#, c-format +msgid "unknown tag-of-filtered mode: %s" +msgstr "непознат режим за „tag-of-filtered“: „%s“" + +#, c-format +msgid "unknown reencoding mode: %s" +msgstr "непознат режим за прекодиране: %s" + +#, c-format +msgid "could not read blob %s" +msgstr "обектът-BLOB не може да се прочете: %s" + +#, c-format +msgid "oid mismatch in blob %s" +msgstr "разлика в идентификатор в BLOB „%s“" + +#, c-format +msgid "could not write blob '%s'" +msgstr "обектът-BLOB „%s“ не може да се запази" + +#, c-format +msgid "unexpected comparison status '%c' for %s, %s" +msgstr "неочакван изходен код при сравнение '%c' за %s, %s" + +msgid "none" +msgstr "нищо" + +#, c-format +msgid "could not find author in commit %s" +msgstr "липсва автор в подаването „%s“" + +#, c-format +msgid "could not find committer in commit %s" +msgstr "липсва подаващ в подаването „%s“" + +#, c-format +msgid "" +"encountered commit-specific encoding %.*s in commit %s; use --reencode=[yes|" +"no] to handle it" +msgstr "" +"получено е кодиране „%.*s“ специфично за подаване„%s“ — ползвайте „--" +"reencode=[yes|no]“ за обработка" + +#, c-format +msgid "encountered signed commit %s; use --signed-commits= to handle it" +msgstr "" +"получено е подписано подаване „%s“ — ползвайте „--signed-commits=РЕЖИМ“ за " +"обработка" + +#, c-format +msgid "exporting % signature(s) for commit %s" +msgstr "изнасят се % подпис(а) за подаването „%s“" + +#, c-format +msgid "stripping signature(s) from commit %s" +msgstr "пропускане на подписите към подаването „%s“" + +#, c-format +msgid "" +"omitting tag %s,\n" +"since tags of trees (or tags of tags of trees, etc.) are not supported." +msgstr "" +"пропускане на етикета „%s“,\n" +"защото не се поддържат етикети на дървета (както и етикети на етикети на " +"дървета и т.н.)" + +#, c-format +msgid "could not read tag %s" +msgstr "етикетът „%s“ не може да се прочете" + +#, c-format +msgid "encountered signed tag %s; use --signed-tags= to handle it" msgstr "" -"ГРЕШКА: непреките етикети не се изнасят, освен ако не зададете „--mark-tags“." +"получен е подписан етикет „%s“ — ползвайте „--signed-tags=РЕЖИМ“ за обработка" + +#, c-format +msgid "exporting signed tag %s" +msgstr "изнасяне на подписан етикет „%s“" + +#, c-format +msgid "stripping signature from tag %s" +msgstr "пропускане на подписите към етикета „%s“" + +#, c-format +msgid "" +"tag %s tags unexported object; use --tag-of-filtered-object= to handle " +"it" +msgstr "" +"етикетът „%s“ сочи към обект, който не се изнася — ползвайте „--tag-of-" +"filtered-object=РЕЖИМ“ за обработка" + +msgid "cannot export nested tags unless --mark-tags is specified." +msgstr "непреките етикети не се изнасят, освен ако не зададете „--mark-tags“." + +#, c-format +msgid "tag %s points nowhere?" +msgstr "етикетът „%s“ не сочи наникъде" + +#, c-format +msgid "%s: unexpected object of type %s, skipping." +msgstr "„%s“: неочакван обект-%s — прескача се." + +#, c-format +msgid "tag points to object of unexpected type %s, skipping." +msgstr "етикетът сочи към обект от неправилен вид „%s“, пропуска се." + +#, c-format +msgid "unable to open marks file %s for writing." +msgstr "файлът с маркерите „%s“ не може да се отвори за запис." + +#, c-format +msgid "unable to write marks file %s." +msgstr "файлът с маркерите „%s“ не може да се запази." + +#, c-format +msgid "corrupt mark line: %s" +msgstr "грешен ред за маркер: %s" + +#, c-format +msgid "object not found: %s" +msgstr "обектът „%s“ липсва" + +#, c-format +msgid "not a commit? can't happen: %s" +msgstr "не е подаване? Това не трябва да се случва: „%s“" + +#, c-format +msgid "object %s already has a mark" +msgstr "обектът „%s“ вече има маркер" msgid "--anonymize-map token cannot be empty" msgstr "опцията „--anonymize-map“ изисква аргумент" @@ -6326,28 +6479,458 @@ msgid "label tags with mark ids" msgstr "задаване на идентификатори на маркери на етикетите" #, c-format -msgid "Missing from marks for submodule '%s'" -msgstr "Липсват маркери „от“ за подмодула „%s“" +msgid "can't write crash report %s" +msgstr "докладът за забиване на програмата не може де се запази: „%s“" + +#, c-format +msgid "fast-import: dumping crash report to %s\n" +msgstr "fast-import: докладът за грешка се извежда в „%s“\n" + +#, c-format +msgid "mark :% not declared" +msgstr "маркер :% не е обявен" + +#, c-format +msgid "invalid attempt to create duplicate branch: %s" +msgstr "неправилен опит за създаване на повтарящ се клон: „%s“" + +#, c-format +msgid "branch name doesn't conform to Git standards: %s" +msgstr "името на клон не отговаря на стандарта на Git: „%s“" + +msgid "internal consistency error creating the index" +msgstr "вътрешна грешка за съвместимостта на данните при създаване на индекса" + +msgid "cannot create keep file" +msgstr "файлът за запазване на директория не може да се създаде" + +msgid "failed to write keep file" +msgstr "файлът за запазване на директория не може да се запази" + +msgid "cannot store pack file" +msgstr "пакетният файл не може да се съхрани" + +msgid "cannot store index file" +msgstr "файлът за индекса не може да се съхрани" + +#, c-format +msgid "failed seeking to start of '%s'" +msgstr "не може да търси началото на „%s“" + +#, c-format +msgid "core Git rejected index %s" +msgstr "Git отхвърли индекса „%s“" + +msgid "cannot truncate pack to skip duplicate" +msgstr "пакетът не може да се отреже за пропускане на повторенията" + +#, c-format +msgid "EOF in data (% bytes remaining)" +msgstr "неочакван край на данни (EOF), а остават още % байта" + +#, c-format +msgid "unexpected deflate failure: %d" +msgstr "неочаквана грешка от „deflate“: %d" + +#, c-format +msgid "not a tree: %s" +msgstr "не е дърво: %s" + +#, c-format +msgid "can't load tree %s" +msgstr "дървото „%s“ не може да се зареди" + +#, c-format +msgid "corrupt mode in %s" +msgstr "повреден обект в „%s“" + +msgid "root cannot be a non-directory" +msgstr "началната директория не може да не е директория" + +msgid "empty path component found in input" +msgstr "празен компонент за път на входа" + +msgid "non-directories cannot have subtrees" +msgstr "обекти, които не са директории, не може да имат поддървета" + +#, c-format +msgid "dropping %s since it would point to itself (i.e. to %s)" +msgstr "„%s“ се прескача, защото ще сочи себе си (т.е. „%s“)" + +#, c-format +msgid "branch %s is missing commits." +msgstr "липсват подавания в клона „%s“." + +#, c-format +msgid "not updating %s (new tip %s does not contain %s)" +msgstr "„%s“ не се обновява (новият връх „%s“ не съдържа „%s“)" + +#, c-format +msgid "unable to create leading directories of %s" +msgstr "родителските директории на „%s“ не може да бъдат създадени" + +#, c-format +msgid "unable to write marks file %s" +msgstr "файлът с маркерите „%s“ не може да се запише" + +#, c-format +msgid "unable to write marks file %s: %s" +msgstr "файлът с маркерите „%s“ не може да се запише: %s" + +#, c-format +msgid "unable to write file %s" +msgstr "файлът „%s“ не може да се запише" + +#, c-format +msgid "expected 'data n' command, found: %s" +msgstr "очаква се команда „data n“, а бе получена: „%s“" + +#, c-format +msgid "EOF in data (terminator '%s' not found)" +msgstr "Край на данни (EOF), липсва „%s“" + +msgid "data is too large to use in this context" +msgstr "данните са прекалено големи за този контекст" + +#, c-format +msgid "EOF in data (%lu bytes remaining)" +msgstr "получен е край на файл (EOF) в данните, а остават още %lu байта" + +#, c-format +msgid "missing < in ident string: %s" +msgstr "липсва „<“ в низа за идентичността: %s" + +#, c-format +msgid "missing space before < in ident string: %s" +msgstr "липсва интервал пред „<“ в низа за идентичността: %s\"" + +#, c-format +msgid "missing > in ident string: %s" +msgstr "липсва „>“ в низа за идентичността: %s" + +#, c-format +msgid "missing space after > in ident string: %s" +msgstr "липсва интервал след „>“ в низа за идентичността: %s" + +#, c-format +msgid "invalid raw date \"%s\" in ident: %s" +msgstr "грешна неформатирана дата „%s“ в идентичността: %s" + +#, c-format +msgid "invalid rfc2822 date \"%s\" in ident: %s" +msgstr "дата във формат различен от rfc2822 „%s“ в идентичността: %s" + +#, c-format +msgid "date in ident must be 'now': %s" +msgstr "датата в идентичността трябва да е „now“ (сега): %s" + +#, c-format +msgid "too large fanout (%u)" +msgstr "прекалено голям откъс за разпределение (%u)" + +#, c-format +msgid "failed to remove path %s" +msgstr "пътят „%s“ не може да се изтрие" + +#, c-format +msgid "no value after ':' in mark: %s" +msgstr "липсва стойност след „:“ в маркера: „%s“" + +#, c-format +msgid "garbage after mark: %s" +msgstr "повредени данни след маркер: %s" + +#, c-format +msgid "missing space after mark: %s" +msgstr "липсва интервал след маркера: „%s“" + +#, c-format +msgid "invalid %s: %s" +msgstr "неправилен %s: „%s“" + +#, c-format +msgid "NUL in %s: %s" +msgstr "NUL в %s: %s" + +#, c-format +msgid "garbage after %s: %s" +msgstr "повредени данни след %s: „%s“" + +#, c-format +msgid "missing space after %s: %s" +msgstr "липсва интервал след %s: „%s“" + +#, c-format +msgid "corrupt mode: %s" +msgstr "неправилен режим: „%s“" + +#, c-format +msgid "invalid dataref: %s" +msgstr "неправилен указател към данни: „%s“" + +#, c-format +msgid "missing space after SHA1: %s" +msgstr "липсва интервал след SHA1: „%s“" + +#, c-format +msgid "Git links cannot be specified 'inline': %s" +msgstr "връзките на Git не може да се указват вътре („inline“): %s" + +#, c-format +msgid "not a commit (actually a %s): %s" +msgstr "не е подаване, а е %s: %s" + +#, c-format +msgid "directories cannot be specified 'inline': %s" +msgstr "директориите не може да се указват вътре („inline“): %s" + +#, c-format +msgid "%s not found: %s" +msgstr "файлът „%s“ липсва: %s" + +msgid "tree" +msgstr "дърво" + +#, c-format +msgid "not a %s (actually a %s): %s" +msgstr "не е %s, а е %s: %s" + +#, c-format +msgid "path %s not in branch" +msgstr "пътят „%s“ не е в клон" + +msgid "can't add a note on empty branch." +msgstr "не може да се добави бележка към празен клон." + +#, c-format +msgid "mark :% not a commit" +msgstr "маркер :% не е подаване" + +#, c-format +msgid "not a valid commit: %s" +msgstr "не е подаване: „%s“" + +#, c-format +msgid "invalid ref name or SHA1 expression: %s" +msgstr "неправилно име на указател или израз с SHA1: %s" + +#, c-format +msgid "not a blob (actually a %s): %s" +msgstr "не е обект-BLOB, а е %s: %s" + +#, c-format +msgid "blob not found: %s" +msgstr "обектът-BLOB липсва: %s" + +#, c-format +msgid "the commit %s is corrupt" +msgstr "подаването „%s“ е повредено" + +#, c-format +msgid "can't create a branch from itself: %s" +msgstr "не може да се създаде клон от него самия: „%s“" + +#, c-format +msgid "" +"expected gpgsig format: 'gpgsig ', got 'gpgsig " +"%s'" +msgstr "" +"очакваше се gpgsig във формат: „gpgsig АЛГОРИТЪМ_ЗА_КОНТРОЛНА_СУМА " +"ФОРМАТ_НА_ПОДПИСА“, а не „gpgsig %s“" + +#, c-format +msgid "unknown git hash algorithm in gpgsig: '%s'" +msgstr "непознат алгоритъм на git за контролни суми в gpgsig: „%s“" + +#, c-format +msgid "invalid signature format in gpgsig: '%s'" +msgstr "неправилен формат на подпис в gpgsig: %s" + +msgid "'unknown' signature format in gpgsig" +msgstr "непознат („unknown“) формат на подпис в gpgsig" + +#, c-format +msgid "multiple %s signatures found, ignoring additional signature" +msgstr "открити са много подписи „%s“. Допълнителните се прескачат" + +msgid "parse_one_signature() returned unknown hash algo" +msgstr "„parse_one_signature()“ върна непознат алгоритъм за контролна сума" + +msgid "expected committer but didn't get one" +msgstr "очакваше се подаващ, но такъв липсва" + +msgid "encountered signed commit; use --signed-commits= to handle it" +msgstr "" +"получено е подписано подаване — ползвайте „--signed-commits=РЕЖИМ“ за " +"обработка" + +msgid "stripping a commit signature" +msgstr "пропускане на подпис на подаване" + +msgid "importing a commit signature verbatim" +msgstr "дословно внасяне на подпис на подаване" + +msgid "encountered signed tag; use --signed-tags= to handle it" +msgstr "" +"получен е подписан етикет — ползвайте „--signed-tags=РЕЖИМ“ за обработка" + +#, c-format +msgid "importing a tag signature verbatim for tag '%s'" +msgstr "дословно внасяне на подпис на етикет за „%s“" + +#, c-format +msgid "stripping a tag signature for tag '%s'" +msgstr "пропускане на подписа на етикета „%s“" + +#, c-format +msgid "expected 'from' command, got '%s'" +msgstr "очаква се команда „from“, а бе получена: „%s“" + +msgid "can't tag an empty branch." +msgstr "не може да се създаде етикет за празен клон." + +#, c-format +msgid "not a valid object: %s" +msgstr "неправилен обект: „%s“" + +msgid "write to frontend failed" +msgstr "неуспешен запис към интерфейса" + +#, c-format +msgid "can't read object %s" +msgstr "обектът „%s“ не може да се прочете" + +#, c-format +msgid "object %s is a %s but a blob was expected." +msgstr "обектът „%s“ е %s, а не BLOB, какъвто се очакваше." + +#, c-format +msgid "not a mark: %s" +msgstr "не е маркер: „%s“" + +#, c-format +msgid "unknown mark: %s" +msgstr "непознат маркер: „%s“" + +#, c-format +msgid "garbage after SHA1: %s" +msgstr "повредени данни след SHA1: %s" + +#, c-format +msgid "not a tree-ish: %s" +msgstr "не е дърво: „%s“" + +#, c-format +msgid "can't load object %s" +msgstr "обектът за „%s“ не може да се зареди" + +#, c-format +msgid "invalid SHA1 in tag: %s" +msgstr "неправилна сума SHA1 в етикет: %s" + +#, c-format +msgid "invalid SHA1 in commit: %s" +msgstr "неправилна сума SHA1 в подаване: %s" + +#, c-format +msgid "missing from marks for submodule '%s'" +msgstr "липсват маркери „от“ за подмодула „%s“" + +#, c-format +msgid "missing to marks for submodule '%s'" +msgstr "липсват маркери „до“ за подмодула „%s“" #, c-format -msgid "Missing to marks for submodule '%s'" -msgstr "Липсват маркери „до“ за подмодула „%s“" +msgid "missing space after tree-ish: %s" +msgstr "след клона липсва интервал: %s" #, c-format -msgid "Expected 'mark' command, got %s" -msgstr "Очаква се команда „mark“, а бе получена: „%s“" +msgid "not in a commit: %s" +msgstr "не е в подаване: „%s“" #, c-format -msgid "Expected 'to' command, got %s" -msgstr "Очаква се команда „to“, а бе получена: „%s“" +msgid "expected 'mark' command, got %s" +msgstr "очаква се команда „mark“, а бе получена: „%s“" -msgid "Expected format name:filename for submodule rewrite option" +#, c-format +msgid "expected 'to' command, got %s" +msgstr "очаква се команда „to“, а бе получена: „%s“" + +msgid "only one import-marks command allowed per stream" +msgstr "" +"след поток е позволена само една команда за внасяне на маркери (import-marks)" + +#, c-format +msgid "unknown --date-format argument %s" +msgstr "неправилен аргумент за „--date-format“: %s" + +#, c-format +msgid "%s: argument must be a non-negative integer" +msgstr "%s: аргументът трябва да е неотрицателен" + +#, c-format +msgid "--depth cannot exceed %u" +msgstr "дълбочината към „--depth“ не може да превишава %u" + +#, c-format +msgid "--cat-blob-fd cannot exceed %d" +msgstr "аргументът към „--cat-blob-fd“ не може да превишава %d" + +msgid "expected format name:filename for submodule rewrite option" msgstr "опцията за презапис на подмодул изисква формат: име:име_на_файл" +#, c-format +msgid "max-pack-size is now in bytes, assuming --max-pack-size=%lum" +msgstr "" +"минималният максимален размер на пакетите (max-pack-size) вече е в байтове. " +"Приема се, че сте задали „--max-pack-size=%lum“" + +msgid "minimum max-pack-size is 1 MiB" +msgstr "минималният максимален размер на пакетите (max-pack-size) е 1 MiB" + +#, c-format +msgid "unknown --signed-commits mode '%s'" +msgstr "непознат режим „%s“ за опцията „--signed-commits“" + +#, c-format +msgid "unknown --signed-tags mode '%s'" +msgstr "непознат режим „%s“ за опцията „--signed-tags“" + #, c-format msgid "feature '%s' forbidden in input without --allow-unsafe-features" msgstr "„%s“ изисква изричното задаване на опцията „--allow-unsafe-features“" +#, c-format +msgid "got feature command '%s' after data command" +msgstr "получена е команда „%s“ след команда за данни" + +#, c-format +msgid "this version of fast-import does not support feature %s." +msgstr "тази версия на бързото внасяне (fast-import) не поддържа „%s“." + +#, c-format +msgid "got option command '%s' after data command" +msgstr "след командата е получена команда за опция „%s“" + +#, c-format +msgid "this version of fast-import does not support option: %s" +msgstr "тази версия на бързото внасяне (fast-import) не поддържа опцията „%s“" + +#, c-format +msgid "unknown option %s" +msgstr "непозната опция: „%s“" + +#, c-format +msgid "unknown option --%s" +msgstr "непозната опция „--%s“" + +#, c-format +msgid "unsupported command: %s" +msgstr "неподдържана команда: „%s“" + +msgid "stream ends early" +msgstr "ранен край на поток" + #, c-format msgid "Lockfile created but not reported: %s" msgstr "Заключващият файл е създаден, но не е докладван: „%s“" @@ -6496,6 +7079,39 @@ msgstr "" "ще изключи предупреждението, докато отдалеченият указател HEAD не\n" "започне да сочи нещо друго." +msgid "" +"You're on a case-insensitive filesystem, and the remote you are\n" +"trying to fetch from has references that only differ in casing. It\n" +"is impossible to store such references with the 'files' backend. You\n" +"can either accept this as-is, in which case you won't be able to\n" +"store all remote references on disk. Or you can alternatively\n" +"migrate your repository to use the 'reftable' backend with the\n" +"following command:\n" +"\n" +" git refs migrate --ref-format=reftable\n" +"\n" +"Please keep in mind that not all implementations of Git support this\n" +"new format yet. So if you use tools other than Git to access this\n" +"repository it may not be an option to migrate to reftables.\n" +msgstr "" +"Ползвате файлова система, която не различава главни от малки букви,\n" +"а отдалеченото хранилище, от което се опитвате да доставите обекти,\n" +"съдържа указатели, които се различават само по регистъра си.\n" +"Невъзможно е да запазите всички такива указатели със съхраняване\n" +"базирано на файлове („files“). Имате два избора:\n" +"\n" +" ⁃ или приемате положението и факта, че не може да съхраните\n" +" всички указатели;\n" +" ⁃ или мигрирайте хранилището си да съхранява указатели чрез\n" +" таблица („reftable“) с командата:\n" +"\n" +" git refs migrate --ref-format=reftable\n" +"\n" +"Не всички реализации на Git поддържат новия формат. Затова, ако ще\n" +"ползвате други инструменти, за да достъпвате хранилището, миграцията\n" +"към съхраняването на указателите чрез таблица може да не е подходящо\n" +"решение за вас.\n" + #, c-format msgid "" "some local refs could not be updated; try running\n" @@ -6743,21 +7359,6 @@ msgstr "използване на това ИМЕ вместо истински msgid "file to read from" msgstr "файл, от който да се чете" -msgid "git for-each-ref [] []" -msgstr "git for-each-ref [ОПЦИЯ…] [ШАБЛОН]" - -msgid "git for-each-ref [--points-at ]" -msgstr "git for-each-ref [--points ОБЕКТ]" - -msgid "git for-each-ref [--merged []] [--no-merged []]" -msgstr "git for-each-ref [--merged [ПОДАВАНЕ]] [--no-merged [ПОДАВАНЕ]]" - -msgid "git for-each-ref [--contains []] [--no-contains []]" -msgstr "git for-each-ref [--contains [ПОДАВАНЕ]] [--no-contains [ПОДАВАНЕ]]" - -msgid "git for-each-ref [--start-after ]" -msgstr "git for-each-ref [--start-after МАРКЕР]" - msgid "quote placeholders suitably for shells" msgstr "цитиране подходящо за командни интерпретатори на обвивката" @@ -6812,6 +7413,9 @@ msgstr "непознат аргумент към опцията „--stdin“" msgid "cannot use --start-after with patterns" msgstr "опцията „--start-after“ е несъвместима със задаването на шаблони" +msgid "git for-each-ref " +msgstr "git for-each-ref" + msgid "git for-each-repo --config= [--] " msgstr "git for-each-repo --config=НАСТРОЙКА [--] АРГУМЕНТ…" @@ -7294,6 +7898,9 @@ msgstr "" "задачата „incremental-repack“ се прескача, защото настройката " "„core.multiPackIndex“ е изключена" +msgid "failed to perform geometric repack" +msgstr "неуспешно геометрично препакетиране" + #, c-format msgid "task '%s' failed" msgstr "неуспешно изпълнение на задачата „%s“" @@ -7302,6 +7909,10 @@ msgstr "неуспешно изпълнение на задачата „%s“" msgid "lock file '%s' exists, skipping maintenance" msgstr "заключващият файл „%s“ съществува. Действието се прескача" +#, c-format +msgid "unknown maintenance strategy: '%s'" +msgstr "непозната стратегия за поддръжка: „%s“" + #, c-format msgid "'%s' is not a valid task" msgstr "„%s“ не е правилна задача" @@ -8187,6 +8798,29 @@ msgstr "опцията „--trailer“ е несъвместима с „--only- msgid "no input file given for in-place editing" msgstr "не е зададен входен файл за редактиране на място" +msgid "last-modified can only operate on one tree at a time" +msgstr "командата „last-modified“ работи само с по едно дърво" + +#, c-format +msgid "unknown last-modified argument: %s" +msgstr "неправилен аргумент за командата „last-modified“: %s" + +msgid "unable to setup last-modified" +msgstr "командата „last-modified“ не може да се настрои" + +msgid "" +"git last-modified [--recursive] [--show-trees] [] [[--] " +"...]" +msgstr "" +"git last-modified [--recursive] [--show-trees] [ДИАПАЗОН_НА_ВЕРСИИТЕ] [[--] " +"ПЪТ…]" + +msgid "recurse into subtrees" +msgstr "рекурсивно обхождане поддърветата" + +msgid "show tree entries when recursing into subtrees" +msgstr "извеждане на дърветата при рекурсивното обхождане на поддърветата" + msgid "git log [] [] [[--] ...]" msgstr "git log [ОПЦИЯ…] [ДИАПАЗОН_НА_ВЕРСИИТЕ] [[--] ПЪТ…]" @@ -8225,6 +8859,22 @@ msgstr "" msgid "-L: cannot be used with pathspec" msgstr "опцията „-LДИАПАЗОН:ФАЙЛ“ не може да се ползва с шаблон за пътища" +msgid "" +"\n" +"hint: You can replace 'git whatchanged ' with:\n" +"hint:\tgit log --raw --no-merges\n" +"hint: Or make an alias:\n" +"hint:\tgit config set --global alias.whatchanged 'log --raw --no-merges'\n" +"\n" +msgstr "" +"\n" +"ПОДСКАЗКА: Може да замените „git whatchanged ОПЦИЯ…“ с:\n" +"ПОДСКАЗКА: git log ОПЦИЯ… --raw --no-merges\n" +"ПОДСКАЗКА: А може да създадете и псевдоним:\n" +"ПОДСКАЗКА: git config set --global alias.whatchanged 'log --raw --no-" +"merges'\n" +"\n" + #, c-format msgid "git show %s: bad file" msgstr "git show %s: повреден файл" @@ -8680,9 +9330,6 @@ msgstr "git ls-tree [ОПЦИЯ…] УКАЗАТЕЛ_КЪМ_ДЪРВО [ПЪТ msgid "only show trees" msgstr "извеждане само на дървета" -msgid "recurse into subtrees" -msgstr "рекурсивно обхождане поддърветата" - msgid "show trees when recursing" msgstr "извеждане на дърветата при рекурсивното обхождане" @@ -8837,10 +9484,6 @@ msgstr "обектът „%s“ не съществува" msgid "Could not write object file" msgstr "Файлът с обекти не може да се запише" -#, c-format -msgid "unknown option %s" -msgstr "непозната опция: „%s“" - #, c-format msgid "could not parse object '%s'" msgstr "неуспешен анализ на обекта „%s“" @@ -9012,10 +9655,6 @@ msgstr "не може да се извърши скатаване" msgid "stash failed" msgstr "неуспешно скатаване" -#, c-format -msgid "not a valid object: %s" -msgstr "неправилен обект: „%s“" - msgid "read-tree failed" msgstr "неуспешно прочитане на обект-дърво" @@ -9954,7 +10593,7 @@ msgid "" "expected edge object ID, got garbage:\n" " %s" msgstr "" -"очаква се идентификатор на краен обект, а не:\n" +"очаква се идентификатор на краен обект, а не повредени данни:\n" " %s" #, c-format @@ -9962,7 +10601,7 @@ msgid "" "expected object ID, got garbage:\n" " %s" msgstr "" -"очаква се идентификатор на обект, а не:\n" +"очаква се идентификатор на обект, а не повредени данни:\n" " %s" msgid "could not load cruft pack .mtimes" @@ -10205,27 +10844,8 @@ msgstr "" "Общо: % (разлики: %), преизползвани: % (разлики: " "%), преизползвани при пакетиране: % (от %)" -msgid "" -"git pack-refs [--all] [--no-prune] [--auto] [--include ] [--exclude " -"]" -msgstr "" -"git pack-refs [--all] [--no-prune] [--auto] [--include ШАБЛОН] [--exclude " -"ШАБЛОН]" - -msgid "pack everything" -msgstr "пакетиране на всичко" - -msgid "prune loose refs (default)" -msgstr "окастряне на недостижимите указатели (стандартно)" - -msgid "auto-pack refs as needed" -msgstr "автоматично пакетиране на указателите при нужда" - -msgid "references to include" -msgstr "кои указатели да се включат" - -msgid "references to exclude" -msgstr "кои указатели да се прескочат" +msgid "git pack-refs " +msgstr "git pack-refs " msgid "git patch-id [--stable | --unstable | --verbatim]" msgstr "git patch-id [--stable|--unstable|--verbatim]" @@ -10757,6 +11377,10 @@ msgstr "git range-diff [ОПЦИЯ…] СТАР_ВРЪХ...НОВ_ВРЪХ" msgid "git range-diff [] " msgstr "git range-diff [ОПЦИЯ…] БАЗА СТАР_ВРЪХ НОВ_ВРЪХ" +#, c-format +msgid "invalid max-memory value: %s" +msgstr "неправилна стойност за максималната памет (max-memory): %s" + msgid "use simple diff colors" msgstr "използване на прости цветове за разликите" @@ -10766,6 +11390,12 @@ msgstr "бележки" msgid "passed to 'git log'" msgstr "подава се на командата „git log“" +msgid "size" +msgstr "размер" + +msgid "maximum memory for cost matrix (default 4G)" +msgstr "максимална памет за матрицата за цената (стандартно е 4G)" + msgid "only emit output related to the first range" msgstr "извеждане само на информацията за първия диапазон" @@ -11337,16 +11967,13 @@ msgstr "git reflog [show] [ОПЦИЯ…] [УКАЗАТЕЛ]" msgid "git reflog list" msgstr "git reflog list" -msgid "" -"git reflog expire [--expire=