aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/main.yml16
-rw-r--r--.gitlab-ci.yml51
-rw-r--r--Documentation/BreakingChanges.txt2
-rw-r--r--Documentation/CodingGuidelines58
-rw-r--r--Documentation/DecisionMaking.txt2
-rw-r--r--Documentation/RelNotes/2.47.0.txt40
-rw-r--r--Documentation/RelNotes/2.48.0.txt68
-rw-r--r--Documentation/asciidoc.conf20
-rw-r--r--Documentation/asciidoctor-extensions.rb87
-rw-r--r--Documentation/config/credential.txt8
-rw-r--r--Documentation/config/extensions.txt2
-rw-r--r--Documentation/config/gc.txt2
-rw-r--r--Documentation/config/reftable.txt8
-rw-r--r--Documentation/config/remote.txt12
-rw-r--r--Documentation/fetch-options.txt3
-rw-r--r--Documentation/git-checkout.txt8
-rw-r--r--Documentation/git-clone.txt81
-rw-r--r--Documentation/git-config.txt2
-rw-r--r--Documentation/git-init.txt35
-rw-r--r--Documentation/git-ls-remote.txt3
-rw-r--r--Documentation/git-maintenance.txt4
-rw-r--r--Documentation/git-merge-tree.txt12
-rw-r--r--Documentation/git-worktree.txt2
-rw-r--r--Documentation/gitformat-commit-graph.txt2
-rw-r--r--Documentation/gitprotocol-v2.txt4
-rw-r--r--Documentation/gitweb.txt2
-rw-r--r--Documentation/howto/maintain-git.txt61
-rw-r--r--Documentation/pull-fetch-param.txt7
-rw-r--r--Documentation/technical/platform-support.txt4
-rw-r--r--Documentation/urls.txt26
-rwxr-xr-xGIT-VERSION-GEN2
-rw-r--r--Makefile27
l---------RelNotes2
-rw-r--r--archive.c40
-rw-r--r--block-sha1/sha1.h2
-rw-r--r--bloom.c8
-rw-r--r--branch.c8
-rw-r--r--builtin/annotate.c20
-rw-r--r--builtin/checkout.c2
-rw-r--r--builtin/clone.c27
-rw-r--r--builtin/config.c4
-rw-r--r--builtin/difftool.c6
-rw-r--r--builtin/fetch-pack.c14
-rw-r--r--builtin/fetch.c3
-rw-r--r--builtin/fsmonitor--daemon.c7
-rw-r--r--builtin/gc.c189
-rw-r--r--builtin/help.c16
-rw-r--r--builtin/index-pack.c7
-rw-r--r--builtin/ls-remote.c1
-rw-r--r--builtin/pack-redundant.c40
-rw-r--r--builtin/pull.c11
-rw-r--r--builtin/push.c10
-rw-r--r--builtin/receive-pack.c5
-rw-r--r--builtin/repack.c57
-rw-r--r--builtin/revert.c17
-rw-r--r--builtin/send-pack.c3
-rw-r--r--builtin/sparse-checkout.c5
-rw-r--r--builtin/stash.c4
-rw-r--r--builtin/submodule--helper.c41
-rw-r--r--builtin/worktree.c16
-rw-r--r--bundle-uri.c18
-rw-r--r--cache-tree.c102
-rw-r--r--cache-tree.h2
-rwxr-xr-xci/install-dependencies.sh1
-rwxr-xr-xci/install-sdk.ps112
-rwxr-xr-xci/lib.sh18
-rw-r--r--combine-diff.c3
-rw-r--r--commit-graph.c1
-rw-r--r--commit.c3
-rw-r--r--compat/fsmonitor/fsm-listen-darwin.c6
-rw-r--r--compat/fsmonitor/fsm-listen-win32.c10
-rw-r--r--compat/regex/regexec.c2
-rw-r--r--compat/simple-ipc/ipc-shared.c5
-rw-r--r--compat/simple-ipc/ipc-unix-socket.c30
-rw-r--r--compat/simple-ipc/ipc-win32.c48
-rw-r--r--config.c15
-rw-r--r--connect.c1
-rw-r--r--contrib/completion/git-completion.bash4
-rwxr-xr-xcontrib/subtree/git-subtree.sh2
-rwxr-xr-xcontrib/subtree/t/t7900-subtree.sh2
-rw-r--r--credential.c30
-rw-r--r--csum-file.c18
-rw-r--r--diff-lib.c4
-rw-r--r--diff.c39
-rw-r--r--diff.h5
-rw-r--r--diffcore-break.c12
-rw-r--r--diffcore-order.c19
-rw-r--r--diffcore-pickaxe.c4
-rw-r--r--diffcore-rename.c3
-rw-r--r--diffcore-rotate.c3
-rw-r--r--diffcore.h10
-rw-r--r--dir.c6
-rw-r--r--git.c22
-rw-r--r--graph.c29
-rw-r--r--grep.c2
-rw-r--r--hash.h75
-rw-r--r--http-fetch.c16
-rw-r--r--http-push.c40
-rw-r--r--http-walker.c18
-rw-r--r--http.c16
-rw-r--r--http.h4
-rw-r--r--line-log.c85
-rw-r--r--log-tree.c37
-rw-r--r--log-tree.h1
-rw-r--r--loose.c7
-rw-r--r--merge-ort.c2
-rw-r--r--mergetools/vimdiff2
-rw-r--r--midx-write.c5
-rw-r--r--object-file.c124
-rw-r--r--object-file.h6
-rw-r--r--pack-bitmap-write.c9
-rw-r--r--pack-bitmap.c4
-rw-r--r--pack-write.c49
-rw-r--r--pack.h4
-rw-r--r--parse-options.c22
-rw-r--r--perl/Git/I18N.pm2
-rw-r--r--po/TEAMS4
-rw-r--r--po/bg.po265
-rw-r--r--po/ca.po7927
-rw-r--r--po/de.po233
-rw-r--r--po/fr.po254
-rw-r--r--po/id.po323
-rw-r--r--po/sv.po227
-rw-r--r--po/tr.po245
-rw-r--r--po/vi.po281
-rw-r--r--po/zh_CN.po312
-rw-r--r--po/zh_TW.po324
-rw-r--r--promisor-remote.c2
-rw-r--r--pseudo-merge.c23
-rw-r--r--pseudo-merge.h2
-rw-r--r--range-diff.c4
-rw-r--r--read-cache.c7
-rw-r--r--refs/reftable-backend.c52
-rw-r--r--refspec.c2
-rw-r--r--refspec.h2
-rw-r--r--reftable/basics.c97
-rw-r--r--reftable/basics.h28
-rw-r--r--reftable/block.c29
-rw-r--r--reftable/block.h4
-rw-r--r--reftable/blocksource.c25
-rw-r--r--reftable/error.c2
-rw-r--r--reftable/iter.c22
-rw-r--r--reftable/iter.h2
-rw-r--r--reftable/merged.c84
-rw-r--r--reftable/merged.h6
-rw-r--r--reftable/pq.c9
-rw-r--r--reftable/pq.h2
-rw-r--r--reftable/publicbasics.c66
-rw-r--r--reftable/reader.c70
-rw-r--r--reftable/reader.h8
-rw-r--r--reftable/record.c174
-rw-r--r--reftable/record.h6
-rw-r--r--reftable/reftable-basics.h18
-rw-r--r--reftable/reftable-error.h3
-rw-r--r--reftable/reftable-malloc.h18
-rw-r--r--reftable/reftable-merged.h8
-rw-r--r--reftable/reftable-reader.h8
-rw-r--r--reftable/reftable-stack.h21
-rw-r--r--reftable/reftable-writer.h23
-rw-r--r--reftable/stack.c225
-rw-r--r--reftable/tree.c42
-rw-r--r--reftable/tree.h21
-rw-r--r--reftable/writer.c154
-rw-r--r--remote-curl.c2
-rw-r--r--remote.c23
-rw-r--r--remote.h8
-rw-r--r--revision.c19
-rw-r--r--scalar.c4
-rw-r--r--sequencer.c36
-rw-r--r--setup.c2
-rw-r--r--sha1/openssl.h2
-rw-r--r--sha1dc_git.h3
-rw-r--r--shallow.c5
-rw-r--r--shell.c6
-rw-r--r--simple-ipc.h17
-rw-r--r--sparse-index.c5
-rw-r--r--sparse-index.h7
-rw-r--r--submodule-config.c17
-rw-r--r--submodule-config.h3
-rw-r--r--submodule.c9
-rw-r--r--submodule.h6
-rw-r--r--t/README5
-rw-r--r--t/helper/test-partial-clone.c2
-rw-r--r--t/helper/test-proc-receive.c7
-rw-r--r--t/helper/test-reftable.c10
-rw-r--r--t/helper/test-rot13-filter.c2
-rw-r--r--t/helper/test-submodule-nested-repo-config.c2
-rw-r--r--t/lib-bundle.sh2
-rw-r--r--t/lib-rebase.sh2
-rw-r--r--t/lib-sudo.sh2
-rwxr-xr-xt/lib-unicode-nfc-nfd.sh2
-rwxr-xr-xt/perf/p7527-builtin-fsmonitor.sh2
-rw-r--r--t/perf/perf-lib.sh4
-rwxr-xr-xt/t0000-basic.sh4
-rwxr-xr-xt/t0012-help.sh1
-rwxr-xr-xt/t0021-conversion.sh4
-rw-r--r--t/t0212/parse_events.perl2
-rwxr-xr-xt/t0410-partial-clone.sh1
-rwxr-xr-xt/t0450-txt-doc-vs-help.sh11
-rwxr-xr-xt/t0600-reffiles-backend.sh2
-rwxr-xr-xt/t0610-reftable-basics.sh65
-rwxr-xr-xt/t1016-compatObjectFormat.sh2
-rwxr-xr-xt/t1092-sparse-checkout-compatibility.sh12
-rwxr-xr-xt/t1305-config-include.sh40
-rwxr-xr-xt/t1400-update-ref.sh4
-rwxr-xr-xt/t1414-reflog-walk.sh1
-rwxr-xr-xt/t1506-rev-parse-diagnosis.sh2
-rwxr-xr-xt/t2082-parallel-checkout-attributes.sh2
-rwxr-xr-xt/t2401-worktree-prune.sh19
-rwxr-xr-xt/t2406-worktree-repair.sh19
-rwxr-xr-xt/t2408-worktree-relative.sh39
-rwxr-xr-xt/t3011-common-prefixes-and-directory-traversal.sh1
-rwxr-xr-xt/t3207-branch-submodule.sh1
-rwxr-xr-xt/t3404-rebase-interactive.sh4
-rwxr-xr-xt/t3427-rebase-subtree.sh1
-rwxr-xr-xt/t3430-rebase-merges.sh12
-rwxr-xr-xt/t3514-cherry-pick-revert-gpg.sh1
-rwxr-xr-xt/t3909-stash-pathspec-file.sh1
-rwxr-xr-xt/t4008-diff-break-rewrite.sh2
-rwxr-xr-xt/t4022-diff-rewrite.sh1
-rwxr-xr-xt/t4023-diff-rename-typechange.sh1
-rwxr-xr-xt/t4031-diff-rewrite-binary.sh1
-rwxr-xr-xt/t4056-diff-order.sh1
-rwxr-xr-xt/t4058-diff-duplicates.sh19
-rwxr-xr-xt/t4204-patch-id.sh1
-rwxr-xr-xt/t4211-line-log.sh28
-rwxr-xr-xt/t5000-tar-tree.sh12
-rwxr-xr-xt/t5303-pack-corruption-resilience.sh7
-rwxr-xr-xt/t5310-pack-bitmaps.sh1
-rwxr-xr-xt/t5323-pack-redundant.sh1
-rwxr-xr-xt/t5326-multi-pack-bitmaps.sh2
-rwxr-xr-xt/t5327-multi-pack-bitmaps-rev.sh1
-rwxr-xr-xt/t5329-pack-objects-cruft.sh2
-rwxr-xr-xt/t5333-pseudo-merge-bitmaps.sh1
-rwxr-xr-xt/t5334-incremental-multi-pack-index.sh2
-rwxr-xr-xt/t5411-proc-receive-hook.sh1
-rwxr-xr-xt/t5500-fetch-pack.sh1
-rwxr-xr-xt/t5539-fetch-http-shallow.sh1
-rwxr-xr-xt/t5540-http-push-webdav.sh1
-rwxr-xr-xt/t5541-http-push-smart.sh1
-rwxr-xr-xt/t5542-push-http-shallow.sh1
-rwxr-xr-xt/t5545-push-options.sh1
-rwxr-xr-xt/t5550-http-fetch-dumb.sh1
-rwxr-xr-xt/t5551-http-fetch-smart.sh23
-rwxr-xr-xt/t5572-pull-submodule.sh20
-rwxr-xr-xt/t5582-fetch-negative-refspec.sh1
-rwxr-xr-xt/t5619-clone-local-ambiguous-transport.sh1
-rwxr-xr-xt/t5700-protocol-v1.sh1
-rwxr-xr-xt/t5702-protocol-v2.sh133
-rwxr-xr-xt/t5730-protocol-v2-bundle-uri-file.sh1
-rwxr-xr-xt/t5731-protocol-v2-bundle-uri-git.sh1
-rwxr-xr-xt/t5732-protocol-v2-bundle-uri-http.sh1
-rwxr-xr-xt/t6004-rev-list-path-optim.sh1
-rwxr-xr-xt/t6012-rev-list-simplify.sh1
-rwxr-xr-xt/t6016-rev-list-graph-simplify-history.sh1
-rwxr-xr-xt/t6019-rev-list-ancestry-path.sh1
-rwxr-xr-xt/t6111-rev-list-treesame.sh1
-rwxr-xr-xt/t7003-filter-branch.sh1
-rwxr-xr-xt/t7061-wtstatus-ignore.sh1
-rwxr-xr-xt/t7300-clean.sh372
-rwxr-xr-xt/t7406-submodule-update.sh1
-rwxr-xr-xt/t7407-submodule-foreach.sh1
-rwxr-xr-xt/t7408-submodule-reference.sh2
-rwxr-xr-xt/t7411-submodule-config.sh1
-rwxr-xr-xt/t7420-submodule-set-url.sh1
-rwxr-xr-xt/t7422-submodule-output.sh7
-rwxr-xr-xt/t7521-ignored-mode.sh1
-rwxr-xr-xt/t7524-commit-summary.sh2
-rwxr-xr-xt/t7527-builtin-fsmonitor.sh51
-rwxr-xr-xt/t7601-merge-pull-config.sh1
-rwxr-xr-xt/t7700-repack.sh1
-rwxr-xr-xt/t7800-difftool.sh1
-rwxr-xr-xt/t7814-grep-recurse-submodules.sh1
-rwxr-xr-xt/t7900-maintenance.sh20
-rwxr-xr-xt/t8001-annotate.sh1
-rwxr-xr-xt/t9210-scalar.sh8
-rwxr-xr-xt/t9211-scalar-clone.sh1
-rwxr-xr-xt/t9350-fast-export.sh1
-rwxr-xr-xt/t9400-git-cvsserver-server.sh1
-rwxr-xr-xt/t9402-git-cvsserver-refs.sh1
-rwxr-xr-xt/t9850-shell.sh2
-rw-r--r--t/test-lib-functions.sh3
-rw-r--r--t/test-lib.sh41
-rw-r--r--t/unit-tests/lib-reftable.c8
-rw-r--r--t/unit-tests/t-reftable-basics.c13
-rw-r--r--t/unit-tests/t-reftable-block.c24
-rw-r--r--t/unit-tests/t-reftable-merged.c18
-rw-r--r--t/unit-tests/t-reftable-readwrite.c65
-rw-r--r--t/unit-tests/t-reftable-stack.c73
-rw-r--r--t/unit-tests/t-reftable-tree.c10
-rw-r--r--tmp-objdir.c26
-rw-r--r--trace2/tr2_ctr.c2
-rw-r--r--trace2/tr2_tls.c10
-rw-r--r--trace2/tr2_tls.h2
-rw-r--r--transport-helper.c11
-rw-r--r--transport.c26
-rw-r--r--transport.h4
-rw-r--r--unpack-trees.c12
-rw-r--r--utf8.h5
-rw-r--r--worktree.c269
-rw-r--r--worktree.h10
-rw-r--r--wt-status.c6
302 files changed, 13156 insertions, 2616 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 916a64b673..9301a1edd6 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -113,13 +113,15 @@ jobs:
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
steps:
- uses: actions/checkout@v4
- - uses: git-for-windows/setup-git-for-windows-sdk@v1
+ - name: setup SDK
+ shell: powershell
+ run: ci/install-sdk.ps1
- name: build
- shell: bash
+ shell: powershell
env:
HOME: ${{runner.workspace}}
NO_PERL: 1
- run: . /etc/profile && ci/make-test-artifacts.sh artifacts
+ run: git-sdk/usr/bin/bash.exe -l -c 'ci/make-test-artifacts.sh artifacts'
- name: zip up tracked files
run: git archive -o artifacts/tracked.tar.gz HEAD
- name: upload tracked files and build artifacts
@@ -147,10 +149,12 @@ jobs:
- name: extract tracked files and build artifacts
shell: bash
run: tar xf artifacts.tar.gz && tar xf tracked.tar.gz
- - uses: git-for-windows/setup-git-for-windows-sdk@v1
+ - name: setup SDK
+ shell: powershell
+ run: ci/install-sdk.ps1
- name: test
- shell: bash
- run: . /etc/profile && ci/run-test-slice.sh ${{matrix.nr}} 10
+ shell: powershell
+ run: git-sdk/usr/bin/bash.exe -l -c 'ci/run-test-slice.sh ${{matrix.nr}} 10'
- name: print test failures
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
shell: bash
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4abfbc3e20..526ecfe030 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,11 @@
default:
timeout: 2h
+stages:
+ - build
+ - test
+ - analyze
+
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
@@ -9,6 +14,8 @@ workflow:
test:linux:
image: $image
+ stage: test
+ needs: [ ]
tags:
- saas-linux-medium-amd64
variables:
@@ -67,6 +74,8 @@ test:linux:
test:osx:
image: $image
+ stage: test
+ needs: [ ]
tags:
- saas-macos-medium-m1
variables:
@@ -100,8 +109,42 @@ test:osx:
- t/failed-test-artifacts
when: on_failure
+build:mingw64:
+ stage: build
+ tags:
+ - saas-windows-medium-amd64
+ variables:
+ NO_PERL: 1
+ before_script:
+ - ./ci/install-sdk.ps1 -directory "git-sdk"
+ script:
+ - git-sdk/usr/bin/bash.exe -l -c 'ci/make-test-artifacts.sh artifacts'
+ artifacts:
+ paths:
+ - artifacts
+ - git-sdk
+
+test:mingw64:
+ stage: test
+ tags:
+ - saas-windows-medium-amd64
+ needs:
+ - job: "build:mingw64"
+ artifacts: true
+ before_script:
+ - git-sdk/usr/bin/bash.exe -l -c 'tar xf artifacts/artifacts.tar.gz'
+ - New-Item -Path .git/info -ItemType Directory
+ - New-Item .git/info/exclude -ItemType File -Value "/git-sdk"
+ script:
+ - git-sdk/usr/bin/bash.exe -l -c "ci/run-test-slice.sh $CI_NODE_INDEX $CI_NODE_TOTAL"
+ after_script:
+ - git-sdk/usr/bin/bash.exe -l -c 'ci/print-test-failures.sh'
+ parallel: 10
+
test:fuzz-smoke-tests:
image: ubuntu:latest
+ stage: test
+ needs: [ ]
variables:
CC: clang
before_script:
@@ -111,6 +154,8 @@ test:fuzz-smoke-tests:
static-analysis:
image: ubuntu:22.04
+ stage: analyze
+ needs: [ ]
variables:
jobname: StaticAnalysis
before_script:
@@ -121,6 +166,8 @@ static-analysis:
check-whitespace:
image: ubuntu:latest
+ stage: analyze
+ needs: [ ]
before_script:
- ./ci/install-dependencies.sh
# Since $CI_MERGE_REQUEST_TARGET_BRANCH_SHA is only defined for merged
@@ -135,6 +182,8 @@ check-whitespace:
check-style:
image: ubuntu:latest
+ stage: analyze
+ needs: [ ]
allow_failure: true
variables:
CC: clang
@@ -153,6 +202,8 @@ check-style:
documentation:
image: ubuntu:latest
+ stage: analyze
+ needs: [ ]
variables:
jobname: Documentation
before_script:
diff --git a/Documentation/BreakingChanges.txt b/Documentation/BreakingChanges.txt
index 2b64665694..112770a9da 100644
--- a/Documentation/BreakingChanges.txt
+++ b/Documentation/BreakingChanges.txt
@@ -117,7 +117,7 @@ Cf. <20140304174806.GA11561@sigill.intra.peff.net>.
* The git-pack-redundant(1) command can be used to remove redundant pack files.
The subcommand is unusably slow and the reason why nobody reports it as a
- performance bug is suspected to be the absense of users. We have nominated
+ performance bug is suspected to be the absence of users. We have nominated
the command for removal and have started to emit a user-visible warning in
c3b58472be (pack-redundant: gauge the usage before proposing its removal,
2020-08-25) whenever the command is executed.
diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines
index 3263245b03..30fda4142c 100644
--- a/Documentation/CodingGuidelines
+++ b/Documentation/CodingGuidelines
@@ -828,78 +828,80 @@ Markup:
_<new-branch-name>_
_<template-directory>_
- A placeholder is not enclosed in backticks, as it is not a literal.
-
When needed, use a distinctive identifier for placeholders, usually
made of a qualification and a type:
_<git-dir>_
_<key-id>_
- When literal and placeholders are mixed, each markup is applied for
- each sub-entity. If they are stuck, a special markup, called
- unconstrained formatting is required.
- Unconstrained formating for placeholders is __<like-this>__
- Unconstrained formatting for literal formatting is ++like this++
- `--jobs` _<n>_
- ++--sort=++__<key>__
- __<directory>__++/.git++
- ++remote.++__<name>__++.mirror++
+ Git's Asciidoc processor has been tailored to treat backticked text
+ as complex synopsis. When literal and placeholders are mixed, you can
+ use the backtick notation which will take care of correctly typesetting
+ the content.
+ `--jobs <n>`
+ `--sort=<key>`
+ `<directory>/.git`
+ `remote.<name>.mirror`
+ `ssh://[<user>@]<host>[:<port>]/<path-to-git-repo>`
- caveat: ++ unconstrained format is not verbatim and may expand
- content. Use Asciidoc escapes inside them.
+As a side effect, backquoted placeholders are correctly typeset, but
+this style is not recommended.
Synopsis Syntax
- Syntax grammar is formatted neither as literal nor as placeholder.
+ The synopsis (a paragraph with [synopsis] attribute) is automatically
+ formatted by the toolchain and does not need typesetting.
A few commented examples follow to provide reference when writing or
modifying command usage strings and synopsis sections in the manual
pages:
Possibility of multiple occurrences is indicated by three dots:
- _<file>_...
+ <file>...
(One or more of <file>.)
Optional parts are enclosed in square brackets:
- [_<file>_...]
+ [<file>...]
(Zero or more of <file>.)
- ++--exec-path++[++=++__<path>__]
+ An optional parameter needs to be typeset with unconstrained pairs
+ [<repository>]
+
+ --exec-path[=<path>]
(Option with an optional argument. Note that the "=" is inside the
brackets.)
- [_<patch>_...]
+ [<patch>...]
(Zero or more of <patch>. Note that the dots are inside, not
outside the brackets.)
Multiple alternatives are indicated with vertical bars:
- [`-q` | `--quiet`]
- [`--utf8` | `--no-utf8`]
+ [-q | --quiet]
+ [--utf8 | --no-utf8]
Use spacing around "|" token(s), but not immediately after opening or
before closing a [] or () pair:
- Do: [`-q` | `--quiet`]
- Don't: [`-q`|`--quiet`]
+ Do: [-q | --quiet]
+ Don't: [-q|--quiet]
Don't use spacing around "|" tokens when they're used to separate the
alternate arguments of an option:
- Do: ++--track++[++=++(`direct`|`inherit`)]`
- Don't: ++--track++[++=++(`direct` | `inherit`)]
+ Do: --track[=(direct|inherit)]
+ Don't: --track[=(direct | inherit)]
Parentheses are used for grouping:
- [(_<rev>_ | _<range>_)...]
+ [(<rev>|<range>)...]
(Any number of either <rev> or <range>. Parens are needed to make
it clear that "..." pertains to both <rev> and <range>.)
- [(`-p` _<parent>_)...]
+ [(-p <parent>)...]
(Any number of option -p, each with one <parent> argument.)
- `git remote set-head` _<name>_ (`-a` | `-d` | _<branch>_)
+ git remote set-head <name> (-a|-d|<branch>)
(One and only one of "-a", "-d" or "<branch>" _must_ (no square
brackets) be provided.)
And a somewhat more contrived example:
- `--diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]`
+ --diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]
Here "=" is outside the brackets, because "--diff-filter=" is a
valid usage. "*" has its own pair of brackets, because it can
(optionally) be specified only when one or more of the letters is
diff --git a/Documentation/DecisionMaking.txt b/Documentation/DecisionMaking.txt
index dbb4c1f569..b43c472ae5 100644
--- a/Documentation/DecisionMaking.txt
+++ b/Documentation/DecisionMaking.txt
@@ -54,7 +54,7 @@ implementation, for very large changes).
For non-technical decisions such as community norms or processes, it is up to
the community as a whole to implement and sustain agreed-upon changes.
-The project leadership committe (PLC) may help the implementation of
+The project leadership committee (PLC) may help the implementation of
policy decisions.
diff --git a/Documentation/RelNotes/2.47.0.txt b/Documentation/RelNotes/2.47.0.txt
index 6100871ec5..b63c3364af 100644
--- a/Documentation/RelNotes/2.47.0.txt
+++ b/Documentation/RelNotes/2.47.0.txt
@@ -159,6 +159,14 @@ Performance, Internal Implementation, Development Support etc.
* CI updates. FreeBSD image has been updated to 13.4.
(merge 2eeb29702e cb/ci-freebsd-13-4 later to maint).
+ * Give timeout to the locking code to write to reftable, instead of
+ failing on the first failure without retrying.
+
+ * The checksum at the tail of files are now computed without
+ collision detection protection. This is safe as the consumer of
+ the information to protect itself from replay attacks checks for
+ hash collisions independently.
+
Fixes since v2.46
-----------------
@@ -293,6 +301,36 @@ Fixes since v2.46
been corrected.
(merge 9a41735af6 rs/diff-exit-code-binary later to maint).
+ * When a subprocess to work in a submodule spawned by "git submodule"
+ fails with SIGPIPE, the parent Git process caught the death of it,
+ but gave a generic "failed to work in that submodule", which was
+ misleading. We now behave as if the parent got SIGPIPE and die.
+ (merge 082caf527e pw/submodule-process-sigpipe later to maint).
+
+ * "git archive" with pathspec magic that uses the attribute
+ information did not work well, which has been corrected.
+ (merge 296743a7ca rs/archive-with-attr-pathspec-fix later to maint).
+
+ * Background tasks "git maintenance" runs may need to use credential
+ information when going over the network, but a credential helper
+ may work only in an interactive environment, and end up blocking a
+ scheduled task waiting for UI. Credential helpers can now behave
+ differently when they are not running interactively.
+ (merge b9183b0a02 ds/background-maintenance-with-credential later to maint).
+
+ * "git --git-dir=nowhere cmd" failed to properly notice that it
+ wasn't in any repository while processing includeIf.onbranch
+ configuration and instead crashed.
+
+ * When "git sparse-checkout disable" turns a sparse checkout into a
+ regular checkout, the index is fully expanded. This totally
+ expected behaviour however had an "oops, we are expanding the
+ index" advice message, which has been corrected.
+ (merge 537e516a39 ds/sparse-checkout-expansion-advice later to maint).
+
+ * macOS with fsmonitor daemon can hang forever when a submodule is
+ involved, which has been corrected.
+
* Other code cleanup, docfix, build fix, etc.
(merge be10ac7037 jc/mailinfo-header-cleanup later to maint).
(merge 4460e052e0 jc/range-diff-lazy-setup later to maint).
@@ -300,3 +338,5 @@ Fixes since v2.46
(merge 83799f1500 jk/t9001-deflake later to maint).
(merge e02cc08a88 ak/typofix-2.46-maint later to maint).
(merge 5c5d29e1c4 ps/ci-gitlab-upgrade later to maint).
+ (merge 9c4c840901 jc/doc-discarding-stalled-topics later to maint).
+ (merge 5e6f359f6b ds/read-cache-mempool-leakfix later to maint).
diff --git a/Documentation/RelNotes/2.48.0.txt b/Documentation/RelNotes/2.48.0.txt
new file mode 100644
index 0000000000..988237ac71
--- /dev/null
+++ b/Documentation/RelNotes/2.48.0.txt
@@ -0,0 +1,68 @@
+Git v2.48 Release Notes
+=======================
+
+UI, Workflows & Features
+------------------------
+
+ * A new configuration variable remote.<name>.serverOption makes the
+ transport layer act as if the --serverOption=<value> option is
+ given from the command line.
+
+ * "git rebase --rebase-merges" now uses branch names as labels when
+ able.
+
+Performance, Internal Implementation, Development Support etc.
+--------------------------------------------------------------
+
+ * Document "amlog" notes.
+ (merge ddfb5bcfc6 tb/notes-amlog-doc later to maint).
+
+ * The way AsciiDoc is used for SYNOPSIS part of the manual pages has
+ been revamped. The sources, at least for the simple cases, got
+ vastly pleasant to work with.
+
+ * The reftable library is now prepared to expect that the memory
+ allocation function given to it may fail to allocate and to deal
+ with such an error.
+
+ * An extra worktree attached to a repository points at each other to
+ allow finding the repository from the worktree and vice versa
+ possible. Turn this linkage to relative paths.
+
+
+Fixes since v2.47
+-----------------
+
+ * Doc update to clarify how periodical maintenance are scheduled,
+ spread across time to avoid thundering hurds.
+ (merge 3d6ab4177d sk/doc-maintenance-schedule later to maint).
+
+ * Use after free and double freeing at the end in "git log -L... -p"
+ had been identified and fixed.
+ (merge fc5589d6c1 ds/line-log-asan-fix later to maint).
+
+ * On macOS, fsmonitor can fall into a race condition that results in
+ a client waiting forever to be notified for an event that have
+ already happened. This problem has been corrected.
+ (merge 51907f8fee jk/fsmonitor-event-listener-race-fix later to maint).
+
+ * "git maintenance start" crashed due to an uninitialized variable
+ reference, which has been corrected.
+ (merge c95547a394 ps/maintenance-start-crash-fix later to maint).
+
+ * Fail gracefully instead of crashing when attempting to write the
+ contents of a corrupt in-core index as a tree object.
+ (merge ecb5c4318c ps/cache-tree-w-broken-index-entry later to maint).
+
+ * Other code cleanup, docfix, build fix, etc.
+ (merge 66893a14d0 ps/leakfixes-part-8 later to maint).
+ (merge 1164e270b5 jk/output-prefix-cleanup later to maint).
+ (merge f36b8cbaef jh/config-unset-doc-fix later to maint).
+ (merge 4154ed4108 js/doc-platform-support-link-fix later to maint).
+ (merge 77af53f56f aa/t7300-modernize later to maint).
+ (merge 8ead1bba3e jc/doc-refspec-syntax later to maint).
+ (merge 432f666aa6 kn/loose-object-layer-wo-global-hash later to maint).
+ (merge c4b8fb6ef2 kh/merge-tree-doc later to maint).
+ (merge b8139c8f4e kh/checkout-ignore-other-docfix later to maint).
+ (merge 6dab49b9fb tc/bundle-uri-leakfix later to maint).
+ (merge f1ed39987b xx/protocol-v2-doc-markup-fix later to maint).
diff --git a/Documentation/asciidoc.conf b/Documentation/asciidoc.conf
index 60f76f43ed..f6da6d1fbd 100644
--- a/Documentation/asciidoc.conf
+++ b/Documentation/asciidoc.conf
@@ -28,6 +28,10 @@ ifdef::backend-docbook[]
{0#<citerefentry>}
{0#<refentrytitle>{target}</refentrytitle><manvolnum>{0}</manvolnum>}
{0#</citerefentry>}
+
+[literal-inlinemacro]
+{eval:re.sub(r'(&lt;[-a-zA-Z0-9.]+&gt;)', r'<emphasis>\1</emphasis>', re.sub(r'([\[\s|()>]|^|\]|&gt;)(\.?([-a-zA-Z0-9:+=~@,\/_^\$]+\.?)+)',r'\1<literal>\2</literal>', re.sub(r'(\.\.\.?)([^\]$.])', r'<literal>\1</literal>\2', macros.passthroughs[int(attrs['passtext'][1:-1])] if attrs['passtext'][1:-1].isnumeric() else attrs['passtext'][1:-1])))}
+
endif::backend-docbook[]
ifdef::backend-docbook[]
@@ -56,4 +60,20 @@ ifdef::backend-xhtml11[]
git-relative-html-prefix=
[linkgit-inlinemacro]
<a href="{git-relative-html-prefix}{target}.html">{target}{0?({0})}</a>
+
+[literal-inlinemacro]
+{eval:re.sub(r'(&lt;[-a-zA-Z0-9.]+&gt;)', r'<em>\1</em>', re.sub(r'([\[\s|()>]|^|\]|&gt;)(\.?([-a-zA-Z0-9:+=~@,\/_^\$]+\.?)+)',r'\1<code>\2</code>', re.sub(r'(\.\.\.?)([^\]$.])', r'<code>\1</code>\2', macros.passthroughs[int(attrs['passtext'][1:-1])] if attrs['passtext'][1:-1].isnumeric() else attrs['passtext'][1:-1])))}
+
+endif::backend-xhtml11[]
+
+ifdef::backend-docbook[]
+ifdef::doctype-manpage[]
+[paradef-default]
+synopsis-style=template="verseparagraph",filter="sed 's!&#8230;\\(\\]\\|$\\)!<phrase>\\0</phrase>!g;s!\\([\\[ |()]\\|^\\|\\]\\|&gt;\\)\\([-=a-zA-Z0-9:+@,\\/_^\\$.]\\+\\|&#8230;\\)!\\1<literal>\\2</literal>!g;s!&lt;[-a-zA-Z0-9.]\\+&gt;!<emphasis>\\0</emphasis>!g'"
+endif::doctype-manpage[]
+endif::backend-docbook[]
+
+ifdef::backend-xhtml11[]
+[paradef-default]
+synopsis-style=template="verseparagraph",filter="sed 's!&#8230;\\(\\]\\|$\\)!<span>\\0</span>!g;s!\\([\\[ |()]\\|^\\|\\]\\|&gt;\\)\\([-=a-zA-Z0-9:+@,\\/_^\\$.]\\+\\|&#8230;\\)!\\1<code>\\2</code>!g;s!&lt;[-a-zA-Z0-9.]\\+&gt;!<em>\\0</em>!g'"
endif::backend-xhtml11[]
diff --git a/Documentation/asciidoctor-extensions.rb b/Documentation/asciidoctor-extensions.rb
index d906a00803..cb24480b63 100644
--- a/Documentation/asciidoctor-extensions.rb
+++ b/Documentation/asciidoctor-extensions.rb
@@ -1,5 +1,7 @@
require 'asciidoctor'
require 'asciidoctor/extensions'
+require 'asciidoctor/converter/docbook5'
+require 'asciidoctor/converter/html5'
module Git
module Documentation
@@ -39,10 +41,95 @@ module Git
output
end
end
+
+ class SynopsisBlock < Asciidoctor::Extensions::BlockProcessor
+
+ use_dsl
+ named :synopsis
+ parse_content_as :simple
+
+ def process parent, reader, attrs
+ outlines = reader.lines.map do |l|
+ l.gsub(/(\.\.\.?)([^\]$.])/, '`\1`\2')
+ .gsub(%r{([\[\] |()>]|^)([-a-zA-Z0-9:+=~@,/_^\$]+)}, '\1{empty}`\2`{empty}')
+ .gsub(/(<[-a-zA-Z0-9.]+>)/, '__\\1__')
+ .gsub(']', ']{empty}')
+ end
+ create_block parent, :verse, outlines, attrs
+ end
+ end
+
+ class GitDBConverter < Asciidoctor::Converter::DocBook5Converter
+
+ extend Asciidoctor::Converter::Config
+ register_for 'docbook5'
+
+ def convert_inline_quoted node
+ if (type = node.type) == :asciimath
+ # NOTE fop requires jeuclid to process mathml markup
+ asciimath_available? ? %(<inlineequation>#{(::AsciiMath.parse node.text).to_mathml 'mml:', 'xmlns:mml' => 'http://www.w3.org/1998/Math/MathML'}</inlineequation>) : %(<inlineequation><mathphrase><![CDATA[#{node.text}]]></mathphrase></inlineequation>)
+ elsif type == :latexmath
+ # unhandled math; pass source to alt and required mathphrase element; dblatex will process alt as LaTeX math
+ %(<inlineequation><alt><![CDATA[#{equation = node.text}]]></alt><mathphrase><![CDATA[#{equation}]]></mathphrase></inlineequation>)
+ elsif type == :monospaced
+ node.text.gsub(/(\.\.\.?)([^\]$.])/, '<literal>\1</literal>\2')
+ .gsub(%r{([\[\s|()>.]|^|\]|&gt;)(\.?([-a-zA-Z0-9:+=~@,/_^\$]+\.{0,2})+)}, '\1<literal>\2</literal>')
+ .gsub(/(&lt;[-a-zA-Z0-9.]+&gt;)/, '<emphasis>\1</emphasis>')
+ else
+ open, close, supports_phrase = QUOTE_TAGS[type]
+ text = node.text
+ if node.role
+ if supports_phrase
+ quoted_text = %(#{open}<phrase role="#{node.role}">#{text}</phrase>#{close})
+ else
+ quoted_text = %(#{open.chop} role="#{node.role}">#{text}#{close})
+ end
+ else
+ quoted_text = %(#{open}#{text}#{close})
+ end
+ node.id ? %(<anchor#{common_attributes node.id, nil, text}/>#{quoted_text}) : quoted_text
+ end
+ end
+ end
+
+ # register a html5 converter that takes in charge to convert monospaced text into Git style synopsis
+ class GitHTMLConverter < Asciidoctor::Converter::Html5Converter
+
+ extend Asciidoctor::Converter::Config
+ register_for 'html5'
+
+ def convert_inline_quoted node
+ if node.type == :monospaced
+ node.text.gsub(/(\.\.\.?)([^\]$.])/, '<code>\1</code>\2')
+ .gsub(%r{([\[\s|()>.]|^|\]|&gt;)(\.?([-a-zA-Z0-9:+=~@,/_^\$]+\.{0,2})+)}, '\1<code>\2</code>')
+ .gsub(/(&lt;[-a-zA-Z0-9.]+&gt;)/, '<em>\1</em>')
+
+ else
+ open, close, tag = QUOTE_TAGS[node.type]
+ if node.id
+ class_attr = node.role ? %( class="#{node.role}") : ''
+ if tag
+ %(#{open.chop} id="#{node.id}"#{class_attr}>#{node.text}#{close})
+ else
+ %(<span id="#{node.id}"#{class_attr}>#{open}#{node.text}#{close}</span>)
+ end
+ elsif node.role
+ if tag
+ %(#{open.chop} class="#{node.role}">#{node.text}#{close})
+ else
+ %(<span class="#{node.role}">#{open}#{node.text}#{close}</span>)
+ end
+ else
+ %(#{open}#{node.text}#{close})
+ end
+ end
+ end
+ end
end
end
Asciidoctor::Extensions.register do
inline_macro Git::Documentation::LinkGitProcessor, :linkgit
+ block Git::Documentation::SynopsisBlock
postprocessor Git::Documentation::DocumentPostProcessor
end
diff --git a/Documentation/config/credential.txt b/Documentation/config/credential.txt
index 0221c3e620..470482ff4c 100644
--- a/Documentation/config/credential.txt
+++ b/Documentation/config/credential.txt
@@ -9,6 +9,14 @@ credential.helper::
Note that multiple helpers may be defined. See linkgit:gitcredentials[7]
for details and examples.
+credential.interactive::
+ By default, Git and any configured credential helpers will ask for
+ user input when new credentials are required. Many of these helpers
+ will succeed based on stored credentials if those credentials are
+ still valid. To avoid the possibility of user interactivity from
+ Git, set `credential.interactive=false`. Some credential helpers
+ respect this option as well.
+
credential.useHttpPath::
When acquiring credentials, consider the "path" component of an http
or https URL to be important. Defaults to false. See
diff --git a/Documentation/config/extensions.txt b/Documentation/config/extensions.txt
index 38dce3df35..f0a784447d 100644
--- a/Documentation/config/extensions.txt
+++ b/Documentation/config/extensions.txt
@@ -9,7 +9,7 @@ work and will produce hard-to-diagnose issues.
extensions.compatObjectFormat::
- Specify a compatitbility hash algorithm to use. The acceptable values
+ Specify a compatibility hash algorithm to use. The acceptable values
are `sha1` and `sha256`. The value specified must be different from the
value of extensions.objectFormat. This allows client level
interoperability between git repositories whose objectFormat matches
diff --git a/Documentation/config/gc.txt b/Documentation/config/gc.txt
index 1d4f9470ea..21d56db279 100644
--- a/Documentation/config/gc.txt
+++ b/Documentation/config/gc.txt
@@ -163,7 +163,7 @@ gc.repackFilterTo::
containing the filtered out objects. **WARNING:** The
specified location should be accessible, using for example the
Git alternates mechanism, otherwise the repo could be
- considered corrupt by Git as it migh not be able to access the
+ considered corrupt by Git as it might not be able to access the
objects in that packfile. See the `--filter-to=<dir>` option
of linkgit:git-repack[1] and the `objects/info/alternates`
section of linkgit:gitrepository-layout[5].
diff --git a/Documentation/config/reftable.txt b/Documentation/config/reftable.txt
index 0515727977..57087803a5 100644
--- a/Documentation/config/reftable.txt
+++ b/Documentation/config/reftable.txt
@@ -46,3 +46,11 @@ reftable.geometricFactor::
By default, the geometric sequence uses a factor of 2, meaning that for any
table, the next-biggest table must at least be twice as big. A maximum factor
of 256 is supported.
+
+reftable.lockTimeout::
+ Whenever the reftable backend appends a new table to the stack, it has
+ to lock the central "tables.list" file before updating it. This config
+ controls how long the process will wait to acquire the lock in case
+ another process has already acquired it. Value 0 means not to retry at
+ all; -1 means to try indefinitely. Default is 100 (i.e., retry for
+ 100ms).
diff --git a/Documentation/config/remote.txt b/Documentation/config/remote.txt
index 36e771556c..6d8b7d6c63 100644
--- a/Documentation/config/remote.txt
+++ b/Documentation/config/remote.txt
@@ -50,7 +50,7 @@ remote.<name>.skipFetchAll::
If true, this remote will be skipped when updating
using linkgit:git-fetch[1], the `update` subcommand of
linkgit:git-remote[1], and ignored by the prefetch task
- of `git maitenance`.
+ of `git maintenance`.
remote.<name>.receivepack::
The default program to execute on the remote side when pushing. See
@@ -96,3 +96,13 @@ remote.<name>.partialclonefilter::
Changing or clearing this value will only affect fetches for new commits.
To fetch associated objects for commits already present in the local object
database, use the `--refetch` option of linkgit:git-fetch[1].
+
+remote.<name>.serverOption::
+ The default set of server options used when fetching from this remote.
+ These server options can be overridden by the `--server-option=` command
+ line arguments.
++
+This is a multi-valued variable, and an empty value can be used in a higher
+priority configuration file (e.g. `.git/config` in a repository) to clear
+the values inherited from a lower priority configuration files (e.g.
+`$HOME/.gitconfig`).
diff --git a/Documentation/fetch-options.txt b/Documentation/fetch-options.txt
index 80838fe37e..9dc7ac8dbd 100644
--- a/Documentation/fetch-options.txt
+++ b/Documentation/fetch-options.txt
@@ -305,6 +305,9 @@ endif::git-pull[]
unknown ones, is server-specific.
When multiple `--server-option=<option>` are given, they are all
sent to the other side in the order listed on the command line.
+ When no `--server-option=<option>` is given from the command line,
+ the values of configuration variable `remote.<name>.serverOption`
+ are used instead.
--show-forced-updates::
By default, git checks if a branch is force-updated during
diff --git a/Documentation/git-checkout.txt b/Documentation/git-checkout.txt
index 8bdfa54ab0..bf26655764 100644
--- a/Documentation/git-checkout.txt
+++ b/Documentation/git-checkout.txt
@@ -290,10 +290,10 @@ Note that this option uses the no overlay mode by default (see also
`--overlay`), and currently doesn't support overlay mode.
--ignore-other-worktrees::
- `git checkout` refuses when the wanted ref is already checked
- out by another worktree. This option makes it check the ref
- out anyway. In other words, the ref can be held by more than one
- worktree.
+ `git checkout` refuses when the wanted branch is already checked
+ out or otherwise in use by another worktree. This option makes
+ it check the branch out anyway. In other words, the branch can
+ be in use by more than one worktree.
--overwrite-ignore::
--no-overwrite-ignore::
diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
index 8e925db7e9..116ad64820 100644
--- a/Documentation/git-clone.txt
+++ b/Documentation/git-clone.txt
@@ -8,16 +8,16 @@ git-clone - Clone a repository into a new directory
SYNOPSIS
--------
-[verse]
-`git clone` [++--template=++__<template-directory>__]
- [`-l`] [`-s`] [`--no-hardlinks`] [`-q`] [`-n`] [`--bare`] [`--mirror`]
- [`-o` _<name>_] [`-b` _<name>_] [`-u` _<upload-pack>_] [`--reference` _<repository>_]
- [`--dissociate`] [`--separate-git-dir` _<git-dir>_]
- [`--depth` _<depth>_] [`--`[`no-`]{empty}`single-branch`] [`--no-tags`]
- [++--recurse-submodules++[++=++__<pathspec>__]] [++--++[++no-++]{empty}++shallow-submodules++]
- [`--`[`no-`]{empty}`remote-submodules`] [`--jobs` _<n>_] [`--sparse`] [`--`[`no-`]{empty}`reject-shallow`]
- [++--filter=++__<filter-spec>__] [`--also-filter-submodules`]] [`--`] _<repository>_
- [_<directory>_]
+[synopsis]
+git clone [--template=<template-directory>]
+ [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]
+ [-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
+ [--dissociate] [--separate-git-dir <git-dir>]
+ [--depth <depth>] [--[no-]single-branch] [--no-tags]
+ [--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
+ [--[no-]remote-submodules] [--jobs <n>] [--sparse] [--[no-]reject-shallow]
+ [--filter=<filter-spec>] [--also-filter-submodules]] [--] <repository>
+ [<directory>]
DESCRIPTION
-----------
@@ -52,7 +52,7 @@ OPTIONS
to save space when possible.
+
If the repository is specified as a local path (e.g., `/path/to/repo`),
-this is the default, and --local is essentially a no-op. If the
+this is the default, and `--local` is essentially a no-op. If the
repository is specified as a URL, then this flag is ignored (and we
never use the local optimizations). Specifying `--no-local` will
override the default when `/path/to/repo` is given, using the regular
@@ -64,8 +64,8 @@ prevent the unintentional copying of files by dereferencing the symbolic
links.
+
*NOTE*: this operation can race with concurrent modification to the
-source repository, similar to running `cp -r src dst` while modifying
-`src`.
+source repository, similar to running `cp -r <src> <dst>` while modifying
+_<src>_.
`--no-hardlinks`::
Force the cloning process from a repository on a local
@@ -101,7 +101,7 @@ If you want to break the dependency of a repository cloned with `--shared` on
its source repository, you can simply run `git repack -a` to copy all
objects from the source repository into a pack in the cloned repository.
-`--reference`[`-if-able`] _<repository>_::
+`--reference[-if-able] <repository>`::
If the reference _<repository>_ is on the local machine,
automatically setup `.git/objects/info/alternates` to
obtain objects from the reference _<repository>_. Using
@@ -142,17 +142,20 @@ objects from the source repository into a pack in the cloned repository.
is specified. This flag forces progress status even if the
standard error stream is not directed to a terminal.
-++--server-option=++__<option>__::
+`--server-option=<option>`::
Transmit the given string to the server when communicating using
protocol version 2. The given string must not contain a NUL or LF
character. The server's handling of server options, including
unknown ones, is server-specific.
- When multiple ++--server-option=++__<option>__ are given, they are all
+ When multiple `--server-option=<option>` are given, they are all
sent to the other side in the order listed on the command line.
+ When no ++--server-option=++__<option>__ is given from the command
+ line, the values of configuration variable `remote.<name>.serverOption`
+ are used instead.
`-n`::
`--no-checkout`::
- No checkout of HEAD is performed after the clone is complete.
+ No checkout of `HEAD` is performed after the clone is complete.
`--`[`no-`]`reject-shallow`::
Fail if the source repository is a shallow repository.
@@ -162,7 +165,7 @@ objects from the source repository into a pack in the cloned repository.
`--bare`::
Make a 'bare' Git repository. That is, instead of
creating _<directory>_ and placing the administrative
- files in _<directory>_`/.git`, make the _<directory>_
+ files in `<directory>/.git`, make the _<directory>_
itself the `$GIT_DIR`. This obviously implies the `--no-checkout`
because there is nowhere to check out the working tree.
Also the branch heads at the remote are copied directly
@@ -177,13 +180,13 @@ objects from the source repository into a pack in the cloned repository.
linkgit:git-sparse-checkout[1] command can be used to grow the
working directory as needed.
-++--filter=++__<filter-spec>__::
+`--filter=<filter-spec>`::
Use the partial clone feature and request that the server sends
a subset of reachable objects according to a given object filter.
When using `--filter`, the supplied _<filter-spec>_ is used for
the partial clone filter. For example, `--filter=blob:none` will
filter out all blobs (file contents) until needed by Git. Also,
- ++--filter=blob:limit=++__<size>__ will filter out all blobs of size
+ `--filter=blob:limit=<size>` will filter out all blobs of size
at least _<size>_. For more details on filter specifications, see
the `--filter` option in linkgit:git-rev-list[1].
@@ -208,11 +211,11 @@ objects from the source repository into a pack in the cloned repository.
`-b` _<name>_::
`--branch` _<name>_::
- Instead of pointing the newly created HEAD to the branch pointed
- to by the cloned repository's HEAD, point to _<name>_ branch
+ Instead of pointing the newly created `HEAD` to the branch pointed
+ to by the cloned repository's `HEAD`, point to _<name>_ branch
instead. In a non-bare repository, this is the branch that will
be checked out.
- `--branch` can also take tags and detaches the HEAD at that commit
+ `--branch` can also take tags and detaches the `HEAD` at that commit
in the resulting repository.
`-u` _<upload-pack>_::
@@ -221,12 +224,12 @@ objects from the source repository into a pack in the cloned repository.
via ssh, this specifies a non-default path for the command
run on the other end.
-++--template=++__<template-directory>__::
+`--template=<template-directory>`::
Specify the directory from which templates will be used;
(See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)
-`-c` __<key>__++=++__<value>__::
-`--config` __<key>__++=++__<value>__::
+`-c` `<key>=<value>`::
+`--config` `<key>=<value>`::
Set a configuration variable in the newly-created repository;
this takes effect immediately after the repository is
initialized, but before the remote history is fetched or any
@@ -239,25 +242,25 @@ objects from the source repository into a pack in the cloned repository.
Due to limitations of the current implementation, some configuration
variables do not take effect until after the initial fetch and checkout.
Configuration variables known to not take effect are:
-++remote.++__<name>__++.mirror++ and ++remote.++__<name>__++.tagOpt++. Use the
+`remote.<name>.mirror` and `remote.<name>.tagOpt`. Use the
corresponding `--mirror` and `--no-tags` options instead.
-`--depth` _<depth>_::
+`--depth <depth>`::
Create a 'shallow' clone with a history truncated to the
specified number of commits. Implies `--single-branch` unless
`--no-single-branch` is given to fetch the histories near the
tips of all branches. If you want to clone submodules shallowly,
also pass `--shallow-submodules`.
-++--shallow-since=++__<date>__::
+`--shallow-since=<date>`::
Create a shallow clone with a history after the specified time.
-++--shallow-exclude=++__<revision>__::
+`--shallow-exclude=<revision>`::
Create a shallow clone with a history, excluding commits
reachable from a specified remote branch or tag. This option
can be specified multiple times.
-`--`[`no-`]`single-branch`::
+`--[no-]single-branch`::
Clone only the history leading to the tip of a single branch,
either specified by the `--branch` option or the primary
branch remote's `HEAD` points at.
@@ -279,13 +282,13 @@ maintain a branch with no references other than a single cloned
branch. This is useful e.g. to maintain minimal clones of the default
branch of some repository for search indexing.
-`--recurse-submodules`[`=`{empty}__<pathspec>__]::
+`--recurse-submodules[=<pathspec>]`::
After the clone is created, initialize and clone submodules
- within based on the provided _<pathspec>_. If no _=<pathspec>_ is
+ within based on the provided _<pathspec>_. If no `=<pathspec>` is
provided, all submodules are initialized and cloned.
This option can be given multiple times for pathspecs consisting
of multiple entries. The resulting clone has `submodule.active` set to
- the provided pathspec, or "." (meaning all submodules) if no
+ the provided pathspec, or "`.`" (meaning all submodules) if no
pathspec is provided.
+
Submodules are initialized and cloned using their default settings. This is
@@ -295,23 +298,23 @@ the clone is finished. This option is ignored if the cloned repository does
not have a worktree/checkout (i.e. if any of `--no-checkout`/`-n`, `--bare`,
or `--mirror` is given)
-`--`[`no-`]`shallow-submodules`::
+`--[no-]shallow-submodules`::
All submodules which are cloned will be shallow with a depth of 1.
-`--`[`no-`]`remote-submodules`::
+`--[no-]remote-submodules`::
All submodules which are cloned will use the status of the submodule's
remote-tracking branch to update the submodule, rather than the
superproject's recorded SHA-1. Equivalent to passing `--remote` to
`git submodule update`.
-`--separate-git-dir=`{empty}__<git-dir>__::
+`--separate-git-dir=<git-dir>`::
Instead of placing the cloned repository where it is supposed
to be, place the cloned repository at the specified directory,
then make a filesystem-agnostic Git symbolic link to there.
The result is Git repository can be separated from working
tree.
-`--ref-format=`{empty}__<ref-format>__::
+`--ref-format=<ref-format>`::
Specify the given ref storage format for the repository. The valid values are:
+
@@ -334,7 +337,7 @@ _<directory>_::
for `host.xz:foo/.git`). Cloning into an existing directory
is only allowed if the directory is empty.
-`--bundle-uri=`{empty}__<uri>__::
+`--bundle-uri=<uri>`::
Before fetching from the remote, fetch a bundle from the given
_<uri>_ and unbundle the data into the local repository. The refs
in the bundle will be stored under the hidden `refs/bundle/*`
diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt
index 7f81fbbea8..3e420177c1 100644
--- a/Documentation/git-config.txt
+++ b/Documentation/git-config.txt
@@ -12,7 +12,7 @@ SYNOPSIS
'git config list' [<file-option>] [<display-option>] [--includes]
'git config get' [<file-option>] [<display-option>] [--includes] [--all] [--regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name>
'git config set' [<file-option>] [--type=<type>] [--all] [--value=<value>] [--fixed-value] <name> <value>
-'git config unset' [<file-option>] [--all] [--value=<value>] [--fixed-value] <name> <value>
+'git config unset' [<file-option>] [--all] [--value=<value>] [--fixed-value] <name>
'git config rename-section' [<file-option>] <old-name> <new-name>
'git config remove-section' [<file-option>] <name>
'git config edit' [<file-option>]
diff --git a/Documentation/git-init.txt b/Documentation/git-init.txt
index daff93bd16..315f7f7530 100644
--- a/Documentation/git-init.txt
+++ b/Documentation/git-init.txt
@@ -8,12 +8,12 @@ git-init - Create an empty Git repository or reinitialize an existing one
SYNOPSIS
--------
-[verse]
-`git init` [`-q` | `--quiet`] [`--bare`] [++--template=++__<template-directory>__]
- [`--separate-git-dir` _<git-dir>_] [++--object-format=++__<format>__]
- [++--ref-format=++__<format>__]
- [`-b` _<branch-name>_ | ++--initial-branch=++__<branch-name>__]
- [++--shared++[++=++__<permissions>__]] [_<directory>_]
+[synopsis]
+git init [-q | --quiet] [--bare] [--template=<template-directory>]
+ [--separate-git-dir <git-dir>] [--object-format=<format>]
+ [--ref-format=<format>]
+ [-b <branch-name> | --initial-branch=<branch-name>]
+ [--shared[=<permissions>]] [<directory>]
DESCRIPTION
@@ -25,11 +25,11 @@ directory with subdirectories for `objects`, `refs/heads`,
commits will be created (see the `--initial-branch` option below
for its name).
-If the `$GIT_DIR` environment variable is set then it specifies a path
+If the `GIT_DIR` environment variable is set then it specifies a path
to use instead of `./.git` for the base of the repository.
If the object storage directory is specified via the
-`$GIT_OBJECT_DIRECTORY` environment variable then the sha1 directories
+`GIT_OBJECT_DIRECTORY` environment variable then the sha1 directories
are created underneath; otherwise, the default `$GIT_DIR/objects`
directory is used.
@@ -51,26 +51,22 @@ Only print error and warning messages; all other output will be suppressed.
Create a bare repository. If `GIT_DIR` environment is not set, it is set to the
current working directory.
-++--object-format=++__<format>__::
-
+`--object-format=<format>`::
Specify the given object _<format>_ (hash algorithm) for the repository. The valid
values are `sha1` and (if enabled) `sha256`. `sha1` is the default.
+
include::object-format-disclaimer.txt[]
-++--ref-format=++__<format>__::
-
+`--ref-format=<format>`::
Specify the given ref storage _<format>_ for the repository. The valid values are:
+
include::ref-storage-format.txt[]
-++--template=++__<template-directory>__::
-
+`--template=<template-directory>`::
Specify the directory from which templates will be used. (See the "TEMPLATE
DIRECTORY" section below.)
-++--separate-git-dir=++__<git-dir>__::
-
+`--separate-git-dir=<git-dir>`::
Instead of initializing the repository as a directory to either `$GIT_DIR` or
`./.git/`, create a text file there containing the path to the actual
repository. This file acts as a filesystem-agnostic Git symbolic link to the
@@ -78,15 +74,14 @@ repository.
+
If this is a reinitialization, the repository will be moved to the specified path.
-`-b` _<branch-name>_::
-++--initial-branch=++__<branch-name>__::
-
+`-b <branch-name>`::
+`--initial-branch=<branch-name>`::
Use _<branch-name>_ for the initial branch in the newly created
repository. If not specified, fall back to the default name (currently
`master`, but this is subject to change in the future; the name can be
customized via the `init.defaultBranch` configuration variable).
-++--shared++[++=++(`false`|`true`|`umask`|`group`|`all`|`world`|`everybody`|_<perm>_)]::
+`--shared[=(false|true|umask|group|all|world|everybody|<perm>)]`::
Specify that the Git repository is to be shared amongst several users. This
allows users belonging to the same group to push into that
diff --git a/Documentation/git-ls-remote.txt b/Documentation/git-ls-remote.txt
index 76c86c3ce4..d71c4ab3e2 100644
--- a/Documentation/git-ls-remote.txt
+++ b/Documentation/git-ls-remote.txt
@@ -81,6 +81,9 @@ OPTIONS
character.
When multiple `--server-option=<option>` are given, they are all
sent to the other side in the order listed on the command line.
+ When no `--server-option=<option>` is given from the command line,
+ the values of configuration variable `remote.<name>.serverOption`
+ are used instead.
<repository>::
The "remote" repository to query. This parameter can be
diff --git a/Documentation/git-maintenance.txt b/Documentation/git-maintenance.txt
index 9d96819133..6e6651309d 100644
--- a/Documentation/git-maintenance.txt
+++ b/Documentation/git-maintenance.txt
@@ -220,7 +220,9 @@ on an hourly basis. Each run executes the "hourly" tasks. At midnight,
that process also executes the "daily" tasks. At midnight on the first day
of the week, that process also executes the "weekly" tasks. A single
process iterates over each registered repository, performing the scheduled
-tasks for that frequency. Depending on the number of registered
+tasks for that frequency. The processes are scheduled to a random minute of
+the hour per client to spread out the load that multiple clients might
+generate (e.g. from prefetching). Depending on the number of registered
repositories and their sizes, this process may take longer than an hour.
In this case, multiple `git maintenance run` commands may run on the same
repository at the same time, colliding on the object database lock. This
diff --git a/Documentation/git-merge-tree.txt b/Documentation/git-merge-tree.txt
index 84cb2edf6d..0b6a8a19b1 100644
--- a/Documentation/git-merge-tree.txt
+++ b/Documentation/git-merge-tree.txt
@@ -211,9 +211,15 @@ linkgit:git-commit-tree[1], linkgit:git-write-tree[1],
linkgit:git-update-ref[1], and linkgit:git-mktag[1]. Thus, it can be
used as a part of a series of steps such as:
- NEWTREE=$(git merge-tree --write-tree $BRANCH1 $BRANCH2)
- test $? -eq 0 || die "There were conflicts..."
- NEWCOMMIT=$(git commit-tree $NEWTREE -p $BRANCH1 -p $BRANCH2)
+ vi message.txt
+ BRANCH1=refs/heads/test
+ BRANCH2=main
+ NEWTREE=$(git merge-tree --write-tree $BRANCH1 $BRANCH2) || {
+ echo "There were conflicts..." 1>&2
+ exit 1
+ }
+ NEWCOMMIT=$(git commit-tree $NEWTREE -F message.txt \
+ -p $BRANCH1 -p $BRANCH2)
git update-ref $BRANCH1 $NEWCOMMIT
Note that when the exit status is non-zero, `NEWTREE` in this sequence
diff --git a/Documentation/git-worktree.txt b/Documentation/git-worktree.txt
index 2a240f53ba..70437c815f 100644
--- a/Documentation/git-worktree.txt
+++ b/Documentation/git-worktree.txt
@@ -157,7 +157,7 @@ will reestablish the connection. If multiple linked worktrees are moved,
running `repair` from any worktree with each tree's new `<path>` as an
argument, will reestablish the connection to all the specified paths.
+
-If both the main worktree and linked worktrees have been moved manually,
+If both the main worktree and linked worktrees have been moved or copied manually,
then running `repair` in the main worktree and specifying the new `<path>`
of each linked worktree will reestablish all connections in both
directions.
diff --git a/Documentation/gitformat-commit-graph.txt b/Documentation/gitformat-commit-graph.txt
index 3e906e8030..14d1631234 100644
--- a/Documentation/gitformat-commit-graph.txt
+++ b/Documentation/gitformat-commit-graph.txt
@@ -122,7 +122,7 @@ All multi-byte numbers are in network byte order.
for commits with corrected commit date offsets that cannot be
stored within 31 bits.
* Generation Data Overflow chunk is present only when Generation Data
- chunk is present and atleast one corrected commit date offset cannot
+ chunk is present and at least one corrected commit date offset cannot
be stored within 31 bits.
==== Extra Edge List (ID: {'E', 'D', 'G', 'E'}) [Optional]
diff --git a/Documentation/gitprotocol-v2.txt b/Documentation/gitprotocol-v2.txt
index 414bc625d5..ca83b2ecc5 100644
--- a/Documentation/gitprotocol-v2.txt
+++ b/Documentation/gitprotocol-v2.txt
@@ -527,8 +527,8 @@ a request.
The provided options must not contain a NUL or LF character.
- object-format
-~~~~~~~~~~~~~~~
+object-format
+~~~~~~~~~~~~~
The server can advertise the `object-format` capability with a value `X` (in the
form `object-format=X`) to notify the client that the server is able to deal
diff --git a/Documentation/gitweb.txt b/Documentation/gitweb.txt
index 56d24a30a3..5e2b491ec2 100644
--- a/Documentation/gitweb.txt
+++ b/Documentation/gitweb.txt
@@ -234,7 +234,7 @@ from the template during repository creation, usually installed in
configuration variable, but the file takes precedence.
category (or `gitweb.category`)::
- Singe line category of a project, used to group projects if
+ Single line category of a project, used to group projects if
`$projects_list_group_categories` is enabled. By default (file and
configuration variable absent), uncategorized projects are put in the
`$project_list_default_category` category. You can use the
diff --git a/Documentation/howto/maintain-git.txt b/Documentation/howto/maintain-git.txt
index da31332f11..45e2599c5d 100644
--- a/Documentation/howto/maintain-git.txt
+++ b/Documentation/howto/maintain-git.txt
@@ -67,7 +67,22 @@ the mailing list after each feature release is made:
before getting merged to 'master'.
- 'seen' branch is used to publish other proposed changes that do
- not yet pass the criteria set for 'next' (see above).
+ not yet pass the criteria set for 'next' (see above), but there
+ is no promise that 'seen' will contain everything. A topic that
+ had no reviewer reaction may not be picked up.
+
+ - A new topic will first get merged to 'seen', unless it is
+ trivially correct and clearly urgent, in which case it may be
+ directly merged to 'next' or even to 'master'.
+
+ - If a topic that was picked up to 'seen' becomes and stays
+ inactive for 3 calendar weeks without having seen a clear
+ consensus that it is good enough to be moved to 'next', the
+ topic may be discarded from 'seen'. Interested parties are
+ still free to revive the topic. For the purpose of this
+ guideline, the definition of being "inactive" is that nobody
+ has discussed the topic, no new iteration of the topic was
+ posted, and no responses to the review comments were given.
- The tips of 'master' and 'maint' branches will not be rewound to
allow people to build their own customization on top of them.
@@ -122,6 +137,13 @@ Note that before v1.9.0 release, the version numbers used to be
structured slightly differently. vX.Y.Z were feature releases while
vX.Y.Z.W were maintenance releases for vX.Y.Z.
+Because most of the lines of code in Git are written by individual
+contributors, and contributions come in the form of e-mailed patches
+published on the mailing list, the project maintains a mapping from
+individual commits to the Message-Id of the e-mail that resulted in
+the commit, to help tracking the origin of the changes. The notes
+in "refs/notes/amlog" are used for this purpose, and are published
+along with the broken-out branches to the maintainer's repository.
A Typical Git Day
-----------------
@@ -165,6 +187,43 @@ by doing the following:
In practice, almost no patch directly goes to 'master' or
'maint'.
+ Applying the e-mailed patches using "git am" automatically records
+ the mappings from 'Message-Id' to the applied commit in the "amlog"
+ notes. Periodically check that this is working with "git show -s
+ --notes=amlog $commit".
+
+ This mapping is maintained with the aid of the "post-applypatch"
+ hook found in the 'todo' branch. That hook should be installed
+ before applying patches. It is also helpful to carry forward any
+ relevant amlog entries when rebasing, so the following config may
+ be useful:
+
+ [notes]
+ rewriteRef = refs/notes/amlog
+
+ Avoid "cherry-pick", as it does not propagate notes by design. Use
+ either "git commit --amend" or "git rebase" to make corrections to
+ an existing commit, even for a single-patch topic.
+
+ Make sure that a push refspec for 'refs/notes/amlog' is in the
+ remote configuration for publishing repositories. A few sample
+ configurations look like the following:
+
+ [remote "github"]
+ url = https://github.com/gitster/git
+ pushurl = github.com:gitster/git.git
+ mirror
+
+ [remote "github2"]
+ url = https://github.com/git/git
+ fetch = +refs/heads/*:refs/remotes/github2/*
+ pushurl = github.com:git/git.git
+ push = refs/heads/maint:refs/heads/maint
+ push = refs/heads/master:refs/heads/master
+ push = refs/heads/next:refs/heads/next
+ push = +refs/heads/seen:refs/heads/seen
+ push = +refs/notes/amlog
+
- Review the last issue of "What's cooking" message, review the
topics ready for merging (topic->master and topic->maint). Use
"Meta/cook -w" script (where Meta/ contains a checkout of the
diff --git a/Documentation/pull-fetch-param.txt b/Documentation/pull-fetch-param.txt
index c718f7946f..d79d2f6065 100644
--- a/Documentation/pull-fetch-param.txt
+++ b/Documentation/pull-fetch-param.txt
@@ -25,14 +25,15 @@ endif::git-pull[]
+
The format of a <refspec> parameter is an optional plus
`+`, followed by the source <src>, followed
-by a colon `:`, followed by the destination ref <dst>.
+by a colon `:`, followed by the destination <dst>.
The colon can be omitted when <dst> is empty. <src> is
-typically a ref, but it can also be a fully spelled hex object
+typically a ref, or a glob pattern with a single `*` that is used
+to match a set of refs, but it can also be a fully spelled hex object
name.
+
A <refspec> may contain a `*` in its <src> to indicate a simple pattern
match. Such a refspec functions like a glob that matches any ref with the
-same prefix. A pattern <refspec> must have a `*` in both the <src> and
+pattern. A pattern <refspec> must have one and only one `*` in both the <src> and
<dst>. It will map refs to the destination by replacing the `*` with the
contents matched from the source.
+
diff --git a/Documentation/technical/platform-support.txt b/Documentation/technical/platform-support.txt
index a227c363d7..0a2fb28d62 100644
--- a/Documentation/technical/platform-support.txt
+++ b/Documentation/technical/platform-support.txt
@@ -49,7 +49,7 @@ will be fixed in a later release:
notice problems before they are considered "done with review"; whereas
watching `master` means the stable branch could break for your platform, but
you have a decent chance of avoiding a tagged release breaking you. See "The
- Policy" in link:../howto/maintain-git.txt["How to maintain Git"] for an
+ Policy" in link:../howto/maintain-git.html["How to maintain Git"] for an
overview of which branches are used in the Git project, and how.
* The bug report should include information about what platform you are using.
@@ -125,7 +125,7 @@ Compatible on `next`
To avoid reactive debugging and fixing when changes hit a release or stable, you
can aim to ensure `next` always works for your platform. (See "The Policy" in
-link:../howto/maintain-git.txt["How to maintain Git"] for an overview of how
+link:../howto/maintain-git.html["How to maintain Git"] for an overview of how
`next` is used in the Git project.) To do that:
* You should add a runner for your platform to the GitHub Actions or GitLab CI
diff --git a/Documentation/urls.txt b/Documentation/urls.txt
index 7cec85aef1..9c871e716a 100644
--- a/Documentation/urls.txt
+++ b/Documentation/urls.txt
@@ -10,19 +10,19 @@ Git supports ssh, git, http, and https protocols (in addition, ftp
and ftps can be used for fetching, but this is inefficient and
deprecated; do not use them).
-The native transport (i.e. git:// URL) does no authentication and
+The native transport (i.e. `git://` URL) does no authentication and
should be used with caution on unsecured networks.
The following syntaxes may be used with them:
-- ++ssh://++{startsb}__<user>__++@++{endsb}__<host>__{startsb}++:++__<port>__{endsb}++/++__<path-to-git-repo>__
-- ++git://++__<host>__{startsb}:__<port>__{endsb}++/++__<path-to-git-repo>__
-- ++http++{startsb}++s++{endsb}++://++__<host>__{startsb}++:++__<port>__{endsb}++/++__<path-to-git-repo>__
-- ++ftp++{startsb}++s++{endsb}++://++__<host>__{startsb}++:++__<port>__{endsb}++/++__<path-to-git-repo>__
+- `ssh://[<user>@]<host>[:<port>]/<path-to-git-repo>`
+- `git://<host>[:<port>]/<path-to-git-repo>`
+- `http[s]://<host>[:<port>]/<path-to-git-repo>`
+- `ftp[s]://<host>[:<port>]/<path-to-git-repo>`
An alternative scp-like syntax may also be used with the ssh protocol:
-- {startsb}__<user>__++@++{endsb}__<host>__++:/++__<path-to-git-repo>__
+- `[<user>@]<host>:/<path-to-git-repo>`
This syntax is only recognized if there are no slashes before the
first colon. This helps differentiate a local path that contains a
@@ -30,17 +30,17 @@ colon. For example the local path `foo:bar` could be specified as an
absolute path or `./foo:bar` to avoid being misinterpreted as an ssh
url.
-The ssh and git protocols additionally support ++~++__<username>__ expansion:
+The ssh and git protocols additionally support `~<username>` expansion:
-- ++ssh://++{startsb}__<user>__++@++{endsb}__<host>__{startsb}++:++__<port>__{endsb}++/~++__<user>__++/++__<path-to-git-repo>__
-- ++git://++__<host>__{startsb}++:++__<port>__{endsb}++/~++__<user>__++/++__<path-to-git-repo>__
-- {startsb}__<user>__++@++{endsb}__<host>__++:~++__<user>__++/++__<path-to-git-repo>__
+- `ssh://[<user>@]<host>[:<port>]/~<user>/<path-to-git-repo>`
+- `git://<host>[:<port>]/~<user>/<path-to-git-repo>`
+- `[<user>@]<host>:~<user>/<path-to-git-repo>`
For local repositories, also supported by Git natively, the following
syntaxes may be used:
- `/path/to/repo.git/`
-- ++file:///path/to/repo.git/++
+- `file:///path/to/repo.git/`
ifndef::git-clone[]
These two syntaxes are mostly equivalent, except when cloning, when
@@ -57,11 +57,11 @@ endif::git-clone[]
accept a suitable bundle file. See linkgit:git-bundle[1].
When Git doesn't know how to handle a certain transport protocol, it
-attempts to use the `remote-`{empty}__<transport>__ remote helper, if one
+attempts to use the `remote-<transport>` remote helper, if one
exists. To explicitly request a remote helper, the following syntax
may be used:
-- _<transport>_::__<address>__
+- `<transport>::<address>`
where _<address>_ may be a path, a server and path, or an arbitrary
URL-like string recognized by the specific remote helper being
diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index 38e920725c..78e8631f67 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -1,7 +1,7 @@
#!/bin/sh
GVF=GIT-VERSION-FILE
-DEF_VER=v2.47.0-rc0
+DEF_VER=v2.47.GIT
LF='
'
diff --git a/Makefile b/Makefile
index 7344a7f725..8d8cc6ab90 100644
--- a/Makefile
+++ b/Makefile
@@ -521,6 +521,10 @@ include shared.mak
# Define APPLE_COMMON_CRYPTO_SHA1 to use Apple's CommonCrypto for
# SHA-1.
#
+# Define the same Makefile knobs as above, but suffixed with _UNSAFE to
+# use the corresponding implementations for unsafe SHA-1 hashing for
+# non-cryptographic purposes.
+#
# If don't enable any of the *_SHA1 settings in this section, Git will
# default to its built-in sha1collisiondetection library, which is a
# collision-detecting sha1 This is slower, but may detect attempted
@@ -1997,6 +2001,27 @@ endif
endif
endif
+ifdef OPENSSL_SHA1_UNSAFE
+ifndef OPENSSL_SHA1
+ EXTLIBS += $(LIB_4_CRYPTO)
+ BASIC_CFLAGS += -DSHA1_OPENSSL_UNSAFE
+endif
+else
+ifdef BLK_SHA1_UNSAFE
+ifndef BLK_SHA1
+ LIB_OBJS += block-sha1/sha1.o
+ BASIC_CFLAGS += -DSHA1_BLK_UNSAFE
+endif
+else
+ifdef APPLE_COMMON_CRYPTO_SHA1_UNSAFE
+ifndef APPLE_COMMON_CRYPTO_SHA1
+ COMPAT_CFLAGS += -DCOMMON_DIGEST_FOR_OPENSSL
+ BASIC_CFLAGS += -DSHA1_APPLE_UNSAFE
+endif
+endif
+endif
+endif
+
ifdef OPENSSL_SHA256
EXTLIBS += $(LIB_4_CRYPTO)
BASIC_CFLAGS += -DSHA256_OPENSSL
@@ -2692,7 +2717,6 @@ REFTABLE_OBJS += reftable/error.o
REFTABLE_OBJS += reftable/block.o
REFTABLE_OBJS += reftable/blocksource.o
REFTABLE_OBJS += reftable/iter.o
-REFTABLE_OBJS += reftable/publicbasics.o
REFTABLE_OBJS += reftable/merged.o
REFTABLE_OBJS += reftable/pq.o
REFTABLE_OBJS += reftable/reader.o
@@ -3885,6 +3909,7 @@ $(UNIT_TEST_DIR)/clar-decls.h: $(patsubst %,$(UNIT_TEST_DIR)/%.c,$(CLAR_TEST_SUI
done >$@
$(UNIT_TEST_DIR)/clar.suite: $(UNIT_TEST_DIR)/clar-decls.h
$(QUIET_GEN)awk -f $(UNIT_TEST_DIR)/clar-generate.awk $< >$(UNIT_TEST_DIR)/clar.suite
+$(UNIT_TEST_DIR)/clar/clar.o: $(UNIT_TEST_DIR)/clar.suite
$(CLAR_TEST_OBJS): $(UNIT_TEST_DIR)/clar-decls.h
$(CLAR_TEST_OBJS): EXTRA_CPPFLAGS = -I$(UNIT_TEST_DIR)
$(CLAR_TEST_PROG): $(UNIT_TEST_DIR)/clar.suite $(CLAR_TEST_OBJS) $(GITLIBS) GIT-LDFLAGS
diff --git a/RelNotes b/RelNotes
index 0104513a31..061d699283 120000
--- a/RelNotes
+++ b/RelNotes
@@ -1 +1 @@
-Documentation/RelNotes/2.47.0.txt \ No newline at end of file
+Documentation/RelNotes/2.48.0.txt \ No newline at end of file
diff --git a/archive.c b/archive.c
index 9ba96aae4f..a7a92ff839 100644
--- a/archive.c
+++ b/archive.c
@@ -304,8 +304,6 @@ int write_archive_entries(struct archiver_args *args,
write_archive_entry_fn_t write_entry)
{
struct archiver_context context;
- struct unpack_trees_options opts;
- struct tree_desc t;
int err;
struct strbuf path_in_archive = STRBUF_INIT;
struct strbuf content = STRBUF_INIT;
@@ -331,23 +329,6 @@ int write_archive_entries(struct archiver_args *args,
context.args = args;
context.write_entry = write_entry;
- /*
- * Setup index and instruct attr to read index only
- */
- if (!args->worktree_attributes) {
- memset(&opts, 0, sizeof(opts));
- opts.index_only = 1;
- opts.head_idx = -1;
- opts.src_index = args->repo->index;
- opts.dst_index = args->repo->index;
- opts.fn = oneway_merge;
- init_tree_desc(&t, &args->tree->object.oid,
- args->tree->buffer, args->tree->size);
- if (unpack_trees(1, &t, &opts))
- return -1;
- git_attr_set_direction(GIT_ATTR_INDEX);
- }
-
err = read_tree(args->repo, args->tree,
&args->pathspec,
queue_or_write_archive_entry,
@@ -540,6 +521,27 @@ static void parse_treeish_arg(const char **argv,
if (!tree)
die(_("not a tree object: %s"), oid_to_hex(&oid));
+ /*
+ * Setup index and instruct attr to read index only
+ */
+ if (!ar_args->worktree_attributes) {
+ struct unpack_trees_options opts;
+ struct tree_desc t;
+
+ memset(&opts, 0, sizeof(opts));
+ opts.index_only = 1;
+ opts.head_idx = -1;
+ opts.src_index = ar_args->repo->index;
+ opts.dst_index = ar_args->repo->index;
+ opts.fn = oneway_merge;
+ init_tree_desc(&t, &tree->object.oid, tree->buffer, tree->size);
+ if (unpack_trees(1, &t, &opts))
+ die(_("failed to unpack tree object %s"),
+ oid_to_hex(&tree->object.oid));
+
+ git_attr_set_direction(GIT_ATTR_INDEX);
+ }
+
ar_args->refname = ref;
ar_args->tree = tree;
ar_args->commit_oid = commit_oid;
diff --git a/block-sha1/sha1.h b/block-sha1/sha1.h
index 9fb0441b98..47bb916636 100644
--- a/block-sha1/sha1.h
+++ b/block-sha1/sha1.h
@@ -16,7 +16,9 @@ void blk_SHA1_Init(blk_SHA_CTX *ctx);
void blk_SHA1_Update(blk_SHA_CTX *ctx, const void *dataIn, size_t len);
void blk_SHA1_Final(unsigned char hashout[20], blk_SHA_CTX *ctx);
+#ifndef platform_SHA_CTX
#define platform_SHA_CTX blk_SHA_CTX
#define platform_SHA1_Init blk_SHA1_Init
#define platform_SHA1_Update blk_SHA1_Update
#define platform_SHA1_Final blk_SHA1_Final
+#endif
diff --git a/bloom.c b/bloom.c
index c915f8b1ba..c428634105 100644
--- a/bloom.c
+++ b/bloom.c
@@ -476,8 +476,6 @@ struct bloom_filter *get_or_compute_bloom_filter(struct repository *r,
*last_slash = '\0';
} while (*path);
-
- diff_free_filepair(diff_queued_diff.queue[i]);
}
if (hashmap_get_size(&pathmap) > settings->max_changed_paths) {
@@ -508,8 +506,6 @@ struct bloom_filter *get_or_compute_bloom_filter(struct repository *r,
cleanup:
hashmap_clear_and_free(&pathmap, struct pathmap_hash_entry, entry);
} else {
- for (i = 0; i < diff_queued_diff.nr; i++)
- diff_free_filepair(diff_queued_diff.queue[i]);
init_truncated_large_filter(filter, settings->hash_version);
if (computed)
@@ -519,9 +515,7 @@ struct bloom_filter *get_or_compute_bloom_filter(struct repository *r,
if (computed)
*computed |= BLOOM_COMPUTED;
- free(diff_queued_diff.queue);
- DIFF_QUEUE_CLEAR(&diff_queued_diff);
-
+ diff_queue_clear(&diff_queued_diff);
return filter;
}
diff --git a/branch.c b/branch.c
index 08fa4094d2..44977ad0aa 100644
--- a/branch.c
+++ b/branch.c
@@ -738,6 +738,7 @@ static int submodule_create_branch(struct repository *r,
strbuf_release(&child_err);
strbuf_release(&out_buf);
+ free(out_prefix);
return ret;
}
@@ -794,7 +795,7 @@ void create_branches_recursively(struct repository *r, const char *name,
create_branch(r, name, start_committish, force, 0, reflog, quiet,
BRANCH_TRACK_NEVER, dry_run);
if (dry_run)
- return;
+ goto out;
/*
* NEEDSWORK If tracking was set up in the superproject but not the
* submodule, users might expect "git branch --recurse-submodules" to
@@ -815,8 +816,11 @@ void create_branches_recursively(struct repository *r, const char *name,
die(_("submodule '%s': cannot create branch '%s'"),
submodule_entry_list.entries[i].submodule->name,
name);
- repo_clear(submodule_entry_list.entries[i].repo);
}
+
+out:
+ submodule_entry_list_release(&submodule_entry_list);
+ free(branch_point);
}
void remove_merge_branch_state(struct repository *r)
diff --git a/builtin/annotate.c b/builtin/annotate.c
index ce3dfaafb2..7f754f2309 100644
--- a/builtin/annotate.c
+++ b/builtin/annotate.c
@@ -14,13 +14,23 @@ int cmd_annotate(int argc,
struct repository *repo)
{
struct strvec args = STRVEC_INIT;
- int i;
+ const char **args_copy;
+ int ret;
strvec_pushl(&args, "annotate", "-c", NULL);
-
- for (i = 1; i < argc; i++) {
+ for (int i = 1; i < argc; i++)
strvec_push(&args, argv[i]);
- }
- return cmd_blame(args.nr, args.v, prefix, repo);
+ /*
+ * `cmd_blame()` ends up modifying the array, which causes memory leaks
+ * if we didn't copy the array here.
+ */
+ CALLOC_ARRAY(args_copy, args.nr + 1);
+ COPY_ARRAY(args_copy, args.v, args.nr);
+
+ ret = cmd_blame(args.nr, args_copy, prefix, repo);
+
+ strvec_clear(&args);
+ free(args_copy);
+ return ret;
}
diff --git a/builtin/checkout.c b/builtin/checkout.c
index 9c30000d3a..c449558e66 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -1716,7 +1716,7 @@ static struct option *add_common_switch_branch_options(
N_("update ignored files (default)"),
PARSE_OPT_NOCOMPLETE),
OPT_BOOL(0, "ignore-other-worktrees", &opts->ignore_other_worktrees,
- N_("do not check if another worktree is holding the given ref")),
+ N_("do not check if another worktree is using this branch")),
OPT_END()
};
struct option *newopts = parse_options_concat(prevopts, options);
diff --git a/builtin/clone.c b/builtin/clone.c
index e77339c847..59fcb317a6 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -1403,8 +1403,17 @@ int cmd_clone(int argc,
* data from the --bundle-uri option.
*/
if (bundle_uri) {
+ struct remote_state *state;
int has_heuristic = 0;
+ /*
+ * We need to save the remote state as our remote's lifetime is
+ * tied to it.
+ */
+ state = the_repository->remote_state;
+ the_repository->remote_state = NULL;
+ repo_clear(the_repository);
+
/* At this point, we need the_repository to match the cloned repo. */
if (repo_init(the_repository, git_dir, work_tree))
warning(_("failed to initialize the repo, skipping bundle URI"));
@@ -1413,6 +1422,10 @@ int cmd_clone(int argc,
bundle_uri);
else if (has_heuristic)
git_config_set_gently("fetch.bundleuri", bundle_uri);
+
+ remote_state_clear(the_repository->remote_state);
+ free(the_repository->remote_state);
+ the_repository->remote_state = state;
} else {
/*
* Populate transport->got_remote_bundle_uri and
@@ -1422,12 +1435,26 @@ int cmd_clone(int argc,
if (transport->bundles &&
hashmap_get_size(&transport->bundles->bundles)) {
+ struct remote_state *state;
+
+ /*
+ * We need to save the remote state as our remote's
+ * lifetime is tied to it.
+ */
+ state = the_repository->remote_state;
+ the_repository->remote_state = NULL;
+ repo_clear(the_repository);
+
/* At this point, we need the_repository to match the cloned repo. */
if (repo_init(the_repository, git_dir, work_tree))
warning(_("failed to initialize the repo, skipping bundle URI"));
else if (fetch_bundle_list(the_repository,
transport->bundles))
warning(_("failed to fetch advertised bundles"));
+
+ remote_state_clear(the_repository->remote_state);
+ free(the_repository->remote_state);
+ the_repository->remote_state = state;
} else {
clear_bundle_list(transport->bundles);
FREE_AND_NULL(transport->bundles);
diff --git a/builtin/config.c b/builtin/config.c
index d8fd3def0e..cba7022108 100644
--- a/builtin/config.c
+++ b/builtin/config.c
@@ -19,7 +19,7 @@ static const char *const builtin_config_usage[] = {
N_("git config list [<file-option>] [<display-option>] [--includes]"),
N_("git config get [<file-option>] [<display-option>] [--includes] [--all] [--regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name>"),
N_("git config set [<file-option>] [--type=<type>] [--all] [--value=<value>] [--fixed-value] <name> <value>"),
- N_("git config unset [<file-option>] [--all] [--value=<value>] [--fixed-value] <name> <value>"),
+ N_("git config unset [<file-option>] [--all] [--value=<value>] [--fixed-value] <name>"),
N_("git config rename-section [<file-option>] <old-name> <new-name>"),
N_("git config remove-section [<file-option>] <name>"),
N_("git config edit [<file-option>]"),
@@ -43,7 +43,7 @@ static const char *const builtin_config_set_usage[] = {
};
static const char *const builtin_config_unset_usage[] = {
- N_("git config unset [<file-option>] [--all] [--value=<value>] [--fixed-value] <name> <value>"),
+ N_("git config unset [<file-option>] [--all] [--value=<value>] [--fixed-value] <name>"),
NULL
};
diff --git a/builtin/difftool.c b/builtin/difftool.c
index 4b416743ff..5772e82106 100644
--- a/builtin/difftool.c
+++ b/builtin/difftool.c
@@ -662,6 +662,12 @@ finish:
if (fp)
fclose(fp);
+ hashmap_clear_and_free(&working_tree_dups, struct working_tree_entry, entry);
+ hashmap_clear_and_free(&wt_modified, struct path_entry, entry);
+ hashmap_clear_and_free(&tmp_modified, struct path_entry, entry);
+ hashmap_clear_and_free(&submodules, struct pair_entry, entry);
+ hashmap_clear_and_free(&symlinks2, struct pair_entry, entry);
+ release_index(&wtindex);
free(lbase_dir);
free(rbase_dir);
strbuf_release(&info);
diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c
index 49222a36fa..62e8c3aa6b 100644
--- a/builtin/fetch-pack.c
+++ b/builtin/fetch-pack.c
@@ -53,6 +53,7 @@ int cmd_fetch_pack(int argc,
struct ref *fetched_refs = NULL, *remote_refs = NULL;
const char *dest = NULL;
struct ref **sought = NULL;
+ struct ref **sought_to_free = NULL;
int nr_sought = 0, alloc_sought = 0;
int fd[2];
struct string_list pack_lockfiles = STRING_LIST_INIT_DUP;
@@ -243,6 +244,13 @@ int cmd_fetch_pack(int argc,
BUG("unknown protocol version");
}
+ /*
+ * Create a shallow copy of `sought` so that we can free all of its entries.
+ * This is because `fetch_pack()` will modify the array to evict some
+ * entries, but won't free those.
+ */
+ DUP_ARRAY(sought_to_free, sought, nr_sought);
+
fetched_refs = fetch_pack(&args, fd, remote_refs, sought, nr_sought,
&shallow, pack_lockfiles_ptr, version);
@@ -280,9 +288,13 @@ int cmd_fetch_pack(int argc,
oid_to_hex(&ref->old_oid), ref->name);
for (size_t i = 0; i < nr_sought; i++)
- free_one_ref(sought[i]);
+ free_one_ref(sought_to_free[i]);
+ free(sought_to_free);
free(sought);
free_refs(fetched_refs);
free_refs(remote_refs);
+ list_objects_filter_release(&args.filter_options);
+ oid_array_clear(&shallow);
+ string_list_clear(&pack_lockfiles, 0);
return ret;
}
diff --git a/builtin/fetch.c b/builtin/fetch.c
index c900f57721..d9027e4dc9 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c
@@ -456,6 +456,7 @@ static void filter_prefetch_refspec(struct refspec *rs)
free(rs->items[i].src);
free(rs->items[i].dst);
+ free(rs->raw[i]);
for (j = i + 1; j < rs->nr; j++) {
rs->items[j - 1] = rs->items[j];
@@ -1980,6 +1981,8 @@ static int fetch_multiple(struct string_list *list, int max_children,
strvec_pushl(&argv, "-c", "fetch.bundleURI=",
"fetch", "--append", "--no-auto-gc",
"--no-write-commit-graph", NULL);
+ for (i = 0; i < server_options.nr; i++)
+ strvec_pushf(&argv, "--server-option=%s", server_options.items[i].string);
add_options_to_argv(&argv, config);
if (max_children != 1 && list->nr != 1) {
diff --git a/builtin/fsmonitor--daemon.c b/builtin/fsmonitor--daemon.c
index dce8a3b248..f3f6bd330b 100644
--- a/builtin/fsmonitor--daemon.c
+++ b/builtin/fsmonitor--daemon.c
@@ -1208,9 +1208,9 @@ static int fsmonitor_run_daemon_1(struct fsmonitor_daemon_state *state)
* system event listener thread so that we have the IPC handle
* before we need it.
*/
- if (ipc_server_run_async(&state->ipc_server_data,
- state->path_ipc.buf, &ipc_opts,
- handle_client, state))
+ if (ipc_server_init_async(&state->ipc_server_data,
+ state->path_ipc.buf, &ipc_opts,
+ handle_client, state))
return error_errno(
_("could not start IPC thread pool on '%s'"),
state->path_ipc.buf);
@@ -1314,6 +1314,7 @@ static int fsmonitor_run_daemon(void)
strbuf_reset(&state.path_gitdir_watch);
strbuf_addstr(&state.path_gitdir_watch,
absolute_path(repo_get_git_dir(the_repository)));
+ strbuf_strip_suffix(&state.path_gitdir_watch, "/.");
state.nr_paths_watching = 2;
}
diff --git a/builtin/gc.c b/builtin/gc.c
index c3894fb6bd..d52735354c 100644
--- a/builtin/gc.c
+++ b/builtin/gc.c
@@ -1478,9 +1478,9 @@ static int maintenance_run_tasks(struct maintenance_run_opts *opts,
static void initialize_maintenance_strategy(void)
{
- char *config_str;
+ const char *config_str;
- if (git_config_get_string("maintenance.strategy", &config_str))
+ if (git_config_get_string_tmp("maintenance.strategy", &config_str))
return;
if (!strcasecmp(config_str, "incremental")) {
@@ -1768,6 +1768,42 @@ static const char *get_frequency(enum schedule_priority schedule)
}
}
+static const char *extraconfig[] = {
+ "credential.interactive=false",
+ "core.askPass=true", /* 'true' returns success, but no output. */
+ NULL
+};
+
+static const char *get_extra_config_parameters(void) {
+ static const char *result = NULL;
+ struct strbuf builder = STRBUF_INIT;
+
+ if (result)
+ return result;
+
+ for (const char **s = extraconfig; s && *s; s++)
+ strbuf_addf(&builder, "-c %s ", *s);
+
+ result = strbuf_detach(&builder, NULL);
+ return result;
+}
+
+static const char *get_extra_launchctl_strings(void) {
+ static const char *result = NULL;
+ struct strbuf builder = STRBUF_INIT;
+
+ if (result)
+ return result;
+
+ for (const char **s = extraconfig; s && *s; s++) {
+ strbuf_addstr(&builder, "<string>-c</string>\n");
+ strbuf_addf(&builder, "<string>%s</string>\n", *s);
+ }
+
+ result = strbuf_detach(&builder, NULL);
+ return result;
+}
+
/*
* get_schedule_cmd` reads the GIT_TEST_MAINT_SCHEDULER environment variable
* to mock the schedulers that `git maintenance start` rely on.
@@ -1782,39 +1818,43 @@ static const char *get_frequency(enum schedule_priority schedule)
* * If $GIT_TEST_MAINT_SCHEDULER is set, return true.
* In this case, the *cmd value is read as input.
*
- * * if the input value *cmd is the key of one of the comma-separated list
- * item, then *is_available is set to true and *cmd is modified and becomes
+ * * if the input value cmd is the key of one of the comma-separated list
+ * item, then *is_available is set to true and *out is set to
* the mock command.
*
* * if the input value *cmd isn’t the key of any of the comma-separated list
- * item, then *is_available is set to false.
+ * item, then *is_available is set to false and *out is set to the original
+ * command.
*
* Ex.:
* GIT_TEST_MAINT_SCHEDULER not set
* +-------+-------------------------------------------------+
* | Input | Output |
- * | *cmd | return code | *cmd | *is_available |
+ * | *cmd | return code | *out | *is_available |
* +-------+-------------+-------------------+---------------+
- * | "foo" | false | "foo" (unchanged) | (unchanged) |
+ * | "foo" | false | "foo" (allocated) | (unchanged) |
* +-------+-------------+-------------------+---------------+
*
* GIT_TEST_MAINT_SCHEDULER set to “foo:./mock_foo.sh,bar:./mock_bar.shâ€
* +-------+-------------------------------------------------+
* | Input | Output |
- * | *cmd | return code | *cmd | *is_available |
+ * | *cmd | return code | *out | *is_available |
* +-------+-------------+-------------------+---------------+
* | "foo" | true | "./mock.foo.sh" | true |
- * | "qux" | true | "qux" (unchanged) | false |
+ * | "qux" | true | "qux" (allocated) | false |
* +-------+-------------+-------------------+---------------+
*/
-static int get_schedule_cmd(const char **cmd, int *is_available)
+static int get_schedule_cmd(const char *cmd, int *is_available, char **out)
{
char *testing = xstrdup_or_null(getenv("GIT_TEST_MAINT_SCHEDULER"));
struct string_list_item *item;
struct string_list list = STRING_LIST_INIT_NODUP;
- if (!testing)
+ if (!testing) {
+ if (out)
+ *out = xstrdup(cmd);
return 0;
+ }
if (is_available)
*is_available = 0;
@@ -1826,16 +1866,22 @@ static int get_schedule_cmd(const char **cmd, int *is_available)
if (string_list_split_in_place(&pair, item->string, ":", 2) != 2)
continue;
- if (!strcmp(*cmd, pair.items[0].string)) {
- *cmd = pair.items[1].string;
+ if (!strcmp(cmd, pair.items[0].string)) {
+ if (out)
+ *out = xstrdup(pair.items[1].string);
if (is_available)
*is_available = 1;
- string_list_clear(&list, 0);
- UNLEAK(testing);
- return 1;
+ string_list_clear(&pair, 0);
+ goto out;
}
+
+ string_list_clear(&pair, 0);
}
+ if (out)
+ *out = xstrdup(cmd);
+
+out:
string_list_clear(&list, 0);
free(testing);
return 1;
@@ -1852,9 +1898,8 @@ static int get_random_minute(void)
static int is_launchctl_available(void)
{
- const char *cmd = "launchctl";
int is_available;
- if (get_schedule_cmd(&cmd, &is_available))
+ if (get_schedule_cmd("launchctl", &is_available, NULL))
return is_available;
#ifdef __APPLE__
@@ -1892,12 +1937,12 @@ static char *launchctl_get_uid(void)
static int launchctl_boot_plist(int enable, const char *filename)
{
- const char *cmd = "launchctl";
+ char *cmd;
int result;
struct child_process child = CHILD_PROCESS_INIT;
char *uid = launchctl_get_uid();
- get_schedule_cmd(&cmd, NULL);
+ get_schedule_cmd("launchctl", NULL, &cmd);
strvec_split(&child.args, cmd);
strvec_pushl(&child.args, enable ? "bootstrap" : "bootout", uid,
filename, NULL);
@@ -1910,6 +1955,7 @@ static int launchctl_boot_plist(int enable, const char *filename)
result = finish_command(&child);
+ free(cmd);
free(uid);
return result;
}
@@ -1961,10 +2007,10 @@ static int launchctl_schedule_plist(const char *exec_path, enum schedule_priorit
static unsigned long lock_file_timeout_ms = ULONG_MAX;
struct strbuf plist = STRBUF_INIT, plist2 = STRBUF_INIT;
struct stat st;
- const char *cmd = "launchctl";
+ char *cmd;
int minute = get_random_minute();
- get_schedule_cmd(&cmd, NULL);
+ get_schedule_cmd("launchctl", NULL, &cmd);
preamble = "<?xml version=\"1.0\"?>\n"
"<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n"
"<plist version=\"1.0\">"
@@ -1974,6 +2020,7 @@ static int launchctl_schedule_plist(const char *exec_path, enum schedule_priorit
"<array>\n"
"<string>%s/git</string>\n"
"<string>--exec-path=%s</string>\n"
+ "%s" /* For extra config parameters. */
"<string>for-each-repo</string>\n"
"<string>--keep-going</string>\n"
"<string>--config=maintenance.repo</string>\n"
@@ -1983,7 +2030,8 @@ static int launchctl_schedule_plist(const char *exec_path, enum schedule_priorit
"</array>\n"
"<key>StartCalendarInterval</key>\n"
"<array>\n";
- strbuf_addf(&plist, preamble, name, exec_path, exec_path, frequency);
+ strbuf_addf(&plist, preamble, name, exec_path, exec_path,
+ get_extra_launchctl_strings(), frequency);
switch (schedule) {
case SCHEDULE_HOURLY:
@@ -2054,6 +2102,7 @@ static int launchctl_schedule_plist(const char *exec_path, enum schedule_priorit
free(filename);
free(name);
+ free(cmd);
strbuf_release(&plist);
strbuf_release(&plist2);
return 0;
@@ -2078,9 +2127,8 @@ static int launchctl_update_schedule(int run_maintenance, int fd UNUSED)
static int is_schtasks_available(void)
{
- const char *cmd = "schtasks";
int is_available;
- if (get_schedule_cmd(&cmd, &is_available))
+ if (get_schedule_cmd("schtasks", &is_available, NULL))
return is_available;
#ifdef GIT_WINDOWS_NATIVE
@@ -2099,15 +2147,16 @@ static char *schtasks_task_name(const char *frequency)
static int schtasks_remove_task(enum schedule_priority schedule)
{
- const char *cmd = "schtasks";
+ char *cmd;
struct child_process child = CHILD_PROCESS_INIT;
const char *frequency = get_frequency(schedule);
char *name = schtasks_task_name(frequency);
- get_schedule_cmd(&cmd, NULL);
+ get_schedule_cmd("schtasks", NULL, &cmd);
strvec_split(&child.args, cmd);
strvec_pushl(&child.args, "/delete", "/tn", name, "/f", NULL);
free(name);
+ free(cmd);
return run_command(&child);
}
@@ -2121,7 +2170,7 @@ static int schtasks_remove_tasks(void)
static int schtasks_schedule_task(const char *exec_path, enum schedule_priority schedule)
{
- const char *cmd = "schtasks";
+ char *cmd;
int result;
struct child_process child = CHILD_PROCESS_INIT;
const char *xml;
@@ -2131,7 +2180,7 @@ static int schtasks_schedule_task(const char *exec_path, enum schedule_priority
struct strbuf tfilename = STRBUF_INIT;
int minute = get_random_minute();
- get_schedule_cmd(&cmd, NULL);
+ get_schedule_cmd("schtasks", NULL, &cmd);
strbuf_addf(&tfilename, "%s/schedule_%s_XXXXXX",
repo_get_common_dir(the_repository), frequency);
@@ -2218,11 +2267,12 @@ static int schtasks_schedule_task(const char *exec_path, enum schedule_priority
"<Actions Context=\"Author\">\n"
"<Exec>\n"
"<Command>\"%s\\headless-git.exe\"</Command>\n"
- "<Arguments>--exec-path=\"%s\" for-each-repo --keep-going --config=maintenance.repo maintenance run --schedule=%s</Arguments>\n"
+ "<Arguments>--exec-path=\"%s\" %s for-each-repo --keep-going --config=maintenance.repo maintenance run --schedule=%s</Arguments>\n"
"</Exec>\n"
"</Actions>\n"
"</Task>\n";
- fprintf(tfile->fp, xml, exec_path, exec_path, frequency);
+ fprintf(tfile->fp, xml, exec_path, exec_path,
+ get_extra_config_parameters(), frequency);
strvec_split(&child.args, cmd);
strvec_pushl(&child.args, "/create", "/tn", name, "/f", "/xml",
get_tempfile_path(tfile), NULL);
@@ -2237,6 +2287,7 @@ static int schtasks_schedule_task(const char *exec_path, enum schedule_priority
delete_tempfile(&tfile);
free(name);
+ free(cmd);
return result;
}
@@ -2278,21 +2329,28 @@ static int check_crontab_process(const char *cmd)
static int is_crontab_available(void)
{
- const char *cmd = "crontab";
+ char *cmd;
int is_available;
+ int ret;
- if (get_schedule_cmd(&cmd, &is_available))
- return is_available;
+ if (get_schedule_cmd("crontab", &is_available, &cmd)) {
+ ret = is_available;
+ goto out;
+ }
#ifdef __APPLE__
/*
* macOS has cron, but it requires special permissions and will
* create a UI alert when attempting to run this command.
*/
- return 0;
+ ret = 0;
#else
- return check_crontab_process(cmd);
+ ret = check_crontab_process(cmd);
#endif
+
+out:
+ free(cmd);
+ return ret;
}
#define BEGIN_LINE "# BEGIN GIT MAINTENANCE SCHEDULE"
@@ -2300,7 +2358,7 @@ static int is_crontab_available(void)
static int crontab_update_schedule(int run_maintenance, int fd)
{
- const char *cmd = "crontab";
+ char *cmd;
int result = 0;
int in_old_region = 0;
struct child_process crontab_list = CHILD_PROCESS_INIT;
@@ -2310,15 +2368,17 @@ static int crontab_update_schedule(int run_maintenance, int fd)
struct tempfile *tmpedit = NULL;
int minute = get_random_minute();
- get_schedule_cmd(&cmd, NULL);
+ get_schedule_cmd("crontab", NULL, &cmd);
strvec_split(&crontab_list.args, cmd);
strvec_push(&crontab_list.args, "-l");
crontab_list.in = -1;
crontab_list.out = dup(fd);
crontab_list.git_cmd = 0;
- if (start_command(&crontab_list))
- return error(_("failed to run 'crontab -l'; your system might not support 'cron'"));
+ if (start_command(&crontab_list)) {
+ result = error(_("failed to run 'crontab -l'; your system might not support 'cron'"));
+ goto out;
+ }
/* Ignore exit code, as an empty crontab will return error. */
finish_command(&crontab_list);
@@ -2363,8 +2423,8 @@ static int crontab_update_schedule(int run_maintenance, int fd)
"# replaced in the future by a Git command.\n\n");
strbuf_addf(&line_format,
- "%%d %%s * * %%s \"%s/git\" --exec-path=\"%s\" for-each-repo --keep-going --config=maintenance.repo maintenance run --schedule=%%s\n",
- exec_path, exec_path);
+ "%%d %%s * * %%s \"%s/git\" --exec-path=\"%s\" %s for-each-repo --keep-going --config=maintenance.repo maintenance run --schedule=%%s\n",
+ exec_path, exec_path, get_extra_config_parameters());
fprintf(cron_in, line_format.buf, minute, "1-23", "*", "hourly");
fprintf(cron_in, line_format.buf, minute, "0", "1-6", "daily");
fprintf(cron_in, line_format.buf, minute, "0", "0", "weekly");
@@ -2388,8 +2448,10 @@ static int crontab_update_schedule(int run_maintenance, int fd)
result = error(_("'crontab' died"));
else
fclose(cron_list);
+
out:
delete_tempfile(&tmpedit);
+ free(cmd);
return result;
}
@@ -2412,10 +2474,9 @@ static int real_is_systemd_timer_available(void)
static int is_systemd_timer_available(void)
{
- const char *cmd = "systemctl";
int is_available;
- if (get_schedule_cmd(&cmd, &is_available))
+ if (get_schedule_cmd("systemctl", &is_available, NULL))
return is_available;
return real_is_systemd_timer_available();
@@ -2564,7 +2625,7 @@ static int systemd_timer_write_service_template(const char *exec_path)
"\n"
"[Service]\n"
"Type=oneshot\n"
- "ExecStart=\"%s/git\" --exec-path=\"%s\" for-each-repo --keep-going --config=maintenance.repo maintenance run --schedule=%%i\n"
+ "ExecStart=\"%s/git\" --exec-path=\"%s\" %s for-each-repo --keep-going --config=maintenance.repo maintenance run --schedule=%%i\n"
"LockPersonality=yes\n"
"MemoryDenyWriteExecute=yes\n"
"NoNewPrivileges=yes\n"
@@ -2574,7 +2635,7 @@ static int systemd_timer_write_service_template(const char *exec_path)
"RestrictSUIDSGID=yes\n"
"SystemCallArchitectures=native\n"
"SystemCallFilter=@system-service\n";
- if (fprintf(file, unit, exec_path, exec_path) < 0) {
+ if (fprintf(file, unit, exec_path, exec_path, get_extra_config_parameters()) < 0) {
error(_("failed to write to '%s'"), filename);
fclose(file);
goto error;
@@ -2596,9 +2657,10 @@ static int systemd_timer_enable_unit(int enable,
enum schedule_priority schedule,
int minute)
{
- const char *cmd = "systemctl";
+ char *cmd = NULL;
struct child_process child = CHILD_PROCESS_INIT;
const char *frequency = get_frequency(schedule);
+ int ret;
/*
* Disabling the systemd unit while it is already disabled makes
@@ -2609,20 +2671,25 @@ static int systemd_timer_enable_unit(int enable,
* On the other hand, enabling a systemd unit which is already enabled
* produces no error.
*/
- if (!enable)
+ if (!enable) {
child.no_stderr = 1;
- else if (systemd_timer_write_timer_file(schedule, minute))
- return -1;
+ } else if (systemd_timer_write_timer_file(schedule, minute)) {
+ ret = -1;
+ goto out;
+ }
- get_schedule_cmd(&cmd, NULL);
+ get_schedule_cmd("systemctl", NULL, &cmd);
strvec_split(&child.args, cmd);
strvec_pushl(&child.args, "--user", enable ? "enable" : "disable",
"--now", NULL);
strvec_pushf(&child.args, SYSTEMD_UNIT_FORMAT, frequency, "timer");
- if (start_command(&child))
- return error(_("failed to start systemctl"));
- if (finish_command(&child))
+ if (start_command(&child)) {
+ ret = error(_("failed to start systemctl"));
+ goto out;
+ }
+
+ if (finish_command(&child)) {
/*
* Disabling an already disabled systemd unit makes
* systemctl fail.
@@ -2630,9 +2697,17 @@ static int systemd_timer_enable_unit(int enable,
*
* Enabling an enabled systemd unit doesn't fail.
*/
- if (enable)
- return error(_("failed to run systemctl"));
- return 0;
+ if (enable) {
+ ret = error(_("failed to run systemctl"));
+ goto out;
+ }
+ }
+
+ ret = 0;
+
+out:
+ free(cmd);
+ return ret;
}
/*
diff --git a/builtin/help.c b/builtin/help.c
index a509241a80..4a5a079070 100644
--- a/builtin/help.c
+++ b/builtin/help.c
@@ -54,7 +54,7 @@ static enum help_action {
HELP_ACTION_CONFIG_SECTIONS_FOR_COMPLETION,
} cmd_mode;
-static const char *html_path;
+static char *html_path;
static int verbose = 1;
static enum help_format help_format = HELP_FORMAT_NONE;
static int exclude_guides;
@@ -411,6 +411,7 @@ static int git_help_config(const char *var, const char *value,
if (!strcmp(var, "help.htmlpath")) {
if (!value)
return config_error_nonbool(var);
+ free(html_path);
html_path = xstrdup(value);
return 0;
}
@@ -515,23 +516,24 @@ static void show_info_page(const char *page)
static void get_html_page_path(struct strbuf *page_path, const char *page)
{
struct stat st;
+ const char *path = html_path;
char *to_free = NULL;
- if (!html_path)
- html_path = to_free = system_path(GIT_HTML_PATH);
+ if (!path)
+ path = to_free = system_path(GIT_HTML_PATH);
/*
* Check that the page we're looking for exists.
*/
- if (!strstr(html_path, "://")) {
- if (stat(mkpath("%s/%s.html", html_path, page), &st)
+ if (!strstr(path, "://")) {
+ if (stat(mkpath("%s/%s.html", path, page), &st)
|| !S_ISREG(st.st_mode))
die("'%s/%s.html': documentation file not found.",
- html_path, page);
+ path, page);
}
strbuf_init(page_path, 0);
- strbuf_addf(page_path, "%s/%s.html", html_path, page);
+ strbuf_addf(page_path, "%s/%s.html", path, page);
free(to_free);
}
diff --git a/builtin/index-pack.c b/builtin/index-pack.c
index e228c56ff2..9d23b41b3a 100644
--- a/builtin/index-pack.c
+++ b/builtin/index-pack.c
@@ -1505,7 +1505,7 @@ static void rename_tmp_packfile(const char **final_name,
struct strbuf *name, unsigned char *hash,
const char *ext, int make_read_only_if_same)
{
- if (*final_name != curr_name) {
+ if (!*final_name || strcmp(*final_name, curr_name)) {
if (!*final_name)
*final_name = odb_pack_name(name, hash, ext);
if (finalize_object_file(curr_name, *final_name))
@@ -1726,7 +1726,7 @@ int cmd_index_pack(int argc,
{
int i, fix_thin_pack = 0, verify = 0, stat_only = 0, rev_index;
const char *curr_index;
- const char *curr_rev_index = NULL;
+ char *curr_rev_index = NULL;
const char *index_name = NULL, *pack_name = NULL, *rev_index_name = NULL;
const char *keep_msg = NULL;
const char *promisor_msg = NULL;
@@ -1968,8 +1968,7 @@ int cmd_index_pack(int argc,
free((void *) curr_pack);
if (!index_name)
free((void *) curr_index);
- if (!rev_index_name)
- free((void *) curr_rev_index);
+ free(curr_rev_index);
/*
* Let the caller know this pack is not self contained
diff --git a/builtin/ls-remote.c b/builtin/ls-remote.c
index f723b3bf3b..423318f87e 100644
--- a/builtin/ls-remote.c
+++ b/builtin/ls-remote.c
@@ -173,5 +173,6 @@ int cmd_ls_remote(int argc,
transport_ls_refs_options_release(&transport_options);
strvec_clear(&pattern);
+ string_list_clear(&server_options, 0);
return status;
}
diff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c
index 81f4494d46..5809613002 100644
--- a/builtin/pack-redundant.c
+++ b/builtin/pack-redundant.c
@@ -69,6 +69,15 @@ static inline void llist_init(struct llist **list)
(*list)->size = 0;
}
+static void llist_free(struct llist *list)
+{
+ for (struct llist_item *i = list->front, *next; i; i = next) {
+ next = i->next;
+ llist_item_put(i);
+ }
+ free(list);
+}
+
static struct llist * llist_copy(struct llist *list)
{
struct llist *ret;
@@ -206,6 +215,14 @@ static inline struct pack_list * pack_list_insert(struct pack_list **pl,
return p;
}
+static void pack_list_free(struct pack_list *pl)
+{
+ for (struct pack_list *next; pl; pl = next) {
+ next = pl->next;
+ free(pl);
+ }
+}
+
static inline size_t pack_list_size(struct pack_list *pl)
{
size_t ret = 0;
@@ -419,7 +436,8 @@ static void minimize(struct pack_list **min)
/* return if there are no objects missing from the unique set */
if (missing->size == 0) {
- free(missing);
+ llist_free(missing);
+ pack_list_free(non_unique);
return;
}
@@ -434,6 +452,8 @@ static void minimize(struct pack_list **min)
}
while (non_unique) {
+ struct pack_list *next;
+
/* sort the non_unique packs, greater size of remaining_objects first */
sort_pack_list(&non_unique);
if (non_unique->remaining_objects->size == 0)
@@ -444,8 +464,14 @@ static void minimize(struct pack_list **min)
for (pl = non_unique->next; pl && pl->remaining_objects->size > 0; pl = pl->next)
llist_sorted_difference_inplace(pl->remaining_objects, non_unique->remaining_objects);
- non_unique = non_unique->next;
+ next = non_unique->next;
+ free(non_unique);
+ non_unique = next;
}
+
+ pack_list_free(non_unique);
+ llist_free(unique_pack_objects);
+ llist_free(missing);
}
static void load_all_objects(void)
@@ -565,7 +591,6 @@ static void load_all(void)
int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED) {
int i; int i_still_use_this = 0; struct pack_list *min = NULL, *red, *pl;
struct llist *ignore;
- struct object_id *oid;
char buf[GIT_MAX_HEXSZ + 2]; /* hex hash + \n + \0 */
if (argc == 2 && !strcmp(argv[1], "-h"))
@@ -625,11 +650,11 @@ int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED, s
/* ignore objects given on stdin */
llist_init(&ignore);
if (!isatty(0)) {
+ struct object_id oid;
while (fgets(buf, sizeof(buf), stdin)) {
- oid = xmalloc(sizeof(*oid));
- if (get_oid_hex(buf, oid))
+ if (get_oid_hex(buf, &oid))
die("Bad object ID on stdin: %s", buf);
- llist_insert_sorted_unique(ignore, oid, NULL);
+ llist_insert_sorted_unique(ignore, &oid, NULL);
}
}
llist_sorted_difference_inplace(all_objects, ignore);
@@ -671,5 +696,8 @@ int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED, s
fprintf(stderr, "%luMB of redundant packs in total.\n",
(unsigned long)pack_set_bytecount(red)/(1024*1024));
+ pack_list_free(red);
+ pack_list_free(min);
+ llist_free(ignore);
return 0;
}
diff --git a/builtin/pull.c b/builtin/pull.c
index 149f201320..388ef3d130 100644
--- a/builtin/pull.c
+++ b/builtin/pull.c
@@ -85,7 +85,7 @@ static const char *opt_squash;
static const char *opt_commit;
static const char *opt_edit;
static const char *cleanup_arg;
-static const char *opt_ff;
+static char *opt_ff;
static const char *opt_verify_signatures;
static const char *opt_verify;
static int opt_autostash = -1;
@@ -1028,8 +1028,10 @@ int cmd_pull(int argc,
* "--rebase" can override a config setting of
* pull.ff=only.
*/
- if (opt_rebase >= 0 && opt_ff && !strcmp(opt_ff, "--ff-only"))
- opt_ff = "--ff";
+ if (opt_rebase >= 0 && opt_ff && !strcmp(opt_ff, "--ff-only")) {
+ free(opt_ff);
+ opt_ff = xstrdup("--ff");
+ }
}
if (opt_rebase < 0)
@@ -1139,7 +1141,8 @@ int cmd_pull(int argc,
if (can_ff) {
/* we can fast-forward this without invoking rebase */
- opt_ff = "--ff-only";
+ free(opt_ff);
+ opt_ff = xstrdup("--ff-only");
ret = run_merge();
} else {
ret = run_rebase(&newbase, &upstream);
diff --git a/builtin/push.c b/builtin/push.c
index e6f48969b8..51c609f208 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -519,14 +519,7 @@ static int git_push_config(const char *k, const char *v,
RECURSE_SUBMODULES_ON_DEMAND : RECURSE_SUBMODULES_OFF;
recurse_submodules = val;
} else if (!strcmp(k, "push.pushoption")) {
- if (!v)
- return config_error_nonbool(k);
- else
- if (!*v)
- string_list_clear(&push_options_config, 0);
- else
- string_list_append(&push_options_config, v);
- return 0;
+ return parse_transport_option(k, v, &push_options_config);
} else if (!strcmp(k, "color.push")) {
push_use_color = git_config_colorbool(k, v);
return 0;
@@ -669,6 +662,7 @@ int cmd_push(int argc,
rc = do_push(flags, push_options, remote);
string_list_clear(&push_options_cmdline, 0);
string_list_clear(&push_options_config, 0);
+ clear_cas_option(&cas);
if (rc == -1)
usage_with_options(push_usage, options);
else
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index 536d22761d..ab5b20e39c 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -374,6 +374,7 @@ static void write_head_info(void)
struct command {
struct command *next;
const char *error_string;
+ char *error_string_owned;
struct ref_push_report *report;
unsigned int skip_update:1,
did_not_exist:1,
@@ -1083,7 +1084,7 @@ static int read_proc_receive_report(struct packet_reader *reader,
hint->run_proc_receive |= RUN_PROC_RECEIVE_RETURNED;
if (!strcmp(head, "ng")) {
if (p)
- hint->error_string = xstrdup(p);
+ hint->error_string = hint->error_string_owned = xstrdup(p);
else
hint->error_string = "failed";
code = -1;
@@ -2054,6 +2055,8 @@ static void free_commands(struct command *commands)
while (commands) {
struct command *next = commands->next;
+ ref_push_report_free(commands->report);
+ free(commands->error_string_owned);
free(commands);
commands = next;
}
diff --git a/builtin/repack.c b/builtin/repack.c
index cb4420f085..d6bb37e84a 100644
--- a/builtin/repack.c
+++ b/builtin/repack.c
@@ -86,17 +86,34 @@ static int repack_config(const char *var, const char *value,
run_update_server_info = git_config_bool(var, value);
return 0;
}
- if (!strcmp(var, "repack.cruftwindow"))
+ if (!strcmp(var, "repack.cruftwindow")) {
+ free(cruft_po_args->window);
return git_config_string(&cruft_po_args->window, var, value);
- if (!strcmp(var, "repack.cruftwindowmemory"))
+ }
+ if (!strcmp(var, "repack.cruftwindowmemory")) {
+ free(cruft_po_args->window_memory);
return git_config_string(&cruft_po_args->window_memory, var, value);
- if (!strcmp(var, "repack.cruftdepth"))
+ }
+ if (!strcmp(var, "repack.cruftdepth")) {
+ free(cruft_po_args->depth);
return git_config_string(&cruft_po_args->depth, var, value);
- if (!strcmp(var, "repack.cruftthreads"))
+ }
+ if (!strcmp(var, "repack.cruftthreads")) {
+ free(cruft_po_args->threads);
return git_config_string(&cruft_po_args->threads, var, value);
+ }
return git_default_config(var, value, ctx, cb);
}
+static void pack_objects_args_release(struct pack_objects_args *args)
+{
+ free(args->window);
+ free(args->window_memory);
+ free(args->depth);
+ free(args->threads);
+ list_objects_filter_release(&args->filter_options);
+}
+
struct existing_packs {
struct string_list kept_packs;
struct string_list non_kept_packs;
@@ -1156,12 +1173,16 @@ int cmd_repack(int argc,
const char *unpack_unreachable = NULL;
int keep_unreachable = 0;
struct string_list keep_pack_list = STRING_LIST_INIT_NODUP;
- struct pack_objects_args po_args = {NULL};
- struct pack_objects_args cruft_po_args = {NULL};
+ struct pack_objects_args po_args = { 0 };
+ struct pack_objects_args cruft_po_args = { 0 };
int write_midx = 0;
const char *cruft_expiration = NULL;
const char *expire_to = NULL;
const char *filter_to = NULL;
+ const char *opt_window = NULL;
+ const char *opt_window_memory = NULL;
+ const char *opt_depth = NULL;
+ const char *opt_threads = NULL;
struct option builtin_repack_options[] = {
OPT_BIT('a', NULL, &pack_everything,
@@ -1195,13 +1216,13 @@ int cmd_repack(int argc,
N_("with -A, do not loosen objects older than this")),
OPT_BOOL('k', "keep-unreachable", &keep_unreachable,
N_("with -a, repack unreachable objects")),
- OPT_STRING(0, "window", &po_args.window, N_("n"),
+ OPT_STRING(0, "window", &opt_window, N_("n"),
N_("size of the window used for delta compression")),
- OPT_STRING(0, "window-memory", &po_args.window_memory, N_("bytes"),
+ OPT_STRING(0, "window-memory", &opt_window_memory, N_("bytes"),
N_("same as the above, but limit memory size instead of entries count")),
- OPT_STRING(0, "depth", &po_args.depth, N_("n"),
+ OPT_STRING(0, "depth", &opt_depth, N_("n"),
N_("limits the maximum delta depth")),
- OPT_STRING(0, "threads", &po_args.threads, N_("n"),
+ OPT_STRING(0, "threads", &opt_threads, N_("n"),
N_("limits the maximum number of threads")),
OPT_MAGNITUDE(0, "max-pack-size", &po_args.max_pack_size,
N_("maximum size of each packfile")),
@@ -1228,6 +1249,11 @@ int cmd_repack(int argc,
argc = parse_options(argc, argv, prefix, builtin_repack_options,
git_repack_usage, 0);
+ po_args.window = xstrdup_or_null(opt_window);
+ po_args.window_memory = xstrdup_or_null(opt_window_memory);
+ po_args.depth = xstrdup_or_null(opt_depth);
+ po_args.threads = xstrdup_or_null(opt_threads);
+
if (delete_redundant && repository_format_precious_objects)
die(_("cannot delete packs in a precious-objects repo"));
@@ -1393,13 +1419,13 @@ int cmd_repack(int argc,
const char *pack_prefix = find_pack_prefix(packdir, packtmp);
if (!cruft_po_args.window)
- cruft_po_args.window = po_args.window;
+ cruft_po_args.window = xstrdup_or_null(po_args.window);
if (!cruft_po_args.window_memory)
- cruft_po_args.window_memory = po_args.window_memory;
+ cruft_po_args.window_memory = xstrdup_or_null(po_args.window_memory);
if (!cruft_po_args.depth)
- cruft_po_args.depth = po_args.depth;
+ cruft_po_args.depth = xstrdup_or_null(po_args.depth);
if (!cruft_po_args.threads)
- cruft_po_args.threads = po_args.threads;
+ cruft_po_args.threads = xstrdup_or_null(po_args.threads);
if (!cruft_po_args.max_pack_size)
cruft_po_args.max_pack_size = po_args.max_pack_size;
@@ -1552,7 +1578,8 @@ cleanup:
string_list_clear(&names, 1);
existing_packs_release(&existing);
free_pack_geometry(&geometry);
- list_objects_filter_release(&po_args.filter_options);
+ pack_objects_args_release(&po_args);
+ pack_objects_args_release(&cruft_po_args);
return ret;
}
diff --git a/builtin/revert.c b/builtin/revert.c
index 55ba1092c5..b7917dddd3 100644
--- a/builtin/revert.c
+++ b/builtin/revert.c
@@ -110,6 +110,9 @@ static int run_sequencer(int argc, const char **argv, const char *prefix,
const char * const * usage_str = revert_or_cherry_pick_usage(opts);
const char *me = action_name(opts);
const char *cleanup_arg = NULL;
+ const char sentinel_value;
+ const char *strategy = &sentinel_value;
+ const char *gpg_sign = &sentinel_value;
enum empty_action empty_opt = EMPTY_COMMIT_UNSPECIFIED;
int cmd = 0;
struct option base_options[] = {
@@ -125,10 +128,10 @@ static int run_sequencer(int argc, const char **argv, const char *prefix,
OPT_CALLBACK('m', "mainline", opts, N_("parent-number"),
N_("select mainline parent"), option_parse_m),
OPT_RERERE_AUTOUPDATE(&opts->allow_rerere_auto),
- OPT_STRING(0, "strategy", &opts->strategy, N_("strategy"), N_("merge strategy")),
+ OPT_STRING(0, "strategy", &strategy, N_("strategy"), N_("merge strategy")),
OPT_STRVEC('X', "strategy-option", &opts->xopts, N_("option"),
N_("option for merge strategy")),
- { OPTION_STRING, 'S', "gpg-sign", &opts->gpg_sign, N_("key-id"),
+ { OPTION_STRING, 'S', "gpg-sign", &gpg_sign, N_("key-id"),
N_("GPG sign commit"), PARSE_OPT_OPTARG, NULL, (intptr_t) "" },
OPT_END()
};
@@ -240,8 +243,14 @@ static int run_sequencer(int argc, const char **argv, const char *prefix,
usage_with_options(usage_str, options);
/* These option values will be free()d */
- opts->gpg_sign = xstrdup_or_null(opts->gpg_sign);
- opts->strategy = xstrdup_or_null(opts->strategy);
+ if (gpg_sign != &sentinel_value) {
+ free(opts->gpg_sign);
+ opts->gpg_sign = xstrdup_or_null(gpg_sign);
+ }
+ if (strategy != &sentinel_value) {
+ free(opts->strategy);
+ opts->strategy = xstrdup_or_null(strategy);
+ }
if (!opts->strategy && getenv("GIT_TEST_MERGE_ALGORITHM"))
opts->strategy = xstrdup(getenv("GIT_TEST_MERGE_ALGORITHM"));
free(options);
diff --git a/builtin/send-pack.c b/builtin/send-pack.c
index 81fc96d423..59b626aae8 100644
--- a/builtin/send-pack.c
+++ b/builtin/send-pack.c
@@ -340,8 +340,11 @@ int cmd_send_pack(int argc,
/* stable plumbing output; do not modify or localize */
fprintf(stderr, "Everything up-to-date\n");
+ string_list_clear(&push_options, 0);
free_refs(remote_refs);
free_refs(local_refs);
refspec_clear(&rs);
+ oid_array_clear(&shallow);
+ clear_cas_option(&cas);
return ret;
}
diff --git a/builtin/sparse-checkout.c b/builtin/sparse-checkout.c
index e4e791a4c9..49aedc1de8 100644
--- a/builtin/sparse-checkout.c
+++ b/builtin/sparse-checkout.c
@@ -924,6 +924,11 @@ static int sparse_checkout_disable(int argc, const char **argv,
builtin_sparse_checkout_disable_options,
builtin_sparse_checkout_disable_usage, 0);
+ /*
+ * Disable the advice message for expanding a sparse index, as we
+ * are expecting to do that when disabling sparse-checkout.
+ */
+ give_advice_on_expansion = 0;
repo_read_index(the_repository);
memset(&pl, 0, sizeof(pl));
diff --git a/builtin/stash.c b/builtin/stash.c
index f1acc918d0..1399a1bbe2 100644
--- a/builtin/stash.c
+++ b/builtin/stash.c
@@ -1759,7 +1759,7 @@ static int push_stash(int argc, const char **argv, const char *prefix,
int quiet = 0;
int pathspec_file_nul = 0;
const char *stash_msg = NULL;
- const char *pathspec_from_file = NULL;
+ char *pathspec_from_file = NULL;
struct pathspec ps;
struct option options[] = {
OPT_BOOL('k', "keep-index", &keep_index,
@@ -1821,7 +1821,9 @@ static int push_stash(int argc, const char **argv, const char *prefix,
ret = do_push_stash(&ps, stash_msg, quiet, keep_index, patch_mode,
include_untracked, only_staged);
+
clear_pathspec(&ps);
+ free(pathspec_from_file);
return ret;
}
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index a1ada86952..b6b5f1ebde 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -364,9 +364,13 @@ static void runcommand_in_submodule_cb(const struct cache_entry *list_item,
if (!info->quiet)
printf(_("Entering '%s'\n"), displaypath);
- if (info->argv[0] && run_command(&cp))
- die(_("run_command returned non-zero status for %s\n."),
- displaypath);
+ if (info->argv[0]) {
+ if (run_command(&cp))
+ die(_("run_command returned non-zero status for %s\n."),
+ displaypath);
+ } else {
+ child_process_clear(&cp);
+ }
if (info->recursive) {
struct child_process cpr = CHILD_PROCESS_INIT;
@@ -696,6 +700,7 @@ static void status_submodule(const char *path, const struct object_id *ce_oid,
if (flags & OPT_RECURSIVE) {
struct child_process cpr = CHILD_PROCESS_INIT;
+ int res;
cpr.git_cmd = 1;
cpr.dir = path;
@@ -711,7 +716,10 @@ static void status_submodule(const char *path, const struct object_id *ce_oid,
if (flags & OPT_QUIET)
strvec_push(&cpr.args, "--quiet");
- if (run_command(&cpr))
+ res = run_command(&cpr);
+ if (res == SIGPIPE + 128)
+ raise(SIGPIPE);
+ else if (res)
die(_("failed to recurse into submodule '%s'"), path);
}
@@ -1618,6 +1626,8 @@ static int add_possible_reference_from_superproject(
; /* nothing */
}
}
+
+ strbuf_release(&err);
strbuf_release(&sb);
}
@@ -2022,6 +2032,7 @@ struct update_data {
static void update_data_release(struct update_data *ud)
{
free(ud->displaypath);
+ submodule_update_strategy_release(&ud->update_strategy);
module_list_release(&ud->list);
}
@@ -2322,7 +2333,14 @@ static int fetch_in_submodule(const char *module_path, int depth, int quiet,
strvec_pushf(&cp.args, "--depth=%d", depth);
if (oid) {
char *hex = oid_to_hex(oid);
- char *remote = get_default_remote();
+ char *remote;
+ int code;
+
+ code = get_default_remote_submodule(module_path, &remote);
+ if (code) {
+ child_process_clear(&cp);
+ return code;
+ }
strvec_pushl(&cp.args, remote, hex, NULL);
free(remote);
@@ -2642,15 +2660,20 @@ static int update_submodule(struct update_data *update_data)
if (!update_data->nofetch) {
if (fetch_in_submodule(update_data->sm_path, update_data->depth,
- 0, NULL))
+ 0, NULL)) {
+ free(remote_ref);
return die_message(_("Unable to fetch in submodule path '%s'"),
update_data->sm_path);
+ }
}
if (repo_resolve_gitlink_ref(the_repository, update_data->sm_path,
- remote_ref, &update_data->oid))
- return die_message(_("Unable to find %s revision in submodule path '%s'"),
- remote_ref, update_data->sm_path);
+ remote_ref, &update_data->oid)) {
+ ret = die_message(_("Unable to find %s revision in submodule path '%s'"),
+ remote_ref, update_data->sm_path);
+ free(remote_ref);
+ return ret;
+ }
free(remote_ref);
}
diff --git a/builtin/worktree.c b/builtin/worktree.c
index fc31d072a6..dae63dedf4 100644
--- a/builtin/worktree.c
+++ b/builtin/worktree.c
@@ -414,7 +414,8 @@ static int add_worktree(const char *path, const char *refname,
const struct add_opts *opts)
{
struct strbuf sb_git = STRBUF_INIT, sb_repo = STRBUF_INIT;
- struct strbuf sb = STRBUF_INIT, realpath = STRBUF_INIT;
+ struct strbuf sb = STRBUF_INIT, sb_tmp = STRBUF_INIT;
+ struct strbuf sb_path_realpath = STRBUF_INIT, sb_repo_realpath = STRBUF_INIT;
const char *name;
struct strvec child_env = STRVEC_INIT;
unsigned int counter = 0;
@@ -490,11 +491,10 @@ static int add_worktree(const char *path, const char *refname,
strbuf_reset(&sb);
strbuf_addf(&sb, "%s/gitdir", sb_repo.buf);
- strbuf_realpath(&realpath, sb_git.buf, 1);
- write_file(sb.buf, "%s", realpath.buf);
- strbuf_realpath(&realpath, repo_get_common_dir(the_repository), 1);
- write_file(sb_git.buf, "gitdir: %s/worktrees/%s",
- realpath.buf, name);
+ strbuf_realpath(&sb_path_realpath, path, 1);
+ strbuf_realpath(&sb_repo_realpath, sb_repo.buf, 1);
+ write_file(sb.buf, "%s/.git", relative_path(sb_path_realpath.buf, sb_repo_realpath.buf, &sb_tmp));
+ write_file(sb_git.buf, "gitdir: %s", relative_path(sb_repo_realpath.buf, sb_path_realpath.buf, &sb_tmp));
strbuf_reset(&sb);
strbuf_addf(&sb, "%s/commondir", sb_repo.buf);
write_file(sb.buf, "../..");
@@ -578,11 +578,13 @@ done:
strvec_clear(&child_env);
strbuf_release(&sb);
+ strbuf_release(&sb_tmp);
strbuf_release(&symref);
strbuf_release(&sb_repo);
+ strbuf_release(&sb_repo_realpath);
strbuf_release(&sb_git);
+ strbuf_release(&sb_path_realpath);
strbuf_release(&sb_name);
- strbuf_release(&realpath);
free_worktree(wt);
return ret;
}
diff --git a/bundle-uri.c b/bundle-uri.c
index 4b1a2e2937..0df66e2872 100644
--- a/bundle-uri.c
+++ b/bundle-uri.c
@@ -368,17 +368,23 @@ static int unbundle_from_file(struct repository *r, const char *file)
struct strbuf bundle_ref = STRBUF_INIT;
size_t bundle_prefix_len;
- if ((bundle_fd = read_bundle_header(file, &header)) < 0)
- return 1;
+ bundle_fd = read_bundle_header(file, &header);
+ if (bundle_fd < 0) {
+ result = 1;
+ goto cleanup;
+ }
/*
* Skip the reachability walk here, since we will be adding
* a reachable ref pointing to the new tips, which will reach
* the prerequisite commits.
*/
- if ((result = unbundle(r, &header, bundle_fd, NULL,
- VERIFY_BUNDLE_QUIET | (fetch_pack_fsck_objects() ? VERIFY_BUNDLE_FSCK : 0))))
- return 1;
+ result = unbundle(r, &header, bundle_fd, NULL,
+ VERIFY_BUNDLE_QUIET | (fetch_pack_fsck_objects() ? VERIFY_BUNDLE_FSCK : 0));
+ if (result) {
+ result = 1;
+ goto cleanup;
+ }
/*
* Convert all refs/heads/ from the bundle into refs/bundles/
@@ -407,6 +413,8 @@ static int unbundle_from_file(struct repository *r, const char *file)
0, UPDATE_REFS_MSG_ON_ERR);
}
+cleanup:
+ strbuf_release(&bundle_ref);
bundle_header_release(&header);
return result;
}
diff --git a/cache-tree.c b/cache-tree.c
index b482167a69..c595e86120 100644
--- a/cache-tree.c
+++ b/cache-tree.c
@@ -1,6 +1,7 @@
#define USE_THE_REPOSITORY_VARIABLE
#include "git-compat-util.h"
+#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
#include "tree.h"
@@ -865,15 +866,15 @@ int cache_tree_matches_traversal(struct cache_tree *root,
return 0;
}
-static void verify_one_sparse(struct index_state *istate,
- struct strbuf *path,
- int pos)
+static int verify_one_sparse(struct index_state *istate,
+ struct strbuf *path,
+ int pos)
{
struct cache_entry *ce = istate->cache[pos];
-
if (!S_ISSPARSEDIR(ce->ce_mode))
- BUG("directory '%s' is present in index, but not sparse",
- path->buf);
+ return error(_("directory '%s' is present in index, but not sparse"),
+ path->buf);
+ return 0;
}
/*
@@ -882,6 +883,7 @@ static void verify_one_sparse(struct index_state *istate,
* 1 - Restart verification - a call to ensure_full_index() freed the cache
* tree that is being verified and verification needs to be restarted from
* the new toplevel cache tree.
+ * -1 - Verification failed.
*/
static int verify_one(struct repository *r,
struct index_state *istate,
@@ -891,18 +893,23 @@ static int verify_one(struct repository *r,
int i, pos, len = path->len;
struct strbuf tree_buf = STRBUF_INIT;
struct object_id new_oid;
+ int ret;
for (i = 0; i < it->subtree_nr; i++) {
strbuf_addf(path, "%s/", it->down[i]->name);
- if (verify_one(r, istate, it->down[i]->cache_tree, path))
- return 1;
+ ret = verify_one(r, istate, it->down[i]->cache_tree, path);
+ if (ret)
+ goto out;
+
strbuf_setlen(path, len);
}
if (it->entry_count < 0 ||
/* no verification on tests (t7003) that replace trees */
- lookup_replace_object(r, &it->oid) != &it->oid)
- return 0;
+ lookup_replace_object(r, &it->oid) != &it->oid) {
+ ret = 0;
+ goto out;
+ }
if (path->len) {
/*
@@ -912,12 +919,14 @@ static int verify_one(struct repository *r,
*/
int is_sparse = istate->sparse_index;
pos = index_name_pos(istate, path->buf, path->len);
- if (is_sparse && !istate->sparse_index)
- return 1;
+ if (is_sparse && !istate->sparse_index) {
+ ret = 1;
+ goto out;
+ }
if (pos >= 0) {
- verify_one_sparse(istate, path, pos);
- return 0;
+ ret = verify_one_sparse(istate, path, pos);
+ goto out;
}
pos = -pos - 1;
@@ -925,6 +934,11 @@ static int verify_one(struct repository *r,
pos = 0;
}
+ if (it->entry_count + pos > istate->cache_nr) {
+ ret = error(_("corrupted cache-tree has entries not present in index"));
+ goto out;
+ }
+
i = 0;
while (i < it->entry_count) {
struct cache_entry *ce = istate->cache[pos + i];
@@ -935,16 +949,23 @@ static int verify_one(struct repository *r,
unsigned mode;
int entlen;
- if (ce->ce_flags & (CE_STAGEMASK | CE_INTENT_TO_ADD | CE_REMOVE))
- BUG("%s with flags 0x%x should not be in cache-tree",
- ce->name, ce->ce_flags);
+ if (ce->ce_flags & (CE_STAGEMASK | CE_INTENT_TO_ADD | CE_REMOVE)) {
+ ret = error(_("%s with flags 0x%x should not be in cache-tree"),
+ ce->name, ce->ce_flags);
+ goto out;
+ }
+
name = ce->name + path->len;
slash = strchr(name, '/');
if (slash) {
entlen = slash - name;
+
sub = find_subtree(it, ce->name + path->len, entlen, 0);
- if (!sub || sub->cache_tree->entry_count < 0)
- BUG("bad subtree '%.*s'", entlen, name);
+ if (!sub || sub->cache_tree->entry_count < 0) {
+ ret = error(_("bad subtree '%.*s'"), entlen, name);
+ goto out;
+ }
+
oid = &sub->cache_tree->oid;
mode = S_IFDIR;
i += sub->cache_tree->entry_count;
@@ -957,27 +978,50 @@ static int verify_one(struct repository *r,
strbuf_addf(&tree_buf, "%o %.*s%c", mode, entlen, name, '\0');
strbuf_add(&tree_buf, oid->hash, r->hash_algo->rawsz);
}
+
hash_object_file(r->hash_algo, tree_buf.buf, tree_buf.len, OBJ_TREE,
&new_oid);
- if (!oideq(&new_oid, &it->oid))
- BUG("cache-tree for path %.*s does not match. "
- "Expected %s got %s", len, path->buf,
- oid_to_hex(&new_oid), oid_to_hex(&it->oid));
+
+ if (!oideq(&new_oid, &it->oid)) {
+ ret = error(_("cache-tree for path %.*s does not match. "
+ "Expected %s got %s"), len, path->buf,
+ oid_to_hex(&new_oid), oid_to_hex(&it->oid));
+ goto out;
+ }
+
+ ret = 0;
+out:
strbuf_setlen(path, len);
strbuf_release(&tree_buf);
- return 0;
+ return ret;
}
-void cache_tree_verify(struct repository *r, struct index_state *istate)
+int cache_tree_verify(struct repository *r, struct index_state *istate)
{
struct strbuf path = STRBUF_INIT;
+ int ret;
- if (!istate->cache_tree)
- return;
- if (verify_one(r, istate, istate->cache_tree, &path)) {
+ if (!istate->cache_tree) {
+ ret = 0;
+ goto out;
+ }
+
+ ret = verify_one(r, istate, istate->cache_tree, &path);
+ if (ret < 0)
+ goto out;
+ if (ret > 0) {
strbuf_reset(&path);
- if (verify_one(r, istate, istate->cache_tree, &path))
+
+ ret = verify_one(r, istate, istate->cache_tree, &path);
+ if (ret < 0)
+ goto out;
+ if (ret > 0)
BUG("ensure_full_index() called twice while verifying cache tree");
}
+
+ ret = 0;
+
+out:
strbuf_release(&path);
+ return ret;
}
diff --git a/cache-tree.h b/cache-tree.h
index faae88be63..b82c4963e7 100644
--- a/cache-tree.h
+++ b/cache-tree.h
@@ -33,7 +33,7 @@ struct cache_tree *cache_tree_read(const char *buffer, unsigned long size);
int cache_tree_fully_valid(struct cache_tree *);
int cache_tree_update(struct index_state *, int);
-void cache_tree_verify(struct repository *, struct index_state *);
+int cache_tree_verify(struct repository *, struct index_state *);
/* bitmasks to write_index_as_tree flags */
#define WRITE_TREE_MISSING_OK 1
diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
index 08656a1530..126e570eb4 100755
--- a/ci/install-dependencies.sh
+++ b/ci/install-dependencies.sh
@@ -119,6 +119,7 @@ Documentation)
test -n "$ALREADY_HAVE_ASCIIDOCTOR" ||
sudo gem install --version 1.5.8 asciidoctor
+ sudo gem install concurrent-ruby
;;
esac
diff --git a/ci/install-sdk.ps1 b/ci/install-sdk.ps1
new file mode 100755
index 0000000000..66f24838a4
--- /dev/null
+++ b/ci/install-sdk.ps1
@@ -0,0 +1,12 @@
+param(
+ [string]$directory='git-sdk',
+ [string]$url='https://github.com/git-for-windows/git-sdk-64/releases/download/ci-artifacts/git-sdk-x86_64-minimal.zip'
+)
+
+Invoke-WebRequest "$url" -OutFile git-sdk.zip
+Expand-Archive -LiteralPath git-sdk.zip -DestinationPath "$directory"
+Remove-Item -Path git-sdk.zip
+
+New-Item -Path .git/info -ItemType Directory -Force
+New-Item -Path .git/info/exclude -ItemType File -Force
+Add-Content -Path .git/info/exclude -Value "/$directory"
diff --git a/ci/lib.sh b/ci/lib.sh
index 74b430be23..95f39a26ea 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -250,8 +250,13 @@ then
CI_TYPE=gitlab-ci
CI_BRANCH="$CI_COMMIT_REF_NAME"
CI_COMMIT="$CI_COMMIT_SHA"
- case "$CI_JOB_IMAGE" in
- macos-*)
+
+ case "$OS,$CI_JOB_IMAGE" in
+ Windows_NT,*)
+ CI_OS_NAME=windows
+ JOBS=$NUMBER_OF_PROCESSORS
+ ;;
+ *,macos-*)
# GitLab CI has Python installed via multiple package managers,
# most notably via asdf and Homebrew. Ensure that our builds
# pick up the Homebrew one by prepending it to our PATH as the
@@ -259,9 +264,12 @@ then
export PATH="$(brew --prefix)/bin:$PATH"
CI_OS_NAME=osx
+ JOBS=$(nproc)
+ ;;
+ *,alpine:*|*,fedora:*|*,ubuntu:*)
+ CI_OS_NAME=linux
+ JOBS=$(nproc)
;;
- alpine:*|fedora:*|ubuntu:*)
- CI_OS_NAME=linux;;
*)
echo "Could not identify OS image" >&2
env >&2
@@ -272,6 +280,7 @@ then
CI_JOB_ID="$CI_JOB_ID"
CC="${CC_PACKAGE:-${CC:-gcc}}"
DONT_SKIP_TAGS=t
+
handle_failed_tests () {
create_failed_test_artifacts
return 1
@@ -280,7 +289,6 @@ then
cache_dir="$HOME/none"
distro=$(echo "$CI_JOB_IMAGE" | tr : -)
- JOBS=$(nproc)
else
echo "Could not identify CI type" >&2
env >&2
diff --git a/combine-diff.c b/combine-diff.c
index 829a44e416..f6b624dc28 100644
--- a/combine-diff.c
+++ b/combine-diff.c
@@ -1393,9 +1393,8 @@ static struct combine_diff_path *find_paths_generic(const struct object_id *oid,
{
struct combine_diff_path *paths = NULL;
int i, num_parent = parents->nr;
-
int output_format = opt->output_format;
- const char *orderfile = opt->orderfile;
+ char *orderfile = opt->orderfile;
opt->output_format = DIFF_FORMAT_NO_OUTPUT;
/* tell diff_tree to emit paths in sorted (=tree) order */
diff --git a/commit-graph.c b/commit-graph.c
index aa6e08eb39..5bd89c0acd 100644
--- a/commit-graph.c
+++ b/commit-graph.c
@@ -2055,7 +2055,6 @@ static int write_commit_graph_file(struct write_commit_graph_context *ctx)
}
if (safe_create_leading_directories(ctx->graph_name)) {
- UNLEAK(ctx->graph_name);
error(_("unable to create leading directories of %s"),
ctx->graph_name);
return -1;
diff --git a/commit.c b/commit.c
index 3a54e4db0d..cc03a93036 100644
--- a/commit.c
+++ b/commit.c
@@ -595,7 +595,8 @@ int repo_parse_commit_internal(struct repository *r,
}
ret = parse_commit_buffer(r, item, buffer, size, 0);
- if (save_commit_buffer && !ret) {
+ if (save_commit_buffer && !ret &&
+ !get_cached_commit_buffer(r, item, NULL)) {
set_commit_buffer(r, item, buffer, size);
return 0;
}
diff --git a/compat/fsmonitor/fsm-listen-darwin.c b/compat/fsmonitor/fsm-listen-darwin.c
index 2fc67442eb..dfa551459d 100644
--- a/compat/fsmonitor/fsm-listen-darwin.c
+++ b/compat/fsmonitor/fsm-listen-darwin.c
@@ -516,6 +516,12 @@ void fsm_listen__loop(struct fsmonitor_daemon_state *state)
}
data->stream_started = 1;
+ /*
+ * Our fs event listener is now running, so it's safe to start
+ * serving client requests.
+ */
+ ipc_server_start_async(state->ipc_server_data);
+
pthread_mutex_lock(&data->dq_lock);
pthread_cond_wait(&data->dq_finished, &data->dq_lock);
pthread_mutex_unlock(&data->dq_lock);
diff --git a/compat/fsmonitor/fsm-listen-win32.c b/compat/fsmonitor/fsm-listen-win32.c
index 5a21dade7b..9a6efc9bea 100644
--- a/compat/fsmonitor/fsm-listen-win32.c
+++ b/compat/fsmonitor/fsm-listen-win32.c
@@ -431,9 +431,9 @@ static int recv_rdcw_watch(struct one_watch *watch)
* but I observed ERROR_ACCESS_DENIED (0x05) errors during
* testing.
*
- * Note that we only get notificaiton events for events
+ * Note that we only get notification events for events
* *within* the directory, not *on* the directory itself.
- * (These might be properies of the parent directory, for
+ * (These might be properties of the parent directory, for
* example).
*
* NEEDSWORK: We might try to check for the deleted directory
@@ -741,6 +741,12 @@ void fsm_listen__loop(struct fsmonitor_daemon_state *state)
start_rdcw_watch(data->watch_gitdir) == -1)
goto force_error_stop;
+ /*
+ * Now that we've established the rdcw watches, we can start
+ * serving clients.
+ */
+ ipc_server_start_async(state->ipc_server_data);
+
for (;;) {
dwWait = WaitForMultipleObjects(data->nr_listener_handles,
data->hListener,
diff --git a/compat/regex/regexec.c b/compat/regex/regexec.c
index e92be5741d..2eeec82f40 100644
--- a/compat/regex/regexec.c
+++ b/compat/regex/regexec.c
@@ -292,7 +292,7 @@ compat_symbol (libc, __compat_regexec, regexec, GLIBC_2_0);
concerned.
If REGS is not NULL, and BUFP->no_sub is not set, the offsets of the match
- and all groups is stroed in REGS. (For the "_2" variants, the offsets are
+ and all groups are stored in REGS. (For the "_2" variants, the offsets are
computed relative to the concatenation, not relative to the individual
strings.)
diff --git a/compat/simple-ipc/ipc-shared.c b/compat/simple-ipc/ipc-shared.c
index cb176d966f..d1c21b49bd 100644
--- a/compat/simple-ipc/ipc-shared.c
+++ b/compat/simple-ipc/ipc-shared.c
@@ -16,11 +16,12 @@ int ipc_server_run(const char *path, const struct ipc_server_opts *opts,
struct ipc_server_data *server_data = NULL;
int ret;
- ret = ipc_server_run_async(&server_data, path, opts,
- application_cb, application_data);
+ ret = ipc_server_init_async(&server_data, path, opts,
+ application_cb, application_data);
if (ret)
return ret;
+ ipc_server_start_async(server_data);
ret = ipc_server_await(server_data);
ipc_server_free(server_data);
diff --git a/compat/simple-ipc/ipc-unix-socket.c b/compat/simple-ipc/ipc-unix-socket.c
index 9b3f2cdf8c..7db3b2a897 100644
--- a/compat/simple-ipc/ipc-unix-socket.c
+++ b/compat/simple-ipc/ipc-unix-socket.c
@@ -328,6 +328,7 @@ struct ipc_server_data {
int back_pos;
int front_pos;
+ int started;
int shutdown_requested;
int is_stopped;
};
@@ -712,7 +713,7 @@ static int accept_thread__wait_for_connection(
* Block SIGPIPE in this thread for the life of the thread. This
* avoids any stray SIGPIPE signals when closing pipe fds under
* extremely heavy loads (such as when the fifo queue is full and we
- * drop incomming connections).
+ * drop incoming connections).
*/
static void *accept_thread_proc(void *_accept_thread_data)
{
@@ -824,10 +825,10 @@ static int setup_listener_socket(
/*
* Start IPC server in a pool of background threads.
*/
-int ipc_server_run_async(struct ipc_server_data **returned_server_data,
- const char *path, const struct ipc_server_opts *opts,
- ipc_server_application_cb *application_cb,
- void *application_data)
+int ipc_server_init_async(struct ipc_server_data **returned_server_data,
+ const char *path, const struct ipc_server_opts *opts,
+ ipc_server_application_cb *application_cb,
+ void *application_data)
{
struct unix_ss_socket *server_socket = NULL;
struct ipc_server_data *server_data;
@@ -888,6 +889,12 @@ int ipc_server_run_async(struct ipc_server_data **returned_server_data,
server_data->accept_thread->fd_send_shutdown = sv[0];
server_data->accept_thread->fd_wait_shutdown = sv[1];
+ /*
+ * Hold work-available mutex so that no work can start until
+ * we unlock it.
+ */
+ pthread_mutex_lock(&server_data->work_available_mutex);
+
if (pthread_create(&server_data->accept_thread->pthread_id, NULL,
accept_thread_proc, server_data->accept_thread))
die_errno(_("could not start accept_thread '%s'"), path);
@@ -918,6 +925,15 @@ int ipc_server_run_async(struct ipc_server_data **returned_server_data,
return 0;
}
+void ipc_server_start_async(struct ipc_server_data *server_data)
+{
+ if (!server_data || server_data->started)
+ return;
+
+ server_data->started = 1;
+ pthread_mutex_unlock(&server_data->work_available_mutex);
+}
+
/*
* Gently tell the IPC server treads to shutdown.
* Can be run on any thread.
@@ -933,7 +949,9 @@ int ipc_server_stop_async(struct ipc_server_data *server_data)
trace2_region_enter("ipc-server", "server-stop-async", NULL);
- pthread_mutex_lock(&server_data->work_available_mutex);
+ /* If we haven't started yet, we are already holding lock. */
+ if (server_data->started)
+ pthread_mutex_lock(&server_data->work_available_mutex);
server_data->shutdown_requested = 1;
diff --git a/compat/simple-ipc/ipc-win32.c b/compat/simple-ipc/ipc-win32.c
index 8bfe51248e..a8fc812adf 100644
--- a/compat/simple-ipc/ipc-win32.c
+++ b/compat/simple-ipc/ipc-win32.c
@@ -371,6 +371,9 @@ struct ipc_server_data {
HANDLE hEventStopRequested;
struct ipc_server_thread_data *thread_list;
int is_stopped;
+
+ pthread_mutex_t startup_barrier;
+ int started;
};
enum connect_result {
@@ -526,6 +529,16 @@ static int use_connection(struct ipc_server_thread_data *server_thread_data)
return ret;
}
+static void wait_for_startup_barrier(struct ipc_server_data *server_data)
+{
+ /*
+ * Temporarily hold the startup_barrier mutex before starting,
+ * which lets us know that it's OK to start serving requests.
+ */
+ pthread_mutex_lock(&server_data->startup_barrier);
+ pthread_mutex_unlock(&server_data->startup_barrier);
+}
+
/*
* Thread proc for an IPC server worker thread. It handles a series of
* connections from clients. It cleans and reuses the hPipe between each
@@ -550,6 +563,8 @@ static void *server_thread_proc(void *_server_thread_data)
memset(&oConnect, 0, sizeof(oConnect));
oConnect.hEvent = hEventConnected;
+ wait_for_startup_barrier(server_thread_data->server_data);
+
for (;;) {
cr = wait_for_connection(server_thread_data, &oConnect);
@@ -752,10 +767,10 @@ static HANDLE create_new_pipe(wchar_t *wpath, int is_first)
return hPipe;
}
-int ipc_server_run_async(struct ipc_server_data **returned_server_data,
- const char *path, const struct ipc_server_opts *opts,
- ipc_server_application_cb *application_cb,
- void *application_data)
+int ipc_server_init_async(struct ipc_server_data **returned_server_data,
+ const char *path, const struct ipc_server_opts *opts,
+ ipc_server_application_cb *application_cb,
+ void *application_data)
{
struct ipc_server_data *server_data;
wchar_t wpath[MAX_PATH];
@@ -787,6 +802,13 @@ int ipc_server_run_async(struct ipc_server_data **returned_server_data,
strbuf_addstr(&server_data->buf_path, path);
wcscpy(server_data->wpath, wpath);
+ /*
+ * Hold the startup_barrier lock so that no threads will progress
+ * until ipc_server_start_async() is called.
+ */
+ pthread_mutex_init(&server_data->startup_barrier, NULL);
+ pthread_mutex_lock(&server_data->startup_barrier);
+
if (nr_threads < 1)
nr_threads = 1;
@@ -837,6 +859,15 @@ int ipc_server_run_async(struct ipc_server_data **returned_server_data,
return 0;
}
+void ipc_server_start_async(struct ipc_server_data *server_data)
+{
+ if (!server_data || server_data->started)
+ return;
+
+ server_data->started = 1;
+ pthread_mutex_unlock(&server_data->startup_barrier);
+}
+
int ipc_server_stop_async(struct ipc_server_data *server_data)
{
if (!server_data)
@@ -850,6 +881,13 @@ int ipc_server_stop_async(struct ipc_server_data *server_data)
* We DO NOT attempt to force them to drop an active connection.
*/
SetEvent(server_data->hEventStopRequested);
+
+ /*
+ * If we haven't yet told the threads they are allowed to run,
+ * do so now, so they can receive the shutdown event.
+ */
+ ipc_server_start_async(server_data);
+
return 0;
}
@@ -900,5 +938,7 @@ void ipc_server_free(struct ipc_server_data *server_data)
free(std);
}
+ pthread_mutex_destroy(&server_data->startup_barrier);
+
free(server_data);
}
diff --git a/config.c b/config.c
index 1266eab086..a11bb85da3 100644
--- a/config.c
+++ b/config.c
@@ -306,13 +306,16 @@ static int include_by_branch(struct config_include_data *data,
int flags;
int ret;
struct strbuf pattern = STRBUF_INIT;
- const char *refname = (!data->repo || !data->repo->gitdir) ?
- NULL : refs_resolve_ref_unsafe(get_main_ref_store(data->repo),
- "HEAD", 0, NULL, &flags);
- const char *shortname;
+ const char *refname, *shortname;
- if (!refname || !(flags & REF_ISSYMREF) ||
- !skip_prefix(refname, "refs/heads/", &shortname))
+ if (!data->repo || data->repo->ref_storage_format == REF_STORAGE_FORMAT_UNKNOWN)
+ return 0;
+
+ refname = refs_resolve_ref_unsafe(get_main_ref_store(data->repo),
+ "HEAD", 0, NULL, &flags);
+ if (!refname ||
+ !(flags & REF_ISSYMREF) ||
+ !skip_prefix(refname, "refs/heads/", &shortname))
return 0;
strbuf_add(&pattern, cond, cond_len);
diff --git a/connect.c b/connect.c
index 6829ab3974..58f53d8dcb 100644
--- a/connect.c
+++ b/connect.c
@@ -1485,6 +1485,7 @@ struct child_process *git_connect(int fd[2], const char *url,
free(hostandport);
free(path);
+ child_process_clear(conn);
free(conn);
strbuf_release(&cmd);
return NULL;
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 60a22d619a..3d4dff3185 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -3296,7 +3296,7 @@ __gitcomp_directories ()
# i.e. which are *already* part of their
# sparse-checkout. Thus, normal file and directory
# completion is always useless for "git
- # sparse-checkout add" and is also probelmatic for
+ # sparse-checkout add" and is also problematic for
# "git sparse-checkout set" unless using it to
# strictly narrow the checkout.
COMPREPLY=( "" )
@@ -3698,7 +3698,7 @@ _git_worktree ()
# Here we are not completing an --option, it's either the
# path or a ref.
case "$prev" in
- -b|-B) # Complete refs for branch to be created/reseted.
+ -b|-B) # Complete refs for branch to be created/reset.
__git_complete_refs
;;
-*) # The previous word is an -o|--option without an
diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
index 5dab3f506c..15ae86db1b 100755
--- a/contrib/subtree/git-subtree.sh
+++ b/contrib/subtree/git-subtree.sh
@@ -946,7 +946,7 @@ cmd_split () {
rev=$(git rev-parse -q --verify "$1^{commit}") ||
die "fatal: '$1' does not refer to a commit"
else
- die "fatal: you must provide exactly one revision, and optionnally a repository. Got: '$*'"
+ die "fatal: you must provide exactly one revision, and optionally a repository. Got: '$*'"
fi
repository=""
if test "$#" = 2
diff --git a/contrib/subtree/t/t7900-subtree.sh b/contrib/subtree/t/t7900-subtree.sh
index c3bd2a58b9..3c6103f6d2 100755
--- a/contrib/subtree/t/t7900-subtree.sh
+++ b/contrib/subtree/t/t7900-subtree.sh
@@ -47,7 +47,7 @@ last_commit_subject () {
# pre-2.32.0 versions of 'git subtree' would write the hash of the tag
# (sub1 below), instead of the commit (sub1^{commit}) in the
# "git-subtree-split" trailer.
-# We immitate this behaviour below using a replace ref.
+# We imitate this behaviour below using a replace ref.
# This function creates 3 repositories:
# - $1
# - $1-sub (added as subtree "sub" in $1)
diff --git a/credential.c b/credential.c
index ee46351ce0..6dea3859ec 100644
--- a/credential.c
+++ b/credential.c
@@ -13,6 +13,8 @@
#include "strbuf.h"
#include "urlmatch.h"
#include "git-compat-util.h"
+#include "trace2.h"
+#include "repository.h"
void credential_init(struct credential *c)
{
@@ -251,14 +253,36 @@ static char *credential_ask_one(const char *what, struct credential *c,
return xstrdup(r);
}
-static void credential_getpass(struct credential *c)
+static int credential_getpass(struct credential *c)
{
+ int interactive;
+ char *value;
+ if (!git_config_get_maybe_bool("credential.interactive", &interactive) &&
+ !interactive) {
+ trace2_data_intmax("credential", the_repository,
+ "interactive/skipped", 1);
+ return -1;
+ }
+ if (!git_config_get_string("credential.interactive", &value)) {
+ int same = !strcmp(value, "never");
+ free(value);
+ if (same) {
+ trace2_data_intmax("credential", the_repository,
+ "interactive/skipped", 1);
+ return -1;
+ }
+ }
+
+ trace2_region_enter("credential", "interactive", the_repository);
if (!c->username)
c->username = credential_ask_one("Username", c,
PROMPT_ASKPASS|PROMPT_ECHO);
if (!c->password)
c->password = credential_ask_one("Password", c,
PROMPT_ASKPASS);
+ trace2_region_leave("credential", "interactive", the_repository);
+
+ return 0;
}
int credential_has_capability(const struct credential_capability *capa,
@@ -501,8 +525,8 @@ void credential_fill(struct credential *c, int all_capabilities)
c->helpers.items[i].string);
}
- credential_getpass(c);
- if (!c->username && !c->password && !c->credential)
+ if (credential_getpass(c) ||
+ (!c->username && !c->password && !c->credential))
die("unable to get password from user");
}
diff --git a/csum-file.c b/csum-file.c
index bf82ad8f9f..c203ebf11b 100644
--- a/csum-file.c
+++ b/csum-file.c
@@ -50,7 +50,7 @@ void hashflush(struct hashfile *f)
if (offset) {
if (!f->skip_hash)
- the_hash_algo->update_fn(&f->ctx, f->buffer, offset);
+ the_hash_algo->unsafe_update_fn(&f->ctx, f->buffer, offset);
flush(f, f->buffer, offset);
f->offset = 0;
}
@@ -73,7 +73,7 @@ int finalize_hashfile(struct hashfile *f, unsigned char *result,
if (f->skip_hash)
hashclr(f->buffer, the_repository->hash_algo);
else
- the_hash_algo->final_fn(f->buffer, &f->ctx);
+ the_hash_algo->unsafe_final_fn(f->buffer, &f->ctx);
if (result)
hashcpy(result, f->buffer, the_repository->hash_algo);
@@ -128,7 +128,7 @@ void hashwrite(struct hashfile *f, const void *buf, unsigned int count)
* f->offset is necessarily zero.
*/
if (!f->skip_hash)
- the_hash_algo->update_fn(&f->ctx, buf, nr);
+ the_hash_algo->unsafe_update_fn(&f->ctx, buf, nr);
flush(f, buf, nr);
} else {
/*
@@ -174,7 +174,7 @@ static struct hashfile *hashfd_internal(int fd, const char *name,
f->name = name;
f->do_crc = 0;
f->skip_hash = 0;
- the_hash_algo->init_fn(&f->ctx);
+ the_hash_algo->unsafe_init_fn(&f->ctx);
f->buffer_len = buffer_len;
f->buffer = xmalloc(buffer_len);
@@ -208,7 +208,7 @@ void hashfile_checkpoint(struct hashfile *f, struct hashfile_checkpoint *checkpo
{
hashflush(f);
checkpoint->offset = f->total;
- the_hash_algo->clone_fn(&checkpoint->ctx, &f->ctx);
+ the_hash_algo->unsafe_clone_fn(&checkpoint->ctx, &f->ctx);
}
int hashfile_truncate(struct hashfile *f, struct hashfile_checkpoint *checkpoint)
@@ -219,7 +219,7 @@ int hashfile_truncate(struct hashfile *f, struct hashfile_checkpoint *checkpoint
lseek(f->fd, offset, SEEK_SET) != offset)
return -1;
f->total = offset;
- the_hash_algo->clone_fn(&f->ctx, &checkpoint->ctx);
+ the_hash_algo->unsafe_clone_fn(&f->ctx, &checkpoint->ctx);
f->offset = 0; /* hashflush() was called in checkpoint */
return 0;
}
@@ -245,9 +245,9 @@ int hashfile_checksum_valid(const unsigned char *data, size_t total_len)
if (total_len < the_hash_algo->rawsz)
return 0; /* say "too short"? */
- the_hash_algo->init_fn(&ctx);
- the_hash_algo->update_fn(&ctx, data, data_len);
- the_hash_algo->final_fn(got, &ctx);
+ the_hash_algo->unsafe_init_fn(&ctx);
+ the_hash_algo->unsafe_update_fn(&ctx, data, data_len);
+ the_hash_algo->unsafe_final_fn(got, &ctx);
return hasheq(got, data + data_len, the_repository->hash_algo);
}
diff --git a/diff-lib.c b/diff-lib.c
index a680768ee7..6b14b95962 100644
--- a/diff-lib.c
+++ b/diff-lib.c
@@ -701,7 +701,7 @@ int index_differs_from(struct repository *r,
return (has_changes != 0);
}
-static struct strbuf *idiff_prefix_cb(struct diff_options *opt UNUSED, void *data)
+static const char *idiff_prefix_cb(struct diff_options *opt UNUSED, void *data)
{
return data;
}
@@ -716,7 +716,7 @@ void show_interdiff(const struct object_id *oid1, const struct object_id *oid2,
opts.output_format = DIFF_FORMAT_PATCH;
opts.output_prefix = idiff_prefix_cb;
strbuf_addchars(&prefix, ' ', indent);
- opts.output_prefix_data = &prefix;
+ opts.output_prefix_data = prefix.buf;
diff_setup_done(&opts);
diff_tree_oid(oid1, oid2, "", &opts);
diff --git a/diff.c b/diff.c
index 84a6bb0868..dceac20d18 100644
--- a/diff.c
+++ b/diff.c
@@ -443,8 +443,10 @@ int git_diff_ui_config(const char *var, const char *value,
}
if (!strcmp(var, "diff.wordregex"))
return git_config_string(&diff_word_regex_cfg, var, value);
- if (!strcmp(var, "diff.orderfile"))
+ if (!strcmp(var, "diff.orderfile")) {
+ FREE_AND_NULL(diff_order_file_cfg);
return git_config_pathname(&diff_order_file_cfg, var, value);
+ }
if (!strcmp(var, "diff.ignoresubmodules")) {
if (!value)
@@ -2315,12 +2317,9 @@ const char *diff_get_color(int diff_use_color, enum color_diff ix)
const char *diff_line_prefix(struct diff_options *opt)
{
- struct strbuf *msgbuf;
- if (!opt->output_prefix)
- return "";
-
- msgbuf = opt->output_prefix(opt, opt->output_prefix_data);
- return msgbuf->buf;
+ return opt->output_prefix ?
+ opt->output_prefix(opt, opt->output_prefix_data) :
+ "";
}
static unsigned long sane_truncate_line(char *line, unsigned long len)
@@ -4778,7 +4777,7 @@ void repo_diff_setup(struct repository *r, struct diff_options *options)
if (diff_indent_heuristic)
DIFF_XDL_SET(options, INDENT_HEURISTIC);
- options->orderfile = diff_order_file_cfg;
+ options->orderfile = xstrdup_or_null(diff_order_file_cfg);
if (!options->flags.ignore_submodule_set)
options->flags.ignore_untracked_in_submodules = 1;
@@ -5398,7 +5397,6 @@ static int diff_opt_line_prefix(const struct option *opt,
BUG_ON_OPT_NEG(unset);
options->line_prefix = optarg;
- options->line_prefix_length = strlen(options->line_prefix);
graph_setup_line_prefix(options);
return 0;
}
@@ -5981,11 +5979,18 @@ void diff_free_filepair(struct diff_filepair *p)
free(p);
}
-void diff_free_queue(struct diff_queue_struct *q)
+void diff_queue_init(struct diff_queue_struct *q)
+{
+ struct diff_queue_struct blank = DIFF_QUEUE_INIT;
+ memcpy(q, &blank, sizeof(*q));
+}
+
+void diff_queue_clear(struct diff_queue_struct *q)
{
for (int i = 0; i < q->nr; i++)
diff_free_filepair(q->queue[i]);
free(q->queue);
+ diff_queue_init(q);
}
const char *diff_aligned_abbrev(const struct object_id *oid, int len)
@@ -6549,8 +6554,7 @@ int diff_flush_patch_id(struct diff_options *options, struct object_id *oid, int
struct diff_queue_struct *q = &diff_queued_diff;
int result = diff_get_patch_id(options, oid, diff_header_only);
- diff_free_queue(q);
- DIFF_QUEUE_CLEAR(q);
+ diff_queue_clear(q);
return result;
}
@@ -6730,6 +6734,7 @@ void diff_free(struct diff_options *options)
FREE_AND_NULL(options->objfind);
}
+ FREE_AND_NULL(options->orderfile);
for (size_t i = 0; i < options->anchors_nr; i++)
free(options->anchors[i]);
FREE_AND_NULL(options->anchors);
@@ -6832,8 +6837,7 @@ void diff_flush(struct diff_options *options)
}
free_queue:
- diff_free_queue(q);
- DIFF_QUEUE_CLEAR(q);
+ diff_queue_clear(q);
diff_free(options);
/*
@@ -6864,9 +6868,7 @@ static void diffcore_apply_filter(struct diff_options *options)
{
int i;
struct diff_queue_struct *q = &diff_queued_diff;
- struct diff_queue_struct outq;
-
- DIFF_QUEUE_CLEAR(&outq);
+ struct diff_queue_struct outq = DIFF_QUEUE_INIT;
if (!options->filter)
return;
@@ -6959,8 +6961,7 @@ static void diffcore_skip_stat_unmatch(struct diff_options *diffopt)
{
int i;
struct diff_queue_struct *q = &diff_queued_diff;
- struct diff_queue_struct outq;
- DIFF_QUEUE_CLEAR(&outq);
+ struct diff_queue_struct outq = DIFF_QUEUE_INIT;
for (i = 0; i < q->nr; i++) {
struct diff_filepair *p = q->queue[i];
diff --git a/diff.h b/diff.h
index fb40c6e6d6..5c8de79535 100644
--- a/diff.h
+++ b/diff.h
@@ -94,7 +94,7 @@ typedef void (*add_remove_fn_t)(struct diff_options *options,
typedef void (*diff_format_fn_t)(struct diff_queue_struct *q,
struct diff_options *options, void *data);
-typedef struct strbuf *(*diff_prefix_fn_t)(struct diff_options *opt, void *data);
+typedef const char *(*diff_prefix_fn_t)(struct diff_options *opt, void *data);
#define DIFF_FORMAT_RAW 0x0001
#define DIFF_FORMAT_DIFFSTAT 0x0002
@@ -235,7 +235,7 @@ enum diff_submodule_format {
* diffcore library with.
*/
struct diff_options {
- const char *orderfile;
+ char *orderfile;
/*
* "--rotate-to=<file>" would start showing at <file> and when
@@ -274,7 +274,6 @@ struct diff_options {
const char *single_follow;
const char *a_prefix, *b_prefix;
const char *line_prefix;
- size_t line_prefix_length;
/**
* collection of boolean options that affects the operation, but some do
diff --git a/diffcore-break.c b/diffcore-break.c
index 831b66b5c3..c4c2173f30 100644
--- a/diffcore-break.c
+++ b/diffcore-break.c
@@ -131,7 +131,7 @@ static int should_break(struct repository *r,
void diffcore_break(struct repository *r, int break_score)
{
struct diff_queue_struct *q = &diff_queued_diff;
- struct diff_queue_struct outq;
+ struct diff_queue_struct outq = DIFF_QUEUE_INIT;
/* When the filepair has this much edit (insert and delete),
* it is first considered to be a rewrite and broken into a
@@ -178,8 +178,6 @@ void diffcore_break(struct repository *r, int break_score)
if (!merge_score)
merge_score = DEFAULT_MERGE_SCORE;
- DIFF_QUEUE_CLEAR(&outq);
-
for (i = 0; i < q->nr; i++) {
struct diff_filepair *p = q->queue[i];
int score;
@@ -266,8 +264,8 @@ static void merge_broken(struct diff_filepair *p,
* in the resulting tree.
*/
d->one->rename_used++;
- diff_free_filespec_data(d->two);
- diff_free_filespec_data(c->one);
+ free_filespec(d->two);
+ free_filespec(c->one);
free(d);
free(c);
}
@@ -275,11 +273,9 @@ static void merge_broken(struct diff_filepair *p,
void diffcore_merge_broken(void)
{
struct diff_queue_struct *q = &diff_queued_diff;
- struct diff_queue_struct outq;
+ struct diff_queue_struct outq = DIFF_QUEUE_INIT;
int i, j;
- DIFF_QUEUE_CLEAR(&outq);
-
for (i = 0; i < q->nr; i++) {
struct diff_filepair *p = q->queue[i];
if (!p)
diff --git a/diffcore-order.c b/diffcore-order.c
index e7d20ebd2d..912513d3e6 100644
--- a/diffcore-order.c
+++ b/diffcore-order.c
@@ -14,8 +14,7 @@ static void prepare_order(const char *orderfile)
{
int cnt, pass;
struct strbuf sb = STRBUF_INIT;
- void *map;
- char *cp, *endp;
+ const char *cp, *endp;
ssize_t sz;
if (order)
@@ -24,14 +23,13 @@ static void prepare_order(const char *orderfile)
sz = strbuf_read_file(&sb, orderfile, 0);
if (sz < 0)
die_errno(_("failed to read orderfile '%s'"), orderfile);
- map = strbuf_detach(&sb, NULL);
- endp = (char *) map + sz;
+ endp = sb.buf + sz;
for (pass = 0; pass < 2; pass++) {
cnt = 0;
- cp = map;
+ cp = sb.buf;
while (cp < endp) {
- char *ep;
+ const char *ep;
for (ep = cp; ep < endp && *ep != '\n'; ep++)
;
/* cp to ep has one line */
@@ -40,12 +38,7 @@ static void prepare_order(const char *orderfile)
else if (pass == 0)
cnt++;
else {
- if (*ep == '\n') {
- *ep = 0;
- order[cnt] = cp;
- } else {
- order[cnt] = xmemdupz(cp, ep - cp);
- }
+ order[cnt] = xmemdupz(cp, ep - cp);
cnt++;
}
if (ep < endp)
@@ -57,6 +50,8 @@ static void prepare_order(const char *orderfile)
ALLOC_ARRAY(order, cnt);
}
}
+
+ strbuf_release(&sb);
}
static int match_order(const char *path)
diff --git a/diffcore-pickaxe.c b/diffcore-pickaxe.c
index b195fa4eb3..43fef8e8ba 100644
--- a/diffcore-pickaxe.c
+++ b/diffcore-pickaxe.c
@@ -182,9 +182,7 @@ static void pickaxe(struct diff_queue_struct *q, struct diff_options *o,
regex_t *regexp, kwset_t kws, pickaxe_fn fn)
{
int i;
- struct diff_queue_struct outq;
-
- DIFF_QUEUE_CLEAR(&outq);
+ struct diff_queue_struct outq = DIFF_QUEUE_INIT;
if (o->pickaxe_opts & DIFF_PICKAXE_ALL) {
/* Showing the whole changeset if needle exists */
diff --git a/diffcore-rename.c b/diffcore-rename.c
index 3d6826baa3..1b1c1a6a1f 100644
--- a/diffcore-rename.c
+++ b/diffcore-rename.c
@@ -1388,7 +1388,7 @@ void diffcore_rename_extended(struct diff_options *options,
int detect_rename = options->detect_rename;
int minimum_score = options->rename_score;
struct diff_queue_struct *q = &diff_queued_diff;
- struct diff_queue_struct outq;
+ struct diff_queue_struct outq = DIFF_QUEUE_INIT;
struct diff_score *mx;
int i, j, rename_count, skip_unmodified = 0;
int num_destinations, dst_cnt;
@@ -1638,7 +1638,6 @@ void diffcore_rename_extended(struct diff_options *options,
* are recorded in rename_dst. The original list is still in *q.
*/
trace2_region_enter("diff", "write back to queue", options->repo);
- DIFF_QUEUE_CLEAR(&outq);
for (i = 0; i < q->nr; i++) {
struct diff_filepair *p = q->queue[i];
struct diff_filepair *pair_to_free = NULL;
diff --git a/diffcore-rotate.c b/diffcore-rotate.c
index 533986cf63..73ca20b331 100644
--- a/diffcore-rotate.c
+++ b/diffcore-rotate.c
@@ -10,7 +10,7 @@
void diffcore_rotate(struct diff_options *opt)
{
struct diff_queue_struct *q = &diff_queued_diff;
- struct diff_queue_struct outq;
+ struct diff_queue_struct outq = DIFF_QUEUE_INIT;
int rotate_to, i;
if (!q->nr)
@@ -31,7 +31,6 @@ void diffcore_rotate(struct diff_options *opt)
return;
}
- DIFF_QUEUE_CLEAR(&outq);
rotate_to = i;
for (i = rotate_to; i < q->nr; i++)
diff --git a/diffcore.h b/diffcore.h
index 1701ed50b9..2feb325031 100644
--- a/diffcore.h
+++ b/diffcore.h
@@ -153,18 +153,16 @@ struct diff_queue_struct {
int nr;
};
-#define DIFF_QUEUE_CLEAR(q) \
- do { \
- (q)->queue = NULL; \
- (q)->nr = (q)->alloc = 0; \
- } while (0)
+#define DIFF_QUEUE_INIT { 0 }
+
+void diff_queue_init(struct diff_queue_struct *q);
+void diff_queue_clear(struct diff_queue_struct *q);
extern struct diff_queue_struct diff_queued_diff;
struct diff_filepair *diff_queue(struct diff_queue_struct *,
struct diff_filespec *,
struct diff_filespec *);
void diff_q(struct diff_queue_struct *, struct diff_filepair *);
-void diff_free_queue(struct diff_queue_struct *q);
/* dir_rename_relevance: the reason we want rename information for a dir */
enum dir_rename_relevance {
diff --git a/dir.c b/dir.c
index c43b5e3081..e3ddd5b529 100644
--- a/dir.c
+++ b/dir.c
@@ -2136,8 +2136,7 @@ static enum path_treatment treat_directory(struct dir_struct *dir,
*/
state = path_none;
} else {
- int i;
- for (i = old_ignored_nr + 1; i<dir->ignored_nr; ++i)
+ for (int i = old_ignored_nr; i < dir->ignored_nr; i++)
FREE_AND_NULL(dir->ignored[i]);
dir->ignored_nr = old_ignored_nr;
}
@@ -2149,8 +2148,7 @@ static enum path_treatment treat_directory(struct dir_struct *dir,
*/
if ((dir->flags & DIR_SHOW_IGNORED_TOO) &&
!(dir->flags & DIR_KEEP_UNTRACKED_CONTENTS)) {
- int i;
- for (i = old_untracked_nr + 1; i<dir->nr; ++i)
+ for (int i = old_untracked_nr; i < dir->nr; i++)
FREE_AND_NULL(dir->entries[i]);
dir->nr = old_untracked_nr;
}
diff --git a/git.c b/git.c
index 47741be3e4..c2c1b8e22c 100644
--- a/git.c
+++ b/git.c
@@ -712,6 +712,7 @@ static void strip_extension(const char **argv)
static void handle_builtin(int argc, const char **argv)
{
struct strvec args = STRVEC_INIT;
+ const char **argv_copy = NULL;
const char *cmd;
struct cmd_struct *builtin;
@@ -732,13 +733,28 @@ static void handle_builtin(int argc, const char **argv)
}
argc++;
- argv = args.v;
+
+ /*
+ * `run_builtin()` will modify the argv array, so we need to
+ * create a shallow copy such that we can free all of its
+ * strings.
+ */
+ CALLOC_ARRAY(argv_copy, argc + 1);
+ COPY_ARRAY(argv_copy, args.v, argc);
+
+ argv = argv_copy;
}
builtin = get_builtin(cmd);
- if (builtin)
- exit(run_builtin(builtin, argc, argv, the_repository));
+ if (builtin) {
+ int ret = run_builtin(builtin, argc, argv, the_repository);
+ strvec_clear(&args);
+ free(argv_copy);
+ exit(ret);
+ }
+
strvec_clear(&args);
+ free(argv_copy);
}
static void execv_dashed_external(const char **argv)
diff --git a/graph.c b/graph.c
index 091c14cf4f..bf000fdbe1 100644
--- a/graph.c
+++ b/graph.c
@@ -76,10 +76,7 @@ static void graph_show_line_prefix(const struct diff_options *diffopt)
if (!diffopt || !diffopt->line_prefix)
return;
- fwrite(diffopt->line_prefix,
- sizeof(char),
- diffopt->line_prefix_length,
- diffopt->file);
+ fputs(diffopt->line_prefix, diffopt->file);
}
static const char **column_colors;
@@ -312,22 +309,28 @@ struct git_graph {
* stored as an index into the array column_colors.
*/
unsigned short default_column_color;
+
+ /*
+ * Scratch buffer for generating prefixes to be used with
+ * diff_output_prefix_callback().
+ */
+ struct strbuf prefix_buf;
};
-static struct strbuf *diff_output_prefix_callback(struct diff_options *opt, void *data)
+static const char *diff_output_prefix_callback(struct diff_options *opt, void *data)
{
struct git_graph *graph = data;
- static struct strbuf msgbuf = STRBUF_INIT;
assert(opt);
- strbuf_reset(&msgbuf);
+ if (!graph)
+ return opt->line_prefix;
+
+ strbuf_reset(&graph->prefix_buf);
if (opt->line_prefix)
- strbuf_add(&msgbuf, opt->line_prefix,
- opt->line_prefix_length);
- if (graph)
- graph_padding_line(graph, &msgbuf);
- return &msgbuf;
+ strbuf_addstr(&graph->prefix_buf, opt->line_prefix);
+ graph_padding_line(graph, &graph->prefix_buf);
+ return graph->prefix_buf.buf;
}
static const struct diff_options *default_diffopt;
@@ -397,6 +400,7 @@ struct git_graph *graph_init(struct rev_info *opt)
* The diff output prefix callback, with this we can make
* all the diff output to align with the graph lines.
*/
+ strbuf_init(&graph->prefix_buf, 0);
opt->diffopt.output_prefix = diff_output_prefix_callback;
opt->diffopt.output_prefix_data = graph;
@@ -412,6 +416,7 @@ void graph_clear(struct git_graph *graph)
free(graph->new_columns);
free(graph->mapping);
free(graph->old_mapping);
+ strbuf_release(&graph->prefix_buf);
free(graph);
}
diff --git a/grep.c b/grep.c
index e5761426e4..701e58de04 100644
--- a/grep.c
+++ b/grep.c
@@ -843,11 +843,11 @@ static void free_grep_pat(struct grep_pat *pattern)
free_pcre2_pattern(p);
else
regfree(&p->regexp);
- free(p->pattern);
break;
default:
break;
}
+ free(p->pattern);
free(p);
}
}
diff --git a/hash.h b/hash.h
index 72ffbc862e..756166ce5e 100644
--- a/hash.h
+++ b/hash.h
@@ -15,6 +15,36 @@
#include "block-sha1/sha1.h"
#endif
+#if defined(SHA1_APPLE_UNSAFE)
+# include <CommonCrypto/CommonDigest.h>
+# define platform_SHA_CTX_unsafe CC_SHA1_CTX
+# define platform_SHA1_Init_unsafe CC_SHA1_Init
+# define platform_SHA1_Update_unsafe CC_SHA1_Update
+# define platform_SHA1_Final_unsafe CC_SHA1_Final
+#elif defined(SHA1_OPENSSL_UNSAFE)
+# include <openssl/sha.h>
+# if defined(OPENSSL_API_LEVEL) && OPENSSL_API_LEVEL >= 3
+# define SHA1_NEEDS_CLONE_HELPER_UNSAFE
+# include "sha1/openssl.h"
+# define platform_SHA_CTX_unsafe openssl_SHA1_CTX
+# define platform_SHA1_Init_unsafe openssl_SHA1_Init
+# define platform_SHA1_Clone_unsafe openssl_SHA1_Clone
+# define platform_SHA1_Update_unsafe openssl_SHA1_Update
+# define platform_SHA1_Final_unsafe openssl_SHA1_Final
+# else
+# define platform_SHA_CTX_unsafe SHA_CTX
+# define platform_SHA1_Init_unsafe SHA1_Init
+# define platform_SHA1_Update_unsafe SHA1_Update
+# define platform_SHA1_Final_unsafe SHA1_Final
+# endif
+#elif defined(SHA1_BLK_UNSAFE)
+# include "block-sha1/sha1.h"
+# define platform_SHA_CTX_unsafe blk_SHA_CTX
+# define platform_SHA1_Init_unsafe blk_SHA1_Init
+# define platform_SHA1_Update_unsafe blk_SHA1_Update
+# define platform_SHA1_Final_unsafe blk_SHA1_Final
+#endif
+
#if defined(SHA256_NETTLE)
#include "sha256/nettle.h"
#elif defined(SHA256_GCRYPT)
@@ -44,14 +74,35 @@
#define platform_SHA1_Final SHA1_Final
#endif
+#ifndef platform_SHA_CTX_unsafe
+# define platform_SHA_CTX_unsafe platform_SHA_CTX
+# define platform_SHA1_Init_unsafe platform_SHA1_Init
+# define platform_SHA1_Update_unsafe platform_SHA1_Update
+# define platform_SHA1_Final_unsafe platform_SHA1_Final
+# ifdef platform_SHA1_Clone
+# define platform_SHA1_Clone_unsafe platform_SHA1_Clone
+# endif
+# ifdef SHA1_NEEDS_CLONE_HELPER
+# define SHA1_NEEDS_CLONE_HELPER_UNSAFE
+# endif
+#endif
+
#define git_SHA_CTX platform_SHA_CTX
#define git_SHA1_Init platform_SHA1_Init
#define git_SHA1_Update platform_SHA1_Update
#define git_SHA1_Final platform_SHA1_Final
+#define git_SHA_CTX_unsafe platform_SHA_CTX_unsafe
+#define git_SHA1_Init_unsafe platform_SHA1_Init_unsafe
+#define git_SHA1_Update_unsafe platform_SHA1_Update_unsafe
+#define git_SHA1_Final_unsafe platform_SHA1_Final_unsafe
+
#ifdef platform_SHA1_Clone
#define git_SHA1_Clone platform_SHA1_Clone
#endif
+#ifdef platform_SHA1_Clone_unsafe
+# define git_SHA1_Clone_unsafe platform_SHA1_Clone_unsafe
+#endif
#ifndef platform_SHA256_CTX
#define platform_SHA256_CTX SHA256_CTX
@@ -81,6 +132,13 @@ static inline void git_SHA1_Clone(git_SHA_CTX *dst, const git_SHA_CTX *src)
memcpy(dst, src, sizeof(*dst));
}
#endif
+#ifndef SHA1_NEEDS_CLONE_HELPER_UNSAFE
+static inline void git_SHA1_Clone_unsafe(git_SHA_CTX_unsafe *dst,
+ const git_SHA_CTX_unsafe *src)
+{
+ memcpy(dst, src, sizeof(*dst));
+}
+#endif
#ifndef SHA256_NEEDS_CLONE_HELPER
static inline void git_SHA256_Clone(git_SHA256_CTX *dst, const git_SHA256_CTX *src)
@@ -178,6 +236,8 @@ enum get_oid_result {
/* A suitably aligned type for stack allocations of hash contexts. */
union git_hash_ctx {
git_SHA_CTX sha1;
+ git_SHA_CTX_unsafe sha1_unsafe;
+
git_SHA256_CTX sha256;
};
typedef union git_hash_ctx git_hash_ctx;
@@ -222,6 +282,21 @@ struct git_hash_algo {
/* The hash finalization function for object IDs. */
git_hash_final_oid_fn final_oid_fn;
+ /* The non-cryptographic hash initialization function. */
+ git_hash_init_fn unsafe_init_fn;
+
+ /* The non-cryptographic hash context cloning function. */
+ git_hash_clone_fn unsafe_clone_fn;
+
+ /* The non-cryptographic hash update function. */
+ git_hash_update_fn unsafe_update_fn;
+
+ /* The non-cryptographic hash finalization function. */
+ git_hash_final_fn unsafe_final_fn;
+
+ /* The non-cryptographic hash finalization function. */
+ git_hash_final_oid_fn unsafe_final_oid_fn;
+
/* The OID of the empty tree. */
const struct object_id *empty_tree;
diff --git a/http-fetch.c b/http-fetch.c
index d460bb1837..02ab80533f 100644
--- a/http-fetch.c
+++ b/http-fetch.c
@@ -106,6 +106,7 @@ int cmd_main(int argc, const char **argv)
int nongit;
struct object_id packfile_hash;
struct strvec index_pack_args = STRVEC_INIT;
+ int ret;
setup_git_directory_gently(&nongit);
@@ -157,8 +158,8 @@ int cmd_main(int argc, const char **argv)
fetch_single_packfile(&packfile_hash, argv[arg],
index_pack_args.v);
-
- return 0;
+ ret = 0;
+ goto out;
}
if (index_pack_args.nr)
@@ -170,7 +171,12 @@ int cmd_main(int argc, const char **argv)
commit_id = (char **) &argv[arg++];
commits = 1;
}
- return fetch_using_walker(argv[arg], get_verbosely, get_recover,
- commits, commit_id, write_ref,
- commits_on_stdin);
+
+ ret = fetch_using_walker(argv[arg], get_verbosely, get_recover,
+ commits, commit_id, write_ref,
+ commits_on_stdin);
+
+out:
+ strvec_clear(&index_pack_args);
+ return ret;
}
diff --git a/http-push.c b/http-push.c
index 7315a694aa..aad89f2eab 100644
--- a/http-push.c
+++ b/http-push.c
@@ -275,7 +275,7 @@ static void start_fetch_loose(struct transfer_request *request)
if (!start_active_slot(slot)) {
fprintf(stderr, "Unable to start GET request\n");
repo->can_update_info_refs = 0;
- release_http_object_request(obj_req);
+ release_http_object_request(&obj_req);
release_request(request);
}
}
@@ -375,7 +375,7 @@ static void start_put(struct transfer_request *request)
/* Set it up */
git_deflate_init(&stream, zlib_compression_level);
size = git_deflate_bound(&stream, len + hdrlen);
- strbuf_init(&request->buffer.buf, size);
+ strbuf_grow(&request->buffer.buf, size);
request->buffer.posn = 0;
/* Compress it */
@@ -437,9 +437,11 @@ static void start_move(struct transfer_request *request)
if (start_active_slot(slot)) {
request->slot = slot;
request->state = RUN_MOVE;
+ request->headers = dav_headers;
} else {
request->state = ABORTED;
FREE_AND_NULL(request->url);
+ curl_slist_free_all(dav_headers);
}
}
@@ -512,6 +514,8 @@ static void release_request(struct transfer_request *request)
}
free(request->url);
+ free(request->dest);
+ strbuf_release(&request->buffer.buf);
free(request);
}
@@ -578,9 +582,10 @@ static void finish_request(struct transfer_request *request)
if (obj_req->rename == 0)
request->obj->flags |= (LOCAL | REMOTE);
+ release_http_object_request(&obj_req);
+
/* Try fetching packed if necessary */
if (request->obj->flags & LOCAL) {
- release_http_object_request(obj_req);
release_request(request);
} else
start_fetch_packed(request);
@@ -649,12 +654,10 @@ static void add_fetch_request(struct object *obj)
return;
obj->flags |= FETCHING;
- request = xmalloc(sizeof(*request));
+ CALLOC_ARRAY(request, 1);
request->obj = obj;
- request->url = NULL;
- request->lock = NULL;
- request->headers = NULL;
request->state = NEED_FETCH;
+ strbuf_init(&request->buffer.buf, 0);
request->next = request_queue_head;
request_queue_head = request;
@@ -685,12 +688,11 @@ static int add_send_request(struct object *obj, struct remote_lock *lock)
}
obj->flags |= PUSHING;
- request = xmalloc(sizeof(*request));
+ CALLOC_ARRAY(request, 1);
request->obj = obj;
- request->url = NULL;
request->lock = lock;
- request->headers = NULL;
request->state = NEED_PUSH;
+ strbuf_init(&request->buffer.buf, 0);
request->next = request_queue_head;
request_queue_head = request;
@@ -912,6 +914,7 @@ static struct remote_lock *lock_remote(const char *path, long timeout)
result = XML_Parse(parser, in_buffer.buf,
in_buffer.len, 1);
free(ctx.name);
+ free(ctx.cdata);
if (result != XML_STATUS_OK) {
fprintf(stderr, "XML error: %s\n",
XML_ErrorString(
@@ -1169,6 +1172,7 @@ static void remote_ls(const char *path, int flags,
result = XML_Parse(parser, in_buffer.buf,
in_buffer.len, 1);
free(ctx.name);
+ free(ctx.cdata);
if (result != XML_STATUS_OK) {
fprintf(stderr, "XML error: %s\n",
@@ -1182,6 +1186,7 @@ static void remote_ls(const char *path, int flags,
}
free(ls.path);
+ free(ls.dentry_name);
free(url);
strbuf_release(&out_buffer.buf);
strbuf_release(&in_buffer);
@@ -1370,9 +1375,13 @@ static int get_delta(struct rev_info *revs, struct remote_lock *lock)
}
while (objects) {
+ struct object_list *next = objects->next;
+
if (!(objects->item->flags & UNINTERESTING))
count += add_send_request(objects->item, lock);
- objects = objects->next;
+
+ free(objects);
+ objects = next;
}
return count;
@@ -1398,6 +1407,7 @@ static int update_remote(const struct object_id *oid, struct remote_lock *lock)
if (start_active_slot(slot)) {
run_active_slot(slot);
strbuf_release(&out_buffer.buf);
+ curl_slist_free_all(dav_headers);
if (results.curl_result != CURLE_OK) {
fprintf(stderr,
"PUT error: curl result=%d, HTTP code=%ld\n",
@@ -1407,6 +1417,7 @@ static int update_remote(const struct object_id *oid, struct remote_lock *lock)
}
} else {
strbuf_release(&out_buffer.buf);
+ curl_slist_free_all(dav_headers);
fprintf(stderr, "Unable to start PUT request\n");
return 0;
}
@@ -1516,6 +1527,7 @@ static void update_remote_info_refs(struct remote_lock *lock)
results.curl_result, results.http_code);
}
}
+ curl_slist_free_all(dav_headers);
}
strbuf_release(&buffer.buf);
}
@@ -1707,7 +1719,7 @@ int cmd_main(int argc, const char **argv)
int rc = 0;
int i;
int new_refs;
- struct ref *ref, *local_refs;
+ struct ref *ref, *local_refs = NULL;
CALLOC_ARRAY(repo, 1);
@@ -1972,6 +1984,7 @@ int cmd_main(int argc, const char **argv)
cleanup:
if (info_ref_lock)
unlock_remote(info_ref_lock);
+ free(repo->url);
free(repo);
http_cleanup();
@@ -1983,5 +1996,8 @@ int cmd_main(int argc, const char **argv)
request = next_request;
}
+ refspec_clear(&rs);
+ free_refs(local_refs);
+
return rc;
}
diff --git a/http-walker.c b/http-walker.c
index e417a7f51c..fb2d86d5e7 100644
--- a/http-walker.c
+++ b/http-walker.c
@@ -74,7 +74,7 @@ static void start_object_request(struct object_request *obj_req)
obj_req->state = ACTIVE;
if (!start_active_slot(slot)) {
obj_req->state = ABORTED;
- release_http_object_request(req);
+ release_http_object_request(&req);
return;
}
}
@@ -110,7 +110,7 @@ static void process_object_response(void *callback_data)
if (obj_req->repo->next) {
obj_req->repo =
obj_req->repo->next;
- release_http_object_request(obj_req->req);
+ release_http_object_request(&obj_req->req);
start_object_request(obj_req);
return;
}
@@ -495,7 +495,7 @@ static int fetch_object(struct walker *walker, unsigned char *hash)
if (repo_has_object_file(the_repository, &obj_req->oid)) {
if (obj_req->req)
- abort_http_object_request(obj_req->req);
+ abort_http_object_request(&obj_req->req);
abort_object_request(obj_req);
return 0;
}
@@ -543,7 +543,7 @@ static int fetch_object(struct walker *walker, unsigned char *hash)
strbuf_release(&buf);
}
- release_http_object_request(req);
+ release_http_object_request(&obj_req->req);
release_object_request(obj_req);
return ret;
}
@@ -579,8 +579,18 @@ static void cleanup(struct walker *walker)
if (data) {
alt = data->alt;
while (alt) {
+ struct packed_git *pack;
+
alt_next = alt->next;
+ pack = alt->packs;
+ while (pack) {
+ struct packed_git *pack_next = pack->next;
+ close_pack(pack);
+ free(pack);
+ pack = pack_next;
+ }
+
free(alt->base);
free(alt);
diff --git a/http.c b/http.c
index 376af88c5d..d59e59f66b 100644
--- a/http.c
+++ b/http.c
@@ -800,6 +800,7 @@ static int redact_sensitive_header(struct strbuf *header, size_t offset)
strbuf_setlen(header, sensitive_header - header->buf);
strbuf_addbuf(header, &redacted_header);
+ strbuf_release(&redacted_header);
ret = 1;
}
return ret;
@@ -2474,6 +2475,7 @@ int http_get_info_packs(const char *base_url, struct packed_git **packs_head)
cleanup:
free(url);
+ strbuf_release(&buf);
return ret;
}
@@ -2725,6 +2727,7 @@ struct http_object_request *new_http_object_request(const char *base_url,
* file; also rewind to the beginning of the local file.
*/
if (prev_read == -1) {
+ git_inflate_end(&freq->stream);
memset(&freq->stream, 0, sizeof(freq->stream));
git_inflate_init(&freq->stream);
the_hash_algo->init_fn(&freq->c);
@@ -2798,7 +2801,6 @@ int finish_http_object_request(struct http_object_request *freq)
return -1;
}
- git_inflate_end(&freq->stream);
the_hash_algo->final_oid_fn(&freq->real_oid, &freq->c);
if (freq->zret != Z_STREAM_END) {
unlink_or_warn(freq->tmpfile.buf);
@@ -2815,15 +2817,17 @@ int finish_http_object_request(struct http_object_request *freq)
return freq->rename;
}
-void abort_http_object_request(struct http_object_request *freq)
+void abort_http_object_request(struct http_object_request **freq_p)
{
+ struct http_object_request *freq = *freq_p;
unlink_or_warn(freq->tmpfile.buf);
- release_http_object_request(freq);
+ release_http_object_request(freq_p);
}
-void release_http_object_request(struct http_object_request *freq)
+void release_http_object_request(struct http_object_request **freq_p)
{
+ struct http_object_request *freq = *freq_p;
if (freq->localfile != -1) {
close(freq->localfile);
freq->localfile = -1;
@@ -2837,4 +2841,8 @@ void release_http_object_request(struct http_object_request *freq)
}
curl_slist_free_all(freq->headers);
strbuf_release(&freq->tmpfile);
+ git_inflate_end(&freq->stream);
+
+ free(freq);
+ *freq_p = NULL;
}
diff --git a/http.h b/http.h
index a516ca4a9a..46e334c2c2 100644
--- a/http.h
+++ b/http.h
@@ -240,8 +240,8 @@ struct http_object_request *new_http_object_request(
const char *base_url, const struct object_id *oid);
void process_http_object_request(struct http_object_request *freq);
int finish_http_object_request(struct http_object_request *freq);
-void abort_http_object_request(struct http_object_request *freq);
-void release_http_object_request(struct http_object_request *freq);
+void abort_http_object_request(struct http_object_request **freq);
+void release_http_object_request(struct http_object_request **freq);
/*
* Instead of using environment variables to determine if curl tracing happens,
diff --git a/line-log.c b/line-log.c
index 67c80b39a0..bca9bd8040 100644
--- a/line-log.c
+++ b/line-log.c
@@ -248,8 +248,10 @@ static void line_log_data_init(struct line_log_data *r)
static void line_log_data_clear(struct line_log_data *r)
{
range_set_release(&r->ranges);
+ free(r->path);
if (r->pair)
diff_free_filepair(r->pair);
+ diff_ranges_release(&r->diff);
}
static void free_line_log_data(struct line_log_data *r)
@@ -571,7 +573,8 @@ parse_lines(struct repository *r, struct commit *commit,
struct line_log_data *p;
for_each_string_list_item(item, args) {
- const char *name_part, *range_part;
+ const char *name_part;
+ char *range_part;
char *full_name;
struct diff_filespec *spec;
long begin = 0, end = 0;
@@ -615,6 +618,7 @@ parse_lines(struct repository *r, struct commit *commit,
free_filespec(spec);
FREE_AND_NULL(ends);
+ free(range_part);
}
for (p = ranges; p; p = p->next)
@@ -760,15 +764,13 @@ static void parse_pathspec_from_ranges(struct pathspec *pathspec,
{
struct line_log_data *r;
struct strvec array = STRVEC_INIT;
- const char **paths;
for (r = range; r; r = r->next)
strvec_push(&array, r->path);
- paths = strvec_detach(&array);
- parse_pathspec(pathspec, 0, PATHSPEC_PREFER_FULL, "", paths);
- /* strings are now owned by pathspec */
- free(paths);
+ parse_pathspec(pathspec, 0, PATHSPEC_PREFER_FULL, "", array.v);
+
+ strvec_clear(&array);
}
void line_log_init(struct rev_info *rev, const char *prefix, struct string_list *args)
@@ -781,21 +783,22 @@ void line_log_init(struct rev_info *rev, const char *prefix, struct string_list
add_line_range(rev, commit, range);
parse_pathspec_from_ranges(&rev->diffopt.pathspec, range);
+
+ free_line_log_data(range);
}
static void move_diff_queue(struct diff_queue_struct *dst,
struct diff_queue_struct *src)
{
assert(src != dst);
- memcpy(dst, src, sizeof(struct diff_queue_struct));
- DIFF_QUEUE_CLEAR(src);
+ memcpy(dst, src, sizeof(*dst));
+ diff_queue_init(src);
}
static void filter_diffs_for_paths(struct line_log_data *range, int keep_deletions)
{
int i;
- struct diff_queue_struct outq;
- DIFF_QUEUE_CLEAR(&outq);
+ struct diff_queue_struct outq = DIFF_QUEUE_INIT;
for (i = 0; i < diff_queued_diff.nr; i++) {
struct diff_filepair *p = diff_queued_diff.queue[i];
@@ -850,12 +853,12 @@ static void queue_diffs(struct line_log_data *range,
clear_pathspec(&opt->pathspec);
parse_pathspec_from_ranges(&opt->pathspec, range);
}
- DIFF_QUEUE_CLEAR(&diff_queued_diff);
+ diff_queue_clear(&diff_queued_diff);
diff_tree_oid(parent_tree_oid, tree_oid, "", opt);
if (opt->detect_rename && diff_might_be_rename()) {
/* must look at the full tree diff to detect renames */
clear_pathspec(&opt->pathspec);
- DIFF_QUEUE_CLEAR(&diff_queued_diff);
+ diff_queue_clear(&diff_queued_diff);
diff_tree_oid(parent_tree_oid, tree_oid, "", opt);
@@ -897,16 +900,6 @@ static void print_line(const char *prefix, char first,
fputs("\\ No newline at end of file\n", file);
}
-static char *output_prefix(struct diff_options *opt)
-{
- if (opt->output_prefix) {
- struct strbuf *sb = opt->output_prefix(opt, opt->output_prefix_data);
- return sb->buf;
- } else {
- return xstrdup("");
- }
-}
-
static void dump_diff_hacky_one(struct rev_info *rev, struct line_log_data *range)
{
unsigned int i, j = 0;
@@ -916,7 +909,7 @@ static void dump_diff_hacky_one(struct rev_info *rev, struct line_log_data *rang
struct diff_ranges *diff = &range->diff;
struct diff_options *opt = &rev->diffopt;
- char *prefix = output_prefix(opt);
+ const char *prefix = diff_line_prefix(opt);
const char *c_reset = diff_get_color(opt->use_color, DIFF_RESET);
const char *c_frag = diff_get_color(opt->use_color, DIFF_FRAGINFO);
const char *c_meta = diff_get_color(opt->use_color, DIFF_METAINFO);
@@ -1003,7 +996,6 @@ static void dump_diff_hacky_one(struct rev_info *rev, struct line_log_data *rang
out:
free(p_ends);
free(t_ends);
- free(prefix);
}
/*
@@ -1012,10 +1004,9 @@ out:
*/
static void dump_diff_hacky(struct rev_info *rev, struct line_log_data *range)
{
- char *prefix = output_prefix(&rev->diffopt);
+ const char *prefix = diff_line_prefix(&rev->diffopt);
fprintf(rev->diffopt.file, "%s\n", prefix);
- free(prefix);
while (range) {
dump_diff_hacky_one(rev, range);
@@ -1097,7 +1088,7 @@ static struct diff_filepair *diff_filepair_dup(struct diff_filepair *pair)
static void free_diffqueues(int n, struct diff_queue_struct *dq)
{
for (int i = 0; i < n; i++)
- diff_free_queue(&dq[i]);
+ diff_queue_clear(&dq[i]);
free(dq);
}
@@ -1132,10 +1123,18 @@ static int process_all_files(struct line_log_data **range_out,
while (rg && strcmp(rg->path, pair->two->path))
rg = rg->next;
assert(rg);
+ if (rg->pair)
+ diff_free_filepair(rg->pair);
rg->pair = diff_filepair_dup(queue->queue[i]);
+ diff_ranges_release(&rg->diff);
memcpy(&rg->diff, pairdiff, sizeof(struct diff_ranges));
+ FREE_AND_NULL(pairdiff);
+ }
+
+ if (pairdiff) {
+ diff_ranges_release(pairdiff);
+ free(pairdiff);
}
- free(pairdiff);
}
return changed;
@@ -1200,7 +1199,7 @@ static int process_ranges_ordinary_commit(struct rev_info *rev, struct commit *c
if (parent)
add_line_range(rev, parent, parent_range);
free_line_log_data(parent_range);
- diff_free_queue(&queue);
+ diff_queue_clear(&queue);
return changed;
}
@@ -1213,12 +1212,13 @@ static int process_ranges_merge_commit(struct rev_info *rev, struct commit *comm
struct commit_list *p;
int i;
int nparents = commit_list_count(commit->parents);
+ int ret;
if (nparents > 1 && rev->first_parent_only)
nparents = 1;
ALLOC_ARRAY(diffqueues, nparents);
- ALLOC_ARRAY(cand, nparents);
+ CALLOC_ARRAY(cand, nparents);
ALLOC_ARRAY(parents, nparents);
p = commit->parents;
@@ -1230,7 +1230,6 @@ static int process_ranges_merge_commit(struct rev_info *rev, struct commit *comm
for (i = 0; i < nparents; i++) {
int changed;
- cand[i] = NULL;
changed = process_all_files(&cand[i], rev, &diffqueues[i], range);
if (!changed) {
/*
@@ -1238,13 +1237,10 @@ static int process_ranges_merge_commit(struct rev_info *rev, struct commit *comm
* don't follow any other path in history
*/
add_line_range(rev, parents[i], cand[i]);
- clear_commit_line_range(rev, commit);
commit_list_append(parents[i], &commit->parents);
- free(parents);
- free(cand);
- free_diffqueues(nparents, diffqueues);
- /* NEEDSWORK leaking like a sieve */
- return 0;
+
+ ret = 0;
+ goto out;
}
}
@@ -1252,18 +1248,25 @@ static int process_ranges_merge_commit(struct rev_info *rev, struct commit *comm
* No single parent took the blame. We add the candidates
* from the above loop to the parents.
*/
- for (i = 0; i < nparents; i++) {
+ for (i = 0; i < nparents; i++)
add_line_range(rev, parents[i], cand[i]);
- }
+ ret = 1;
+
+out:
clear_commit_line_range(rev, commit);
free(parents);
+ for (i = 0; i < nparents; i++) {
+ if (!cand[i])
+ continue;
+ line_log_data_clear(cand[i]);
+ free(cand[i]);
+ }
free(cand);
free_diffqueues(nparents, diffqueues);
- return 1;
+ return ret;
/* NEEDSWORK evil merge detection stuff */
- /* NEEDSWORK leaking like a sieve */
}
int line_log_process_ranges_arbitrary_commit(struct rev_info *rev, struct commit *commit)
diff --git a/log-tree.c b/log-tree.c
index 3758e0d3b8..83cc4b1cfb 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -232,6 +232,11 @@ void load_ref_decorations(struct decoration_filter *filter, int flags)
for_each_string_list_item(item, filter->exclude_ref_config_pattern) {
normalize_glob_ref(item, NULL, item->string);
}
+
+ /* normalize_glob_ref duplicates the strings */
+ filter->exclude_ref_pattern->strdup_strings = 1;
+ filter->include_ref_pattern->strdup_strings = 1;
+ filter->exclude_ref_config_pattern->strdup_strings = 1;
}
decoration_loaded = 1;
decoration_flags = flags;
@@ -243,6 +248,27 @@ void load_ref_decorations(struct decoration_filter *filter, int flags)
}
}
+void load_branch_decorations(void)
+{
+ if (!decoration_loaded) {
+ struct string_list decorate_refs_exclude = STRING_LIST_INIT_NODUP;
+ struct string_list decorate_refs_exclude_config = STRING_LIST_INIT_NODUP;
+ struct string_list decorate_refs_include = STRING_LIST_INIT_NODUP;
+ struct decoration_filter decoration_filter = {
+ .include_ref_pattern = &decorate_refs_include,
+ .exclude_ref_pattern = &decorate_refs_exclude,
+ .exclude_ref_config_pattern = &decorate_refs_exclude_config,
+ };
+
+ string_list_append(&decorate_refs_include, "refs/heads/");
+ load_ref_decorations(&decoration_filter, 0);
+
+ string_list_clear(&decorate_refs_exclude, 0);
+ string_list_clear(&decorate_refs_exclude_config, 0);
+ string_list_clear(&decorate_refs_include, 0);
+ }
+}
+
static void show_parents(struct commit *commit, int abbrev, FILE *file)
{
struct commit_list *p;
@@ -675,7 +701,7 @@ static void show_diff_of_diff(struct rev_info *opt)
struct diff_queue_struct dq;
memcpy(&dq, &diff_queued_diff, sizeof(diff_queued_diff));
- DIFF_QUEUE_CLEAR(&diff_queued_diff);
+ diff_queue_init(&diff_queued_diff);
fprintf_ln(opt->diffopt.file, "\n%s", opt->idiff_title);
show_interdiff(opt->idiff_oid1, opt->idiff_oid2, 2,
@@ -694,7 +720,7 @@ static void show_diff_of_diff(struct rev_info *opt)
};
memcpy(&dq, &diff_queued_diff, sizeof(diff_queued_diff));
- DIFF_QUEUE_CLEAR(&diff_queued_diff);
+ diff_queue_init(&diff_queued_diff);
fprintf_ln(opt->diffopt.file, "\n%s", opt->rdiff_title);
/*
@@ -922,12 +948,7 @@ int log_tree_diff_flush(struct rev_info *opt)
* diff/diffstat output for readability.
*/
int pch = DIFF_FORMAT_DIFFSTAT | DIFF_FORMAT_PATCH;
- if (opt->diffopt.output_prefix) {
- struct strbuf *msg = NULL;
- msg = opt->diffopt.output_prefix(&opt->diffopt,
- opt->diffopt.output_prefix_data);
- fwrite(msg->buf, msg->len, 1, opt->diffopt.file);
- }
+ fputs(diff_line_prefix(&opt->diffopt), opt->diffopt.file);
/*
* We may have shown three-dashes line early
diff --git a/log-tree.h b/log-tree.h
index 94978e2c83..ebe491c543 100644
--- a/log-tree.h
+++ b/log-tree.h
@@ -33,6 +33,7 @@ void log_write_email_headers(struct rev_info *opt, struct commit *commit,
int *need_8bit_cte_p,
int maybe_multipart);
void load_ref_decorations(struct decoration_filter *filter, int flags);
+void load_branch_decorations(void);
void fmt_output_commit(struct strbuf *, struct commit *, struct rev_info *);
void fmt_output_subject(struct strbuf *, const char *subject, struct rev_info *);
diff --git a/loose.c b/loose.c
index 6d6a41b7e5..897ba389da 100644
--- a/loose.c
+++ b/loose.c
@@ -1,10 +1,9 @@
-#define USE_THE_REPOSITORY_VARIABLE
-
#include "git-compat-util.h"
#include "hash.h"
#include "path.h"
#include "object-store.h"
#include "hex.h"
+#include "repository.h"
#include "wrapper.h"
#include "gettext.h"
#include "loose.h"
@@ -142,8 +141,8 @@ int repo_write_loose_object_map(struct repository *repo)
for (; iter != kh_end(map); iter++) {
if (kh_exist(map, iter)) {
- if (oideq(&kh_key(map, iter), the_hash_algo->empty_tree) ||
- oideq(&kh_key(map, iter), the_hash_algo->empty_blob))
+ if (oideq(&kh_key(map, iter), repo->hash_algo->empty_tree) ||
+ oideq(&kh_key(map, iter), repo->hash_algo->empty_blob))
continue;
strbuf_addf(&buf, "%s %s\n", oid_to_hex(&kh_key(map, iter)), oid_to_hex(kh_value(map, iter)));
if (write_in_full(fd, buf.buf, buf.len) < 0)
diff --git a/merge-ort.c b/merge-ort.c
index 8b81153e8f..11029c10be 100644
--- a/merge-ort.c
+++ b/merge-ort.c
@@ -3536,7 +3536,7 @@ simple_cleanup:
/* Free memory for renames->pairs[] and combined */
for (s = MERGE_SIDE1; s <= MERGE_SIDE2; s++) {
free(renames->pairs[s].queue);
- DIFF_QUEUE_CLEAR(&renames->pairs[s]);
+ diff_queue_init(&renames->pairs[s]);
}
for (i = 0; i < combined.nr; i++)
pool_diff_free_filepair(&opt->priv->pool, combined.queue[i]);
diff --git a/mergetools/vimdiff b/mergetools/vimdiff
index f8ad6b35d4..ffc9be86c8 100644
--- a/mergetools/vimdiff
+++ b/mergetools/vimdiff
@@ -411,7 +411,7 @@ merge_cmd () {
-f "$FINAL_CMD" '"$LOCAL"' '"$BASE"' '"$REMOTE"' '"$MERGED"'
else
# If there is no BASE (example: a merge conflict in a new file
- # with the same name created in both braches which didn't exist
+ # with the same name created in both branches which didn't exist
# before), close all BASE windows using vim's "quit" command
FINAL_CMD=$(echo "$FINAL_CMD" | \
diff --git a/midx-write.c b/midx-write.c
index 1ef62c4f4b..b3a5f6c516 100644
--- a/midx-write.c
+++ b/midx-write.c
@@ -649,7 +649,7 @@ static void write_midx_reverse_index(char *midx_name, unsigned char *midx_hash,
struct write_midx_context *ctx)
{
struct strbuf buf = STRBUF_INIT;
- const char *tmp_file;
+ char *tmp_file;
trace2_region_enter("midx", "write_midx_reverse_index", the_repository);
@@ -662,6 +662,7 @@ static void write_midx_reverse_index(char *midx_name, unsigned char *midx_hash,
die(_("cannot store reverse index file"));
strbuf_release(&buf);
+ free(tmp_file);
trace2_region_leave("midx", "write_midx_reverse_index", the_repository);
}
@@ -1445,6 +1446,8 @@ static int write_midx_internal(const char *object_dir,
return -1;
}
+ strbuf_release(&final_midx_name);
+
keep_hashes[ctx.num_multi_pack_indexes_before] =
xstrdup(hash_to_hex(midx_hash));
diff --git a/object-file.c b/object-file.c
index 7ac9533ab1..b1a3463852 100644
--- a/object-file.c
+++ b/object-file.c
@@ -115,6 +115,33 @@ static void git_hash_sha1_final_oid(struct object_id *oid, git_hash_ctx *ctx)
oid->algo = GIT_HASH_SHA1;
}
+static void git_hash_sha1_init_unsafe(git_hash_ctx *ctx)
+{
+ git_SHA1_Init_unsafe(&ctx->sha1_unsafe);
+}
+
+static void git_hash_sha1_clone_unsafe(git_hash_ctx *dst, const git_hash_ctx *src)
+{
+ git_SHA1_Clone_unsafe(&dst->sha1_unsafe, &src->sha1_unsafe);
+}
+
+static void git_hash_sha1_update_unsafe(git_hash_ctx *ctx, const void *data,
+ size_t len)
+{
+ git_SHA1_Update_unsafe(&ctx->sha1_unsafe, data, len);
+}
+
+static void git_hash_sha1_final_unsafe(unsigned char *hash, git_hash_ctx *ctx)
+{
+ git_SHA1_Final_unsafe(hash, &ctx->sha1_unsafe);
+}
+
+static void git_hash_sha1_final_oid_unsafe(struct object_id *oid, git_hash_ctx *ctx)
+{
+ git_SHA1_Final_unsafe(oid->hash, &ctx->sha1_unsafe);
+ memset(oid->hash + GIT_SHA1_RAWSZ, 0, GIT_MAX_RAWSZ - GIT_SHA1_RAWSZ);
+ oid->algo = GIT_HASH_SHA1;
+}
static void git_hash_sha256_init(git_hash_ctx *ctx)
{
@@ -189,6 +216,11 @@ const struct git_hash_algo hash_algos[GIT_HASH_NALGOS] = {
.update_fn = git_hash_unknown_update,
.final_fn = git_hash_unknown_final,
.final_oid_fn = git_hash_unknown_final_oid,
+ .unsafe_init_fn = git_hash_unknown_init,
+ .unsafe_clone_fn = git_hash_unknown_clone,
+ .unsafe_update_fn = git_hash_unknown_update,
+ .unsafe_final_fn = git_hash_unknown_final,
+ .unsafe_final_oid_fn = git_hash_unknown_final_oid,
.empty_tree = NULL,
.empty_blob = NULL,
.null_oid = NULL,
@@ -204,6 +236,11 @@ const struct git_hash_algo hash_algos[GIT_HASH_NALGOS] = {
.update_fn = git_hash_sha1_update,
.final_fn = git_hash_sha1_final,
.final_oid_fn = git_hash_sha1_final_oid,
+ .unsafe_init_fn = git_hash_sha1_init_unsafe,
+ .unsafe_clone_fn = git_hash_sha1_clone_unsafe,
+ .unsafe_update_fn = git_hash_sha1_update_unsafe,
+ .unsafe_final_fn = git_hash_sha1_final_unsafe,
+ .unsafe_final_oid_fn = git_hash_sha1_final_oid_unsafe,
.empty_tree = &empty_tree_oid,
.empty_blob = &empty_blob_oid,
.null_oid = &null_oid_sha1,
@@ -219,6 +256,11 @@ const struct git_hash_algo hash_algos[GIT_HASH_NALGOS] = {
.update_fn = git_hash_sha256_update,
.final_fn = git_hash_sha256_final,
.final_oid_fn = git_hash_sha256_final_oid,
+ .unsafe_init_fn = git_hash_sha256_init,
+ .unsafe_clone_fn = git_hash_sha256_clone,
+ .unsafe_update_fn = git_hash_sha256_update,
+ .unsafe_final_fn = git_hash_sha256_final,
+ .unsafe_final_oid_fn = git_hash_sha256_final_oid,
.empty_tree = &empty_tree_oid_sha256,
.empty_blob = &empty_blob_oid_sha256,
.null_oid = &null_oid_sha256,
@@ -1932,17 +1974,77 @@ static void write_object_file_prepare_literally(const struct git_hash_algo *algo
hash_object_body(algo, &c, buf, len, oid, hdr, hdrlen);
}
+static int check_collision(const char *filename_a, const char *filename_b)
+{
+ char buf_a[4096], buf_b[4096];
+ int fd_a = -1, fd_b = -1;
+ int ret = 0;
+
+ fd_a = open(filename_a, O_RDONLY);
+ if (fd_a < 0) {
+ ret = error_errno(_("unable to open %s"), filename_a);
+ goto out;
+ }
+
+ fd_b = open(filename_b, O_RDONLY);
+ if (fd_b < 0) {
+ ret = error_errno(_("unable to open %s"), filename_b);
+ goto out;
+ }
+
+ while (1) {
+ ssize_t sz_a, sz_b;
+
+ sz_a = read_in_full(fd_a, buf_a, sizeof(buf_a));
+ if (sz_a < 0) {
+ ret = error_errno(_("unable to read %s"), filename_a);
+ goto out;
+ }
+
+ sz_b = read_in_full(fd_b, buf_b, sizeof(buf_b));
+ if (sz_b < 0) {
+ ret = error_errno(_("unable to read %s"), filename_b);
+ goto out;
+ }
+
+ if (sz_a != sz_b || memcmp(buf_a, buf_b, sz_a)) {
+ ret = error(_("files '%s' and '%s' differ in contents"),
+ filename_a, filename_b);
+ goto out;
+ }
+
+ if (sz_a < sizeof(buf_a))
+ break;
+ }
+
+out:
+ if (fd_a > -1)
+ close(fd_a);
+ if (fd_b > -1)
+ close(fd_b);
+ return ret;
+}
+
/*
* Move the just written object into its final resting place.
*/
int finalize_object_file(const char *tmpfile, const char *filename)
{
+ return finalize_object_file_flags(tmpfile, filename, 0);
+}
+
+int finalize_object_file_flags(const char *tmpfile, const char *filename,
+ enum finalize_object_file_flags flags)
+{
+ struct stat st;
int ret = 0;
if (object_creation_mode == OBJECT_CREATION_USES_RENAMES)
goto try_rename;
else if (link(tmpfile, filename))
ret = errno;
+ else
+ unlink_or_warn(tmpfile);
/*
* Coda hack - coda doesn't like cross-directory links,
@@ -1957,16 +2059,24 @@ int finalize_object_file(const char *tmpfile, const char *filename)
*/
if (ret && ret != EEXIST) {
try_rename:
- if (!rename(tmpfile, filename))
+ if (!stat(filename, &st))
+ ret = EEXIST;
+ else if (!rename(tmpfile, filename))
goto out;
- ret = errno;
+ else
+ ret = errno;
}
- unlink_or_warn(tmpfile);
if (ret) {
if (ret != EEXIST) {
+ int saved_errno = errno;
+ unlink_or_warn(tmpfile);
+ errno = saved_errno;
return error_errno(_("unable to write file %s"), filename);
}
- /* FIXME!!! Collision check here ? */
+ if (!(flags & FOF_SKIP_COLLISION_CHECK) &&
+ check_collision(tmpfile, filename))
+ return -1;
+ unlink_or_warn(tmpfile);
}
out:
@@ -2219,7 +2329,8 @@ static int write_loose_object(const struct object_id *oid, char *hdr,
warning_errno(_("failed utime() on %s"), tmp_file.buf);
}
- return finalize_object_file(tmp_file.buf, filename.buf);
+ return finalize_object_file_flags(tmp_file.buf, filename.buf,
+ FOF_SKIP_COLLISION_CHECK);
}
static int freshen_loose_object(const struct object_id *oid)
@@ -2341,7 +2452,8 @@ int stream_loose_object(struct input_stream *in_stream, size_t len,
strbuf_release(&dir);
}
- err = finalize_object_file(tmp_file.buf, filename.buf);
+ err = finalize_object_file_flags(tmp_file.buf, filename.buf,
+ FOF_SKIP_COLLISION_CHECK);
if (!err && compat)
err = repo_add_loose_object_map(the_repository, oid, &compat_oid);
cleanup:
diff --git a/object-file.h b/object-file.h
index d6414610f8..81b30d269c 100644
--- a/object-file.h
+++ b/object-file.h
@@ -117,7 +117,13 @@ int check_object_signature(struct repository *r, const struct object_id *oid,
*/
int stream_object_signature(struct repository *r, const struct object_id *oid);
+enum finalize_object_file_flags {
+ FOF_SKIP_COLLISION_CHECK = 1,
+};
+
int finalize_object_file(const char *tmpfile, const char *filename);
+int finalize_object_file_flags(const char *tmpfile, const char *filename,
+ enum finalize_object_file_flags flags);
/* Helper to check and "touch" a file */
int check_and_freshen_file(const char *fn, int freshen);
diff --git a/pack-bitmap-write.c b/pack-bitmap-write.c
index 4dc0fe8e40..49758e2525 100644
--- a/pack-bitmap-write.c
+++ b/pack-bitmap-write.c
@@ -64,6 +64,12 @@ static void free_pseudo_merge_commit_idx(struct pseudo_merge_commit_idx *idx)
free(idx);
}
+static void pseudo_merge_group_release_cb(void *payload, const char *name UNUSED)
+{
+ pseudo_merge_group_release(payload);
+ free(payload);
+}
+
void bitmap_writer_free(struct bitmap_writer *writer)
{
uint32_t i;
@@ -82,6 +88,8 @@ void bitmap_writer_free(struct bitmap_writer *writer)
kh_foreach_value(writer->pseudo_merge_commits, idx,
free_pseudo_merge_commit_idx(idx));
kh_destroy_oid_map(writer->pseudo_merge_commits);
+ string_list_clear_func(&writer->pseudo_merge_groups,
+ pseudo_merge_group_release_cb);
for (i = 0; i < writer->selected_nr; i++) {
struct bitmapped_commit *bc = &writer->selected[i];
@@ -905,6 +913,7 @@ static void write_pseudo_merges(struct bitmap_writer *writer,
for (i = 0; i < writer->pseudo_merges_nr; i++)
bitmap_free(commits_bitmap[i]);
+ oid_array_clear(&commits);
free(pseudo_merge_ofs);
free(commits_bitmap);
}
diff --git a/pack-bitmap.c b/pack-bitmap.c
index 9d9b8c4bfb..32b222a7af 100644
--- a/pack-bitmap.c
+++ b/pack-bitmap.c
@@ -1390,8 +1390,8 @@ static struct bitmap *find_objects(struct bitmap_index *bitmap_git,
}
base = bitmap_new();
- if (!cascade_pseudo_merges_1(bitmap_git, base, roots_bitmap))
- bitmap_free(roots_bitmap);
+ cascade_pseudo_merges_1(bitmap_git, base, roots_bitmap);
+ bitmap_free(roots_bitmap);
}
/*
diff --git a/pack-write.c b/pack-write.c
index 27965672f1..8c7dfddc5a 100644
--- a/pack-write.c
+++ b/pack-write.c
@@ -8,6 +8,7 @@
#include "csum-file.h"
#include "remote.h"
#include "chunk-format.h"
+#include "object-file.h"
#include "pack-mtimes.h"
#include "pack-objects.h"
#include "pack-revindex.h"
@@ -212,15 +213,15 @@ static void write_rev_trailer(struct hashfile *f, const unsigned char *hash)
hashwrite(f, hash, the_hash_algo->rawsz);
}
-const char *write_rev_file(const char *rev_name,
- struct pack_idx_entry **objects,
- uint32_t nr_objects,
- const unsigned char *hash,
- unsigned flags)
+char *write_rev_file(const char *rev_name,
+ struct pack_idx_entry **objects,
+ uint32_t nr_objects,
+ const unsigned char *hash,
+ unsigned flags)
{
uint32_t *pack_order;
uint32_t i;
- const char *ret;
+ char *ret;
if (!(flags & WRITE_REV) && !(flags & WRITE_REV_VERIFY))
return NULL;
@@ -238,13 +239,14 @@ const char *write_rev_file(const char *rev_name,
return ret;
}
-const char *write_rev_file_order(const char *rev_name,
- uint32_t *pack_order,
- uint32_t nr_objects,
- const unsigned char *hash,
- unsigned flags)
+char *write_rev_file_order(const char *rev_name,
+ uint32_t *pack_order,
+ uint32_t nr_objects,
+ const unsigned char *hash,
+ unsigned flags)
{
struct hashfile *f;
+ char *path;
int fd;
if ((flags & WRITE_REV) && (flags & WRITE_REV_VERIFY))
@@ -254,12 +256,13 @@ const char *write_rev_file_order(const char *rev_name,
if (!rev_name) {
struct strbuf tmp_file = STRBUF_INIT;
fd = odb_mkstemp(&tmp_file, "pack/tmp_rev_XXXXXX");
- rev_name = strbuf_detach(&tmp_file, NULL);
+ path = strbuf_detach(&tmp_file, NULL);
} else {
unlink(rev_name);
fd = xopen(rev_name, O_CREAT|O_EXCL|O_WRONLY, 0600);
+ path = xstrdup(rev_name);
}
- f = hashfd(fd, rev_name);
+ f = hashfd(fd, path);
} else if (flags & WRITE_REV_VERIFY) {
struct stat statbuf;
if (stat(rev_name, &statbuf)) {
@@ -270,22 +273,24 @@ const char *write_rev_file_order(const char *rev_name,
die_errno(_("could not stat: %s"), rev_name);
}
f = hashfd_check(rev_name);
- } else
+ path = xstrdup(rev_name);
+ } else {
return NULL;
+ }
write_rev_header(f);
write_rev_index_positions(f, pack_order, nr_objects);
write_rev_trailer(f, hash);
- if (rev_name && adjust_shared_perm(rev_name) < 0)
- die(_("failed to make %s readable"), rev_name);
+ if (adjust_shared_perm(path) < 0)
+ die(_("failed to make %s readable"), path);
finalize_hashfile(f, NULL, FSYNC_COMPONENT_PACK_METADATA,
CSUM_HASH_IN_STREAM | CSUM_CLOSE |
((flags & WRITE_IDX_VERIFY) ? 0 : CSUM_FSYNC));
- return rev_name;
+ return path;
}
static void write_mtimes_header(struct hashfile *f)
@@ -528,9 +533,9 @@ static void rename_tmp_packfile(struct strbuf *name_prefix, const char *source,
size_t name_prefix_len = name_prefix->len;
strbuf_addstr(name_prefix, ext);
- if (rename(source, name_prefix->buf))
- die_errno("unable to rename temporary file to '%s'",
- name_prefix->buf);
+ if (finalize_object_file(source, name_prefix->buf))
+ die("unable to rename temporary file to '%s'",
+ name_prefix->buf);
strbuf_setlen(name_prefix, name_prefix_len);
}
@@ -549,7 +554,7 @@ void stage_tmp_packfiles(struct strbuf *name_buffer,
unsigned char hash[],
char **idx_tmp_name)
{
- const char *rev_tmp_name = NULL;
+ char *rev_tmp_name = NULL;
char *mtimes_tmp_name = NULL;
if (adjust_shared_perm(pack_tmp_name))
@@ -575,7 +580,7 @@ void stage_tmp_packfiles(struct strbuf *name_buffer,
if (mtimes_tmp_name)
rename_tmp_packfile(name_buffer, mtimes_tmp_name, "mtimes");
- free((char *)rev_tmp_name);
+ free(rev_tmp_name);
free(mtimes_tmp_name);
}
diff --git a/pack.h b/pack.h
index 3ab9e3f60c..02bbdfb19c 100644
--- a/pack.h
+++ b/pack.h
@@ -96,8 +96,8 @@ struct ref;
void write_promisor_file(const char *promisor_name, struct ref **sought, int nr_sought);
-const char *write_rev_file(const char *rev_name, struct pack_idx_entry **objects, uint32_t nr_objects, const unsigned char *hash, unsigned flags);
-const char *write_rev_file_order(const char *rev_name, uint32_t *pack_order, uint32_t nr_objects, const unsigned char *hash, unsigned flags);
+char *write_rev_file(const char *rev_name, struct pack_idx_entry **objects, uint32_t nr_objects, const unsigned char *hash, unsigned flags);
+char *write_rev_file_order(const char *rev_name, uint32_t *pack_order, uint32_t nr_objects, const unsigned char *hash, unsigned flags);
/*
* The "hdr" output buffer should be at least this big, which will handle sizes
diff --git a/parse-options.c b/parse-options.c
index 30b9e68f8a..33bfba0ed4 100644
--- a/parse-options.c
+++ b/parse-options.c
@@ -60,12 +60,12 @@ static enum parse_opt_result get_arg(struct parse_opt_ctx_t *p,
return 0;
}
-static void fix_filename(const char *prefix, char **file)
+static char *fix_filename(const char *prefix, const char *file)
{
if (!file || !*file)
- ; /* leave as NULL */
+ return NULL;
else
- *file = prefix_filename_except_for_dash(prefix, *file);
+ return prefix_filename_except_for_dash(prefix, file);
}
static enum parse_opt_result do_get_value(struct parse_opt_ctx_t *p,
@@ -129,18 +129,24 @@ static enum parse_opt_result do_get_value(struct parse_opt_ctx_t *p,
return 0;
case OPTION_FILENAME:
+ {
+ const char *value;
+
+ FREE_AND_NULL(*(char **)opt->value);
+
err = 0;
+
if (unset)
- *(const char **)opt->value = NULL;
+ value = NULL;
else if (opt->flags & PARSE_OPT_OPTARG && !p->opt)
- *(const char **)opt->value = (const char *)opt->defval;
+ value = (const char *) opt->defval;
else
- err = get_arg(p, opt, flags, (const char **)opt->value);
+ err = get_arg(p, opt, flags, &value);
if (!err)
- fix_filename(p->prefix, (char **)opt->value);
+ *(char **)opt->value = fix_filename(p->prefix, value);
return err;
-
+ }
case OPTION_CALLBACK:
{
const char *p_arg = NULL;
diff --git a/perl/Git/I18N.pm b/perl/Git/I18N.pm
index 5454c3a6d2..475e90a6df 100644
--- a/perl/Git/I18N.pm
+++ b/perl/Git/I18N.pm
@@ -111,7 +111,7 @@ L<Locale::Messages>'s ngettext function or passthrough fallback function.
=head2 N__($)
No-operation that only returns its argument. Use this if you want xgettext to
-extract the text to the pot template but do not want to trigger retrival of the
+extract the text to the pot template but do not want to trigger retrieval of the
translation at run time.
=head1 AUTHOR
diff --git a/po/TEAMS b/po/TEAMS
index 2775a971aa..9a6a15cd9a 100644
--- a/po/TEAMS
+++ b/po/TEAMS
@@ -7,8 +7,8 @@ Leader: Alexander Shopov <ash@kambanaria.org>
Language: ca (Catalan)
Repository: https://github.com/Softcatala/git-po
-Leader: Jordi Mas <jmas@softcatala.org>
-Members: Alex Henrie <alexhenrie24@gmail.com>
+Leader: Mikel Forcada <mikel.forcada@gmail.com>
+Members: Jordi Mas <jmas@softcatala.org>
Language: de (German)
Repository: https://github.com/ralfth/git
diff --git a/po/bg.po b/po/bg.po
index 9e1ae613cf..1f7222dd93 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -222,7 +222,9 @@
# reftable таблица Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ð¸
# its referent '%s' ÑÐ¾Ñ‡ÐµÑ‰Ð¸Ñ Ð³Ð¾ „%s“
# dry run пробно изпълнение
-#
+# mailmap файл за ÑъответÑтвиÑта на имената и адреÑите на е-поща
+# unit test поединичен теÑÑ‚
+# test suite група теÑтове
#
# ------------------------
# „$var“ - може да не Ñработва за shell има gettext и eval_gettext - проверка - намират Ñе леÑно по „$
@@ -251,8 +253,8 @@ msgid ""
msgstr ""
"Project-Id-Version: git 2.45\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2024-07-20 07:37+0200\n"
-"PO-Revision-Date: 2024-07-21 22:27+0300\n"
+"POT-Creation-Date: 2024-10-05 01:20+0000\n"
+"PO-Revision-Date: 2024-10-05 13:20+0200\n"
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
"Language: bg\n"
@@ -808,7 +810,7 @@ msgid ""
"/ - 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\n"
+"p - print the current hunk, 'P' to use the pager\n"
"? - print help\n"
msgstr ""
"j — без решение за парчето, към Ñледващото парче без решение\n"
@@ -820,6 +822,7 @@ msgstr ""
"s — разделÑне на текущото парче на по-малки\n"
"e — ръчно редактиране на текущото парче\n"
"p — извеждане на текущото парче\n"
+"P — извеждане на текущото парче през програма за прелиÑтване\n"
"? — извеждане на помощта\n"
#, c-format
@@ -1516,6 +1519,15 @@ msgstr ""
"пробване Ñ Ñ‚Ñ€Ð¾Ð¹Ð½Ð¾ Ñливане, ако това не Ñработи — Ñтандартно прилагане на "
"кръпка"
+msgid "for conflicts, use our version"
+msgstr "при конфликти да Ñе ползва локалната верÑиÑ"
+
+msgid "for conflicts, use their version"
+msgstr "при конфликти да Ñе ползва чуждата верÑиÑ"
+
+msgid "for conflicts, use a union version"
+msgstr "при конфликти да Ñе ползва обединена верÑиÑ"
+
msgid "build a temporary index based on embedded index information"
msgstr ""
"Ñъздаване на временен Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð° база на включената Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° индекÑа"
@@ -1563,6 +1575,9 @@ msgstr "добавÑне на тази ÐÐЧÐЛÐÐ_ДИРЕКТОРИЯ къÐ
msgid "don't return error for empty patches"
msgstr "да не Ñе връща грешка при празни кръпки"
+msgid "--ours, --theirs, and --union require --3way"
+msgstr "опциите „--ours“, „--theirs“ и „--union“ изиÑкват опциÑта „--3way“"
+
#, c-format
msgid "cannot stream blob %s"
msgstr "обектът-BLOB „%s“ не може да Ñе обработи"
@@ -1635,6 +1650,10 @@ msgid "not a tree object: %s"
msgstr "не е обект-дърво: %s"
#, c-format
+msgid "failed to unpack tree object %s"
+msgstr "неуÑпешно разпакетиране на обект-дърво „%s“"
+
+#, c-format
msgid "File not found: %s"
msgstr "Файлът „%s“ липÑва"
@@ -2771,9 +2790,6 @@ msgstr ""
"на „git bisect terms“ е подаден неправилен аргумент „%s“\n"
"Поддържат Ñе опциите „--term-good“/„--term-old“ и „--term-bad„/„--term-new“."
-msgid "revision walk setup failed\n"
-msgstr "неуÑпешно наÑтройване на обхождането на верÑиите\n"
-
#, c-format
msgid "could not open '%s' for appending"
msgstr "файлът „%s“ не може да Ñе отвори за добавÑне"
@@ -3789,9 +3805,17 @@ msgstr "git check-mailmap [ОПЦИЯ…] КОÐТÐКТ…"
msgid "also read contacts from stdin"
msgstr "четене на контакти и от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´"
-#, c-format
-msgid "unable to parse contact: %s"
-msgstr "контактът не може да бъде анализиран: %s"
+msgid "read additional mailmap entries from file"
+msgstr ""
+"изчитане на допълнителните ÑъответÑÑ‚Ð²Ð¸Ñ Ð½Ð° имена и адреÑи на е-поща от ФÐЙЛ"
+
+msgid "blob"
+msgstr "обект-BLOB"
+
+msgid "read additional mailmap entries from blob"
+msgstr ""
+"изчитане на допълнителните ÑъответÑÑ‚Ð²Ð¸Ñ Ð½Ð° имена и адреÑи на е-поща от обект-"
+"BLOB"
msgid "no contacts specified"
msgstr "не Ñа указани контакти"
@@ -4146,6 +4170,10 @@ msgid "'%s' cannot be used with switching branches"
msgstr "опциÑта „%s“ е неÑъвмеÑтима Ñ Ð¿Ñ€ÐµÐ¼Ð¸Ð½Ð°Ð²Ð°Ð½ÐµÑ‚Ð¾ от един клон към друг"
#, c-format
+msgid "'%s' needs the paths to check out"
+msgstr "„%s“ изиÑква пътища, които да Ñе изтеглÑÑ‚"
+
+#, c-format
msgid "'%s' cannot be used with '%s'"
msgstr "опциÑта „%s“ е неÑъвмеÑтима Ñ â€ž%s“"
@@ -4426,7 +4454,9 @@ msgid "remove only ignored files"
msgstr "изтриване Ñамо на игнорирани файлове"
msgid "clean.requireForce is true and -f not given: refusing to clean"
-msgstr "ÐаÑтройката „clean.requireForce“ е зададена, което изиÑква опциÑта „-f“. ÐÑма да Ñе извърши изчиÑтване"
+msgstr ""
+"ÐаÑтройката „clean.requireForce“ е зададена, което изиÑква опциÑта „-f“. "
+"ÐÑма да Ñе извърши изчиÑтване"
msgid "git clone [<options>] [--] <repo> [<dir>]"
msgstr "git clone [ОПЦИЯ…] [--] ХРÐÐИЛИЩЕ [ДИРЕКТОРИЯ]"
@@ -4939,7 +4969,7 @@ msgstr "git commit-tree: не може да Ñе прочете"
msgid ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]\n"
" [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|"
-"reword):]<commit>)]\n"
+"reword):]<commit>]\n"
" [-F <file> | -m <msg>] [--reset-author] [--allow-empty]\n"
" [--allow-empty-message] [--no-verify] [-e] [--author=<author>]\n"
" [--date=<date>] [--cleanup=<mode>] [--[no-]status]\n"
@@ -4949,11 +4979,11 @@ msgid ""
msgstr ""
"git commit [-a|--interactive|--patch] [-s] [-v] [-u РЕЖИМ] [--amend]\n"
" [--dry-run] [(-c|-C|--squash) ПОДÐÐ’ÐÐЕ |--fixup [(amend|"
-"reword):]ПОДÐÐ’ÐÐЕ)]\n"
+"reword):]ПОДÐÐ’ÐÐЕ]\n"
" [-F ФÐЙЛ|-m СЪОБЩЕÐИЕ] [--reset-author] [--allow-empty]\n"
" [--allow-empty-message] [--no-verify] [-e] [--author=ÐВТОР]\n"
" [--date=ДÐТÐ] [--cleanup=РЕЖИМ] [--[no-]status]\n"
-" [-i|-o] [--pathspec-from-file=ФÐЙЛ> [--pathspec-file-nul]]\n"
+" [-i|-o] [--pathspec-from-file=ФÐЙЛ [--pathspec-file-nul]]\n"
" [(--trailer ЛЕКСЕМÐ[(=|:)СТОЙÐОСТ])…] [-"
"S[ИДЕÐТИФИКÐТОР_ÐÐ_КЛЮЧ]]\n"
" [--] [ПЪТ…]"
@@ -5465,11 +5495,10 @@ msgstr "git config list [ОПЦИЯ_ЗÐ_ФÐЙЛ] [ОПЦИЯ_ЗÐ_ИЗВЕЖД
msgid ""
"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
-"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
-"<name>"
+"regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name>"
msgstr ""
"git config get [ОПЦИЯ_ЗÐ_ФÐЙЛ] [ОПЦИЯ_ЗÐ_ИЗВЕЖДÐÐЕ] [--includes] [--all] [--"
-"regexp=РЕГ_ИЗР][--value=СТОЙÐОСТ] [--fixed-value] [--default=СТÐÐДÐРТÐО] ИМЕ"
+"regexp] [--value=СТОЙÐОСТ] [--fixed-value] [--default=СТÐÐДÐРТÐО] ИМЕ"
msgid ""
"git config set [<file-option>] [--type=<type>] [--all] [--value=<value>] [--"
@@ -5498,6 +5527,14 @@ msgstr ""
"git config [ОПЦИЯ_ЗÐ_ФÐЙЛ] --get-colorbool ИМЕ [СТÐÐД_ИЗХОД_ÐÐ_ТЕРМИÐÐЛ]"
msgid ""
+"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
+"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
+"<name>"
+msgstr ""
+"git config get [ОПЦИЯ_ЗÐ_ФÐЙЛ] [ОПЦИЯ_ЗÐ_ИЗВЕЖДÐÐЕ] [--includes] [--all] [--"
+"regexp=РЕГ_ИЗР][--value=СТОЙÐОСТ] [--fixed-value] [--default=СТÐÐДÐРТÐО] ИМЕ"
+
+msgid ""
"git config set [<file-option>] [--type=<type>] [--comment=<message>] [--all] "
"[--value=<value>] [--fixed-value] <name> <value>"
msgstr ""
@@ -6326,8 +6363,8 @@ msgstr ""
" git config fetch.showForcedUpdates false\n"
#, c-format
-msgid "%s did not send all necessary objects\n"
-msgstr "хранилището „%s“ не изпрати вÑички необходими обекти\n"
+msgid "%s did not send all necessary objects"
+msgstr "хранилището „%s“ не изпрати вÑички необходими обекти"
#, c-format
msgid "rejected %s because shallow roots are not allowed to be updated"
@@ -6366,8 +6403,8 @@ msgid "option \"%s\" value \"%s\" is not valid for %s"
msgstr "ÑтойноÑтта „%2$s“ за опциÑта „%1$s“ не е ÑъвмеÑтима Ñ â€ž%3$s“"
#, c-format
-msgid "option \"%s\" is ignored for %s\n"
-msgstr "опциÑта „%s“ Ñе преÑкача при „%s“\n"
+msgid "option \"%s\" is ignored for %s"
+msgstr "опциÑта „%s“ Ñе преÑкача при „%s“"
#, c-format
msgid "%s is not a valid object"
@@ -6672,7 +6709,8 @@ msgid "config key storing a list of repository paths"
msgstr "наÑтройка, коÑто Ñъдържа ÑпиÑък Ñ Ð¿ÑŠÑ‚Ð¸Ñ‰Ð° към хранилища"
msgid "keep going even if command fails in a repository"
-msgstr "продължаване на дейÑтвието дори и командата да е неуÑпешна в нÑкое хранилище"
+msgstr ""
+"продължаване на дейÑтвието дори и командата да е неуÑпешна в нÑкое хранилище"
msgid "missing --config=<config>"
msgstr "липÑва --config=ÐÐСТРОЙКÐ"
@@ -7046,6 +7084,9 @@ msgstr "изчерпателно търÑене на боклука (за Ñме
msgid "enable auto-gc mode"
msgstr "включване на автоматичното Ñъбиране на боклука (auto-gc)"
+msgid "perform garbage collection in the background"
+msgstr "Ñъбиране на боклука във фонов режим"
+
msgid "force running gc even if there may be another gc running"
msgstr ""
"изрично Ñтартиране на Ñъбирането на боклука, дори и ако вече работи друго "
@@ -7150,6 +7191,9 @@ msgstr "задачата „%s“ не може да Ñе избере повеÑ
msgid "run tasks based on the state of the repository"
msgstr "изпълнÑване на задачи Ñпоред ÑÑŠÑтоÑнието на хранилището"
+msgid "perform maintenance in the background"
+msgstr "извършване на дейноÑтите по поддръжка на заден фон"
+
msgid "frequency"
msgstr "чеÑтота"
@@ -8029,9 +8073,6 @@ msgstr "опциÑта „-LДИÐПÐЗОÐ:ФÐЙЛ“ не може да Ñе
msgid "Final output: %d %s\n"
msgstr "Резултат: %d %s\n"
-msgid "unable to create temporary object directory"
-msgstr "не може да бъде Ñъздадена Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° временни обекти"
-
#, c-format
msgid "git show %s: bad file"
msgstr "git show %s: повреден файл"
@@ -8622,15 +8663,6 @@ msgstr "Ñливане на базата на „diff3“"
msgid "use a zealous diff3 based merge"
msgstr "заÑилено Ñливане на базата на „diff3“"
-msgid "for conflicts, use our version"
-msgstr "при конфликти да Ñе ползва локалната верÑиÑ"
-
-msgid "for conflicts, use their version"
-msgstr "при конфликти да Ñе ползва чуждата верÑиÑ"
-
-msgid "for conflicts, use a union version"
-msgstr "при конфликти да Ñе ползва обединена верÑиÑ"
-
msgid "<algorithm>"
msgstr "ÐЛГОРИТЪМ"
@@ -9110,6 +9142,9 @@ msgstr ""
msgid "write multi-pack bitmap"
msgstr "запазване на многопакетната битова маÑка"
+msgid "write a new incremental MIDX"
+msgstr "запазване на нов файл Ñ Ð½Ð°Ñ€Ð°Ñтващ Ð¸Ð½Ð´ÐµÐºÑ Ð·Ð° множеÑтво пакети"
+
msgid "write multi-pack index containing only given indexes"
msgstr ""
"запазване на битовата маÑка за множеÑтво пакети, Ñъдържаща Ñамо дадените "
@@ -11196,6 +11231,9 @@ msgstr "неправилен формат на указател: %s"
msgid "git refs migrate --ref-format=<format> [--dry-run]"
msgstr "git refs migrate --ref-format=ФОРМÐТ [--dry-run]"
+msgid "git refs verify [--strict] [--verbose]"
+msgstr "git refs verify [--strict] [--verbose]"
+
msgid "specify the reference format to convert to"
msgstr "указване на форма̀та за указател, към който да Ñе конвертира"
@@ -11209,6 +11247,12 @@ msgstr "липÑва опциÑта --ref-format=ФОРМÐТ"
msgid "repository already uses '%s' format"
msgstr "хранилището вече ползва форма̀та „%s“"
+msgid "enable strict checking"
+msgstr "Ñтроги проверки"
+
+msgid "'git refs verify' takes no arguments"
+msgstr "командата „git refs verify“ не приема аргументи"
+
msgid ""
"git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
"mirror=<fetch|push>] <name> <url>"
@@ -12668,10 +12712,10 @@ msgstr "указателÑÑ‚ не ÑъщеÑтвува"
msgid "failed to look up reference"
msgstr "Ñоченото от ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð»Ð¸Ð¿Ñва"
-msgid "only show tags (can be combined with branches)"
+msgid "only show tags (can be combined with --branches)"
msgstr "извеждане на етикетите (може да Ñе комбинира Ñ â€ž--branches“ за клони)"
-msgid "only show branches (can be combined with tags)"
+msgid "only show branches (can be combined with --tags)"
msgstr "извеждане на клоните (може да Ñе комбинира Ñ â€ž--tags“ за етикети)"
msgid "check for reference existence without resolving"
@@ -12727,6 +12771,10 @@ msgstr "директориÑта „%s“ не може да бъде изтри
msgid "failed to create directory for sparse-checkout file"
msgstr "директориÑта за чаÑтично изтеглÑне „%s“ не може да бъде Ñъздадена"
+#, c-format
+msgid "unable to fdopen %s"
+msgstr "обектът „%s“ не може да бъде отворен Ñ â€žfdopen“"
+
msgid "failed to initialize worktree config"
msgstr "наÑтройките на работното дърво не може да Ñе инициализират"
@@ -13185,8 +13233,8 @@ msgid "couldn't hash object from '%s'"
msgstr "неуÑпешно изчиÑлÑване на контролната Ñума на обект от „%s“"
#, c-format
-msgid "unexpected mode %o\n"
-msgstr "неочакван режим „%o“\n"
+msgid "unexpected mode %o"
+msgstr "неочакван режим „%o“"
msgid "use the commit stored in the index instead of the submodule HEAD"
msgstr ""
@@ -17918,13 +17966,16 @@ msgstr ""
msgid "Unable to create '%s.lock': %s"
msgstr "Файлът-ключалка „%s.lock“ не може да бъде Ñъздаден: %s"
+msgid "unable to create temporary object directory"
+msgstr "не може да бъде Ñъздадена Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° временни обекти"
+
#, c-format
msgid "could not write loose object index %s"
msgstr "индекÑÑŠÑ‚ Ñ Ð½ÐµÐ¿Ð°ÐºÐµÑ‚Ð¸Ñ€Ð°Ð½Ð¸ обекти не може да Ñе запише: %s"
#, c-format
-msgid "failed to write loose object index %s\n"
-msgstr "грешка при запиÑа на индекÑа Ñ Ð½ÐµÐ¿Ð°ÐºÐµÑ‚Ð¸Ñ€Ð°Ð½Ð¸ обекти %s\n"
+msgid "failed to write loose object index %s"
+msgstr "грешка при запиÑа на индекÑа Ñ Ð½ÐµÐ¿Ð°ÐºÐµÑ‚Ð¸Ñ€Ð°Ð½Ð¸ обекти „%s“"
#, c-format
msgid "unexpected line: '%s'"
@@ -18486,6 +18537,18 @@ msgstr "пакетът не може да Ñе зареди"
msgid "could not open index for %s"
msgstr "индекÑÑŠÑ‚ за „%s“ не може да Ñе отвори"
+#, c-format
+msgid "unable to link '%s' to '%s'"
+msgstr "не може да Ñе Ñъздаде връзка „%s“, коÑто да Ñочи към „%s“"
+
+#, c-format
+msgid "failed to clear multi-pack-index at %s"
+msgstr "индекÑÑŠÑ‚ за множеÑтво пакети не може да бъде изчиÑтен при „%s“"
+
+msgid "cannot write incremental MIDX with bitmap"
+msgstr ""
+"нараÑтващиÑÑ‚ Ð¸Ð½Ð´ÐµÐºÑ Ð·Ð° множеÑтво пакети Ñ Ð±Ð¸Ñ‚Ð¾Ð²Ð° маÑка не може да Ñе запише"
+
msgid "ignoring existing multi-pack-index; checksum mismatch"
msgstr ""
"индекÑÑŠÑ‚ за множеÑтво пакети Ñе преÑкача, защото Ñумата за проверка не "
@@ -18518,11 +18581,25 @@ msgid "refusing to write multi-pack .bitmap without any objects"
msgstr ""
"многопакетната битова маÑка без никакви обекти не може да бъде запазена"
+msgid "unable to create temporary MIDX layer"
+msgstr "не може да Ñе Ñъздаде временен Ñлой за индекÑа за множеÑтво пакети"
+
msgid "could not write multi-pack bitmap"
msgstr "многопакетната битова маÑка не може да бъде запазена"
+msgid "unable to open multi-pack-index chain file"
+msgstr "файлът Ñ Ð²ÐµÑ€Ð¸Ð³Ð°Ñ‚Ð° на гра̀фа Ñ Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ð¸Ñта не може да Ñе отвори"
+
+msgid "unable to rename new multi-pack-index layer"
+msgstr "Ñлой в индекÑа за множеÑтво пакети не може да Ñе преименува"
+
msgid "could not write multi-pack-index"
-msgstr "индекÑÑŠÑ‚ за множеÑтво пакети не може да бъде запазен"
+msgstr "индекÑÑŠÑ‚ за множеÑтво пакети не може да Ñе запази"
+
+msgid "cannot expire packs from an incremental multi-pack-index"
+msgstr ""
+"пакети за нараÑÑ‚Ð²Ð°Ñ‰Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑ Ð·Ð° множеÑтво пакети не може да Ñе обÑвÑÑ‚ за "
+"оÑтарели"
msgid "Counting referenced objects"
msgstr "ПреброÑване на Ñвързаните обекти"
@@ -18530,6 +18607,9 @@ msgstr "ПреброÑване на Ñвързаните обекти"
msgid "Finding and deleting unreferenced packfiles"
msgstr "ТърÑене и изтриване на неÑвързаните пакетни файлове"
+msgid "cannot repack an incremental multi-pack-index"
+msgstr "нараÑтващиÑÑ‚ Ð¸Ð½Ð´ÐµÐºÑ Ð·Ð° множеÑтво пакети не може да Ñе препакетира"
+
msgid "could not start pack-objects"
msgstr "командата „pack-objects“ не може да бъде Ñтартирана"
@@ -18598,6 +18678,35 @@ msgstr ""
"неправилна подредба на имената в Ð¸Ð½Ð´ÐµÐºÑ Ð·Ð° множеÑтво пакети: „%s“ Ñе поÑви "
"преди „%s“"
+msgid "multi-pack-index chain file too small"
+msgstr "файлът Ñ Ð²ÐµÑ€Ð¸Ð³Ð°Ñ‚Ð° за индекÑа за множеÑтво пакети е твърде малък"
+
+#, c-format
+msgid "pack count in base MIDX too high: %<PRIuMAX>"
+msgstr ""
+"броÑÑ‚ Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ð¸Ñ Ð² оÑÐ½Ð¾Ð²Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑ Ð·Ð° множеÑтво пакети е прекалено голÑм: "
+"%<PRIuMAX>"
+
+#, c-format
+msgid "object count in base MIDX too high: %<PRIuMAX>"
+msgstr ""
+"броÑÑ‚ обекти в оÑÐ½Ð¾Ð²Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑ Ð·Ð° множеÑтво пакети е прекалено голÑм: "
+"%<PRIuMAX>"
+
+#, c-format
+msgid "invalid multi-pack-index chain: line '%s' not a hash"
+msgstr ""
+"грешка във веригата на индекÑа за множеÑтво пакети: ред „%s“ не е контролна "
+"Ñума"
+
+msgid "unable to find all multi-pack index files"
+msgstr "нÑкои файлове на индекÑа за множеÑтво пакети не може да бъдат открити"
+
+msgid "invalid MIDX object position, MIDX is likely corrupt"
+msgstr ""
+"неправилна Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð½Ð° обект в индекÑа за множеÑтво пакети. ВероÑтно "
+"индекÑÑŠÑ‚ е повреден"
+
#, c-format
msgid "bad pack-int-id: %u (%u total packs)"
msgstr ""
@@ -18620,10 +18729,6 @@ msgid "multi-pack-index large offset out of bounds"
msgstr ""
"ÑтойноÑтта на отмеÑтването в индекÑа за множеÑтво пакети е извън диапазона"
-#, c-format
-msgid "failed to clear multi-pack-index at %s"
-msgstr "индекÑÑŠÑ‚ за множеÑтво пакети не може да бъде изчиÑтен при „%s“"
-
msgid "multi-pack-index file exists, but failed to parse"
msgstr ""
"файлът Ñ Ð¸Ð½Ð´ÐµÐºÑа за множеÑтво пакети ÑъщеÑтвува, но не може да бъде "
@@ -18849,6 +18954,14 @@ msgid "missing mapping of %s to %s"
msgstr "липÑва ÑъответÑтвие на „%s“ към „%s“"
#, c-format
+msgid "unable to open %s"
+msgstr "обектът „%s“ не може да бъде отворен"
+
+#, c-format
+msgid "files '%s' and '%s' differ in contents"
+msgstr "Ñъдържанието на файловете „%s“ и „%s“ е различно"
+
+#, c-format
msgid "unable to write file %s"
msgstr "файлът „%s“ не може да бъде запиÑан"
@@ -18934,10 +19047,6 @@ msgid "%s is not a valid '%s' object"
msgstr "„%s“ е неправилен обект от вид „%s“"
#, c-format
-msgid "unable to open %s"
-msgstr "обектът „%s“ не може да бъде отворен"
-
-#, c-format
msgid "hash mismatch for %s (expected %s)"
msgstr "неправилна контролна Ñума за „%s“ (трÑбва да е %s)"
@@ -20212,6 +20321,10 @@ msgid "expected format: %%(ahead-behind:<committish>)"
msgstr "очакван формат: %%(ahead-behind:ПОДÐÐ’ÐÐЕ)"
#, c-format
+msgid "expected format: %%(is-base:<committish>)"
+msgstr "очакван формат: %%(is-base:ПОДÐÐ’ÐÐЕ)"
+
+#, c-format
msgid "malformed field name: %.*s"
msgstr "неправилно име на обект: „%.*s“"
@@ -20349,7 +20462,8 @@ msgid ""
"\n"
"\tgit branch -m <name>\n"
msgstr ""
-"ПървоначалниÑÑ‚ клон ще Ñе казва „%s“. Това може да Ñе променÑ. Може да зададете\n"
+"ПървоначалниÑÑ‚ клон ще Ñе казва „%s“. Това може да Ñе променÑ. Може да "
+"зададете\n"
"наÑтройката и да Ñпрете това Ñъобщение. За това изпълнете:\n"
"\n"
" git config --global init.defaultBranch ИМЕ\n"
@@ -20446,6 +20560,13 @@ msgstr ""
"„%s“, но вмеÑто това е обикновен указател"
#, c-format
+msgid "cannot open directory %s"
+msgstr "директориÑта „%s“ не може да бъде отворена"
+
+msgid "Checking references consistency"
+msgstr "Проверка на валидноÑтта на указателите"
+
+#, c-format
msgid "refname is dangerous: %s"
msgstr "опаÑно име на указател: %s"
@@ -20993,7 +21114,9 @@ msgstr "„%s“ ÑъщеÑтвува и не е Ñимволна връзка"
msgid ""
"--merge requires one of the pseudorefs MERGE_HEAD, CHERRY_PICK_HEAD, "
"REVERT_HEAD or REBASE_HEAD"
-msgstr "„--merge“ изиÑква нÑкой от пÑевдо указателите „MERGE_HEAD“, „CHERRY_PICK_HEAD“, „REVERT_HEAD“ или „REBASE_HEAD“"
+msgstr ""
+"„--merge“ изиÑква нÑкой от пÑевдо указателите „MERGE_HEAD“, "
+"„CHERRY_PICK_HEAD“, „REVERT_HEAD“ или „REBASE_HEAD“"
#, c-format
msgid "could not get commit for --ancestry-path argument %s"
@@ -21097,12 +21220,15 @@ msgstr "да Ñе ÑвалÑÑ‚ метаданните Ñамо за изтегл
msgid "create repository within 'src' directory"
msgstr "Ñъздаване на хранилище в Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€žsrc“"
+msgid "specify if tags should be fetched during clone"
+msgstr "указва дали етикетите да Ñе доÑтавÑÑ‚ при клониране"
+
msgid ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
msgstr ""
"scalar clone [--single-branch] [--branch ОСÐОВЕÐ_КЛОÐ] [--full-clone]\n"
-" [--[no-]src] ÐДРЕС [ЗÐЧИСЛЕÐÐ_ДИРЕКТОРИЯ]"
+" [--[no-]src] [--[no-]tags] ÐДРЕС [ЗÐЧИСЛЕÐÐ_ДИРЕКТОРИЯ]"
#, c-format
msgid "cannot deduce worktree name from '%s'"
@@ -21121,6 +21247,10 @@ msgid "could not configure remote in '%s'"
msgstr "отдалеченото хранилище в „%s“ не може да Ñе наÑтрои"
#, c-format
+msgid "could not disable tags in '%s'"
+msgstr "етикетите в „%s“ не може Ñа Ñе изключат"
+
+#, c-format
msgid "could not configure '%s'"
msgstr "„%s“ не може да Ñе наÑтрои"
@@ -22241,6 +22371,10 @@ msgid "failed to stat '%*s%s%s'"
msgstr "не може да бъде получена Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ñ‡Ñ€ÐµÐ· „stat“ за „%*s%s%s“"
#, c-format
+msgid "safe.directory '%s' not absolute"
+msgstr "пътÑÑ‚ за безопаÑна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (safe.directory) „%s“ не е абÑолютен"
+
+#, c-format
msgid ""
"detected dubious ownership in repository at '%s'\n"
"%sTo add an exception for this directory, call:\n"
@@ -22715,6 +22849,24 @@ msgstr "лекÑема"
msgid "command token to send to the server"
msgstr "командна лекÑема за пращане"
+msgid "unit-test [<options>]"
+msgstr "unit-test [ОПЦИЯ…]"
+
+msgid "immediately exit upon the first failed test"
+msgstr "незабавен изход Ñлед Ð¿ÑŠÑ€Ð²Ð¸Ñ Ð½ÐµÑƒÑпешен теÑÑ‚"
+
+msgid "suite[::test]"
+msgstr "ГРУПÐ[::ТЕСТ]"
+
+msgid "run only test suite or individual test <suite[::test]>"
+msgstr "изпълнение на тази ГРУПРили конкретен теÑÑ‚ Ñ Ð¸Ð¼Ðµ ГРУПÐ::ТЕСТ"
+
+msgid "suite"
+msgstr "ГРУПÐ"
+
+msgid "exclude test suite <suite>"
+msgstr "преÑкачане на тази ГРУПРтеÑтове"
+
#, c-format
msgid "running trailer command '%s' failed"
msgstr "неуÑпешно изпълнение на завършващата команда „%s“"
@@ -22963,7 +23115,9 @@ msgid "bundle-uri operation not supported by protocol"
msgstr "операциÑта „bundle-uri“ (адреÑи на пратки) не Ñе поддържа от протокола"
msgid "could not retrieve server-advertised bundle-uri list"
-msgstr "ÑпиÑъкът Ñ Ð°Ð´Ñ€ÐµÑи на пратки обÑвени за налични от Ñървъра не може да Ñе получи "
+msgstr ""
+"ÑпиÑъкът Ñ Ð°Ð´Ñ€ÐµÑи на пратки обÑвени за налични от Ñървъра не може да Ñе "
+"получи "
msgid "operation not supported by protocol"
msgstr "опциÑта не Ñе поддържа от протокола"
@@ -23915,6 +24069,9 @@ msgstr "„%s.final“ Ñъдържа подготвеното е-пиÑмо.\n"
msgid "--dump-aliases incompatible with other options\n"
msgstr "опциÑта „--dump-aliases“ е неÑъвмеÑтима Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ‚Ðµ опции\n"
+msgid "--dump-aliases and --translate-aliases are mutually exclusive\n"
+msgstr "опциите „--dump-aliases“ и „--translate-aliases“ Ñа неÑъвмеÑтими\n"
+
msgid ""
"fatal: found configuration options for 'sendmail'\n"
"git-send-email is configured with the sendemail.* options - note the 'e'.\n"
diff --git a/po/ca.po b/po/ca.po
index bcb4da80fb..ace9b3ca46 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -77,186 +77,238 @@ msgid ""
msgstr ""
"Project-Id-Version: Git\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2024-02-16 07:14+0100\n"
-"PO-Revision-Date: 2024-02-16 07:16+0100\n"
-"Last-Translator: Jordi Mas i Hernàndez <jmas@softcatala.org>\n"
+"POT-Creation-Date: 2024-10-05 01:20+0000\n"
+"PO-Revision-Date: 2024-10-05 09:03+0200\n"
+"Last-Translator: Mikel Forcada <mikel.forcada@gmail.com>\n"
"Language-Team: Catalan\n"
"Language: ca\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"
-"X-Generator: Poedit 2.3.1\n"
+"X-Generator: Poedit 3.2.2\n"
+#: add-interactive.c
#, c-format
msgid "Huh (%s)?"
msgstr "Perdó (%s)?"
+#: add-interactive.c builtin/merge.c builtin/rebase.c reset.c sequencer.c
msgid "could not read index"
msgstr "no s'ha pogut llegir l'índex"
+#: add-interactive.c
msgid "binary"
msgstr "binari"
+#: add-interactive.c
msgid "nothing"
msgstr "res"
+#: add-interactive.c
msgid "unchanged"
msgstr "sense canvis"
+#: add-interactive.c
msgid "Update"
msgstr "Actualitza"
+#: add-interactive.c
#, c-format
msgid "could not stage '%s'"
msgstr "no s'ha pogut fer «stage» «%s»"
+#: add-interactive.c builtin/stash.c reset.c sequencer.c
msgid "could not write index"
msgstr "no s'ha pogut escriure l'índex"
+#: add-interactive.c
#, c-format
msgid "updated %d path\n"
msgid_plural "updated %d paths\n"
msgstr[0] "actualitzat %d camí\n"
msgstr[1] "actualitzats %d camins\n"
+#: add-interactive.c
#, c-format
msgid "note: %s is untracked now.\n"
msgstr "nota: %s està ara sense seguiment.\n"
+#: add-interactive.c apply.c builtin/checkout.c builtin/reset.c
#, c-format
msgid "make_cache_entry failed for path '%s'"
msgstr "make_cache_entry ha fallat per al camí «%s»"
+#: add-interactive.c
msgid "Revert"
msgstr "Reverteix"
+#: add-interactive.c
msgid "Could not parse HEAD^{tree}"
msgstr "No s'ha pogut analitzar HEAD^{tree}"
+#: add-interactive.c
#, c-format
msgid "reverted %d path\n"
msgid_plural "reverted %d paths\n"
msgstr[0] "revertit %d camí\n"
msgstr[1] "revertits %d camins\n"
+#: add-interactive.c
#, c-format
msgid "No untracked files.\n"
msgstr "Sense fitxers no seguits.\n"
+#: add-interactive.c
msgid "Add untracked"
msgstr "Afegeix sense seguiment"
+#: add-interactive.c
#, c-format
msgid "added %d path\n"
msgid_plural "added %d paths\n"
msgstr[0] "afegit %d camí\n"
msgstr[1] "afegits %d camins\n"
+#: add-interactive.c
#, c-format
msgid "ignoring unmerged: %s"
msgstr "s'està ignorant allò no fusionat: %s"
+#: add-interactive.c
#, c-format
msgid "Only binary files changed.\n"
msgstr "Només han canviat fitxers binaris.\n"
+#: add-interactive.c
#, c-format
msgid "No changes.\n"
msgstr "Sense canvis.\n"
+#: add-interactive.c
msgid "Patch update"
msgstr "Actualització del pedaç"
+#: add-interactive.c
msgid "Review diff"
msgstr "Reviseu les diferències"
+#: add-interactive.c
msgid "show paths with changes"
msgstr "mostra els camins amb canvis"
+#: add-interactive.c
msgid "add working tree state to the staged set of changes"
msgstr "afegeix l'estat de l'arbre de treball al conjunt de canvis «staged»"
+#: add-interactive.c
msgid "revert staged set of changes back to the HEAD version"
msgstr "reverteix el conjunt de canvis «staged» a la versió HEAD"
+#: add-interactive.c
msgid "pick hunks and update selectively"
msgstr "selecciona els trossos i actualitza selectivament"
+#: add-interactive.c
msgid "view diff between HEAD and index"
msgstr "visualitza les diferències entre HEAD i l'índex"
+#: add-interactive.c
msgid "add contents of untracked files to the staged set of changes"
msgstr "afegeix contingut de fitxers no seguits al conjunt de canvis «staged»"
+#: add-interactive.c
msgid "Prompt help:"
msgstr "Mostra ajuda:"
+#: add-interactive.c
msgid "select a single item"
msgstr "seleccioneu un únic ítem"
+#: add-interactive.c
msgid "select a range of items"
msgstr "seleccioneu un rang d'ítems"
+#: add-interactive.c
msgid "select multiple ranges"
msgstr "seleccioneu rangs múltiples"
+#: add-interactive.c
msgid "select item based on unique prefix"
msgstr "seleccioneu un ítem basant-se en un prefix únic"
+#: add-interactive.c
msgid "unselect specified items"
msgstr "desselecciona els ítems especificats"
+#: add-interactive.c
msgid "choose all items"
msgstr "trieu tots els ítems"
+#: add-interactive.c
msgid "(empty) finish selecting"
msgstr "(buit) finalitza la selecció"
+#: add-interactive.c
msgid "select a numbered item"
msgstr "seleccioneu un ítem numerat"
+#: add-interactive.c
msgid "(empty) select nothing"
msgstr "(buit) no seleccionis res"
+#: add-interactive.c builtin/clean.c
msgid "*** Commands ***"
msgstr "*** Ordres ***"
+#: add-interactive.c builtin/clean.c
msgid "What now"
msgstr "I ara què"
+#: add-interactive.c
msgid "staged"
msgstr "staged"
+#: add-interactive.c
msgid "unstaged"
msgstr "unstaged"
+#: add-interactive.c apply.c builtin/am.c builtin/bugreport.c builtin/clone.c
+#: builtin/diagnose.c builtin/fetch.c builtin/hook.c builtin/merge.c
+#: builtin/pull.c builtin/submodule--helper.c
msgid "path"
msgstr "camí"
+#: add-interactive.c
msgid "could not refresh index"
msgstr "no s'ha pogut actualitzar l'índex"
+#: add-interactive.c builtin/clean.c
#, c-format
msgid "Bye.\n"
msgstr "Adeu.\n"
+#: add-patch.c
#, c-format
msgid "Stage mode change [y,n,q,a,d%s,?]? "
msgstr "Canvia el mode de «stage» [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Stage deletion [y,n,q,a,d%s,?]? "
msgstr "Suprimeix «stage» [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Stage addition [y,n,q,a,d%s,?]? "
msgstr "Afegeix a «stage» [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Stage this hunk [y,n,q,a,d%s,?]? "
msgstr "Fer un «stage» d'aquest tros [y,n,q,a,d%s,?]? "
+#: add-patch.c
msgid ""
"If the patch applies cleanly, the edited hunk will immediately be marked for "
"staging."
@@ -264,6 +316,7 @@ msgstr ""
"Si el pedaç s'aplica netament, el tros editat es marcarà immediatament per a "
"«staging»."
+#: add-patch.c
msgid ""
"y - stage this hunk\n"
"n - do not stage this hunk\n"
@@ -275,24 +328,30 @@ msgstr ""
"n - no facis «stage» d'aquest tros\n"
"q - surt; no facis «stage» d'aquest tros ni de cap altre restant\n"
"a - fes «stage» d'aquest tros i de tota la resta de trossos del fitxer\n"
-"d - no facis «stage» d'aquest tros ni de cap altre restant del fitxer\n"
+"d - no facis «stage» d'aquest tros ni de cap altre tros posterior del "
+"fitxer\n"
+#: add-patch.c
#, c-format
msgid "Stash mode change [y,n,q,a,d%s,?]? "
msgstr "Canvia el mode de «stash» [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Stash deletion [y,n,q,a,d%s,?]? "
msgstr "Suprimeix «stash» [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Stash addition [y,n,q,a,d%s,?]? "
msgstr "Afegeix a «stash» [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Stash this hunk [y,n,q,a,d%s,?]? "
msgstr "Fer un «stash» d'aquest tros [y,n,q,a,d%s,?]? "
+#: add-patch.c
msgid ""
"If the patch applies cleanly, the edited hunk will immediately be marked for "
"stashing."
@@ -300,6 +359,7 @@ msgstr ""
"Si el pedaç s'aplica de forma neta, el tros editat es marcarà immediatament "
"per a «stashing»."
+#: add-patch.c
msgid ""
"y - stash this hunk\n"
"n - do not stash this hunk\n"
@@ -311,24 +371,30 @@ msgstr ""
"n - no facis «stash» d'aquest tros\n"
"q - surt; no facis «stash» d'aquest tros ni de cap altre restant\n"
"a - fes «stash» d'aquest tros i de tota la resta de trossos del fitxer\n"
-"d - no facis «stash» d'aquest tros ni de cap altre restant del fitxer\n"
+"d - no facis «stash» d'aquest tros ni de cap altre tros posterior del "
+"fitxer\n"
+#: add-patch.c
#, c-format
msgid "Unstage mode change [y,n,q,a,d%s,?]? "
msgstr "Canvia el mode de «unstage» [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Unstage deletion [y,n,q,a,d%s,?]? "
msgstr "Suprimeix «Unstage» [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Unstage addition [y,n,q,a,d%s,?]? "
msgstr "Afegeix a «unstage» [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
msgstr "Fer un «unstage» d'aquest tros [y,n,q,a,d%s,?]? "
+#: add-patch.c
msgid ""
"If the patch applies cleanly, the edited hunk will immediately be marked for "
"unstaging."
@@ -336,6 +402,7 @@ msgstr ""
"Si el pedaç s'aplica netament, el tros editat es marcarà immediatament per a "
"«unstaging»."
+#: add-patch.c
msgid ""
"y - unstage this hunk\n"
"n - do not unstage this hunk\n"
@@ -349,22 +416,27 @@ msgstr ""
"a - fes «unstage» d'aquest tros i de tota la resta de trossos del fitxer\n"
"d - no facis «unstage» d'aquest tros ni de cap altre restant del fitxer\n"
+#: add-patch.c
#, c-format
msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
msgstr "Aplica el canvi de mode a l'índex [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
msgstr "Aplica la supressió a l'índex [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Apply addition to index [y,n,q,a,d%s,?]? "
msgstr "Aplica l'addició a l'índex [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
msgstr "Aplica aquest tros a l'índex [y,n,q,a,d%s,?]? "
+#: add-patch.c
msgid ""
"If the patch applies cleanly, the edited hunk will immediately be marked for "
"applying."
@@ -372,6 +444,7 @@ msgstr ""
"Si el pedaç s'aplica netament, el tros editat es marcarà immediatament per a "
"aplicar-lo."
+#: add-patch.c
msgid ""
"y - apply this hunk to index\n"
"n - do not apply this hunk to index\n"
@@ -385,22 +458,27 @@ msgstr ""
"a - aplica aquest tros i tots els trossos posteriors en el fitxer\n"
"d - no apliquis aquest tros ni cap dels trossos posteriors en el fitxer\n"
+#: add-patch.c
#, c-format
msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
msgstr "Descarta el canvi de mode de l'arbre de treball [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
msgstr "Descarta suprimir de l'arbre de treball [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Discard addition from worktree [y,n,q,a,d%s,?]? "
msgstr "Descarta l'addició de l'arbre de treball [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
msgstr "Descarta aquest tros de l'arbre de treball [y,n,q,a,d%s,?]? "
+#: add-patch.c
msgid ""
"If the patch applies cleanly, the edited hunk will immediately be marked for "
"discarding."
@@ -408,6 +486,7 @@ msgstr ""
"Si el pedaç s'aplica netament, el tros editat es marcarà immediatament per a "
"ser descartat."
+#: add-patch.c
msgid ""
"y - discard this hunk from worktree\n"
"n - do not discard this hunk from worktree\n"
@@ -421,26 +500,31 @@ msgstr ""
"a - descarta aquest tros i tots els trossos posteriors en el fitxer\n"
"d - no descartis aquest tros ni cap dels trossos posteriors en el fitxer\n"
+#: add-patch.c
#, c-format
msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
msgstr ""
"Descarta el canvi de mode de l'índex i de l'arbre de treball [y,n,q,a,"
"d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
msgstr "Descarta suprimir de l'índex i de l'arbre de treball [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Discard addition from index and worktree [y,n,q,a,d%s,?]? "
msgstr ""
"Descarta l'addició de l'índex i de l'arbre de treball [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
msgstr ""
"Descarta aquest tros de l'índex i de l'arbre de treball [y,n,q,a,d%s,?]? "
+#: add-patch.c
msgid ""
"y - discard this hunk from index and worktree\n"
"n - do not discard this hunk from index and worktree\n"
@@ -454,23 +538,28 @@ msgstr ""
"a - descarta aquest tros i tots els trossos posteriors en el fitxer\n"
"d - no descartis aquest tros ni cap dels trossos posteriors en el fitxer\n"
+#: add-patch.c
#, c-format
msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
msgstr ""
"Aplica el canvi de mode a l'índex i a l'arbre de treball [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
msgstr "Aplica la supressió a l'índex i a l'arbre de treball [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Apply addition to index and worktree [y,n,q,a,d%s,?]? "
msgstr "Aplica l'addició a l'índex i a l'arbre de treball [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
msgstr "Aplica aquest tros a l'índex i a l'arbre de treball [y,n,q,a,d%s,?]? "
+#: add-patch.c
msgid ""
"y - apply this hunk to index and worktree\n"
"n - do not apply this hunk to index and worktree\n"
@@ -484,22 +573,27 @@ msgstr ""
"a - aplica aquest tros i tots els trossos posteriors en el fitxer\n"
"d - no apliquis aquest tros ni cap dels trossos posteriors en el fitxer\n"
+#: add-patch.c
#, c-format
msgid "Apply mode change to worktree [y,n,q,a,d%s,?]? "
msgstr "Aplica el canvi de mode a l'arbre de treball [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Apply deletion to worktree [y,n,q,a,d%s,?]? "
msgstr "Aplica la supressió a l'arbre de treball [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Apply addition to worktree [y,n,q,a,d%s,?]? "
msgstr "Aplica l'addició a l'arbre de treball [y,n,q,a,d%s,?]? "
+#: add-patch.c
#, c-format
msgid "Apply this hunk to worktree [y,n,q,a,d%s,?]? "
msgstr "Aplica aquest tros a l'arbre de treball [y,n,q,a,d%s,?]? "
+#: add-patch.c
msgid ""
"y - apply this hunk to worktree\n"
"n - do not apply this hunk to worktree\n"
@@ -513,23 +607,29 @@ msgstr ""
"a - aplica aquest tros i tots els trossos posteriors en el fitxer\n"
"d - no apliquis aquest tros ni cap dels trossos posteriors en el fitxer\n"
+#: add-patch.c
#, c-format
msgid "could not parse hunk header '%.*s'"
msgstr "no s'ha pogut analitzar la capçalera del tros «%.*s»"
+#: add-patch.c
msgid "could not parse diff"
msgstr "no s'ha pogut analitzar el diff"
+#: add-patch.c
msgid "could not parse colored diff"
msgstr "no s'ha pogut analitzar el diff acolorit"
+#: add-patch.c
#, c-format
msgid "failed to run '%s'"
msgstr "no s'ha pogut executar «%s»"
+#: add-patch.c
msgid "mismatched output from interactive.diffFilter"
msgstr "sortida no coincident des d'interactive.diffFilter"
+#: add-patch.c
msgid ""
"Your filter must maintain a one-to-one correspondence\n"
"between its input and output lines."
@@ -537,6 +637,7 @@ msgstr ""
"El filtre ha de mantenir una correspondència d'un a un\n"
"entre les línies d'entrada i sortida."
+#: add-patch.c
#, c-format
msgid ""
"expected context line #%d in\n"
@@ -545,6 +646,7 @@ msgstr ""
"s'esperava la línia amb contingut #%d a\n"
"%.*s"
+#: add-patch.c
#, c-format
msgid ""
"hunks do not overlap:\n"
@@ -557,22 +659,25 @@ msgstr ""
"\tno acaben amb:\n"
"%.*s"
+#: add-patch.c
msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
msgstr ""
"Mode d'edició de trossos manual - vegeu més avall per a una guia ràpida.\n"
+#: add-patch.c
#, c-format
msgid ""
"---\n"
"To remove '%c' lines, make them ' ' lines (context).\n"
"To remove '%c' lines, delete them.\n"
-"Lines starting with %c will be removed.\n"
+"Lines starting with %s will be removed.\n"
msgstr ""
"---\n"
"Per a eliminar les línies «%c», convertiu-les en línies ' ' (context).\n"
"Per a eliminar les línies «%c», suprimiu-les.\n"
-"Les línies que comencin per %c s'eliminaran.\n"
+"Les línies que comencin per %s s'eliminaran.\n"
+#: add-patch.c
msgid ""
"If it does not apply cleanly, you will be given an opportunity to\n"
"edit again. If all lines of the hunk are removed, then the edit is\n"
@@ -582,9 +687,11 @@ msgstr ""
"de nou. Si s'eliminen totes les línies del tros, llavors l'edició s'avorta\n"
"i el tros es deixa sense cap canvi.\n"
+#: add-patch.c
msgid "could not parse hunk header"
msgstr "no s'ha pogut analitzar la capçalera del tros"
+#: add-patch.c
msgid "'git apply --cached' failed"
msgstr "«git apply --cached» ha fallat"
@@ -594,21 +701,26 @@ msgstr "«git apply --cached» ha fallat"
#. (saying "n" for "no" discards!) if the translation
#. of the word "no" does not start with n.
#.
+#: add-patch.c
msgid ""
"Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
msgstr ""
"El tros editat no s'aplica. Editeu-lo de nou (si responeu «no» es "
"descartarà) [y/n]? "
+#: add-patch.c
msgid "The selected hunks do not apply to the index!"
msgstr "Els trossos seleccionats no s'apliquen a l'índex!"
+#: add-patch.c
msgid "Apply them to the worktree anyway? "
msgstr "Voleu aplicar-los igualment a l'arbre de treball? "
+#: add-patch.c
msgid "Nothing was applied.\n"
msgstr "No s'ha aplicat res.\n"
+#: add-patch.c
msgid ""
"j - leave this hunk undecided, see next undecided hunk\n"
"J - leave this hunk undecided, see next hunk\n"
@@ -618,69 +730,105 @@ msgid ""
"/ - 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"
"? - print help\n"
msgstr ""
-"j - deixa aquest tros sense decidir, veure el tros sense decidir següent\n"
-"J - deixa aquest tros sense decidir, veure el tros següent\n"
-"k - deixa aquest tros sense decidir, veure el tros sense decidir anterior\n"
-"K - deixa aquest tros sense decidir, veure el tros anterior\n"
-"g - selecciona el tros on voleu anar\n"
-"/ - cerca un tros que coincideixi amb l'expressió regular donada\n"
-"s - divideix el tros actual en trossos més petits\n"
+"j - deixa aquest tros sense decidir, veges el tros següent no decidit \n"
+"J - deixa aquest tros sense decidir, veges el tros següent\n"
+"k - deixa aquest tros sense decidir, veges el tros anterior no decidit ºn\n"
+"K - deixa aquest tros sense decidir, veges el tros anterior\n"
+"g - selecciona un tros a on anar\n"
+"/ - cerca un tros que concorde amb l'expressió regular donada\n"
+"s - divideix el tros actual en trossos més menuts\n"
"e - edita manualment el tros actual\n"
-"? - mostra l'ajuda\n"
+"p - imprimeix el tros actual, «P» per a usar el paginador\n"
+"? - imprimeix l'ajuda\n"
+#: add-patch.c
+#, c-format
+msgid "Only one letter is expected, got '%s'"
+msgstr "S'espera una lletra, s'ha obtingut «%s»"
+
+#: add-patch.c
msgid "No previous hunk"
msgstr "Sense tros previ"
+#: add-patch.c
msgid "No next hunk"
msgstr "No hi ha tros següent"
+#: add-patch.c
msgid "No other hunks to goto"
msgstr "No hi ha altres trossos on anar-hi"
+#: add-patch.c
msgid "go to which hunk (<ret> to see more)? "
-msgstr "ves a quin tros (<ret> per a veure'n més)? "
+msgstr "ves a quin tros (<intro> per a veure'n més)? "
+#: add-patch.c
msgid "go to which hunk? "
msgstr "ves a quin tros? "
+#: add-patch.c
#, c-format
msgid "Invalid number: '%s'"
msgstr "Número no vàlid: «%s»"
+#: add-patch.c
#, c-format
msgid "Sorry, only %d hunk available."
msgid_plural "Sorry, only %d hunks available."
msgstr[0] "Només %d tros disponible."
msgstr[1] "Només %d trossos disponibles."
+#: add-patch.c
msgid "No other hunks to search"
msgstr "No hi ha cap altre tros a cercar"
+#: add-patch.c
msgid "search for regex? "
msgstr "cerca per expressió regular? "
+#: add-patch.c
#, c-format
msgid "Malformed search regexp %s: %s"
msgstr "Expressió regular de cerca mal formada %s: %s"
+#: add-patch.c
msgid "No hunk matches the given pattern"
msgstr "No hi ha trossos que coincideixin amb el patró donat"
+#: add-patch.c
msgid "Sorry, cannot split this hunk"
msgstr "No es pot dividir aquest tros"
+#: add-patch.c
#, c-format
msgid "Split into %d hunks."
msgstr "Divideix en %d trossos."
+#: add-patch.c
msgid "Sorry, cannot edit this hunk"
msgstr "No es pot editar aquest tros"
+#: add-patch.c
+#, c-format
+msgid "Unknown command '%s' (use '?' for help)"
+msgstr "Ordre desconeguda: «%s» (useu «?» per a obtenir ajuda)"
+
+#: add-patch.c
msgid "'git apply' failed"
msgstr "«git apply» ha fallat"
+#: add-patch.c
+msgid "No changes."
+msgstr "No hi ha canvis."
+
+#: add-patch.c
+msgid "Only binary files changed."
+msgstr "Només han canviat els fitxers binaris."
+
+#: advice.c
#, c-format
msgid ""
"\n"
@@ -689,28 +837,36 @@ msgstr ""
"\n"
"Desactiva aquest missatge amb «git config advice.%s false»"
+#: advice.c
#, c-format
-msgid "%shint: %.*s%s\n"
-msgstr "%sconsell: %.*s%s\n"
+msgid "%shint:%s%.*s%s\n"
+msgstr "%sconsell:%s%.*s%s\n"
+#: advice.c
msgid "Cherry-picking is not possible because you have unmerged files."
msgstr "Fer «cherry pick» no és possible perquè teniu fitxers sense fusionar."
+#: advice.c
msgid "Committing is not possible because you have unmerged files."
msgstr "Cometre no és possible perquè teniu fitxers sense fusionar."
+#: advice.c
msgid "Merging is not possible because you have unmerged files."
msgstr "Fusionar no és possible perquè teniu fitxers sense fusionar."
+#: advice.c
msgid "Pulling is not possible because you have unmerged files."
msgstr "Baixar no és possible perquè teniu fitxers sense fusionar."
+#: advice.c
msgid "Reverting is not possible because you have unmerged files."
msgstr "Revertir no és possible perquè teniu fitxers sense fusionar."
+#: advice.c
msgid "Rebasing is not possible because you have unmerged files."
msgstr "Fer «rebase» no és possible perquè teniu fitxers sense fusionar."
+#: advice.c
msgid ""
"Fix them up in the work tree, and then use 'git add/rm <file>'\n"
"as appropriate to mark resolution and make a commit."
@@ -719,18 +875,23 @@ msgstr ""
"«git add/rm <fitxer>» segons sigui apropiat per a\n"
"marcar la resolució i feu una comissió."
+#: advice.c
msgid "Exiting because of an unresolved conflict."
msgstr "S'està sortint a causa d'un conflicte no resolt."
+#: advice.c builtin/merge.c
msgid "You have not concluded your merge (MERGE_HEAD exists)."
msgstr "No heu conclòs la vostra fusió (MERGE_HEAD existeix)."
+#: advice.c
msgid "Please, commit your changes before merging."
msgstr "Cometeu els vostres canvis abans de fusionar."
+#: advice.c
msgid "Exiting because of unfinished merge."
msgstr "S'està sortint a causa d'una fusió no terminada."
+#: advice.c
msgid ""
"Diverging branches can't be fast-forwarded, you need to either:\n"
"\n"
@@ -748,9 +909,11 @@ msgstr ""
"\n"
"\tgit rebase\n"
+#: advice.c
msgid "Not possible to fast-forward, aborting."
msgstr "No és possible avançar ràpidament, s'està avortant."
+#: advice.c
#, c-format
msgid ""
"The following paths and/or pathspecs matched paths that exist\n"
@@ -761,6 +924,7 @@ msgstr ""
"amb camins que existeixen fora de la vostra definició de\n"
"«sparse-checkout», així que no serà actualitzaran en l'índex:\n"
+#: advice.c
msgid ""
"If you intend to update such entries, try one of the following:\n"
"* Use the --sparse option.\n"
@@ -770,6 +934,7 @@ msgstr ""
"* Utilitzeu l'opció --sparse.\n"
"* Inhabiliteu o modifiqueu les regles de dispersió."
+#: advice.c
#, c-format
msgid ""
"Note: switching to '%s'.\n"
@@ -810,6 +975,7 @@ msgstr ""
"«false»\n"
"\n"
+#: advice.c
#, c-format
msgid ""
"The following paths have been moved outside the\n"
@@ -820,6 +986,7 @@ msgstr ""
"definició de sparse-checkout però no són dispersos\n"
"a causa de modificacions en local.\n"
+#: advice.c
msgid ""
"To correct the sparsity of these paths, do the following:\n"
"* Use \"git add --sparse <paths>\" to update the index\n"
@@ -829,79 +996,108 @@ msgstr ""
"* Useu «git add --sparse <paths>» per a actualitzar l'índex\n"
"* Useu «git sparse-checkout reapply» per a aplicar les regles de dispersió"
+#: alias.c
msgid "cmdline ends with \\"
msgstr "la línia d'ordres acaba amb \\"
+#: alias.c
msgid "unclosed quote"
msgstr "cometes no tancades"
+#: alias.c builtin/cat-file.c builtin/notes.c builtin/prune-packed.c
+#: builtin/receive-pack.c builtin/refs.c builtin/tag.c t/helper/test-pkt-line.c
msgid "too many arguments"
msgstr "hi ha massa arguments"
+#: apply.c
#, c-format
msgid "unrecognized whitespace option '%s'"
msgstr "opció d'espai en blanc «%s» no reconeguda"
+#: apply.c
#, c-format
msgid "unrecognized whitespace ignore option '%s'"
msgstr "opció ignora l'espai en blanc «%s» no reconeguda"
+#: apply.c archive.c builtin/add.c builtin/branch.c builtin/checkout-index.c
+#: builtin/checkout.c builtin/clean.c builtin/clone.c builtin/commit.c
+#: builtin/describe.c builtin/diff-tree.c builtin/difftool.c
+#: builtin/fast-export.c builtin/fetch.c builtin/help.c builtin/index-pack.c
+#: builtin/init-db.c builtin/log.c builtin/ls-files.c builtin/merge-base.c
+#: builtin/merge-tree.c builtin/merge.c builtin/pack-objects.c builtin/rebase.c
+#: builtin/repack.c builtin/replay.c builtin/reset.c builtin/rev-list.c
+#: builtin/rev-parse.c builtin/show-branch.c builtin/stash.c
+#: builtin/submodule--helper.c builtin/tag.c builtin/worktree.c parse-options.c
+#: range-diff.c revision.c
#, c-format
msgid "options '%s' and '%s' cannot be used together"
msgstr "les opcions «%s» i «%s» no es poden usar juntes"
+#: apply.c
#, c-format
msgid "'%s' outside a repository"
msgstr "«%s» fora d'un repositori"
+#: apply.c
msgid "failed to read patch"
msgstr "s'ha produït un error en llegir el pedaç"
+#: apply.c
msgid "patch too large"
msgstr "el pedaç és massa gran"
+#: apply.c
#, c-format
msgid "Cannot prepare timestamp regexp %s"
msgstr "No es pot preparar l'expressió regular de marca de temps %s"
+#: apply.c
#, c-format
msgid "regexec returned %d for input: %s"
msgstr "regexec ha retornat %d per a l'entrada: %s"
+#: apply.c
#, c-format
msgid "unable to find filename in patch at line %d"
msgstr "no s'ha pogut trobar el nom de fitxer en el pedaç a la línia %d"
+#: apply.c
#, c-format
msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d"
msgstr ""
"git apply: git-diff incorrecte - s'esperava /dev/null, s'ha rebut %s en la "
"línia %d"
+#: apply.c
#, c-format
msgid "git apply: bad git-diff - inconsistent new filename on line %d"
msgstr ""
"git apply: git-diff incorrecte - nom de fitxer nou inconsistent en la línia "
"%d"
+#: apply.c
#, c-format
msgid "git apply: bad git-diff - inconsistent old filename on line %d"
msgstr ""
"git apply: git-diff incorrecte - nom de fitxer antic inconsistent en la "
"línia %d"
+#: apply.c
#, c-format
msgid "git apply: bad git-diff - expected /dev/null on line %d"
msgstr "git apply: git-diff incorrecte - s'esperava /dev/null en la línia %d"
+#: apply.c
#, c-format
msgid "invalid mode on line %d: %s"
msgstr "mode no vàlid en la línia %d: %s"
+#: apply.c
#, c-format
msgid "inconsistent header lines %d and %d"
msgstr "línies de capçalera %d i %d inconsistents"
+#: apply.c
#, c-format
msgid ""
"git diff header lacks filename information when removing %d leading pathname "
@@ -916,75 +1112,93 @@ msgstr[1] ""
"a la capçalera de git diff li manca informació de nom de fitxer en eliminar "
"%d components de nom de camí inicial (línia %d)"
+#: apply.c
#, c-format
msgid "git diff header lacks filename information (line %d)"
msgstr ""
"a la capçalera de git diff li manca informació de nom de fitxer (línia %d)"
+#: apply.c
#, c-format
msgid "recount: unexpected line: %.*s"
msgstr "recompte: línia inesperada: %.*s"
+#: apply.c
#, c-format
msgid "patch fragment without header at line %d: %.*s"
msgstr "fragment de pedaç sense capçalera a la línia %d: %.*s"
+#: apply.c
msgid "new file depends on old contents"
msgstr "el fitxer nou depèn dels continguts antics"
+#: apply.c
msgid "deleted file still has contents"
msgstr "el fitxer suprimit encara té continguts"
+#: apply.c
#, c-format
msgid "corrupt patch at line %d"
msgstr "pedaç malmès a la línia %d"
+#: apply.c
#, c-format
msgid "new file %s depends on old contents"
msgstr "el fitxer nou %s depèn dels continguts antics"
+#: apply.c
#, c-format
msgid "deleted file %s still has contents"
msgstr "el fitxer suprimit %s encara té continguts"
+#: apply.c
#, c-format
msgid "** warning: file %s becomes empty but is not deleted"
msgstr "** advertència: el fitxer %s queda buit però no se suprimeix"
+#: apply.c
#, c-format
msgid "corrupt binary patch at line %d: %.*s"
msgstr "pedaç binari malmès a la línia %d: %.*s"
+#: apply.c
#, c-format
msgid "unrecognized binary patch at line %d"
msgstr "pedaç binari no reconegut a la línia %d"
+#: apply.c
#, c-format
msgid "patch with only garbage at line %d"
msgstr "pedaç amb només escombraries a la línia %d"
+#: apply.c
#, c-format
msgid "unable to read symlink %s"
msgstr "no s'ha pogut llegir l'enllaç simbòlic %s"
+#: apply.c
#, c-format
msgid "unable to open or read %s"
msgstr "no s'ha pogut obrir o llegir %s"
+#: apply.c
#, c-format
msgid "invalid start of line: '%c'"
msgstr "inici de línia no vàlid: «%c»"
+#: apply.c
#, c-format
msgid "Hunk #%d succeeded at %d (offset %d line)."
msgid_plural "Hunk #%d succeeded at %d (offset %d lines)."
msgstr[0] "El tros #%d ha tingut èxit a %d (desplaçament d'%d línia)."
msgstr[1] "El tros #%d ha tingut èxit a %d (desplaçament de %d línies)."
+#: apply.c
#, c-format
msgid "Context reduced to (%ld/%ld) to apply fragment at %d"
msgstr "El context s'ha reduït a (%ld/%ld) per a aplicar el fragment a %d"
+#: apply.c
#, c-format
msgid ""
"while searching for:\n"
@@ -993,19 +1207,23 @@ msgstr ""
"tot cercant:\n"
"%.*s"
+#: apply.c
#, c-format
msgid "missing binary patch data for '%s'"
msgstr "manquen les dades de pedaç binari de «%s»"
+#: apply.c
#, c-format
msgid "cannot reverse-apply a binary patch without the reverse hunk to '%s'"
msgstr "no es pot aplicar al revés un pedaç binari sense el tros revés a «%s»"
+#: apply.c
#, c-format
msgid "cannot apply binary patch to '%s' without full index line"
msgstr ""
"no es pot aplicar un pedaç binari a «%s» sense la línia d'índex completa"
+#: apply.c
#, c-format
msgid ""
"the patch applies to '%s' (%s), which does not match the current contents."
@@ -1013,235 +1231,287 @@ msgstr ""
"el pedaç s'aplica a «%s» (%s), el qual no coincideix amb els continguts "
"actuals."
+#: apply.c
#, c-format
msgid "the patch applies to an empty '%s' but it is not empty"
msgstr "el pedaç s'aplica a un «%s» buit però no és buit"
+#: apply.c
#, c-format
msgid "the necessary postimage %s for '%s' cannot be read"
msgstr "no es pot llegir la postimatge %s necessària per a «%s»"
+#: apply.c
#, c-format
msgid "binary patch does not apply to '%s'"
msgstr "el pedaç binari no s'aplica a «%s»"
+#: apply.c
#, c-format
msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)"
msgstr ""
"el pedaç binari a «%s» crea un resultat incorrecte (s'esperava %s, s'ha "
"rebut %s)"
+#: apply.c
#, c-format
msgid "patch failed: %s:%ld"
msgstr "el pedaç ha fallat: %s:%ld"
+#: apply.c builtin/mv.c
#, c-format
msgid "cannot checkout %s"
msgstr "no es pot agafar %s"
+#: apply.c midx.c pack-mtimes.c pack-revindex.c setup.c
#, c-format
msgid "failed to read %s"
msgstr "s'ha produït un error en llegir %s"
+#: apply.c
#, c-format
msgid "reading from '%s' beyond a symbolic link"
msgstr "s'està llegint de «%s» més enllà d'un enllaç simbòlic"
+#: apply.c
#, c-format
msgid "path %s has been renamed/deleted"
msgstr "el camí %s s'ha canviat de nom / s'ha suprimit"
+#: apply.c
#, c-format
msgid "%s: does not exist in index"
msgstr "%s: no existeix en l'índex"
+#: apply.c
#, c-format
msgid "%s: does not match index"
msgstr "%s: no coincideix amb l'índex"
+#: apply.c
msgid "repository lacks the necessary blob to perform 3-way merge."
msgstr ""
"al repositori li manca el blob necessari per a fer a una fusió de 3 vies."
+#: apply.c
#, c-format
msgid "Performing three-way merge...\n"
msgstr "S'està fent una fusió de 3 vies...\n"
+#: apply.c
#, c-format
msgid "cannot read the current contents of '%s'"
msgstr "no es poden llegir els continguts actuals de «%s»"
+#: apply.c
#, c-format
msgid "Failed to perform three-way merge...\n"
msgstr "S'ha produït un error en fer una fusió de tres vies...\n"
+#: apply.c
#, c-format
msgid "Applied patch to '%s' with conflicts.\n"
msgstr "S'ha aplicat el pedaç a «%s» amb conflictes.\n"
+#: apply.c
#, c-format
msgid "Applied patch to '%s' cleanly.\n"
msgstr "S'ha aplicat el pedaç a «%s» netament.\n"
+#: apply.c
#, c-format
msgid "Falling back to direct application...\n"
msgstr "S'està usant alternativament l'aplicació directa...\n"
+#: apply.c
msgid "removal patch leaves file contents"
msgstr "el pedaç d'eliminació deixa els continguts dels fitxers"
+#: apply.c
#, c-format
msgid "%s: wrong type"
msgstr "%s: tipus erroni"
+#: apply.c
#, c-format
msgid "%s has type %o, expected %o"
msgstr "%s és del tipus %o, s'esperava %o"
+#: apply.c read-cache.c
#, c-format
msgid "invalid path '%s'"
msgstr "camí no vàlid: «%s»"
+#: apply.c
#, c-format
msgid "%s: already exists in index"
msgstr "%s: ja existeix en l'índex"
+#: apply.c
#, c-format
msgid "%s: already exists in working directory"
msgstr "%s: ja existeix en el directori de treball"
+#: apply.c
#, c-format
msgid "new mode (%o) of %s does not match old mode (%o)"
msgstr "el mode nou (%o) de %s no coincideix amb el mode antic (%o)"
+#: apply.c
#, c-format
msgid "new mode (%o) of %s does not match old mode (%o) of %s"
msgstr "el mode nou (%o) de %s no coincideix amb el mode antic (%o) de %s"
+#: apply.c
#, c-format
msgid "affected file '%s' is beyond a symbolic link"
msgstr "el fitxer afectat «%s» és més enllà d'un enllaç simbòlic"
+#: apply.c
#, c-format
msgid "%s: patch does not apply"
msgstr "%s: el pedaç no s'aplica"
+#: apply.c
#, c-format
msgid "Checking patch %s..."
msgstr "S'està comprovant el pedaç %s..."
+#: apply.c
#, c-format
msgid "sha1 information is lacking or useless for submodule %s"
msgstr "falta la informació sha1 o és inútil per al submòdul %s"
+#: apply.c
#, c-format
msgid "mode change for %s, which is not in current HEAD"
msgstr "canvi de mode per a %s, el qual no està en la HEAD actual"
+#: apply.c
#, c-format
msgid "sha1 information is lacking or useless (%s)."
msgstr "falta informació sha1 o és inútil (%s)."
+#: apply.c
#, c-format
msgid "could not add %s to temporary index"
msgstr "no s'ha pogut afegir %s a l'índex temporal"
+#: apply.c
#, c-format
msgid "could not write temporary index to %s"
msgstr "no s'ha pogut escriure l'índex temporal a %s"
+#: apply.c
#, c-format
msgid "unable to remove %s from index"
msgstr "no s'ha pogut eliminar %s de l'índex"
+#: apply.c
#, c-format
msgid "corrupt patch for submodule %s"
msgstr "pedaç malmès per al submòdul %s"
+#: apply.c
#, c-format
msgid "unable to stat newly created file '%s'"
msgstr "no s'ha pogut fer stat al fitxer novament creat «%s»"
+#: apply.c
#, c-format
msgid "unable to create backing store for newly created file %s"
msgstr ""
"no s'ha pogut crear un magatzem de suport per al fitxer novament creat %s"
+#: apply.c
#, c-format
msgid "unable to add cache entry for %s"
msgstr "no s'ha pogut afegir una entrada de cau per a %s"
+#: apply.c builtin/bisect.c builtin/gc.c
#, c-format
msgid "failed to write to '%s'"
msgstr "no s'ha pogut escriure a «%s»"
+#: apply.c
#, c-format
msgid "closing file '%s'"
msgstr "s'està tancant el fitxer «%s»"
+#: apply.c
#, c-format
msgid "unable to write file '%s' mode %o"
msgstr "no s'ha pogut escriure el fitxer «%s» mode %o"
+#: apply.c
#, c-format
msgid "Applied patch %s cleanly."
msgstr "El pedaç %s s'ha aplicat netament."
+#: apply.c
msgid "internal error"
msgstr "error intern"
+#: apply.c
#, c-format
msgid "Applying patch %%s with %d reject..."
msgid_plural "Applying patch %%s with %d rejects..."
msgstr[0] "S'està aplicant el pedaç %%s amb %d rebuig..."
msgstr[1] "S'està aplicant el pedaç %%s amb %d rebutjos..."
-#, c-format
-msgid "truncating .rej filename to %.*s.rej"
-msgstr "s'està truncant el nom del fitxer .rej a %.*s.rej"
-
+#: apply.c
#, c-format
msgid "cannot open %s"
msgstr "no es pot obrir %s"
+#: apply.c rerere.c
#, c-format
msgid "cannot unlink '%s'"
msgstr "no es pot fer «unlink» de «%s»"
+#: apply.c
#, c-format
msgid "Hunk #%d applied cleanly."
msgstr "El tros #%d s'ha aplicat netament."
+#: apply.c
#, c-format
msgid "Rejected hunk #%d."
msgstr "S'ha rebutjat el tros #%d."
+#: apply.c
#, c-format
msgid "Skipped patch '%s'."
msgstr "S'ha omès el pedaç «%s»."
+#: apply.c
msgid "No valid patches in input (allow with \"--allow-empty\")"
msgstr "No hi ha pedaços vàlids a l'entrada (permeteu-los amb «--allow-empty»)"
+#: apply.c t/helper/test-cache-tree.c
msgid "unable to read index file"
msgstr "no es pot llegir el fitxer d'índex"
+#: apply.c
#, c-format
msgid "can't open patch '%s': %s"
msgstr "no es pot obrir el pedaç «%s»: %s"
+#: apply.c
#, c-format
msgid "squelched %d whitespace error"
msgid_plural "squelched %d whitespace errors"
msgstr[0] "s'ha silenciat %d error d'espai en blanc"
msgstr[1] "s'han silenciat %d errors d'espai en blanc"
+#: apply.c
#, c-format
msgid "%d line adds whitespace errors."
msgid_plural "%d lines add whitespace errors."
msgstr[0] "%d línia afegeix errors d'espai en blanc."
msgstr[1] "%d línies afegeixen errors d'espai en blanc."
+#: apply.c
#, c-format
msgid "%d line applied after fixing whitespace errors."
msgid_plural "%d lines applied after fixing whitespace errors."
@@ -1250,287 +1520,398 @@ msgstr[0] ""
msgstr[1] ""
"S'han aplicat %d línies després d'arreglar els errors d'espai en blanc."
+#: apply.c builtin/mv.c builtin/rm.c
msgid "Unable to write new index file"
msgstr "No s'ha pogut escriure un fitxer d'índex nou"
+#: apply.c
msgid "don't apply changes matching the given path"
msgstr "no apliquis els canvis que coincideixin amb el camí donat"
+#: apply.c
msgid "apply changes matching the given path"
msgstr "aplica els canvis que coincideixin amb el camí donat"
+#: apply.c builtin/am.c
msgid "num"
msgstr "nombre"
+#: apply.c
msgid "remove <num> leading slashes from traditional diff paths"
msgstr ""
"elimina <nombre> barres obliqües inicials dels camins de diferència "
"tradicionals"
+#: apply.c
msgid "ignore additions made by the patch"
msgstr "ignora afegiments fets pel pedaç"
+#: apply.c
msgid "instead of applying the patch, output diffstat for the input"
msgstr ""
"en lloc d'aplicar el pedaç, emet les estadístiques de diferència de l'entrada"
+#: apply.c
msgid "show number of added and deleted lines in decimal notation"
msgstr "mostra el nombre de línies afegides i suprimides en notació decimal"
+#: apply.c
msgid "instead of applying the patch, output a summary for the input"
msgstr "en lloc d'aplicar el pedaç, emet un resum de l'entrada"
+#: apply.c
msgid "instead of applying the patch, see if the patch is applicable"
msgstr "en lloc d'aplicar el pedaç, determina si el pedaç és aplicable"
+#: apply.c
msgid "make sure the patch is applicable to the current index"
msgstr "assegura que el pedaç sigui aplicable a l'índex actual"
+#: apply.c
msgid "mark new files with `git add --intent-to-add`"
msgstr "marca els fitxers nous amb «git add --intent-to-add»"
+#: apply.c
msgid "apply a patch without touching the working tree"
msgstr "aplica un pedaç sense tocar l'arbre de treball"
+#: apply.c
msgid "accept a patch that touches outside the working area"
msgstr "accepta un pedaç que toqui fora de l'àrea de treball"
+#: apply.c
msgid "also apply the patch (use with --stat/--summary/--check)"
msgstr "aplica el pedaç també (useu amb --stat/--summary/--check)"
+#: apply.c
msgid "attempt three-way merge, fall back on normal patch if that fails"
msgstr ""
"intenta una fusió de tres vies, si falla intenta llavors un pedaç normal"
+#: apply.c builtin/merge-file.c
+msgid "for conflicts, use our version"
+msgstr "en conflictes, usa la nostra versió"
+
+#: apply.c builtin/merge-file.c
+msgid "for conflicts, use their version"
+msgstr "en conflictes, usa la seva versió"
+
+#: apply.c builtin/merge-file.c
+msgid "for conflicts, use a union version"
+msgstr "en conflictes, usa una versió d'unió"
+
+#: apply.c
msgid "build a temporary index based on embedded index information"
msgstr "construeix un índex temporal basat en la informació d'índex incrustada"
+#: apply.c builtin/checkout-index.c
msgid "paths are separated with NUL character"
msgstr "els camins se separen amb el caràcter NUL"
+#: apply.c
msgid "ensure at least <n> lines of context match"
msgstr "assegura't que almenys <n> línies de context coincideixin"
+#: apply.c builtin/am.c builtin/interpret-trailers.c builtin/pack-objects.c
+#: builtin/rebase.c
msgid "action"
msgstr "acció"
+#: apply.c
msgid "detect new or modified lines that have whitespace errors"
msgstr ""
"detecta les línies noves o modificades que tinguin errors d'espai en blanc"
+#: apply.c
msgid "ignore changes in whitespace when finding context"
msgstr "ignora els canvis d'espai en blanc en cercar context"
+#: apply.c
msgid "apply the patch in reverse"
msgstr "aplica el pedaç al revés"
+#: apply.c
msgid "don't expect at least one line of context"
msgstr "no esperis almenys una línia de context"
+#: apply.c
msgid "leave the rejected hunks in corresponding *.rej files"
msgstr "deixa els trossos rebutjats en fitxers *.rej corresponents"
+#: apply.c
msgid "allow overlapping hunks"
msgstr "permet trossos superposats"
+#: apply.c
msgid "tolerate incorrectly detected missing new-line at the end of file"
msgstr "tolera una línia nova incorrectament detectada al final del fitxer"
+#: apply.c
msgid "do not trust the line counts in the hunk headers"
msgstr "no confiïs en els recomptes de línia en les capçaleres dels trossos"
+#: apply.c builtin/am.c
msgid "root"
msgstr "arrel"
+#: apply.c
msgid "prepend <root> to all filenames"
msgstr "anteposa <arrel> a tots els noms de fitxer"
+#: apply.c
msgid "don't return error for empty patches"
msgstr "no retornis l'error per als pedaços buits"
+#: apply.c
+msgid "--ours, --theirs, and --union require --3way"
+msgstr "--ours, --theirs, i --union requereixen --3way"
+
+#: archive-tar.c archive-zip.c
#, c-format
msgid "cannot stream blob %s"
msgstr "no es pot transmetre el blob %s"
+#: archive-tar.c archive-zip.c
#, c-format
msgid "unsupported file mode: 0%o (SHA1: %s)"
msgstr "mode de fitxer no compatible: 0%o (SHA1: %s)"
+#: archive-tar.c archive-zip.c builtin/pack-objects.c
#, c-format
msgid "deflate error (%d)"
msgstr "error de deflació (%d)"
+#: archive-tar.c
#, c-format
msgid "unable to start '%s' filter"
msgstr "no s'ha pogut iniciar el filtre «%s»"
+#: archive-tar.c
msgid "unable to redirect descriptor"
msgstr "no s'ha pogut redirigir el descriptor"
+#: archive-tar.c
#, c-format
msgid "'%s' filter reported error"
msgstr "«%s» error reportat pel filtre"
+#: archive-zip.c
#, c-format
msgid "path is not valid UTF-8: %s"
msgstr "el camí no és vàlid en UTF-8: %s"
+#: archive-zip.c
#, c-format
msgid "path too long (%d chars, SHA1: %s): %s"
msgstr "el camí és massa llarg (%d caràcters, SHA1: %s): %s"
+#: archive-zip.c
#, c-format
msgid "timestamp too large for this system: %<PRIuMAX>"
msgstr "marca de temps massa gran per a aquest sistema: %<PRIuMAX>"
+#: archive.c
msgid "git archive [<options>] <tree-ish> [<path>...]"
msgstr "git archive [<opcions>] <arbre> [<camí>...]"
+#: archive.c
msgid ""
"git archive --remote <repo> [--exec <cmd>] [<options>] <tree-ish> [<path>...]"
msgstr ""
"git archive --remote <repositori> [--exec <ordre>] [<opcions>] <arbre> "
"[<camí>...]"
+#: archive.c
msgid "git archive --remote <repo> [--exec <cmd>] --list"
msgstr "git archive --remote <repositori> [--exec <ordre>] --list"
+#: archive.c builtin/gc.c builtin/notes.c builtin/tag.c
#, c-format
msgid "cannot read '%s'"
msgstr "no es pot llegir «%s»"
+#: archive.c
#, c-format
msgid "pathspec '%s' matches files outside the current directory"
msgstr ""
"l'especificació de camí «%s» coincideix amb fitxers fora del directori actual"
+#: archive.c builtin/add.c builtin/rm.c
#, c-format
msgid "pathspec '%s' did not match any files"
msgstr "l'especificació de camí «%s» no ha coincidit amb cap fitxer"
+#: archive.c
#, c-format
msgid "no such ref: %.*s"
msgstr "no existeix la referència: %.*s"
+#: archive.c
#, c-format
msgid "not a valid object name: %s"
msgstr "no és un nom d'objecte vàlid: %s"
+#: archive.c t/helper/test-cache-tree.c
#, c-format
msgid "not a tree object: %s"
msgstr "no és un objecte d'arbre: %s"
+#: archive.c
+#, c-format
+msgid "failed to unpack tree object %s"
+msgstr "s'ha produït un error en desempaquetar l'objecte d'arbre %s"
+
+#: archive.c
#, c-format
msgid "File not found: %s"
msgstr "Fitxer no trobat: %s"
+#: archive.c
#, c-format
msgid "Not a regular file: %s"
msgstr "No és un fitxer normal: %s"
+#: archive.c
#, c-format
msgid "unclosed quote: '%s'"
msgstr "cometes no tancades: «%s»"
+#: archive.c
#, c-format
msgid "missing colon: '%s'"
msgstr "falten els dos punts: «%s»"
+#: archive.c
#, c-format
msgid "empty file name: '%s'"
msgstr "nom de fitxer buit: «%s»"
+#: archive.c
msgid "fmt"
msgstr "format"
+#: archive.c
msgid "archive format"
msgstr "format d'arxiu"
+#: archive.c builtin/log.c parse-options.h
msgid "prefix"
msgstr "prefix"
+#: archive.c
msgid "prepend prefix to each pathname in the archive"
msgstr "anteposa el prefix a cada nom de camí en l'arxiu"
+#: archive.c builtin/blame.c builtin/commit-tree.c builtin/config.c
+#: builtin/fast-export.c builtin/gc.c builtin/grep.c builtin/hash-object.c
+#: builtin/ls-files.c builtin/notes.c builtin/read-tree.c parse-options.h
msgid "file"
msgstr "fitxer"
+#: archive.c
msgid "add untracked file to archive"
msgstr "inclou els fitxers no seguits a l'arxiu"
+#: archive.c
msgid "path:content"
msgstr "camí: contingut"
+#: archive.c builtin/archive.c
msgid "write the archive to this file"
msgstr "escriu l'arxiu a aquest fitxer"
+#: archive.c
msgid "read .gitattributes in working directory"
msgstr "llegeix .gitattributes en el directori de treball"
+#: archive.c
msgid "report archived files on stderr"
msgstr "informa de fitxers arxivats en stderr"
+#: archive.c builtin/clone.c builtin/fetch.c builtin/pack-objects.c
+#: builtin/pull.c
msgid "time"
msgstr "data"
+#: archive.c
msgid "set modification time of archive entries"
msgstr "estableix l'hora de modificació de les entrades de l'arxiu"
+#: archive.c
msgid "set compression level"
msgstr "estableix el nivell de compressió"
+#: archive.c
msgid "list supported archive formats"
msgstr "llista els formats d'arxiu admesos"
+#: archive.c builtin/archive.c builtin/clone.c builtin/submodule--helper.c
msgid "repo"
msgstr "repositori"
+#: archive.c builtin/archive.c
msgid "retrieve the archive from remote repository <repo>"
msgstr "recupera l'arxiu del repositori remot <repositori>"
+#: archive.c builtin/archive.c builtin/difftool.c builtin/notes.c
msgid "command"
msgstr "ordre"
+#: archive.c builtin/archive.c
msgid "path to the remote git-upload-archive command"
msgstr "camí a l'ordre git-upload-archive remota"
+#: archive.c
msgid "Unexpected option --remote"
msgstr "Opció inesperada --remote"
+#: archive.c builtin/add.c builtin/checkout.c builtin/clone.c builtin/commit.c
+#: builtin/fast-export.c builtin/index-pack.c builtin/log.c builtin/reset.c
+#: builtin/rm.c builtin/stash.c builtin/worktree.c fetch-pack.c http-fetch.c
+#: revision.c
#, c-format
msgid "the option '%s' requires '%s'"
msgstr "l'opció «%s» requereix «%s»"
+#: archive.c
msgid "Unexpected option --output"
msgstr "Opció inesperada --output"
+#: archive.c t/unit-tests/unit-test.c
#, c-format
msgid "extra command line parameter '%s'"
msgstr "paràmetre extra de la línia d'ordres «%s»"
+#: archive.c
#, c-format
msgid "Unknown archive format '%s'"
msgstr "Format d'arxiu desconegut «%s»"
+#: archive.c
#, c-format
msgid "Argument not supported for format '%s': -%d"
msgstr "Argument no admès per al format «%s»: -%d"
+#: attr.c
#, c-format
msgid "%.*s is not a valid attribute name"
msgstr "%.*s no és un nom d'atribut vàlid"
+#: attr.c
msgid "unable to add additional attribute"
msgstr "no s'ha pogut afegir l'atribut addicional"
+#: attr.c
#, c-format
msgid "ignoring overly long attributes line %d"
msgstr "s'ignorarà la línia d'atributs massa llarga %d"
+#: attr.c
#, c-format
msgid "%s not allowed: %s:%d"
msgstr "%s no està permès: %s:%d"
+#: attr.c
msgid ""
"Negative patterns are ignored in git attributes\n"
"Use '\\!' for literal leading exclamation."
@@ -1538,41 +1919,56 @@ msgstr ""
"Els patrons negatius s'ignoren en els atributs de git\n"
"Useu «\\!» per exclamació capdavantera literal."
+#: attr.c
#, c-format
msgid "cannot fstat gitattributes file '%s'"
msgstr "no es pot fer fstat gitattributes al fitxer «%s»"
+#: attr.c
#, c-format
msgid "ignoring overly large gitattributes file '%s'"
msgstr "s'ignorarà el fitxer «%s» gitattributes per a ser massa gran"
+#: attr.c
#, c-format
msgid "ignoring overly large gitattributes blob '%s'"
msgstr "s'ignorarà el blob «%s» gitattributes per a ser massa gran"
+#: attr.c
+msgid "cannot use --attr-source or GIT_ATTR_SOURCE without repo"
+msgstr "no es pot usar --attr-source o GIT_ATTR_SOURCE sense repository"
+
+#: attr.c
msgid "bad --attr-source or GIT_ATTR_SOURCE"
msgstr "--attr-source incorrecte o GIT_ATTR_SOURCE"
+#: attr.c read-cache.c
#, c-format
msgid "unable to stat '%s'"
msgstr "no s'ha pogut fer «stat» a «%s»"
+#: bisect.c builtin/cat-file.c builtin/index-pack.c builtin/notes.c
+#: builtin/pack-objects.c combine-diff.c object-file.c rerere.c
#, c-format
msgid "unable to read %s"
msgstr "no s'ha pogut llegir %s"
+#: bisect.c
#, c-format
msgid "Badly quoted content in file '%s': %s"
msgstr "Comentari amb cometes errònies en el fitxer «%s»: %s"
+#: bisect.c
#, c-format
msgid "We cannot bisect more!\n"
msgstr "No podem bisecar més!\n"
+#: bisect.c
#, c-format
msgid "Not a valid commit name %s"
msgstr "No és un nom de comissió vàlid %s"
+#: bisect.c
#, c-format
msgid ""
"The merge base %s is bad.\n"
@@ -1581,6 +1977,7 @@ msgstr ""
"La base de fusió %s és errònia.\n"
"Això vol dir que el defecte s'ha arreglat entre %s i [%s].\n"
+#: bisect.c
#, c-format
msgid ""
"The merge base %s is new.\n"
@@ -1589,6 +1986,7 @@ msgstr ""
"La base de fusió %s és nova.\n"
"La propietat s'ha canviat entre %s i [%s].\n"
+#: bisect.c
#, c-format
msgid ""
"The merge base %s is %s.\n"
@@ -1597,6 +1995,7 @@ msgstr ""
"La base de fusió %s és %s.\n"
"Això vol dir que la primera comissió «%s» és entre %s i [%s].\n"
+#: bisect.c
#, c-format
msgid ""
"Some %s revs are not ancestors of the %s rev.\n"
@@ -1607,6 +2006,7 @@ msgstr ""
"git bisect no pot funcionar correctament en aquest cas.\n"
"Potser heu confós les revisions %s i %s?\n"
+#: bisect.c
#, c-format
msgid ""
"the merge base between %s and [%s] must be skipped.\n"
@@ -1618,29 +2018,41 @@ msgstr ""
"%s.\n"
"Continuem de totes maneres."
+#: bisect.c
#, c-format
msgid "Bisecting: a merge base must be tested\n"
msgstr "Bisecant: s'ha de provar una base de fusió\n"
+#: bisect.c
#, c-format
msgid "a %s revision is needed"
msgstr "es necessita una revisió %s"
+#: bisect.c
#, c-format
msgid "could not create file '%s'"
msgstr "no s'ha pogut crear el fitxer «%s»"
+#: bisect.c builtin/notes.c
+#, c-format
+msgid "unable to start 'show' for object '%s'"
+msgstr "no s'ha pogut iniciar «show» per a l'objecte «%s»"
+
+#: bisect.c builtin/merge.c
#, c-format
msgid "could not read file '%s'"
msgstr "no s'ha pogut llegir el fitxer «%s»"
+#: bisect.c
msgid "reading bisect refs failed"
msgstr "la lectura de les referències de bisecció ha fallat"
+#: bisect.c
#, c-format
msgid "%s was both %s and %s\n"
msgstr "%s era ambdós %s i %s\n"
+#: bisect.c
#, c-format
msgid ""
"No testable commit found.\n"
@@ -1649,6 +2061,7 @@ msgstr ""
"No s'ha trobat cap comissió comprovable.\n"
"Potser heu començat amb paràmetres de camí incorrectes?\n"
+#: bisect.c
#, c-format
msgid "(roughly %d step)"
msgid_plural "(roughly %d steps)"
@@ -1658,36 +2071,46 @@ msgstr[1] "(aproximadament %d passos)"
#. TRANSLATORS: the last %s will be replaced with "(roughly %d
#. steps)" translation.
#.
+#: bisect.c
#, c-format
msgid "Bisecting: %d revision left to test after this %s\n"
msgid_plural "Bisecting: %d revisions left to test after this %s\n"
msgstr[0] "Bisecant: manca %d revisió a provar després d'aquesta %s\n"
msgstr[1] "Bisecant: manquen %d revisions a provar després d'aquesta %s\n"
+#: blame.c
msgid "--contents and --reverse do not blend well."
msgstr "--contents i --reverse no funcionen bé juntes."
+#: blame.c
msgid "--reverse and --first-parent together require specified latest commit"
msgstr ""
"--reverse i --first-parent junts requereixen una última comissió especificada"
+#: blame.c builtin/bisect.c builtin/commit.c builtin/log.c builtin/merge.c
+#: builtin/pack-objects.c builtin/shortlog.c midx-write.c pack-bitmap.c
+#: remote.c sequencer.c submodule.c
msgid "revision walk setup failed"
msgstr "la configuració del recorregut de revisions ha fallat"
+#: blame.c
msgid ""
"--reverse --first-parent together require range along first-parent chain"
msgstr ""
"--reverse --first-parent junts requereixen un rang de la cadena de pares "
"primers"
+#: blame.c
#, c-format
msgid "no such path %s in %s"
msgstr "no hi ha tal camí %s en %s"
+#: blame.c
#, c-format
msgid "cannot read blob %s for path %s"
msgstr "no es pot llegir el blob %s per al camí %s"
+#: branch.c
msgid ""
"cannot inherit upstream tracking configuration of multiple refs when "
"rebasing is requested"
@@ -1695,25 +2118,31 @@ msgstr ""
"no es pot heretar la configuració del seguiment de la font de múltiples "
"referències quan es demana fer «rebase»"
+#: branch.c
#, c-format
msgid "not setting branch '%s' as its own upstream"
msgstr "no s'està establert la branca «%s» com a la seva pròpia font"
+#: branch.c
#, c-format
msgid "branch '%s' set up to track '%s' by rebasing."
msgstr "la branca «%s» està configurada per a seguir «%s» fent «rebase»."
+#: branch.c
#, c-format
msgid "branch '%s' set up to track '%s'."
msgstr "la branca «%s» està configurada per a seguir «%s»."
+#: branch.c
#, c-format
msgid "branch '%s' set up to track:"
msgstr "la branca «%s» està configurada per a seguir:"
+#: branch.c
msgid "unable to write upstream branch configuration"
msgstr "no es pot escriure la configuració de la branca font"
+#: branch.c
msgid ""
"\n"
"After fixing the error cause you may try to fix up\n"
@@ -1723,18 +2152,21 @@ msgstr ""
"Després de corregir la causa de l'error, podeu intentar\n"
"corregir la informació de seguiment remot executant:"
+#: branch.c
#, c-format
msgid "asked to inherit tracking from '%s', but no remote is set"
msgstr ""
"s'ha demanat que hereti el seguiment de «%s», però no s'ha establert cap "
"remot"
+#: branch.c
#, c-format
msgid "asked to inherit tracking from '%s', but no merge configuration is set"
msgstr ""
"s'ha demanat que hereti el seguiment de «%s», però no s'ha establert cap "
"configuració de fusionat"
+#: branch.c
#, c-format
msgid "not tracking: ambiguous information for ref '%s'"
msgstr "no s'està seguint: informació ambigua per a la referència «%s»"
@@ -1750,6 +2182,7 @@ msgstr "no s'està seguint: informació ambigua per a la referència «%s»"
#. you'll probably want to swap the "%s" and leading " " space
#. around.
#.
+#: branch.c object-name.c
#, c-format
msgid " %s\n"
msgstr " %s\n"
@@ -1757,6 +2190,7 @@ msgstr " %s\n"
#. TRANSLATORS: The second argument is a \n-delimited list of
#. duplicate refspecs, composed above.
#.
+#: branch.c
#, c-format
msgid ""
"There are multiple remotes whose fetch refspecs map to the remote\n"
@@ -1777,30 +2211,40 @@ msgstr ""
"els diferents refspecs remots s'assignen a diferents espais de noms\n"
"de seguiment."
+#: branch.c
#, c-format
msgid "'%s' is not a valid branch name"
msgstr "«%s» no és un nom de branca vàlid"
+#: branch.c builtin/branch.c
+msgid "See `man git check-ref-format`"
+msgstr "Vegeu `man git check-ref-format`"
+
+#: branch.c
#, c-format
msgid "a branch named '%s' already exists"
msgstr "ja existeix una branca amb nom «%s»"
+#: branch.c
#, c-format
msgid "cannot force update the branch '%s' used by worktree at '%s'"
msgstr ""
"no es pot forçar l'actualització de la branca «%s» utilitzada per l'arbre de "
"treball a «%s»"
+#: branch.c
#, c-format
msgid "cannot set up tracking information; starting point '%s' is not a branch"
msgstr ""
"no es pot configurar la informació de seguiment; el punt inicial «%s» no és "
"una branca"
+#: branch.c
#, c-format
msgid "the requested upstream branch '%s' does not exist"
msgstr "la branca font demanada «%s» no existeix"
+#: branch.c
msgid ""
"\n"
"If you are planning on basing your work on an upstream\n"
@@ -1821,22 +2265,27 @@ msgstr ""
"«git push -u» per a establir la configuració font\n"
"mentre pugeu."
+#: branch.c builtin/replace.c
#, c-format
msgid "not a valid object name: '%s'"
msgstr "no és un nom d'objecte vàlid: «%s»"
+#: branch.c
#, c-format
msgid "ambiguous object name: '%s'"
msgstr "nom d'objecte ambigu: «%s»"
+#: branch.c
#, c-format
msgid "not a valid branch point: '%s'"
msgstr "no és un punt de ramificació vàlid: «%s»"
+#: branch.c
#, c-format
msgid "submodule '%s': unable to find submodule"
msgstr "submòdul «%s»: no es pot trobar el submòdul"
+#: branch.c
#, c-format
msgid ""
"You may try updating the submodules using 'git checkout --no-recurse-"
@@ -1845,105 +2294,131 @@ msgstr ""
"Podeu provar d'actualitzar els submòduls utilitzant «git checkout --no-"
"recurse-submodules %s && git submodule update --init»"
+#: branch.c
#, c-format
msgid "submodule '%s': cannot create branch '%s'"
msgstr "submòdul «%s»: no es pot crear la branca: «%s»"
+#: branch.c
#, c-format
msgid "'%s' is already used by worktree at '%s'"
msgstr "«%s» ja s'utilitza en l'arbre de treball a «%s»"
+#: builtin/add.c
msgid "git add [<options>] [--] <pathspec>..."
-msgstr "git add [<opcions>] [--] <especificació-de-camí>..."
+msgstr "git add [<opcions>] [--] <especificació-camí>..."
+#: builtin/add.c
#, c-format
msgid "cannot chmod %cx '%s'"
msgstr "no es pot fer chmod %cx «%s»"
+#: builtin/add.c
msgid "Unstaged changes after refreshing the index:"
msgstr "Canvis «unstaged» després d'actualitzar l'índex:"
-msgid ""
-"the add.interactive.useBuiltin setting has been removed!\n"
-"See its entry in 'git help config' for details."
-msgstr ""
-"s'ha eliminat la configuració add.interactive.useBuiltin\n"
-"Per a més detalls, vegeu la seva entrada a «git help config»."
-
+#: builtin/add.c
msgid "could not read the index"
msgstr "no s'ha pogut llegir l'índex"
+#: builtin/add.c
msgid "editing patch failed"
msgstr "l'edició del pedaç ha fallat"
+#: builtin/add.c read-cache.c
#, c-format
msgid "could not stat '%s'"
msgstr "no s'ha pogut fer stat a «%s»"
+#: builtin/add.c
msgid "empty patch. aborted"
msgstr "pedaç buit. interromput"
+#: builtin/add.c
#, c-format
msgid "could not apply '%s'"
msgstr "no s'ha pogut aplicar «%s»"
+#: builtin/add.c
msgid "The following paths are ignored by one of your .gitignore files:\n"
msgstr ""
"Els camins següents s'ignoren per un dels vostres fitxers .gitignore:\n"
+#: builtin/add.c builtin/clean.c builtin/fetch.c builtin/mv.c
+#: builtin/prune-packed.c builtin/pull.c builtin/push.c builtin/remote.c
+#: builtin/rm.c builtin/send-pack.c
msgid "dry run"
msgstr "fes una prova"
+#: builtin/add.c builtin/check-ignore.c builtin/commit.c
+#: builtin/count-objects.c builtin/fsck.c builtin/log.c builtin/mv.c
+#: builtin/read-tree.c builtin/refs.c
msgid "be verbose"
msgstr "sigues detallat"
+#: builtin/add.c
msgid "interactive picking"
msgstr "selecció interactiva"
+#: builtin/add.c builtin/checkout.c builtin/reset.c
msgid "select hunks interactively"
msgstr "selecciona els trossos interactivament"
+#: builtin/add.c
msgid "edit current diff and apply"
msgstr "edita la diferència actual i aplica-la"
+#: builtin/add.c
msgid "allow adding otherwise ignored files"
msgstr "permet afegir fitxers que d'altra manera s'ignoren"
+#: builtin/add.c
msgid "update tracked files"
msgstr "actualitza els fitxers seguits"
+#: builtin/add.c
msgid "renormalize EOL of tracked files (implies -u)"
msgstr "torna a normalitzar EOL dels fitxers seguits (implica -u)"
+#: builtin/add.c
msgid "record only the fact that the path will be added later"
msgstr "registra només el fet que el camí s'afegirà més tard"
+#: builtin/add.c
msgid "add changes from all tracked and untracked files"
msgstr "afegeix els canvis de tots els fitxers seguits i no seguits"
+#: builtin/add.c
msgid "ignore paths removed in the working tree (same as --no-all)"
msgstr ""
"ignora els camins eliminats en l'arbre de treball (el mateix que --no-all)"
+#: builtin/add.c
msgid "don't add, only refresh the index"
msgstr "no afegeixis, només actualitza l'índex"
+#: builtin/add.c
msgid "just skip files which cannot be added because of errors"
msgstr "només omet els fitxers que no es poden afegir a causa d'errors"
+#: builtin/add.c
msgid "check if - even missing - files are ignored in dry run"
msgstr ""
"comprova si els fitxers, fins i tot els absents, s'ignoren en fer una prova"
+#: builtin/add.c builtin/mv.c builtin/rm.c
msgid "allow updating entries outside of the sparse-checkout cone"
msgstr "permet actualitzar les entrades fora del con del «sparse-checkout»"
+#: builtin/add.c builtin/update-index.c
msgid "override the executable bit of the listed files"
msgstr "sobreescriu el bit executable dels fitxers llistats"
+#: builtin/add.c
msgid "warn when adding an embedded repository"
msgstr "avisa'm quan s'afegeixi un repositori incrustat"
+#: builtin/add.c
#, c-format
msgid ""
"You've added another git repository inside your current repository.\n"
@@ -1974,161 +2449,197 @@ msgstr ""
"\n"
"Vegeu «git help submodule» per a més informació."
+#: builtin/add.c
#, c-format
msgid "adding embedded git repository: %s"
msgstr "s'està afegint un repositori incrustat: %s"
-msgid ""
-"Use -f if you really want to add them.\n"
-"Turn this message off by running\n"
-"\"git config advice.addIgnoredFile false\""
-msgstr ""
-"Utilitzeu -f si realment voleu afegir-los.\n"
-"Desactiveu aquest missatge executant\n"
-"«git config advice.addIgnoredFile false»"
+#: builtin/add.c
+msgid "Use -f if you really want to add them."
+msgstr "\"Useu -f si realment voleu afegir-los."
+#: builtin/add.c
msgid "adding files failed"
msgstr "l'afegiment de fitxers ha fallat"
+#: builtin/add.c
#, c-format
msgid "--chmod param '%s' must be either -x or +x"
msgstr "el paràmetre --chmod «%s» ha de ser o -x o +x"
+#: builtin/add.c builtin/checkout.c builtin/commit.c builtin/reset.c
+#: builtin/rm.c builtin/stash.c
#, c-format
msgid "'%s' and pathspec arguments cannot be used together"
msgstr "«%s» i l'especificació de camí no es poden usar juntes"
+#: builtin/add.c
#, c-format
msgid "Nothing specified, nothing added.\n"
msgstr "No s'ha especificat res, no s'ha afegit res.\n"
-msgid ""
-"Maybe you wanted to say 'git add .'?\n"
-"Turn this message off by running\n"
-"\"git config advice.addEmptyPathspec false\""
-msgstr ""
-"Potser voleu dir «git add .»?\n"
-"Desactiveu aquest missatge executant\n"
-"«git config advice.addEmptyPathspec false»"
+#: builtin/add.c
+msgid "Maybe you wanted to say 'git add .'?"
+msgstr "Que potser volíeu dir «git add.»?"
+#: builtin/add.c builtin/check-ignore.c builtin/checkout.c builtin/clean.c
+#: builtin/commit.c builtin/diff-tree.c builtin/grep.c builtin/mv.c
+#: builtin/reset.c builtin/rm.c builtin/submodule--helper.c read-cache.c
+#: rerere.c submodule.c
msgid "index file corrupt"
msgstr "fitxer d'índex malmès"
+#: builtin/add.c builtin/am.c builtin/checkout.c builtin/clone.c
+#: builtin/commit.c builtin/stash.c merge.c rerere.c
msgid "unable to write new index file"
msgstr "no s'ha pogut escriure un fitxer d'índex nou"
+#: builtin/am.c builtin/mailinfo.c mailinfo.c
#, c-format
msgid "bad action '%s' for '%s'"
msgstr "acció «%s» incorrecta per a «%s»"
+#: builtin/am.c builtin/blame.c builtin/fetch.c builtin/pack-objects.c
+#: builtin/pull.c builtin/revert.c config.c diff-merges.c gpg-interface.c
+#: ls-refs.c parallel-checkout.c sequencer.c setup.c
#, c-format
msgid "invalid value for '%s': '%s'"
msgstr "valor no vàlid per a «%s»: «%s»"
+#: builtin/am.c builtin/commit.c builtin/merge.c sequencer.c
#, c-format
msgid "could not read '%s'"
msgstr "no s'ha pogut llegir «%s»"
+#: builtin/am.c
msgid "could not parse author script"
msgstr "no s'ha pogut analitzar l'script d'autor"
+#: builtin/am.c builtin/replace.c commit.c sequencer.c
#, c-format
msgid "could not parse %s"
msgstr "no s'ha pogut analitzar %s"
+#: builtin/am.c
#, c-format
msgid "'%s' was deleted by the applypatch-msg hook"
msgstr "s'ha suprimit «%s» pel lligam applypatch-msg"
+#: builtin/am.c
#, c-format
msgid "Malformed input line: '%s'."
msgstr "Línia d'entrada mal formada: «%s»."
+#: builtin/am.c
#, c-format
msgid "Failed to copy notes from '%s' to '%s'"
msgstr "S'ha produït un error en copiar les notes de «%s» a «%s»"
+#: builtin/am.c
msgid "fseek failed"
msgstr "fseek ha fallat"
+#: builtin/am.c builtin/rebase.c sequencer.c wrapper.c
#, c-format
msgid "could not open '%s' for reading"
msgstr "no s'ha pogut obrir «%s» per a lectura"
+#: builtin/am.c builtin/rebase.c editor.c sequencer.c wrapper.c
#, c-format
msgid "could not open '%s' for writing"
msgstr "no s'ha pogut obrir «%s» per a escriptura"
+#: builtin/am.c
#, c-format
msgid "could not parse patch '%s'"
msgstr "no s'ha pogut analitzar el pedaç «%s»"
+#: builtin/am.c
msgid "Only one StGIT patch series can be applied at once"
msgstr "Només una sèrie de pedaços StGIT es pot aplicar a la vegada"
+#: builtin/am.c
msgid "invalid timestamp"
msgstr "marca de temps no vàlida"
+#: builtin/am.c
msgid "invalid Date line"
msgstr "línia Date no vàlida"
+#: builtin/am.c
msgid "invalid timezone offset"
msgstr "desplaçament del fus horari no vàlid"
+#: builtin/am.c
msgid "Patch format detection failed."
msgstr "La detecció de format de pedaç ha fallat."
+#: builtin/am.c builtin/clone.c
#, c-format
msgid "failed to create directory '%s'"
msgstr "s'ha produït un error en crear el directori «%s»"
+#: builtin/am.c
msgid "Failed to split patches."
msgstr "S'ha produït un error en dividir els pedaços."
+#: builtin/am.c
#, c-format
-msgid "When you have resolved this problem, run \"%s --continue\"."
-msgstr "Quan hàgiu resolt aquest problema, executeu «%s --continue»."
+msgid "When you have resolved this problem, run \"%s --continue\".\n"
+msgstr "Quan hàgiu resolt aquest problema, executeu «%s --continue».\n"
+#: builtin/am.c
#, c-format
-msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
-msgstr "Si preferiu ometre aquest pedaç, executeu «%s --skip» en lloc d'això."
+msgid "If you prefer to skip this patch, run \"%s --skip\" instead.\n"
+msgstr ""
+"Si preferiu ometre aquest pedaç, executeu «%s --skip» en lloc d'això.\n"
+#: builtin/am.c
#, c-format
-msgid "To record the empty patch as an empty commit, run \"%s --allow-empty\"."
+msgid ""
+"To record the empty patch as an empty commit, run \"%s --allow-empty\".\n"
msgstr ""
"Per a enregistrar un pedaç buit com a comissió buida, executeu «%s --allow-"
-"empty»."
+"empty».\n"
+#: builtin/am.c
#, c-format
msgid "To restore the original branch and stop patching, run \"%s --abort\"."
msgstr ""
"Per a restaurar la branca original i deixar d'apedaçar, executeu «%s --"
"abort»."
+#: builtin/am.c
msgid "Patch sent with format=flowed; space at the end of lines might be lost."
msgstr ""
"Pedaç enviat amb format=flowed; es pot perdre l'espai al final de les línies."
+#: builtin/am.c
#, c-format
msgid "missing author line in commit %s"
msgstr "manca la línia d'autor en la comissió %s"
+#: builtin/am.c
#, c-format
msgid "invalid ident line: %.*s"
msgstr "línia d'identitat no vàlida: %.*s"
+#: builtin/am.c builtin/checkout.c builtin/clone.c commit-graph.c
#, c-format
msgid "unable to parse commit %s"
msgstr "no s'ha pogut analitzar la comissió %s"
+#: builtin/am.c
msgid "Repository lacks necessary blobs to fall back on 3-way merge."
msgstr ""
"Al repositori li manquen els blobs necessaris per a retrocedir a una fusió "
"de 3 vies."
+#: builtin/am.c
msgid "Using index info to reconstruct a base tree..."
msgstr "S'està usant la informació d'índex per a reconstruir un arbre base..."
+#: builtin/am.c
msgid ""
"Did you hand edit your patch?\n"
"It does not apply to blobs recorded in its index."
@@ -2136,25 +2647,32 @@ msgstr ""
"Heu editat el vostre pedaç a mà?\n"
"No s'aplica als blobs recordats en el seu índex."
+#: builtin/am.c
msgid "Falling back to patching base and 3-way merge..."
msgstr "S'està retrocedint a apedaçar la base i una fusió de 3 vies..."
+#: builtin/am.c
msgid "Failed to merge in the changes."
msgstr "S'ha produït un error en fusionar els canvis."
+#: builtin/am.c builtin/merge.c sequencer.c
msgid "git write-tree failed to write a tree"
msgstr "git write-tree ha fallat en escriure un arbre"
+#: builtin/am.c
msgid "applying to an empty history"
msgstr "s'està aplicant a una història buida"
+#: builtin/am.c builtin/commit.c builtin/merge.c builtin/replay.c sequencer.c
msgid "failed to write commit object"
msgstr "s'ha produït un error en escriure l'objecte de comissió"
+#: builtin/am.c
#, c-format
msgid "cannot resume: %s does not exist."
msgstr "no es pot reprendre: %s no existeix."
+#: builtin/am.c
msgid "Commit Body is:"
msgstr "El cos de la comissió és:"
@@ -2162,48 +2680,60 @@ msgstr "El cos de la comissió és:"
#. in your translation. The program will only accept English
#. input at this point.
#.
+#: builtin/am.c
#, c-format
msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
msgstr ""
"Voleu aplicar-lo? [y]es/[n]o/[e]dita/[v]isualitza el pedaç/[a]ccepta'ls "
"tots: "
+#: builtin/am.c builtin/commit.c
msgid "unable to write index file"
msgstr "no s'ha pogut escriure el fitxer d'índex"
+#: builtin/am.c
#, c-format
msgid "Dirty index: cannot apply patches (dirty: %s)"
msgstr "Ãndex brut: no es poden aplicar pedaços (bruts: %s)"
+#: builtin/am.c
#, c-format
msgid "Skipping: %.*s"
msgstr "S'està ometent: %.*s"
+#: builtin/am.c
#, c-format
msgid "Creating an empty commit: %.*s"
msgstr "S'està creant una comissió buida: %.*s"
+#: builtin/am.c
msgid "Patch is empty."
msgstr "El pedaç està buit."
+#: builtin/am.c
#, c-format
msgid "Applying: %.*s"
msgstr "S'està aplicant: %.*s"
+#: builtin/am.c
msgid "No changes -- Patch already applied."
msgstr "Sense canvis -- El pedaç ja s'ha aplicat."
+#: builtin/am.c
#, c-format
msgid "Patch failed at %s %.*s"
msgstr "El pedaç ha fallat a %s %.*s"
+#: builtin/am.c
msgid "Use 'git am --show-current-patch=diff' to see the failed patch"
msgstr ""
"Useu «git am --show-current-patch=diff» per a veure el pedaç que ha fallat"
+#: builtin/am.c
msgid "No changes - recorded it as an empty commit."
msgstr "No hi ha canvis - enregistrat com una comissió buida."
+#: builtin/am.c
msgid ""
"No changes - did you forget to use 'git add'?\n"
"If there is nothing left to stage, chances are that something else\n"
@@ -2213,6 +2743,7 @@ msgstr ""
"Si no hi ha res per a fer «stage», probablement alguna altra cosa ja ha\n"
"introduït els mateixos canvis; potser voleu ometre aquest pedaç."
+#: builtin/am.c
msgid ""
"You still have unmerged paths in your index.\n"
"You should 'git add' each file with resolved conflicts to mark them as "
@@ -2225,13 +2756,16 @@ msgstr ""
"Podeu executar «git rm» en un fitxer per a acceptar «suprimit per ells» pel "
"fitxer."
+#: builtin/am.c builtin/reset.c
#, c-format
msgid "Could not parse object '%s'."
msgstr "No s'ha pogut analitzar l'objecte «%s»."
+#: builtin/am.c
msgid "failed to clean index"
msgstr "s'ha produït un error en netejar l'índex"
+#: builtin/am.c
msgid ""
"You seem to have moved HEAD since the last 'am' failure.\n"
"Not rewinding to ORIG_HEAD"
@@ -2239,109 +2773,155 @@ msgstr ""
"Sembla que heu mogut HEAD després de l'última fallada de «am».\n"
"No s'està rebobinant a ORIG_HEAD"
+#: builtin/am.c builtin/bisect.c builtin/tag.c worktree.c
#, c-format
msgid "failed to read '%s'"
msgstr "s'ha produït un error en llegir «%s»"
+#: builtin/am.c
msgid "git am [<options>] [(<mbox> | <Maildir>)...]"
msgstr "git am [<opcions>] [(<bústia> | <directori-de-correu>)...]"
+#: builtin/am.c
msgid "git am [<options>] (--continue | --skip | --abort)"
msgstr "git am [<opcions>] (--continue | --skip | --abort)"
+#: builtin/am.c
msgid "run interactively"
msgstr "executa interactivament"
+#: builtin/am.c
msgid "bypass pre-applypatch and applypatch-msg hooks"
msgstr "evita els lligams pre-applypatch i applypatch-msg"
+#: builtin/am.c
msgid "historical option -- no-op"
msgstr "opció històrica -- no-op"
+#: builtin/am.c
msgid "allow fall back on 3way merging if needed"
msgstr "permet retrocedir a una fusió de 3 vies si és necessari"
+#: builtin/am.c builtin/init-db.c builtin/prune-packed.c builtin/repack.c
+#: builtin/stash.c
msgid "be quiet"
msgstr "silenciós"
+#: builtin/am.c
msgid "add a Signed-off-by trailer to the commit message"
msgstr "afegeix un «trailer» tipus «Signed-off-by» al missatge de comissió"
+#: builtin/am.c
msgid "recode into utf8 (default)"
msgstr "recodifica en utf8 (per defecte)"
+#: builtin/am.c
msgid "pass -k flag to git-mailinfo"
msgstr "passa l'indicador -k a git-mailinfo"
+#: builtin/am.c
msgid "pass -b flag to git-mailinfo"
msgstr "passa l'indicador -b a git-mailinfo"
+#: builtin/am.c
msgid "pass -m flag to git-mailinfo"
msgstr "passa l'indicador -m a git-mailinfo"
+#: builtin/am.c
msgid "pass --keep-cr flag to git-mailsplit for mbox format"
msgstr "passa l'indicador --keep-cr a git-mailsplit per al format mbox"
+#: builtin/am.c
msgid "strip everything before a scissors line"
msgstr "elimina tot abans d'una línia de tisores"
+#: builtin/am.c
msgid "pass it through git-mailinfo"
msgstr "passa-ho a través del git-mailinfo"
+#: builtin/am.c
msgid "pass it through git-apply"
msgstr "passa-ho a través de git-apply"
+#: builtin/am.c builtin/commit.c builtin/fmt-merge-msg.c builtin/grep.c
+#: builtin/merge.c builtin/pull.c builtin/rebase.c builtin/repack.c
+#: builtin/show-branch.c builtin/show-ref.c builtin/tag.c parse-options.h
msgid "n"
msgstr "n"
+#: builtin/am.c builtin/branch.c builtin/bugreport.c builtin/cat-file.c
+#: builtin/clone.c builtin/diagnose.c builtin/for-each-ref.c builtin/init-db.c
+#: builtin/ls-files.c builtin/ls-tree.c builtin/refs.c builtin/replace.c
+#: builtin/submodule--helper.c builtin/tag.c builtin/verify-tag.c
msgid "format"
msgstr "format"
+#: builtin/am.c
msgid "format the patch(es) are in"
msgstr "el format en el qual estan els pedaços"
+#: builtin/am.c
msgid "override error message when patch failure occurs"
msgstr "sobreescriu el missatge d'error si falla l'aplicació del pedaç"
+#: builtin/am.c
msgid "continue applying patches after resolving a conflict"
msgstr "segueix aplicant pedaços després de resoldre un conflicte"
+#: builtin/am.c
msgid "synonyms for --continue"
msgstr "sinònims de --continue"
+#: builtin/am.c
msgid "skip the current patch"
msgstr "omet el pedaç actual"
+#: builtin/am.c
msgid "restore the original branch and abort the patching operation"
msgstr "restaura la branca original i interromp l'operació d'apedaçament"
+#: builtin/am.c
msgid "abort the patching operation but keep HEAD where it is"
msgstr "interromp l'operació d'apedaçament però manté HEAD on és"
+#: builtin/am.c
msgid "show the patch being applied"
msgstr "mostra el pedaç que s'està aplicant"
+#: builtin/am.c
+msgid "try to apply current patch again"
+msgstr "intenta aplicar el pedaç actual de nou"
+
+#: builtin/am.c
msgid "record the empty patch as an empty commit"
msgstr "registra el pedaç buit com una comissió buida"
+#: builtin/am.c
msgid "lie about committer date"
msgstr "menteix sobre la data del comitent"
+#: builtin/am.c
msgid "use current timestamp for author date"
msgstr "usa la marca de temps actual per a la data d'autor"
+#: builtin/am.c builtin/commit-tree.c builtin/commit.c builtin/merge.c
+#: builtin/pull.c builtin/rebase.c builtin/revert.c builtin/tag.c
msgid "key-id"
msgstr "ID de clau"
+#: builtin/am.c builtin/rebase.c
msgid "GPG-sign commits"
msgstr "signa les comissions amb GPG"
+#: builtin/am.c
msgid "how to handle empty patches"
msgstr "com gestionar les comissions buides"
+#: builtin/am.c
msgid "(internal use for git-rebase)"
msgstr "(ús intern per a git-rebase)"
+#: builtin/am.c
msgid ""
"The -b/--binary option has been a no-op for long time, and\n"
"it will be removed. Please do not use it anymore."
@@ -2349,15 +2929,18 @@ msgstr ""
"Fa molt que l'opció -b/--binary no fa res, i\n"
"s'eliminarà. No l'useu més."
+#: builtin/am.c
msgid "failed to read the index"
msgstr "s'ha produït un error en llegir l'índex"
+#: builtin/am.c
#, c-format
msgid "previous rebase directory %s still exists but mbox given."
msgstr ""
"un directori de «rebase» anterior %s encara existeix però s'ha donat una "
"bústia."
+#: builtin/am.c
#, c-format
msgid ""
"Stray %s directory found.\n"
@@ -2366,34 +2949,40 @@ msgstr ""
"S'ha trobat un directori %s extraviat.\n"
"Useu «git am --abort» per a eliminar-lo."
+#: builtin/am.c
msgid "Resolve operation not in progress, we are not resuming."
msgstr "Una operació de resolució no està en curs; no reprenem."
+#: builtin/am.c
msgid "interactive mode requires patches on the command line"
msgstr "el mode interactiu requereix pedaços a la línia d'ordres"
+#: builtin/apply.c
msgid "git apply [<options>] [<patch>...]"
msgstr "git apply [<opcions>] [<pedaç>...]"
+#: builtin/archive.c diagnose.c
msgid "could not redirect output"
msgstr "no s'ha pogut redirigir la sortida"
-msgid "git archive: Remote with no URL"
-msgstr "git archive: Remot sense URL"
-
+#: builtin/archive.c
msgid "git archive: expected ACK/NAK, got a flush packet"
msgstr "git archive: s'esperava ACK/NAK, s'ha rebut un paquet de buidatge"
+#: builtin/archive.c
#, c-format
msgid "git archive: NACK %s"
msgstr "git archive: %s NACK"
+#: builtin/archive.c
msgid "git archive: protocol error"
msgstr "git archive: error de protocol"
+#: builtin/archive.c
msgid "git archive: expected a flush"
msgstr "git archive: s'esperava una neteja"
+#: builtin/bisect.c
msgid ""
"git bisect start [--term-(new|bad)=<term> --term-(old|good)=<term>] [--no-"
"checkout] [--first-parent] [<bad> [<good>...]] [--] [<pathspec>...]"
@@ -2401,56 +2990,71 @@ msgstr ""
"git bisect start [--term-(new|bad)=<term> --term-(old|good)=<term>] [--no-"
"checkout] [--first-parent] [<bad> [<good>...]] [--] [<pathspec>...]"
+#: builtin/bisect.c
msgid "git bisect (good|bad) [<rev>...]"
-msgstr "git bisect (good|bad) [<rev>...]"
+msgstr "git bisect (good|bad) [<revisió>...]"
+#: builtin/bisect.c
msgid "git bisect skip [(<rev>|<range>)...]"
-msgstr "git bisect skip [(<rev>|<range>)...]"
+msgstr "git bisect skip [(<revisió>|<rang>)...]"
+#: builtin/bisect.c
msgid "git bisect reset [<commit>]"
msgstr "git bisect reset [<comissió>]"
+#: builtin/bisect.c
msgid "git bisect replay <logfile>"
-msgstr "git bisect replay <logfile>"
+msgstr "git bisect replay "
+#: builtin/bisect.c
msgid "git bisect run <cmd> [<arg>...]"
-msgstr "git bisect run <cmd> [<arg>...]"
+msgstr "git bisect run <ordre> [<arg>...]"
+#: builtin/bisect.c
#, c-format
msgid "cannot open file '%s' in mode '%s'"
msgstr "no es pot obrir el fitxer «%s» en mode «%s»"
+#: builtin/bisect.c
#, c-format
msgid "could not write to file '%s'"
msgstr "no s'ha pogut escriure el fitxer «%s»"
+#: builtin/bisect.c
#, c-format
msgid "cannot open file '%s' for reading"
msgstr "no es pot obrir «%s» per a lectura"
+#: builtin/bisect.c
#, c-format
msgid "'%s' is not a valid term"
msgstr "«%s» no és un terme vàlid"
+#: builtin/bisect.c
#, c-format
msgid "can't use the builtin command '%s' as a term"
msgstr "no es pot usar l'ordre interna «%s» com a terme"
+#: builtin/bisect.c
#, c-format
msgid "can't change the meaning of the term '%s'"
msgstr "no es pot canviar el significat del terme «%s»"
+#: builtin/bisect.c
msgid "please use two different terms"
msgstr "useu dos termes diferents"
+#: builtin/bisect.c
#, c-format
msgid "We are not bisecting.\n"
msgstr "No estem bisecant.\n"
+#: builtin/bisect.c
#, c-format
msgid "'%s' is not a valid commit"
msgstr "«%s» no és una comissió vàlida"
+#: builtin/bisect.c
#, c-format
msgid ""
"could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
@@ -2458,22 +3062,27 @@ msgstr ""
"no s'ha pogut agafar la HEAD original «%s». Proveu «git bisect reset "
"<comissió>»."
+#: builtin/bisect.c
#, c-format
msgid "Bad bisect_write argument: %s"
msgstr "Argument «bisect_write» incorrecte: %s"
+#: builtin/bisect.c
#, c-format
msgid "couldn't get the oid of the rev '%s'"
msgstr "no s'ha pogut obtenir l'oid de la revisió «%s»"
+#: builtin/bisect.c
#, c-format
msgid "couldn't open the file '%s'"
msgstr "no s'ha pogut obrir el fitxer «%s»"
+#: builtin/bisect.c
#, c-format
msgid "Invalid command: you're currently in a %s/%s bisect"
msgstr "Ordre no vàlida: esteu actualment en una bisecció %s/%s"
+#: builtin/bisect.c
#, c-format
msgid ""
"You need to give me at least one %s and %s revision.\n"
@@ -2482,6 +3091,7 @@ msgstr ""
"Heu de donar com a mínim un %s i una revisió %s.\n"
"Podeu usar «git bisect %s» i «git bisect %s» per a això."
+#: builtin/bisect.c
#, c-format
msgid ""
"You need to start by \"git bisect start\".\n"
@@ -2492,6 +3102,7 @@ msgstr ""
"Heu de donar com a mínim un %s i una revisió %s.\n"
"Podeu usar «git bisect %s» i «git bisect %s» per a això."
+#: builtin/bisect.c
#, c-format
msgid "bisecting only with a %s commit"
msgstr "bisecant amb només una comissió %s"
@@ -2500,12 +3111,15 @@ msgstr "bisecant amb només una comissió %s"
#. translation. The program will only accept English input
#. at this point.
#.
+#: builtin/bisect.c
msgid "Are you sure [Y/n]? "
msgstr "N'esteu segur [Y/n]? "
+#: builtin/bisect.c
msgid "status: waiting for both good and bad commits\n"
msgstr "estat: s'estan esperant les comissions bones i dolentes\n"
+#: builtin/bisect.c
#, c-format
msgid "status: waiting for bad commit, %d good commit known\n"
msgid_plural "status: waiting for bad commit, %d good commits known\n"
@@ -2515,13 +3129,16 @@ msgstr[1] ""
"estat: s'està esperant una comissió incorrecta, es coneixen %d comissions "
"bones\n"
+#: builtin/bisect.c
msgid "status: waiting for good commit(s), bad commit known\n"
msgstr ""
"estat: s'està esperant comissions bones, es coneix una comissió incorrecta\n"
+#: builtin/bisect.c
msgid "no terms defined"
msgstr "cap terme definit"
+#: builtin/bisect.c
#, c-format
msgid ""
"Your current terms are %s for the old state\n"
@@ -2530,6 +3147,7 @@ msgstr ""
"Els termes actuals són %s per a l'estat antic\n"
"i %s per al nou estat.\n"
+#: builtin/bisect.c
#, c-format
msgid ""
"invalid argument %s for 'git bisect terms'.\n"
@@ -2538,39 +3156,45 @@ msgstr ""
"argument no vàlid %s per a «git bisect terms».\n"
"Les opcions admeses són: --term-good|--term-old i --term-bad|--term-new."
-msgid "revision walk setup failed\n"
-msgstr "la configuració del recorregut de revisions ha fallat\n"
-
+#: builtin/bisect.c
#, c-format
msgid "could not open '%s' for appending"
msgstr "no s'ha pogut obrir «%s» per a afegir-hi"
+#: builtin/bisect.c
msgid "'' is not a valid term"
msgstr "«%s» no és un terme vàlid"
+#: builtin/bisect.c
#, c-format
msgid "unrecognized option: '%s'"
msgstr "opció no reconeguda: «%s»"
+#: builtin/bisect.c
#, c-format
msgid "'%s' does not appear to be a valid revision"
msgstr "«%s» no sembla ser una revisió vàlida"
+#: builtin/bisect.c
msgid "bad HEAD - I need a HEAD"
msgstr "HEAD incorrecte - cal una HEAD"
+#: builtin/bisect.c
#, c-format
msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
msgstr ""
"l'agafament de «%s» ha fallat. Proveu «git bisect start <branca-vàlida>»."
+#: builtin/bisect.c
msgid "bad HEAD - strange symbolic ref"
msgstr "HEAD incorrecte - referència simbòlica estranya"
+#: builtin/bisect.c
#, c-format
msgid "invalid ref: '%s'"
msgstr "referència no és vàlida: «%s»"
+#: builtin/bisect.c
msgid "You need to start by \"git bisect start\"\n"
msgstr "Cal començar per «git bisect start»\n"
@@ -2578,215 +3202,278 @@ msgstr "Cal començar per «git bisect start»\n"
#. translation. The program will only accept English input
#. at this point.
#.
+#: builtin/bisect.c
msgid "Do you want me to do it for you [Y/n]? "
msgstr "Voleu que ho faci per vostè [Y/n]? "
+#: builtin/bisect.c
msgid "Please call `--bisect-state` with at least one argument"
msgstr "Executeu «--bisect-state» amb almenys un argument"
+#: builtin/bisect.c
#, c-format
msgid "'git bisect %s' can take only one argument."
msgstr "«git bisect %s» només pot acceptar un argument."
+#: builtin/bisect.c
#, c-format
msgid "Bad rev input: %s"
msgstr "Entrada amb revisió errònia: %s"
+#: builtin/bisect.c
#, c-format
msgid "Bad rev input (not a commit): %s"
msgstr "Entrada de revisió errònia (no és una comissió): %s"
+#: builtin/bisect.c
msgid "We are not bisecting."
msgstr "No estem bisecant."
+#: builtin/bisect.c
#, c-format
msgid "'%s'?? what are you talking about?"
msgstr "«%s»? Què voleu dir?"
+#: builtin/bisect.c
#, c-format
msgid "cannot read file '%s' for replaying"
msgstr "no es pot llegir «%s» per a reproducció"
+#: builtin/bisect.c
#, c-format
msgid "running %s\n"
msgstr "s'està executant %s\n"
+#: builtin/bisect.c
msgid "bisect run failed: no command provided."
msgstr "ha fallat l'execució de bisect: no s'ha proporcionat cap ordre."
+#: builtin/bisect.c
#, c-format
msgid "unable to verify %s on good revision"
msgstr "no s'ha pogut verificar «%s» en una bona revisió"
+#: builtin/bisect.c
#, c-format
msgid "bogus exit code %d for good revision"
msgstr "codi d'error de sortida %d per a una bona revisió"
+#: builtin/bisect.c
#, c-format
msgid "bisect run failed: exit code %d from %s is < 0 or >= 128"
msgstr ""
"l'execució de la de bisecció ha fallat: codi de sortida %d de %s és < 0 o >= "
"128"
+#: builtin/bisect.c
#, c-format
msgid "cannot open file '%s' for writing"
msgstr "no es pot obrir «%s» per a escriptura"
+#: builtin/bisect.c
msgid "bisect run cannot continue any more"
msgstr "l'execució de la bisecció no pot continuar més"
+#: builtin/bisect.c
msgid "bisect run success"
msgstr "execució de bisecció amb èxit"
+#: builtin/bisect.c
msgid "bisect found first bad commit"
msgstr "la bisecció ha trobat una primera comissió errònia"
+#: builtin/bisect.c
#, c-format
msgid "bisect run failed: 'git bisect %s' exited with error code %d"
msgstr ""
"ha fallat l'execució del bisect: «git bisect %s» ha sortit amb el codi "
"d'error %d"
+#: builtin/bisect.c
#, c-format
msgid "'%s' requires either no argument or a commit"
msgstr "«%s» no requereix cap argument ni comissió"
+#: builtin/bisect.c
#, c-format
msgid "'%s' requires 0 or 1 argument"
msgstr "%s requereix 0 o 1 arguments"
+#: builtin/bisect.c
#, c-format
msgid "'%s' requires 0 arguments"
msgstr "«%s» requereix 0 arguments"
+#: builtin/bisect.c
msgid "no logfile given"
msgstr "no s'ha donat cap fitxer de registre"
+#: builtin/bisect.c
#, c-format
msgid "'%s' failed: no command provided."
msgstr "«%s» ha fallat: no s'ha proporcionat cap ordre."
+#: builtin/bisect.c
msgid "need a command"
msgstr "cal una subordre"
+#: builtin/bisect.c builtin/cat-file.c
#, c-format
msgid "unknown command: '%s'"
msgstr "ordre desconeguda: «%s»"
+#: builtin/blame.c
msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
-msgstr "git blame [<opcions>] [<opcions-de-revisió>] [<revisió>] [--] fitxer"
+msgstr "git blame [<opcions>] [<opcions-revisió>] [<revisió>] [--] fitxer"
+#: builtin/blame.c
msgid "git annotate [<options>] [<rev-opts>] [<rev>] [--] <file>"
-msgstr "git annotate [<opcions>] [<rev-opts>] [<rev>] [--] <fitxer>"
+msgstr "git annotate [<opcions>] [<opcions-revisió>] [<rev>] [--] <fitxer>"
+#: builtin/blame.c
msgid "<rev-opts> are documented in git-rev-list(1)"
-msgstr "es documenten les <opcions-de-revisió> en git-rev-list(1)"
+msgstr "es documenten les <opcions-revisió> en git-rev-list(1)"
+#: builtin/blame.c
#, c-format
msgid "expecting a color: %s"
msgstr "s'esperava un color: %s"
+#: builtin/blame.c
msgid "must end with a color"
msgstr "ha d'acabar amb un color"
+#: builtin/blame.c
#, c-format
msgid "cannot find revision %s to ignore"
msgstr "no s'ha pogut trobar la revisió %s a ignorar"
+#: builtin/blame.c
msgid "show blame entries as we find them, incrementally"
msgstr "mostra les entrades «blame» mentre les trobem, incrementalment"
+#: builtin/blame.c
msgid "do not show object names of boundary commits (Default: off)"
msgstr ""
"no mostris els noms d'objectes de les comissions de frontera (per defecte: "
"desactivat)"
+#: builtin/blame.c
msgid "do not treat root commits as boundaries (Default: off)"
msgstr ""
"no tractis les comissions arrel com de frontera (per defecte: desactivat)"
+#: builtin/blame.c
msgid "show work cost statistics"
msgstr "mostra les estadístiques del cost de treball"
+#: builtin/blame.c builtin/checkout.c builtin/clone.c builtin/commit-graph.c
+#: builtin/fetch.c builtin/merge.c builtin/multi-pack-index.c builtin/pull.c
+#: builtin/push.c builtin/remote.c builtin/send-pack.c
msgid "force progress reporting"
msgstr "força l'informe de progrés"
+#: builtin/blame.c
msgid "show output score for blame entries"
msgstr "mostra la puntuació de sortida de les entrades «blame»"
+#: builtin/blame.c
msgid "show original filename (Default: auto)"
msgstr "mostra el nom de fitxer original (per defecte: automàtic)"
+#: builtin/blame.c
msgid "show original linenumber (Default: off)"
msgstr "mostra el número de línia original (per defecte: desactivat)"
+#: builtin/blame.c
msgid "show in a format designed for machine consumption"
msgstr "presenta en un format dissenyat per a ser consumit per una màquina"
+#: builtin/blame.c
msgid "show porcelain format with per-line commit information"
msgstr "mostra en format de porcellana amb informació de comissió per línia"
+#: builtin/blame.c
msgid "use the same output mode as git-annotate (Default: off)"
msgstr ""
"usa el mateix mode de sortida que git-annotate (per defecte: desactivat)"
+#: builtin/blame.c
msgid "show raw timestamp (Default: off)"
msgstr "mostra la marca de temps en cru (per defecte: desactivat)"
+#: builtin/blame.c
msgid "show long commit SHA1 (Default: off)"
msgstr "mostra l'SHA1 de la comissió en format llarg (per defecte: desactivat)"
+#: builtin/blame.c
msgid "suppress author name and timestamp (Default: off)"
msgstr "omet el nom d'autor i la marca de temps (per defecte: desactivat)"
+#: builtin/blame.c
msgid "show author email instead of name (Default: off)"
msgstr ""
"mostra el correu electrònic de l'autor en comptes del nom (per defecte: "
"desactivat)"
+#: builtin/blame.c
msgid "ignore whitespace differences"
msgstr "ignora les diferències d'espai en blanc"
+#: builtin/blame.c builtin/log.c
msgid "rev"
msgstr "rev"
+#: builtin/blame.c
msgid "ignore <rev> when blaming"
-msgstr "ignora <rev> en fer «blame»"
+msgstr "ignora ñ- en fer «blame»"
+#: builtin/blame.c
msgid "ignore revisions from <file>"
msgstr "ignora les revisions de <fitxer>"
+#: builtin/blame.c
msgid "color redundant metadata from previous line differently"
msgstr ""
"acoloreix les metadades redundants de la línia anterior de manera diferent"
+#: builtin/blame.c
msgid "color lines by age"
msgstr "acoloreix les línies per antiguitat"
+#: builtin/blame.c
msgid "spend extra cycles to find better match"
msgstr "gasta cicles extres per a trobar una coincidència millor"
+#: builtin/blame.c
msgid "use revisions from <file> instead of calling git-rev-list"
msgstr "usa les revisions de <fitxer> en lloc d'invocar git-rev-list"
+#: builtin/blame.c
msgid "use <file>'s contents as the final image"
msgstr "usa els continguts de <fitxer> com a la imatge final"
+#: builtin/blame.c
msgid "score"
msgstr "puntuació"
+#: builtin/blame.c
msgid "find line copies within and across files"
msgstr "troba còpies de línia dins i a través dels fitxers"
+#: builtin/blame.c
msgid "find line movements within and across files"
msgstr "troba moviments de línia dins i a través dels fitxers"
+#: builtin/blame.c
msgid "range"
msgstr "rang"
+#: builtin/blame.c
msgid "process only line range <start>,<end> or function :<funcname>"
-msgstr "processa només el rang <start>,<end> o la funció :<funcname>"
+msgstr "processa només el rang <inici>,<final> o la funció :<nom-funció>"
+#: builtin/blame.c
msgid "--progress can't be used with --incremental or porcelain formats"
msgstr ""
"no es pot usar --progress amb els formats --incremental o de porcellana"
@@ -2799,21 +3486,26 @@ msgstr ""
#. your language may need more or fewer display
#. columns.
#.
+#: builtin/blame.c
msgid "4 years, 11 months ago"
msgstr "fa 4 anys i 11 mesos"
+#: builtin/blame.c
#, c-format
msgid "file %s has only %lu line"
msgid_plural "file %s has only %lu lines"
msgstr[0] "el fitxer %s té només %lu línia"
msgstr[1] "el fitxer %s té només %lu línies"
+#: builtin/blame.c
msgid "Blaming lines"
msgstr "S'està fent un «blame»"
+#: builtin/branch.c
msgid "git branch [<options>] [-r | -a] [--merged] [--no-merged]"
msgstr "git branch [<opcions>] [-r | -a] [--merged | --no-merged]"
+#: builtin/branch.c
msgid ""
"git branch [<options>] [-f] [--recurse-submodules] <branch-name> [<start-"
"point>]"
@@ -2821,24 +3513,31 @@ msgstr ""
"git branch [<opcions>] [-f] [--recurse-submodules] <branch-name> [<start-"
"point>]"
+#: builtin/branch.c
msgid "git branch [<options>] [-l] [<pattern>...]"
msgstr "git branch [<opcions>] [-l] [<patró>...]"
+#: builtin/branch.c
msgid "git branch [<options>] [-r] (-d | -D) <branch-name>..."
msgstr "git branch [<opcions>] [-r] (-d | -D) <nom-de-branca>..."
+#: builtin/branch.c
msgid "git branch [<options>] (-m | -M) [<old-branch>] <new-branch>"
msgstr "git branch [<opcions>] (-m | -M) [<branca-antiga>] <branca-nova>"
+#: builtin/branch.c
msgid "git branch [<options>] (-c | -C) [<old-branch>] <new-branch>"
msgstr "git branch [<opcions>] (-c | -C) [<branca-antiga>] <branca-nova>"
+#: builtin/branch.c
msgid "git branch [<options>] [-r | -a] [--points-at]"
msgstr "git branch [<opcions>] [-r | -a] [--points-at]"
+#: builtin/branch.c
msgid "git branch [<options>] [-r | -a] [--format]"
msgstr "git branch [<opcions>] [-r | -a] [--format]"
+#: builtin/branch.c
#, c-format
msgid ""
"deleting branch '%s' that has been merged to\n"
@@ -2847,6 +3546,7 @@ msgstr ""
"s'està suprimint la branca «%s» que s'ha fusionat a\n"
" «%s», però encara no s'ha fusionat a HEAD"
+#: builtin/branch.c
#, c-format
msgid ""
"not deleting branch '%s' that is not yet merged to\n"
@@ -2855,33 +3555,41 @@ msgstr ""
"no s'està suprimint la branca «%s» que encara no s'ha fusionat a\n"
" «%s», encara que s'hagi fusionat a HEAD"
+#: builtin/branch.c
#, c-format
msgid "couldn't look up commit object for '%s'"
msgstr "no s'ha pogut cercar l'objecte de comissió per a «%s»"
+#: builtin/branch.c
#, c-format
msgid "the branch '%s' is not fully merged"
msgstr "la branca «%s» no està completament fusionada"
+#: builtin/branch.c
#, c-format
msgid "If you are sure you want to delete it, run 'git branch -D %s'"
msgstr "Si esteu segur que voleu suprimir-la, executeu «git branch -D %s»"
+#: builtin/branch.c
msgid "update of config-file failed"
msgstr "ha fallat l'actualització del fitxer de configuració"
+#: builtin/branch.c
msgid "cannot use -a with -d"
msgstr "no es pot usar -a amb -d"
+#: builtin/branch.c
#, c-format
msgid "cannot delete branch '%s' used by worktree at '%s'"
msgstr ""
"no es pot suprimir la branca «%s» utilitzada per l'arbre de treball a «%s»"
+#: builtin/branch.c
#, c-format
msgid "remote-tracking branch '%s' not found"
msgstr "no s'ha trobat la branca de seguiment remot «%s»"
+#: builtin/branch.c
#, c-format
msgid ""
"branch '%s' not found.\n"
@@ -2890,198 +3598,257 @@ msgstr ""
"no s'ha trobat la branca «%s».\n"
"Us heu oblidat de --remote?"
+#: builtin/branch.c
#, c-format
msgid "branch '%s' not found"
msgstr "no s'ha trobat la branca «%s»"
+#: builtin/branch.c
#, c-format
msgid "Deleted remote-tracking branch %s (was %s).\n"
msgstr "S'ha suprimit la branca amb seguiment remot %s (era %s).\n"
+#: builtin/branch.c
#, c-format
msgid "Deleted branch %s (was %s).\n"
msgstr "S'ha suprimit la branca %s (era %s).\n"
+#: builtin/branch.c builtin/tag.c
msgid "unable to parse format string"
msgstr "no s'ha pogut analitzar la cadena de format"
+#: builtin/branch.c
msgid "could not resolve HEAD"
msgstr "no s'ha pogut resoldre HEAD"
+#: builtin/branch.c
#, c-format
msgid "HEAD (%s) points outside of refs/heads/"
msgstr "HEAD (%s) apunta fora de refs/heads/"
+#: builtin/branch.c
#, c-format
msgid "branch %s is being rebased at %s"
msgstr "a la branca %s se li està fent a «rebase» a %s"
+#: builtin/branch.c
#, c-format
msgid "branch %s is being bisected at %s"
msgstr "la branca %s s'està bisecant a %s"
+#: builtin/branch.c
#, c-format
msgid "HEAD of working tree %s is not updated"
msgstr "HEAD de l'arbre de treball %s no està actualitzat"
+#: builtin/branch.c
#, c-format
msgid "invalid branch name: '%s'"
msgstr "el nom de la branca no és vàlid: «%s»"
+#: builtin/branch.c
#, c-format
msgid "no commit on branch '%s' yet"
msgstr "encara no hi ha cap comissió a la branca «%s»"
+#: builtin/branch.c
#, c-format
msgid "no branch named '%s'"
msgstr "no hi ha cap branca anomenada «%s»"
+#: builtin/branch.c
msgid "branch rename failed"
msgstr "ha fallat el canvi de nom de la branca"
+#: builtin/branch.c
msgid "branch copy failed"
msgstr "ha fallat la còpia de la branca"
+#: builtin/branch.c
#, c-format
msgid "created a copy of a misnamed branch '%s'"
msgstr "s'ha creat una còpia d'una branca mal anomenada «%s»"
+#: builtin/branch.c
#, c-format
msgid "renamed a misnamed branch '%s' away"
msgstr "s'ha canviat el nom d'una branca «%s» mal anomenada"
+#: builtin/branch.c
#, c-format
msgid "branch renamed to %s, but HEAD is not updated"
msgstr "s'ha canviat el nom de la branca a %s, però HEAD no s'ha actualitzat"
+#: builtin/branch.c
msgid "branch is renamed, but update of config-file failed"
msgstr ""
"s'ha canviat el nom de la branca, però ha fallat l'actualització del fitxer "
"de configuració"
+#: builtin/branch.c
msgid "branch is copied, but update of config-file failed"
msgstr ""
"s'ha copiat la branca, però ha fallat l'actualització del fitxer de "
"configuració"
+#: builtin/branch.c
#, c-format
msgid ""
"Please edit the description for the branch\n"
" %s\n"
-"Lines starting with '%c' will be stripped.\n"
+"Lines starting with '%s' will be stripped.\n"
msgstr ""
"Editeu la descripció de la branca\n"
" %s\n"
-"S'eliminaran les línies que comencin amb «%c».\n"
+"S'eliminaran les línies que comencin amb «%s».\n"
+"\"\n"
+#: builtin/branch.c
msgid "Generic options"
msgstr "Opcions genèriques"
+#: builtin/branch.c
msgid "show hash and subject, give twice for upstream branch"
msgstr "mostra el hash i l'assumpte, useu-lo dues vegades per a la branca font"
+#: builtin/branch.c
msgid "suppress informational messages"
msgstr "omet els missatges informatius"
+#: builtin/branch.c builtin/checkout.c builtin/submodule--helper.c
msgid "set branch tracking configuration"
msgstr "estableix la configuració del seguiment de la branca"
+#: builtin/branch.c
msgid "do not use"
msgstr "no usar"
+#: builtin/branch.c
msgid "upstream"
msgstr "font"
+#: builtin/branch.c
msgid "change the upstream info"
msgstr "canvia la informació de font"
+#: builtin/branch.c
msgid "unset the upstream info"
msgstr "treu la informació de la font"
+#: builtin/branch.c
msgid "use colored output"
msgstr "usa sortida amb colors"
+#: builtin/branch.c
msgid "act on remote-tracking branches"
msgstr "actua en branques amb seguiment remot"
+#: builtin/branch.c
msgid "print only branches that contain the commit"
msgstr "imprimeix només les branques que continguin la comissió"
+#: builtin/branch.c
msgid "print only branches that don't contain the commit"
msgstr "imprimeix només les branques que no continguin la comissió"
+#: builtin/branch.c
msgid "Specific git-branch actions:"
msgstr "Accions de git-branch específiques:"
+#: builtin/branch.c
msgid "list both remote-tracking and local branches"
msgstr "llista les branques amb seguiment remot i les locals"
+#: builtin/branch.c
msgid "delete fully merged branch"
msgstr "suprimeix la branca si està completament fusionada"
+#: builtin/branch.c
msgid "delete branch (even if not merged)"
msgstr "suprimeix la branca (encara que no estigui fusionada)"
+#: builtin/branch.c
msgid "move/rename a branch and its reflog"
-msgstr "mou/canvia de nom una branca i el seu registre de referència"
+msgstr "mou/canvia de nom una branca i el seu registre de referències"
+#: builtin/branch.c
msgid "move/rename a branch, even if target exists"
msgstr "mou/canvia de nom una branca, encara que el destí existeixi"
+#: builtin/branch.c builtin/for-each-ref.c builtin/tag.c
msgid "do not output a newline after empty formatted refs"
msgstr "no emetis cap línia nova després de refs amb format buit"
+#: builtin/branch.c
msgid "copy a branch and its reflog"
-msgstr "copia una branca i el seu registre de referència"
+msgstr "copia una branca i el seu registre de referències"
+#: builtin/branch.c
msgid "copy a branch, even if target exists"
msgstr "copia una branca, encara que el destí existeixi"
+#: builtin/branch.c
msgid "list branch names"
msgstr "llista els noms de branca"
+#: builtin/branch.c
msgid "show current branch name"
msgstr "mostra el nom de la branca actual"
+#: builtin/branch.c builtin/submodule--helper.c
msgid "create the branch's reflog"
-msgstr "crea el registre de referència de la branca"
+msgstr "crea el registre de referències de la branca"
+#: builtin/branch.c
msgid "edit the description for the branch"
msgstr "edita la descripció de la branca"
+#: builtin/branch.c
msgid "force creation, move/rename, deletion"
msgstr "força creació, moviment/canvi de nom, supressió"
+#: builtin/branch.c
msgid "print only branches that are merged"
msgstr "imprimeix només les branques que s'han fusionat"
+#: builtin/branch.c
msgid "print only branches that are not merged"
msgstr "imprimeix només les branques que no s'han fusionat"
+#: builtin/branch.c
msgid "list branches in columns"
msgstr "llista les branques en columnes"
+#: builtin/branch.c builtin/for-each-ref.c builtin/notes.c builtin/tag.c
msgid "object"
msgstr "objecte"
+#: builtin/branch.c
msgid "print only branches of the object"
msgstr "imprimeix només les branques de l'objecte"
+#: builtin/branch.c builtin/for-each-ref.c builtin/tag.c
msgid "sorting and filtering are case insensitive"
msgstr "ordenació i filtratge distingeixen entre majúscules i minúscules"
+#: builtin/branch.c builtin/ls-files.c
msgid "recurse through submodules"
msgstr "inclou recursivament els submòduls"
+#: builtin/branch.c builtin/for-each-ref.c builtin/ls-files.c builtin/ls-tree.c
+#: builtin/tag.c builtin/verify-tag.c
msgid "format to use for the output"
msgstr "format a usar en la sortida"
+#: builtin/branch.c
msgid "failed to resolve HEAD as a valid ref"
msgstr "no s'ha pogut resoldre HEAD com a referència vàlida"
+#: builtin/branch.c builtin/clone.c
msgid "HEAD not found below refs/heads!"
msgstr "HEAD no trobat sota refs/heads!"
+#: builtin/branch.c
msgid ""
"branch with --recurse-submodules can only be used if submodule."
"propagateBranches is enabled"
@@ -3089,58 +3856,74 @@ msgstr ""
"la branca amb --recurse-submodules només es pot utilitzar si submodule."
"propagateBranches està habilitat"
+#: builtin/branch.c
msgid "--recurse-submodules can only be used to create branches"
msgstr "--recurse-submodules només es pot utilitzar per a crear branques"
+#: builtin/branch.c
msgid "branch name required"
msgstr "cal el nom de branca"
+#: builtin/branch.c
msgid "cannot give description to detached HEAD"
msgstr "no s'ha pogut donar la descripció al HEAD separat"
+#: builtin/branch.c
msgid "cannot edit description of more than one branch"
msgstr "no es pot editar la descripció de més d'una branca"
+#: builtin/branch.c
msgid "cannot copy the current branch while not on any"
msgstr "no es pot copiar la branca actual mentre no pertanyi a cap"
+#: builtin/branch.c
msgid "cannot rename the current branch while not on any"
msgstr ""
"no s'ha pogut canviar el nom de la branca actual mentre no pertanyi a cap"
+#: builtin/branch.c
msgid "too many branches for a copy operation"
msgstr "hi ha massa branques per a una operació de còpia"
+#: builtin/branch.c
msgid "too many arguments for a rename operation"
msgstr "hi ha massa arguments per a una operació de canvi de nom"
+#: builtin/branch.c
msgid "too many arguments to set new upstream"
msgstr "hi ha massa arguments per a establir una nova font"
+#: builtin/branch.c
#, c-format
msgid ""
"could not set upstream of HEAD to %s when it does not point to any branch"
msgstr ""
"no s'ha pogut configurar la font de HEAD a %s quan no apunta a cap branca"
+#: builtin/branch.c
#, c-format
msgid "no such branch '%s'"
msgstr "no existeix la branca «%s»"
+#: builtin/branch.c
#, c-format
msgid "branch '%s' does not exist"
msgstr "la branca «%s» no existeix"
+#: builtin/branch.c
msgid "too many arguments to unset upstream"
msgstr "hi ha massa arguments per a desassignar la font"
+#: builtin/branch.c
msgid "could not unset upstream of HEAD when it does not point to any branch"
msgstr "no s'ha pogut desassignar la font del HEAD quan no apunta a cap branca"
+#: builtin/branch.c
#, c-format
msgid "branch '%s' has no upstream information"
msgstr "la branca «%s» no té informació de la font"
+#: builtin/branch.c
msgid ""
"the -a, and -r, options to 'git branch' do not take a branch name.\n"
"Did you mean to use: -a|-r --list <pattern>?"
@@ -3148,6 +3931,7 @@ msgstr ""
"les opcions -a, i -r, a «git branch» no prenen un nom de branca.\n"
"Volíeu utilitzar: -a|-r --list <patró>?"
+#: builtin/branch.c
msgid ""
"the '--set-upstream' option is no longer supported. Please use '--track' or "
"'--set-upstream-to' instead"
@@ -3155,30 +3939,39 @@ msgstr ""
"l'opció «--set-upstream» ja no és admesa. Utilitzeu en comptes «--track» o "
"«--set-upstream-to»"
+#: builtin/bugreport.c
msgid "git version:\n"
msgstr "versió de git:\n"
+#: builtin/bugreport.c
#, c-format
msgid "uname() failed with error '%s' (%d)\n"
msgstr "uname() ha fallat amb l'error «%s» (%d)\n"
+#: builtin/bugreport.c
msgid "compiler info: "
msgstr "informació del compilador: "
+#: builtin/bugreport.c
msgid "libc info: "
msgstr "informació de la libc: "
+#: builtin/bugreport.c
msgid "not run from a git repository - no hooks to show\n"
msgstr ""
"no s'està executant en un repositori de git - no hi ha lligams a mostrar\n"
+#: builtin/bugreport.c
msgid ""
-"git bugreport [(-o | --output-directory) <path>] [(-s | --suffix) <format>]\n"
+"git bugreport [(-o | --output-directory) <path>]\n"
+" [(-s | --suffix) <format> | --no-suffix]\n"
" [--diagnose[=<mode>]]"
msgstr ""
-"git bugreport [(-o | --output-directory) <camí>] [(-s | --suffix) <format>]\n"
+"git bugreport [(-o | --output-directory) <path>]\n"
+" [(-s | --suffix) <format> | --no-suffix]\n"
" [--diagnose[=<mode>]]"
+#: builtin/bugreport.c
msgid ""
"Thank you for filling out a Git bug report!\n"
"Please answer the following questions to help us understand your issue.\n"
@@ -3212,46 +4005,59 @@ msgstr ""
"Reviseu la resta de l'informe d'error de sota.\n"
"Podeu eliminar qualsevol línia que vulgueu.\n"
+#: builtin/bugreport.c builtin/commit.c builtin/fast-export.c builtin/rebase.c
+#: parse-options.h
msgid "mode"
msgstr "mode"
+#: builtin/bugreport.c
msgid ""
"create an additional zip archive of detailed diagnostics (default 'stats')"
msgstr ""
"crea un arxiu zip addicional amb diagnòstics detallats (per defecte «stats»)"
+#: builtin/bugreport.c
msgid "specify a destination for the bugreport file(s)"
msgstr "especifiqueu una destinació per al fitxer de l'informe d'error"
+#: builtin/bugreport.c
msgid "specify a strftime format suffix for the filename(s)"
msgstr "especifiqueu un sufix en format strftime per al nom de fitxer"
+#: builtin/bugreport.c
#, c-format
msgid "unknown argument `%s'"
msgstr "argument desconegut «%s»"
+#: builtin/bugreport.c builtin/diagnose.c
#, c-format
msgid "could not create leading directories for '%s'"
msgstr "no s'han pogut crear els directoris principals de «%s»"
+#: builtin/bugreport.c builtin/diagnose.c
#, c-format
msgid "unable to create diagnostics archive %s"
msgstr "no s'ha pogut crear l'arxiu de diagnòstic %s"
+#: builtin/bugreport.c
msgid "System Info"
msgstr "Informació del sistema"
+#: builtin/bugreport.c
msgid "Enabled Hooks"
msgstr "Habilita els lligams"
+#: builtin/bugreport.c
#, c-format
msgid "unable to write to %s"
msgstr "no s'ha pogut escriure a %s"
+#: builtin/bugreport.c
#, c-format
msgid "Created new report at '%s'.\n"
msgstr "S'ha creat un nou informe a «%s».\n"
+#: builtin/bundle.c
msgid ""
"git bundle create [-q | --quiet | --progress]\n"
" [--version=<version>] <file> <git-rev-list-args>"
@@ -3259,83 +4065,112 @@ msgstr ""
"git bundle create [-q | --quiet | --progress]\n"
" [--version=<versió>] <fitxer> <git-rev-list-args>"
+#: builtin/bundle.c
msgid "git bundle verify [-q | --quiet] <file>"
msgstr "git bundle verify [-q | --quiet] <fitxer>"
+#: builtin/bundle.c
msgid "git bundle list-heads <file> [<refname>...]"
-msgstr "git bundle list-heads <fitxer> [<refname>...]"
+msgstr "git bundle list-heads <fitxer> [<nom-referència>...]"
+#: builtin/bundle.c
msgid "git bundle unbundle [--progress] <file> [<refname>...]"
-msgstr "git bundle unbundle [--progress] <fitxer> [<refname>...]"
+msgstr "git bundle unbundle [--progress] <fitxer> [<nom-referència>...]"
+#: builtin/bundle.c
msgid "need a <file> argument"
msgstr "necessita un argument <fitxer>"
+#: builtin/bundle.c builtin/pack-objects.c
msgid "do not show progress meter"
msgstr "no mostris l'indicador de progrés"
+#: builtin/bundle.c builtin/pack-objects.c
msgid "show progress meter"
msgstr "mostra l'indicador de progrés"
+#: builtin/bundle.c
msgid "historical; same as --progress"
msgstr "històric; el mateix que --progress"
+#: builtin/bundle.c
msgid "historical; does nothing"
msgstr "històric; no fa res"
+#: builtin/bundle.c
msgid "specify bundle format version"
msgstr "especifica la versió del format del farcell"
+#: builtin/bundle.c
msgid "Need a repository to create a bundle."
msgstr "Cal un repositori per a crear un farcell."
+#: builtin/bundle.c
msgid "do not show bundle details"
msgstr "no mostris els detalls del farcell"
+#: builtin/bundle.c bundle.c
+msgid "need a repository to verify a bundle"
+msgstr "cal un repositori per a verificar un farcell"
+
+#: builtin/bundle.c
#, c-format
msgid "%s is okay\n"
msgstr "%s està bé\n"
+#: builtin/bundle.c
msgid "Need a repository to unbundle."
msgstr "Cal un repositori per a desfer un farcell."
+#: builtin/bundle.c
msgid "Unbundling objects"
msgstr "S'estan desagrupant objectes"
+#: builtin/cat-file.c merge-recursive.c
#, c-format
msgid "cannot read object %s '%s'"
msgstr "no es pot llegir l'objecte %s «%s»"
+#: builtin/cat-file.c
msgid "flush is only for --buffer mode"
msgstr "flush només és per al mode --buffer"
+#: builtin/cat-file.c
msgid "empty command in input"
msgstr "ordre buida en l'entrada"
+#: builtin/cat-file.c
#, c-format
msgid "whitespace before command: '%s'"
msgstr "espai en blanc abans de l'ordre: «%s»"
+#: builtin/cat-file.c
#, c-format
msgid "%s requires arguments"
msgstr "%s requereix arguments"
+#: builtin/cat-file.c
#, c-format
msgid "%s takes no arguments"
-msgstr "%s no accepta cap valor"
+msgstr "%s no accepta arguments"
+#: builtin/cat-file.c
msgid "only one batch option may be specified"
msgstr "només es pot especificar una opció per lots"
+#: builtin/cat-file.c
msgid "git cat-file <type> <object>"
msgstr "git cat-file <tipus> <objecte>"
+#: builtin/cat-file.c
msgid "git cat-file (-e | -p) <object>"
msgstr "git cat-file (-e | -p) <objecte>"
+#: builtin/cat-file.c
msgid "git cat-file (-t | -s) [--allow-unknown-type] <object>"
msgstr "git cat-file (-t | -s) [--allow-unknown-type] <objecte>"
+#: builtin/cat-file.c
msgid ""
"git cat-file (--textconv | --filters)\n"
" [<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]"
@@ -3343,6 +4178,7 @@ msgstr ""
"git cat-file (--textconv | --filters)\n"
" [<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]"
+#: builtin/cat-file.c
msgid ""
"git cat-file (--batch | --batch-check | --batch-command) [--batch-all-"
"objects]\n"
@@ -3354,114 +4190,147 @@ msgstr ""
" [--buffer] [--follow-symlinks] [--unordered]\n"
" [--textconv | --filters] [-Z]"
+#: builtin/cat-file.c
msgid "Check object existence or emit object contents"
msgstr "Comprova l'existència de l'objecte o emet el contingut de l'objecte"
+#: builtin/cat-file.c
msgid "check if <object> exists"
msgstr "comprova si <objecte> existeix"
+#: builtin/cat-file.c
msgid "pretty-print <object> content"
msgstr "impressió embellida del contingut de l'<objecte>"
+#: builtin/cat-file.c
msgid "Emit [broken] object attributes"
msgstr "Emet els atributs [broken] de l'objecte"
+#: builtin/cat-file.c
msgid "show object type (one of 'blob', 'tree', 'commit', 'tag', ...)"
msgstr ""
"mostra el tipus d'objecte (un dels següents: «blob», «tree», «commit», "
"«tag», ...)"
+#: builtin/cat-file.c
msgid "show object size"
msgstr "mostra la mida de l'objecte"
+#: builtin/cat-file.c
msgid "allow -s and -t to work with broken/corrupt objects"
msgstr "permet que -s i -t funcionin amb objectes trencats/malmesos"
+#: builtin/cat-file.c builtin/log.c
msgid "use mail map file"
msgstr "usa el fitxer de mapa de correu"
+#: builtin/cat-file.c
msgid "Batch objects requested on stdin (or --batch-all-objects)"
msgstr "Objectes de lots sol·licitats a stdin (o --batch-all-objects)"
+#: builtin/cat-file.c
msgid "show full <object> or <rev> contents"
msgstr "mostra el contingut complet de <objecte> o <rev>"
+#: builtin/cat-file.c
msgid "like --batch, but don't emit <contents>"
msgstr "com a --batch, però no emetis <contents>"
+#: builtin/cat-file.c
msgid "stdin is NUL-terminated"
msgstr "l'entrada és acabada amb NUL"
+#: builtin/cat-file.c
msgid "stdin and stdout is NUL-terminated"
msgstr "stdin i stdout estan terminats amb NUL"
+#: builtin/cat-file.c
msgid "read commands from stdin"
msgstr "llegeix les ordres de stdin"
+#: builtin/cat-file.c
msgid "with --batch[-check]: ignores stdin, batches all known objects"
msgstr ""
"amb --batch[-check]: ignora stdin, posa en lots tots els objectes coneguts"
+#: builtin/cat-file.c
msgid "Change or optimize batch output"
msgstr "Canvia o optimitza la sortida per lots"
+#: builtin/cat-file.c
msgid "buffer --batch output"
msgstr "posa la sortida de --batch en memòria intermèdia"
+#: builtin/cat-file.c
msgid "follow in-tree symlinks"
msgstr "segueix els enllaços simbòlics en l'arbre"
+#: builtin/cat-file.c
msgid "do not order objects before emitting them"
msgstr "no ordenis els objectes abans d'emetre'ls"
+#: builtin/cat-file.c
msgid ""
"Emit object (blob or tree) with conversion or filter (stand-alone, or with "
"batch)"
msgstr ""
"Emet l'objecte (blob o arbre) amb conversió o filtre (stand-alone, o amb lot)"
+#: builtin/cat-file.c
msgid "run textconv on object's content"
msgstr "executar textconv al contingut de l'objecte"
+#: builtin/cat-file.c
msgid "run filters on object's content"
msgstr "executa els filtres al contingut de l'objecte"
+#: builtin/cat-file.c
msgid "blob|tree"
msgstr "blob|tree"
+#: builtin/cat-file.c
msgid "use a <path> for (--textconv | --filters); Not with 'batch'"
msgstr "useu un <camí> per a (--textconv | --filters); no amb «batch»"
+#: builtin/cat-file.c
#, c-format
msgid "'%s=<%s>' needs '%s' or '%s'"
msgstr "«%s=<%s>» necessita «%s» o «%s»"
+#: builtin/cat-file.c
msgid "path|tree-ish"
msgstr "path|tree-ish"
+#: builtin/cat-file.c
#, c-format
msgid "'%s' requires a batch mode"
msgstr "«%s» requereix un mode batch"
+#: builtin/cat-file.c
#, c-format
msgid "'-%c' is incompatible with batch mode"
msgstr "«-%c» és incompatible amb el model batch"
+#: builtin/cat-file.c
msgid "batch modes take no arguments"
msgstr "el mode batch no accepta cap argument"
+#: builtin/cat-file.c
#, c-format
msgid "<rev> required with '%s'"
msgstr "<rev> requerida amb «%s»"
+#: builtin/cat-file.c
#, c-format
msgid "<object> required with '-%c'"
msgstr "<objecte> requerit amb «-%c»"
+#: builtin/cat-file.c
#, c-format
msgid "only two arguments allowed in <type> <object> mode, not %d"
msgstr "només es permeten dos arguments en el mode <tipus> <objecte>, no %d"
+#: builtin/check-attr.c
msgid ""
"git check-attr [--source <tree-ish>] [-a | --all | <attr>...] [--] "
"<pathname>..."
@@ -3469,198 +4338,269 @@ msgstr ""
"git check-attr [--source <tree-ish>] [-a | --all | <attr>...] [--] "
"<pathname>..."
+#: builtin/check-attr.c
msgid ""
"git check-attr --stdin [-z] [--source <tree-ish>] [-a | --all | <attr>...]"
msgstr ""
"git check-attr --stdin [-z] [--source <tree-ish>] [-a | --all | <attr>...]"
+#: builtin/check-attr.c
msgid "report all attributes set on file"
msgstr "informa de tots els atributs establerts en el fitxer"
+#: builtin/check-attr.c
msgid "use .gitattributes only from the index"
msgstr "usa .gitattributes només des de l'índex"
+#: builtin/check-attr.c builtin/check-ignore.c builtin/hash-object.c
msgid "read file names from stdin"
msgstr "llegeix els noms de fitxer de stdin"
+#: builtin/check-attr.c builtin/check-ignore.c
msgid "terminate input and output records by a NUL character"
msgstr "acaba els registres d'entrada i de sortida amb un caràcter NUL"
+#: builtin/check-attr.c
msgid "<tree-ish>"
msgstr "<tree-ish>"
+#: builtin/check-attr.c
msgid "which tree-ish to check attributes at"
msgstr "a quin tree-ish s'han de comprovar els atributs"
+#: builtin/check-ignore.c builtin/checkout.c builtin/gc.c builtin/worktree.c
msgid "suppress progress reporting"
msgstr "omet els informes de progrés"
+#: builtin/check-ignore.c
msgid "show non-matching input paths"
msgstr "mostra els camins d'entrada que no coincideixin"
+#: builtin/check-ignore.c
msgid "ignore index when checking"
msgstr "ignora l'índex en comprovar"
+#: builtin/check-ignore.c
msgid "cannot specify pathnames with --stdin"
msgstr "no es poden especificar noms de camí amb --stdin"
+#: builtin/check-ignore.c
msgid "-z only makes sense with --stdin"
msgstr "-z només té sentit amb --stdin"
+#: builtin/check-ignore.c
msgid "no path specified"
msgstr "cap camí especificat"
+#: builtin/check-ignore.c
msgid "--quiet is only valid with a single pathname"
msgstr "--quiet només és vàlid amb un sol nom de camí"
+#: builtin/check-ignore.c
msgid "cannot have both --quiet and --verbose"
msgstr "no es poden especificar --quiet i --verbose alhora"
+#: builtin/check-ignore.c
msgid "--non-matching is only valid with --verbose"
msgstr "--non-matching és vàlid només amb --verbose"
+#: builtin/check-mailmap.c
msgid "git check-mailmap [<options>] <contact>..."
msgstr "git check-mailmap [<opcions>] <contacte>..."
+#: builtin/check-mailmap.c
msgid "also read contacts from stdin"
msgstr "també llegeix els contactes des de stdin"
-#, c-format
-msgid "unable to parse contact: %s"
-msgstr "no s'ha pogut analitzar el contacte: %s"
+# no traduïsc mailmap
+#: builtin/check-mailmap.c
+msgid "read additional mailmap entries from file"
+msgstr "llegeix les entrades mailmap addicionals del fitxer"
+
+#: builtin/check-mailmap.c
+msgid "blob"
+msgstr "blob"
+
+#: builtin/check-mailmap.c
+msgid "read additional mailmap entries from blob"
+msgstr "llegeix entrades mailmap addicionals del blob"
+#: builtin/check-mailmap.c
msgid "no contacts specified"
msgstr "no hi ha contactes especificats"
+#: builtin/checkout--worker.c
msgid "git checkout--worker [<options>]"
msgstr "git checkout--worker [<opcions>]"
+#: builtin/checkout--worker.c builtin/checkout-index.c builtin/column.c
+#: builtin/submodule--helper.c builtin/worktree.c
msgid "string"
msgstr "cadena"
+#: builtin/checkout--worker.c builtin/checkout-index.c
msgid "when creating files, prepend <string>"
msgstr "en crear fitxers, anteposa <cadena>"
+#: builtin/checkout-index.c
msgid "git checkout-index [<options>] [--] [<file>...]"
msgstr "git checkout-index [<opcions>] [--] [<fitxer>...]"
+#: builtin/checkout-index.c
msgid "stage should be between 1 and 3 or all"
msgstr "«stage» ha de ser entre 1 i 3 o all"
+#: builtin/checkout-index.c
msgid "check out all files in the index"
msgstr "agafa tots els fitxers en l'índex"
+#: builtin/checkout-index.c
msgid "do not skip files with skip-worktree set"
msgstr "no ometis els fitxers amb skip-worktree establert"
+#: builtin/checkout-index.c
msgid "force overwrite of existing files"
msgstr "força la sobreescriptura de fitxers existents"
+#: builtin/checkout-index.c
msgid "no warning for existing files and files not in index"
msgstr ""
"cap advertència per a fitxers existents i fitxers que no siguin a l'índex"
+#: builtin/checkout-index.c
msgid "don't checkout new files"
msgstr "no agafis fitxers nous"
+#: builtin/checkout-index.c
msgid "update stat information in the index file"
msgstr "actualitza la informació d'estadístiques en el fitxer d'índex"
+#: builtin/checkout-index.c
msgid "read list of paths from the standard input"
msgstr "llegeix la llista de camins des de l'entrada estàndard"
+#: builtin/checkout-index.c
msgid "write the content to temporary files"
msgstr "escriu el contingut a fitxers temporals"
+#: builtin/checkout-index.c
msgid "copy out the files from named stage"
msgstr "copia els fitxers des de «stage» amb nom"
+#: builtin/checkout.c
msgid "git checkout [<options>] <branch>"
msgstr "git checkout [<opcions>] <branca>"
+#: builtin/checkout.c
msgid "git checkout [<options>] [<branch>] -- <file>..."
msgstr "git checkout [<opcions>] [<branca>] -- <fitxer>..."
+#: builtin/checkout.c
msgid "git switch [<options>] [<branch>]"
msgstr "git switch [<opcions>] [<branca>]"
+#: builtin/checkout.c
msgid "git restore [<options>] [--source=<branch>] <file>..."
msgstr "git restore [<opcions>] [--source=<branca>] <fitxer>..."
+#: builtin/checkout.c
#, c-format
msgid "path '%s' does not have our version"
msgstr "el camí «%s» no té la nostra versió"
+#: builtin/checkout.c
#, c-format
msgid "path '%s' does not have their version"
msgstr "el camí «%s» no té la seva versió"
+#: builtin/checkout.c
#, c-format
msgid "path '%s' does not have all necessary versions"
msgstr "el camí «%s» no té totes les versions necessàries"
+#: builtin/checkout.c
#, c-format
msgid "path '%s' does not have necessary versions"
msgstr "el camí «%s» no té les versions necessàries"
+#: builtin/checkout.c
#, c-format
msgid "path '%s': cannot merge"
msgstr "camí «%s»: no es pot fusionar"
+#: builtin/checkout.c
#, c-format
msgid "Unable to add merge result for '%s'"
msgstr "No s'ha pogut afegir el resultat de fusió per a «%s»"
+#: builtin/checkout.c
#, c-format
msgid "Recreated %d merge conflict"
msgid_plural "Recreated %d merge conflicts"
msgstr[0] "Recreat un conflicte de fusió"
msgstr[1] "Recreats %d conflictes de fusió"
+#: builtin/checkout.c
#, c-format
msgid "Updated %d path from %s"
msgid_plural "Updated %d paths from %s"
-msgstr[0] "S'ha actualitzat %d camí des de %s"
-msgstr[1] "S'han actualitzat %d camins des de %s"
+msgstr[0] "S'ha actualitzat %d camí a partir de %s"
+msgstr[1] "S'han actualitzat %d camins a partir de %s"
+#: builtin/checkout.c
#, c-format
msgid "Updated %d path from the index"
msgid_plural "Updated %d paths from the index"
-msgstr[0] "S'ha actualitzat un camí des de l'índex"
-msgstr[1] "S'ha actualitzat %d camins des de l'índex"
+msgstr[0] "S'ha actualitzat %d camí a partir de l'índex"
+msgstr[1] "S'han actualitzat %d camins a partir de l'índex"
+#: builtin/checkout.c
#, c-format
msgid "'%s' cannot be used with updating paths"
msgstr "«%s» no es pot usar amb actualització de camins"
+#: builtin/checkout.c
#, c-format
msgid "Cannot update paths and switch to branch '%s' at the same time."
msgstr ""
"No es poden actualitzar els camins i canviar a la branca «%s» a la vegada."
+#: builtin/checkout.c
#, c-format
msgid "neither '%s' or '%s' is specified"
msgstr "no s'ha especificat ni «%s» ni «%s»"
+#: builtin/checkout.c
#, c-format
msgid "'%s' must be used when '%s' is not specified"
msgstr "«%s» s'ha d'utilitzar quan no s'especifica «%s»"
+#: builtin/checkout.c
#, c-format
msgid "'%s' or '%s' cannot be used with %s"
msgstr "«%s» o «%s» no poden utilitzar-se amb %s"
+#: builtin/checkout.c
#, c-format
msgid "'%s', '%s', or '%s' cannot be used when checking out of a tree"
msgstr "«%s», «%s» o «%s» no es poden utilitzar en agafar un arbre"
+#: builtin/checkout.c
#, c-format
msgid "path '%s' is unmerged"
msgstr "el camí «%s» està sense fusionar"
+#: builtin/checkout.c builtin/grep.c builtin/merge-tree.c builtin/reset.c
+#: merge-ort.c reset.c sequencer.c tree-walk.c
+#, c-format
+msgid "unable to read tree (%s)"
+msgstr "no s'ha pogut llegir l'arbre (%s)"
+
+#: builtin/checkout.c
msgid "you need to resolve your current index first"
msgstr "heu de primer resoldre el vostre índex actual"
+#: builtin/checkout.c
#, c-format
msgid ""
"cannot continue with staged changes in the following files:\n"
@@ -3669,40 +4609,50 @@ msgstr ""
"no es pot continuar amb els canvis «staged» als fitxers següents:\n"
"%s"
+#: builtin/checkout.c
#, c-format
msgid "Can not do reflog for '%s': %s\n"
-msgstr "No es pot fer reflog per a «%s»: %s\n"
+msgstr "No es pot fer «reflog» per a «%s»: %s\n"
+#: builtin/checkout.c
msgid "HEAD is now at"
msgstr "HEAD ara és a"
+#: builtin/checkout.c builtin/clone.c
msgid "unable to update HEAD"
msgstr "no s'ha pogut actualitzar HEAD"
+#: builtin/checkout.c
#, c-format
msgid "Reset branch '%s'\n"
msgstr "Restableix la branca «%s»\n"
+#: builtin/checkout.c
#, c-format
msgid "Already on '%s'\n"
msgstr "Ja esteu en «%s»\n"
+#: builtin/checkout.c
#, c-format
msgid "Switched to and reset branch '%s'\n"
msgstr "S'ha canviat i restablert a la branca «%s»\n"
+#: builtin/checkout.c
#, c-format
msgid "Switched to a new branch '%s'\n"
msgstr "S'ha canviat a la branca nova «%s»\n"
+#: builtin/checkout.c
#, c-format
msgid "Switched to branch '%s'\n"
msgstr "S'ha canviat a la branca «%s»\n"
+#: builtin/checkout.c
#, c-format
msgid " ... and %d more.\n"
msgstr " ... i %d més.\n"
+#: builtin/checkout.c
#, c-format
msgid ""
"Warning: you are leaving %d commit behind, not connected to\n"
@@ -3725,6 +4675,7 @@ msgstr[1] ""
"\n"
"%s\n"
+#: builtin/checkout.c
#, c-format
msgid ""
"If you want to keep it by creating a new branch, this may be a good time\n"
@@ -3751,15 +4702,19 @@ msgstr[1] ""
" git branch <nom-de-branca-nova> %s\n"
"\n"
+#: builtin/checkout.c
msgid "internal error in revision walk"
msgstr "error intern en el passeig per revisions"
+#: builtin/checkout.c
msgid "Previous HEAD position was"
msgstr "La posició de HEAD anterior era"
+#: builtin/checkout.c
msgid "You are on a branch yet to be born"
msgstr "Sou en una branca que encara ha de néixer"
+#: builtin/checkout.c
#, c-format
msgid ""
"'%s' could be both a local file and a tracking branch.\n"
@@ -3768,6 +4723,7 @@ msgstr ""
"«%s» podria ser tant un fitxer local com una branca de seguiment.\n"
"Useu -- (i opcionalment --no-guess) per a desambiguar-ho"
+#: builtin/checkout.c
msgid ""
"If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
"you can do so by fully qualifying the name with the --track option:\n"
@@ -3787,47 +4743,58 @@ msgstr ""
"remota, p. ex. «origin» al remot, considereu configurar l'opció\n"
"checkout.defaultRemote=origin en la vostra configuració."
+#: builtin/checkout.c
#, c-format
msgid "'%s' matched multiple (%d) remote tracking branches"
msgstr "«%s» coincideixen múltiples (%d) branques de seguiment remotes"
+#: builtin/checkout.c
msgid "only one reference expected"
msgstr "només s'esperava una referència"
+#: builtin/checkout.c
#, c-format
msgid "only one reference expected, %d given."
msgstr "s'esperava només una referència, s'han donat %d."
+#: builtin/checkout.c builtin/worktree.c
#, c-format
msgid "invalid reference: %s"
msgstr "referència no vàlida: %s"
+#: builtin/checkout.c
#, c-format
msgid "reference is not a tree: %s"
msgstr "la referència no és un arbre: %s"
+#: builtin/checkout.c
#, c-format
msgid "a branch is expected, got tag '%s'"
msgstr "s'espera una branca, s'ha obtingut l'etiqueta «%s»"
+#: builtin/checkout.c
#, c-format
msgid "a branch is expected, got remote branch '%s'"
msgstr "s'espera una branca, s'ha obtingut la branca remota «%s»"
+#: builtin/checkout.c
#, c-format
msgid "a branch is expected, got '%s'"
msgstr "s'espera una branca, s'ha obtingut «%s»"
+#: builtin/checkout.c
#, c-format
msgid "a branch is expected, got commit '%s'"
msgstr "s'espera una branca, s'ha obtingut la comissió «%s»"
+#: builtin/checkout.c
msgid ""
"If you want to detach HEAD at the commit, try again with the --detach option."
msgstr ""
"Si voleu desacoblar HEAD a la comissió, torneu-ho a provar amb l'opció --"
"detach."
+#: builtin/checkout.c
msgid ""
"cannot switch branch while merging\n"
"Consider \"git merge --quit\" or \"git worktree add\"."
@@ -3835,6 +4802,7 @@ msgstr ""
"no es pot canviar de branca mentre es fusiona\n"
"Considereu usar «git merge --quit» o «git worktree add»."
+#: builtin/checkout.c
msgid ""
"cannot switch branch in the middle of an am session\n"
"Consider \"git am --quit\" or \"git worktree add\"."
@@ -3842,6 +4810,7 @@ msgstr ""
"no es pot canviar de branca en mig d'una sessió «am»\n"
"Considereu usar «git am --quit» o «git worktree add»."
+#: builtin/checkout.c
msgid ""
"cannot switch branch while rebasing\n"
"Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -3849,6 +4818,7 @@ msgstr ""
"no es pot canviar de branca mentre es fa «rebase»\n"
"Considereu usar «git rebase --quit» o «git worktree add»."
+#: builtin/checkout.c
msgid ""
"cannot switch branch while cherry-picking\n"
"Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -3856,6 +4826,7 @@ msgstr ""
"no es pot canviar de branca mentre es fa «cherry-pick»\n"
"Considereu usar «git cherry-pick --quit» o «git worktree add»."
+#: builtin/checkout.c
msgid ""
"cannot switch branch while reverting\n"
"Consider \"git revert --quit\" or \"git worktree add\"."
@@ -3863,95 +4834,133 @@ msgstr ""
"no es pot canviar de branca mentre s'està revertint\n"
"Considereu «git revert --quit» o «git worktree add»."
+#: builtin/checkout.c
msgid "you are switching branch while bisecting"
msgstr "s'està canviant la branca mentre es fa una bisecció"
+#: builtin/checkout.c
msgid "paths cannot be used with switching branches"
msgstr "els camins no es poden usar amb canvi de branca"
+#: builtin/checkout.c
#, c-format
msgid "'%s' cannot be used with switching branches"
msgstr "«%s» no es pot usar amb canvi de branca"
+# és com si faltara un objecte directe per a agafar
+#: builtin/checkout.c
+#, c-format
+msgid "'%s' needs the paths to check out"
+msgstr "«%s» necessita els camins per a agafar"
+
+#: builtin/checkout.c
#, c-format
msgid "'%s' cannot be used with '%s'"
msgstr "«%s» no es pot usar amb «%s»"
+#: builtin/checkout.c
#, c-format
msgid "'%s' cannot take <start-point>"
msgstr "«%s» no pot prendre <start-point>"
+#: builtin/checkout.c
#, c-format
msgid "Cannot switch branch to a non-commit '%s'"
msgstr "No es pot canviar la branca a la no comissió «%s»"
+#: builtin/checkout.c
msgid "missing branch or commit argument"
msgstr "manca branca o argument de comissió"
+#: builtin/checkout.c
+#, c-format
+msgid "unknown conflict style '%s'"
+msgstr "estil de conflicte desconegut «%s»"
+
+#: builtin/checkout.c
msgid "perform a 3-way merge with the new branch"
msgstr "realitza una fusió de 3 vies amb la branca nova"
+#: builtin/checkout.c builtin/log.c parse-options.h
msgid "style"
msgstr "estil"
+#: builtin/checkout.c
msgid "conflict style (merge, diff3, or zdiff3)"
msgstr "estil de conflicte (merge, diff3, o zdiff3)"
+#: builtin/checkout.c builtin/worktree.c
msgid "detach HEAD at named commit"
msgstr "separa HEAD a la comissió anomenada"
+#: builtin/checkout.c
msgid "force checkout (throw away local modifications)"
msgstr "agafa a la força (descarta qualsevol modificació local)"
+#: builtin/checkout.c
msgid "new-branch"
msgstr "branca-nova"
+#: builtin/checkout.c
msgid "new unborn branch"
msgstr "branca no nascuda nova"
+#: builtin/checkout.c builtin/merge.c
msgid "update ignored files (default)"
msgstr "actualitza els fitxers ignorats (per defecte)"
+#: builtin/checkout.c
msgid "do not check if another worktree is holding the given ref"
msgstr "no comprovis si un altre arbre de treball té la referència donada"
+#: builtin/checkout.c
msgid "checkout our version for unmerged files"
msgstr "agafa la versió nostra dels fitxers sense fusionar"
+#: builtin/checkout.c
msgid "checkout their version for unmerged files"
msgstr "agafa la versió seva dels fitxers sense fusionar"
+#: builtin/checkout.c
msgid "do not limit pathspecs to sparse entries only"
msgstr "no limitis les especificacions de camí només a entrades disperses"
+#: builtin/checkout.c
#, c-format
msgid "options '-%c', '-%c', and '%s' cannot be used together"
msgstr "les opcions «-%c», «-%c», i «%s» no es poden usar juntes"
+#: builtin/checkout.c
msgid "--track needs a branch name"
msgstr "--track necessita un nom de branca"
+#: builtin/checkout.c
#, c-format
msgid "missing branch name; try -%c"
msgstr "falta el nom de la branca; proveu -%c"
+#: builtin/checkout.c
#, c-format
msgid "could not resolve %s"
msgstr "no es pot resoldre %s"
+#: builtin/checkout.c
msgid "invalid path specification"
msgstr "especificació de camí no vàlida"
+#: builtin/checkout.c
#, c-format
msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
msgstr ""
"«%s» no és una comissió i la branca «%s» no es pot crear a partir d'aquesta "
"comissió"
+#: builtin/checkout.c
#, c-format
msgid "git checkout: --detach does not take a path argument '%s'"
msgstr "git checkout: --detach no accepta un argument de camí «%s»"
+#: builtin/checkout.c
msgid ""
"git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
"checking out of the index."
@@ -3959,54 +4968,72 @@ msgstr ""
"git checkout: --ours/--theirs, --force i --merge són incompatibles en\n"
"agafar de l'índex."
+#: builtin/checkout.c
msgid "you must specify path(s) to restore"
msgstr "heu d'especificar el camí o camins a restaurar"
+#: builtin/checkout.c builtin/clone.c builtin/remote.c builtin/replay.c
+#: builtin/submodule--helper.c builtin/worktree.c
msgid "branch"
msgstr "branca"
+#: builtin/checkout.c
msgid "create and checkout a new branch"
msgstr "crea i agafa una branca nova"
+#: builtin/checkout.c
msgid "create/reset and checkout a branch"
msgstr "crea/restableix i agafa una branca"
+#: builtin/checkout.c
msgid "create reflog for new branch"
-msgstr "crea un registre de referència per a la branca nova"
+msgstr "crea un registre de referències per a la branca nova"
+#: builtin/checkout.c
msgid "second guess 'git checkout <no-such-branch>' (default)"
msgstr "segona deducció «git checkout <no-such-branch>» (per defecte)"
+#: builtin/checkout.c
msgid "use overlay mode (default)"
msgstr "utilitza el mode de superposició (per defecte)"
+#: builtin/checkout.c
msgid "create and switch to a new branch"
msgstr "crea i canvia a una branca nova"
+#: builtin/checkout.c
msgid "create/reset and switch to a branch"
msgstr "crea/restableix i canvia a una branca"
+#: builtin/checkout.c
msgid "second guess 'git switch <no-such-branch>'"
msgstr "segona deducció «git switch <no-such-branch>»"
+#: builtin/checkout.c
msgid "throw away local modifications"
msgstr "descarta les modificacions locals"
+#: builtin/checkout.c
msgid "which tree-ish to checkout from"
msgstr "des de quin arbre agafar"
+#: builtin/checkout.c
msgid "restore the index"
msgstr "restaura l'índex"
+#: builtin/checkout.c
msgid "restore the working tree (default)"
msgstr "restaura l'arbre de treball (per defecte)"
+#: builtin/checkout.c
msgid "ignore unmerged entries"
msgstr "ignora les entrades sense fusionar"
+#: builtin/checkout.c
msgid "use overlay mode"
msgstr "utilitza el mode de superposició"
+#: builtin/clean.c
msgid ""
"git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] "
"[<pathspec>...]"
@@ -4014,36 +5041,45 @@ msgstr ""
"git clean [-d] [-f] [-i] [-n] [-q] [-e <patró>] [-x | -X] [--] "
"[<pathspec>...]"
+#: builtin/clean.c
#, c-format
msgid "Removing %s\n"
msgstr "S'està eliminant %s\n"
+#: builtin/clean.c
#, c-format
msgid "Would remove %s\n"
msgstr "Eliminaria %s\n"
+#: builtin/clean.c
#, c-format
msgid "Skipping repository %s\n"
msgstr "S'està ometent el repositori %s\n"
+#: builtin/clean.c
#, c-format
msgid "Would skip repository %s\n"
msgstr "Ometria el repositori %s\n"
+#: builtin/clean.c midx.c
#, c-format
msgid "failed to remove %s"
msgstr "s'ha produït un error en eliminar %s"
+#: builtin/clean.c
#, c-format
msgid "could not lstat %s\n"
msgstr "no s'ha pogut fer lstat %s\n"
+#: builtin/clean.c
msgid "Refusing to remove current working directory\n"
msgstr "S'ha rebutjat suprimir el directori de treball actual\n"
+#: builtin/clean.c
msgid "Would refuse to remove current working directory\n"
msgstr "Es rebutjarà eliminar el directori de treball actual\n"
+#: builtin/clean.c
#, c-format
msgid ""
"Prompt help:\n"
@@ -4056,6 +5092,7 @@ msgstr ""
"foo - selecciona un ítem basat en un prefix únic\n"
" - (buit) no seleccionis res\n"
+#: builtin/clean.c
#, c-format
msgid ""
"Prompt help:\n"
@@ -4076,26 +5113,32 @@ msgstr ""
"* - tria tots els ítems\n"
" - (buit) finalitza la selecció\n"
+#: builtin/clean.c
#, c-format
msgid "Huh (%s)?\n"
msgstr "Perdó (%s)?\n"
+#: builtin/clean.c
#, c-format
msgid "Input ignore patterns>> "
msgstr "Introduïu els patrons a ignorar>> "
+#: builtin/clean.c
#, c-format
msgid "WARNING: Cannot find items matched by: %s"
msgstr "ADVERTÈNCIA: No es poden trobar ítems que coincideixin amb: %s"
+#: builtin/clean.c
msgid "Select items to delete"
msgstr "Selecciona els ítems a suprimir"
#. TRANSLATORS: Make sure to keep [y/N] as is
+#: builtin/clean.c
#, c-format
msgid "Remove %s [y/N]? "
msgstr "Voleu eliminar %s [y/N]? "
+#: builtin/clean.c
msgid ""
"clean - start cleaning\n"
"filter by pattern - exclude items from deletion\n"
@@ -4113,216 +5156,286 @@ msgstr ""
"help - aquesta pantalla\n"
"? - ajuda de selecció manual"
+#: builtin/clean.c
msgid "Would remove the following item:"
msgid_plural "Would remove the following items:"
msgstr[0] "Eliminaria l'ítem següent:"
msgstr[1] "Eliminaria els ítems següents:"
+#: builtin/clean.c
msgid "No more files to clean, exiting."
msgstr "No hi ha més fitxers a netejar; s'està sortint."
+#: builtin/clean.c
msgid "do not print names of files removed"
msgstr "no imprimeixis els noms dels fitxers eliminats"
+#: builtin/clean.c
msgid "force"
msgstr "força"
+#: builtin/clean.c
msgid "interactive cleaning"
msgstr "neteja interactiva"
+#: builtin/clean.c
msgid "remove whole directories"
msgstr "elimina directoris sencers"
+#: builtin/clean.c builtin/config.c builtin/describe.c builtin/grep.c
+#: builtin/log.c builtin/ls-files.c builtin/name-rev.c builtin/pack-refs.c
+#: builtin/show-ref.c ref-filter.h
msgid "pattern"
msgstr "patró"
+#: builtin/clean.c
msgid "add <pattern> to ignore rules"
msgstr "afegiu <patró> per a ignorar les regles"
+#: builtin/clean.c
msgid "remove ignored files, too"
msgstr "elimina els fitxers ignorats, també"
+#: builtin/clean.c
msgid "remove only ignored files"
msgstr "elimina només els fitxers ignorats"
-msgid ""
-"clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
-"clean"
-msgstr ""
-"clean.requireForce està establerta en cert i ni -i, -n ni -f s'han indicat; "
-"refusant netejar"
-
-msgid ""
-"clean.requireForce defaults to true and neither -i, -n, nor -f given; "
-"refusing to clean"
+#: builtin/clean.c
+msgid "clean.requireForce is true and -f not given: refusing to clean"
msgstr ""
-"clean.requireForce és per defecte cert i ni -i, -n ni -f s'han indicat; "
-"refusant netejar"
+"clean.requireForce està establert a cert i no s'ha indicat -f : es rebutja "
+"netejar"
+#: builtin/clone.c
msgid "git clone [<options>] [--] <repo> [<dir>]"
msgstr "git clone [<opcions>] [--] <repositori> [<directori>]"
+#: builtin/clone.c
msgid "don't clone shallow repository"
msgstr "no clonis un repositori superficial"
+#: builtin/clone.c
msgid "don't create a checkout"
msgstr "no facis cap agafament"
+#: builtin/clone.c builtin/init-db.c
msgid "create a bare repository"
msgstr "crea un repositori nu"
-msgid "create a mirror repository (implies bare)"
-msgstr "crea un repositori mirall (implica bare)"
+#: builtin/clone.c
+msgid "create a mirror repository (implies --bare)"
+msgstr "crear un repositori mirall (implica --bare)"
+#: builtin/clone.c
msgid "to clone from a local repository"
msgstr "per a clonar des d'un repositori local"
+#: builtin/clone.c
msgid "don't use local hardlinks, always copy"
msgstr "no usis enllaços durs locals, sempre copia"
+#: builtin/clone.c
msgid "setup as shared repository"
msgstr "configura com a repositori compartit"
+#: builtin/clone.c
msgid "pathspec"
msgstr "especificació de camí"
+#: builtin/clone.c
msgid "initialize submodules in the clone"
msgstr "inicialitza els submòduls en el clon"
+#: builtin/clone.c
msgid "number of submodules cloned in parallel"
msgstr "nombre de submòduls clonats en paral·lel"
+#: builtin/clone.c builtin/init-db.c
msgid "template-directory"
msgstr "directori-de-plantilla"
+#: builtin/clone.c builtin/init-db.c
msgid "directory from which templates will be used"
msgstr "directori des del qual s'usaran les plantilles"
+#: builtin/clone.c builtin/submodule--helper.c
msgid "reference repository"
msgstr "repositori de referència"
+#: builtin/clone.c builtin/submodule--helper.c
msgid "use --reference only while cloning"
msgstr "usa --reference només en clonar"
+#: builtin/clone.c builtin/column.c builtin/fmt-merge-msg.c builtin/init-db.c
+#: builtin/merge-file.c builtin/merge.c builtin/pack-objects.c builtin/repack.c
+#: builtin/submodule--helper.c t/helper/test-simple-ipc.c
msgid "name"
msgstr "nom"
+#: builtin/clone.c
msgid "use <name> instead of 'origin' to track upstream"
msgstr "usa <nom> en lloc d'«origin» per a seguir la font"
+#: builtin/clone.c
msgid "checkout <branch> instead of the remote's HEAD"
msgstr "agafa <branca> en lloc de la HEAD del remot"
+#: builtin/clone.c
msgid "path to git-upload-pack on the remote"
msgstr "camí a git-upload-pack en el remot"
+#: builtin/clone.c builtin/fetch.c builtin/pull.c
msgid "depth"
msgstr "profunditat"
+#: builtin/clone.c
msgid "create a shallow clone of that depth"
msgstr "crea un clon superficial d'aquesta profunditat"
+#: builtin/clone.c
msgid "create a shallow clone since a specific time"
msgstr "crea un clon superficial des d'una data específica"
+#: builtin/clone.c builtin/fetch.c builtin/pull.c builtin/rebase.c
+#: builtin/replay.c
msgid "revision"
msgstr "revisió"
+#: builtin/clone.c builtin/fetch.c builtin/pull.c
msgid "deepen history of shallow clone, excluding rev"
msgstr "aprofundeix la història d'un clon superficial, excloent una revisió"
+#: builtin/clone.c builtin/submodule--helper.c
msgid "clone only one branch, HEAD or --branch"
msgstr "clona només una branca, HEAD o --branch"
+#: builtin/clone.c
msgid "don't clone any tags, and make later fetches not to follow them"
msgstr ""
"no cloneu cap etiqueta, i feu que els «fetch» següents no les segueixin"
+#: builtin/clone.c
msgid "any cloned submodules will be shallow"
msgstr "qualsevol submòdul clonat serà superficial"
+#: builtin/clone.c builtin/init-db.c
msgid "gitdir"
msgstr "directori de git"
+#: builtin/clone.c builtin/init-db.c
msgid "separate git dir from working tree"
msgstr "separa el directori de git de l'arbre de treball"
+#: builtin/clone.c builtin/init-db.c builtin/submodule--helper.c
msgid "specify the reference format to use"
msgstr "especifiqueu el format de referència a usar"
+#: builtin/clone.c
msgid "key=value"
msgstr "clau=valor"
+#: builtin/clone.c
msgid "set config inside the new repository"
msgstr "estableix la configuració dins del repositori nou"
+#: builtin/clone.c builtin/fetch.c builtin/ls-remote.c builtin/pull.c
+#: builtin/push.c builtin/send-pack.c
msgid "server-specific"
msgstr "específic al servidor"
+#: builtin/clone.c builtin/fetch.c builtin/ls-remote.c builtin/pull.c
+#: builtin/push.c builtin/send-pack.c
msgid "option to transmit"
msgstr "opció a transmetre"
+#: builtin/clone.c
msgid "apply partial clone filters to submodules"
msgstr "aplica els filtres de clonatge parcial als submòduls"
+#: builtin/clone.c
msgid "any cloned submodules will use their remote-tracking branch"
msgstr "qualsevol submòdul clonat utilitzarà la seva branca de seguiment remot"
+#: builtin/clone.c
msgid "initialize sparse-checkout file to include only files at root"
msgstr ""
"inicialitza el fitxer «sparse-checkout» per a incloure només els fitxers a "
"l'arrel"
+#: builtin/clone.c
msgid "uri"
msgstr "uri"
+#: builtin/clone.c
msgid "a URI for downloading bundles before fetching from origin remote"
msgstr "un URI per a baixar paquets abans d'obtenir des del remot origen"
+#: builtin/clone.c
#, c-format
msgid "info: Could not add alternate for '%s': %s\n"
msgstr "info: No s'ha pogut afegir un alternatiu per a «%s»: %s\n"
+#: builtin/clone.c builtin/diff.c builtin/rm.c grep.c setup.c
#, c-format
msgid "failed to stat '%s'"
msgstr "s'ha produït un error en fer stat a «%s»"
+#: builtin/clone.c
#, c-format
msgid "%s exists and is not a directory"
msgstr "%s existeix i no és directori"
+#: builtin/clone.c
#, c-format
msgid "'%s' is a symlink, refusing to clone with --local"
msgstr "«%s» és un enllaç simbòlic, es rebutja clonar amb --local"
+#: builtin/clone.c
#, c-format
msgid "failed to start iterator over '%s'"
msgstr "no s'ha pogut iniciar l'iterador sobre «%s»"
+#: builtin/clone.c
#, c-format
msgid "symlink '%s' exists, refusing to clone with --local"
msgstr "l'enllaç simbòlic «%s» existeix, es rebutja a clonar amb --local"
+#: builtin/clone.c compat/precompose_utf8.c
#, c-format
msgid "failed to unlink '%s'"
msgstr "s'ha produït un error en desenllaçar «%s»"
+#: builtin/clone.c
+#, c-format
+msgid "hardlink cannot be checked at '%s'"
+msgstr "no es pot comprovar l'enllaç físic en «%s»"
+
+#: builtin/clone.c
+#, c-format
+msgid "hardlink different from source at '%s'"
+msgstr "l'enllaç físic és diferent de la font en «%s»"
+
+#: builtin/clone.c
#, c-format
msgid "failed to create link '%s'"
msgstr "s'ha produït un error en crear l'enllaç «%s»"
+#: builtin/clone.c
#, c-format
msgid "failed to copy file to '%s'"
msgstr "s'ha produït un error en copiar el fitxer a «%s»"
+#: builtin/clone.c refs/files-backend.c
#, c-format
msgid "failed to iterate over '%s'"
msgstr "no s'ha pogut iterar sobre «%s»"
+#: builtin/clone.c
#, c-format
msgid "done.\n"
msgstr "fet.\n"
+#: builtin/clone.c
msgid ""
"Clone succeeded, but checkout failed.\n"
"You can inspect what was checked out with 'git status'\n"
@@ -4332,83 +5445,106 @@ msgstr ""
"Podeu inspeccionar el que s'ha agafat amb «git status»\n"
"i tornar-ho a provar amb «git restore --source=HEAD :/»\n"
+#: builtin/clone.c
#, c-format
msgid "Could not find remote branch %s to clone."
msgstr "No s'ha pogut trobar la branca remota %s per a clonar."
+#: builtin/clone.c fetch-pack.c
msgid "remote did not send all necessary objects"
msgstr "el remot no ha enviat tots els objectes necessaris"
+#: builtin/clone.c
#, c-format
msgid "unable to update %s"
msgstr "no s'ha pogut actualitzar %s"
+#: builtin/clone.c
msgid "failed to initialize sparse-checkout"
msgstr "no s'ha pogut inicialitzar «sparse-checkout»"
+#: builtin/clone.c
msgid "remote HEAD refers to nonexistent ref, unable to checkout"
msgstr ""
-"la HEAD remot es refereix a una referència que no existeix, no s'ha pogut "
+"el HEAD remot es refereix a una referència que no existeix, no s'ha pogut "
"agafar"
+#: builtin/clone.c
msgid "unable to checkout working tree"
msgstr "no s'ha pogut agafar l'arbre de treball"
+#: builtin/clone.c
msgid "unable to write parameters to config file"
msgstr "no s'han pogut escriure els paràmetres al fitxer de configuració"
+#: builtin/clone.c
msgid "cannot repack to clean up"
msgstr "no es pot reempaquetar per a netejar"
+#: builtin/clone.c
msgid "cannot unlink temporary alternates file"
msgstr "no es pot desenllaçar el fitxer d'alternatives temporal"
+#: builtin/clone.c
msgid "Too many arguments."
msgstr "Hi ha massa arguments."
+#: builtin/clone.c scalar.c
msgid "You must specify a repository to clone."
msgstr "Heu d'especificar un repositori per a clonar."
+#: builtin/clone.c builtin/init-db.c builtin/refs.c builtin/submodule--helper.c
+#: setup.c
#, c-format
msgid "unknown ref storage format '%s'"
msgstr "el format d'emmagatzematge de referència «%s» és desconegut"
+#: builtin/clone.c
#, c-format
msgid "repository '%s' does not exist"
msgstr "el repositori «%s» no existeix"
+#: builtin/clone.c builtin/fetch.c
#, c-format
msgid "depth %s is not a positive number"
msgstr "la profunditat %s no és un nombre positiu"
+#: builtin/clone.c
#, c-format
msgid "destination path '%s' already exists and is not an empty directory."
msgstr "el camí destí «%s» ja existeix i no és un directori buit."
+#: builtin/clone.c
#, c-format
msgid "repository path '%s' already exists and is not an empty directory."
msgstr "el camí destí «%s» ja existeix i no és un directori buit."
+#: builtin/clone.c
#, c-format
msgid "working tree '%s' already exists."
msgstr "l'arbre de treball «%s» ja existeix."
+#: builtin/clone.c builtin/difftool.c builtin/log.c builtin/worktree.c
#, c-format
msgid "could not create leading directories of '%s'"
msgstr "no s'han pogut crear els directoris inicials de «%s»"
+#: builtin/clone.c
#, c-format
msgid "could not create work tree dir '%s'"
msgstr "no s'ha pogut crear el directori d'arbre de treball «%s»"
+#: builtin/clone.c
#, c-format
msgid "Cloning into bare repository '%s'...\n"
msgstr "S'està clonant al repositori nu «%s»...\n"
+#: builtin/clone.c
#, c-format
msgid "Cloning into '%s'...\n"
msgstr "S'està clonant a «%s»...\n"
+#: builtin/clone.c
msgid ""
"clone --recursive is not compatible with both --reference and --reference-if-"
"able"
@@ -4416,85 +5552,115 @@ msgstr ""
"clone --recursive no és compatible amb ambdós --reference i --reference-if-"
"able"
+#: builtin/clone.c builtin/remote.c
#, c-format
msgid "'%s' is not a valid remote name"
msgstr "«%s» no és un nom de remot vàlid"
+#: builtin/clone.c
msgid "--depth is ignored in local clones; use file:// instead."
msgstr "--depth s'ignora en els clons locals; useu file:// en lloc d'això."
+#: builtin/clone.c
msgid "--shallow-since is ignored in local clones; use file:// instead."
msgstr ""
"--shallow-since s'ignora en els clons locals; useu file:// en lloc d'això."
+#: builtin/clone.c
msgid "--shallow-exclude is ignored in local clones; use file:// instead."
msgstr ""
"--shallow-exclude s'ignora en els clons locals; useu file:// en lloc d'això."
+#: builtin/clone.c
msgid "--filter is ignored in local clones; use file:// instead."
msgstr "--filter s'ignora en els clons locals; useu file:// en lloc d'això."
+#: builtin/clone.c fetch-pack.c
msgid "source repository is shallow, reject to clone."
msgstr "el repositori font és superficial, es rebutja clonar-ho."
+#: builtin/clone.c
msgid "source repository is shallow, ignoring --local"
msgstr "el repositori font és superficial, s'està ignorant --local"
+#: builtin/clone.c
msgid "--local is ignored"
msgstr "--local s'ignora"
+#: builtin/clone.c
msgid "cannot clone from filtered bundle"
msgstr "no es pot clonar des del farell filtrat"
+#: builtin/clone.c
msgid "failed to initialize the repo, skipping bundle URI"
msgstr "no s'ha pogut inicialitzar el repositori, s'omet l'URI del paquet"
+#: builtin/clone.c
#, c-format
msgid "failed to fetch objects from bundle URI '%s'"
msgstr "no s'han pogut obtenir els objectes de l'URI del paquet «%s»"
+#: builtin/clone.c
msgid "failed to fetch advertised bundles"
msgstr "no s'han pogut obtenir els paquets anunciats"
+#: builtin/clone.c
msgid "remote transport reported error"
msgstr "el transport remot ha informat d'un error"
+#: builtin/clone.c
#, c-format
msgid "Remote branch %s not found in upstream %s"
msgstr "La branca remota %s no es troba en la font %s"
+#: builtin/clone.c
msgid "You appear to have cloned an empty repository."
msgstr "Sembla que heu clonat un repositori buit."
+#: builtin/column.c
msgid "git column [<options>]"
msgstr "git column [<opcions>]"
+#: builtin/column.c
msgid "lookup config vars"
msgstr "cerca les variables de configuració"
+#: builtin/column.c
msgid "layout to use"
msgstr "disposició a usar"
+#: builtin/column.c
msgid "maximum width"
msgstr "amplada màxima"
+#: builtin/column.c
msgid "padding space on left border"
msgstr "espai de farciment al marge esquerre"
+#: builtin/column.c
msgid "padding space on right border"
msgstr "espai de farciment al marge dret"
+#: builtin/column.c
msgid "padding space between columns"
msgstr "espai de farciment entre columnes"
+#: builtin/column.c
+#, c-format
+msgid "%s must be non-negative"
+msgstr "%s ha de ser no negatiu"
+
+#: builtin/column.c
msgid "--command must be the first argument"
msgstr "--command ha de ser el primer argument"
+#: builtin/commit-graph.c
msgid ""
"git commit-graph verify [--object-dir <dir>] [--shallow] [--[no-]progress]"
msgstr ""
"git commit-graph verify [--object-dir <dir>] [--shallow] [--[no-]progress]"
+#: builtin/commit-graph.c
msgid ""
"git commit-graph write [--object-dir <dir>] [--append]\n"
" [--split[=<strategy>]] [--reachable | --stdin-packs | "
@@ -4510,131 +5676,169 @@ msgstr ""
"[no-]progress]\n"
" <split-options>"
+#: builtin/commit-graph.c builtin/fetch.c builtin/log.c builtin/repack.c
msgid "dir"
msgstr "directori"
+#: builtin/commit-graph.c
msgid "the object directory to store the graph"
msgstr "el directori d'objectes a emmagatzemar al graf"
+#: builtin/commit-graph.c
msgid "if the commit-graph is split, only verify the tip file"
msgstr ""
"si el graf de comissions està dividit només, verifica el fitxer de consell"
+#: builtin/commit-graph.c
#, c-format
msgid "Could not open commit-graph '%s'"
msgstr "No s'ha pogut obrir el graf de comissions «%s»"
+#: builtin/commit-graph.c
#, c-format
msgid "could not open commit-graph chain '%s'"
msgstr "no s'ha pogut obrir la cadena «%s» del graf de comissions"
+#: builtin/commit-graph.c
#, c-format
msgid "unrecognized --split argument, %s"
msgstr "argument --split no reconegut, %s"
+#: builtin/commit-graph.c
#, c-format
msgid "unexpected non-hex object ID: %s"
msgstr "ID de l'objecte no hexadecimal inesperat: %s"
+#: builtin/commit-graph.c
#, c-format
msgid "invalid object: %s"
msgstr "no és un objecte vàlid: %s"
+#: builtin/commit-graph.c parse-options-cb.c
#, c-format
msgid "option `%s' expects a numerical value"
msgstr "l'opció «%s» espera un valor numèric"
+#: builtin/commit-graph.c
msgid "start walk at all refs"
msgstr "comença el recorregut en totes les referències"
+#: builtin/commit-graph.c
msgid "scan pack-indexes listed by stdin for commits"
msgstr "explora els índexs del paquet llistats per a stdin per a comissions"
+#: builtin/commit-graph.c
msgid "start walk at commits listed by stdin"
msgstr "comença el recorregut per les comissions llistades per stdin"
+#: builtin/commit-graph.c
msgid "include all commits already in the commit-graph file"
msgstr "inclou ja totes les comissions al fitxer del graf de comissions"
+#: builtin/commit-graph.c
msgid "enable computation for changed paths"
msgstr "habilita la computació per als camins canviats"
+#: builtin/commit-graph.c
msgid "allow writing an incremental commit-graph file"
msgstr "permet escriure un fitxer de graf de comissions incrementals"
+#: builtin/commit-graph.c
msgid "maximum number of commits in a non-base split commit-graph"
msgstr ""
"nombre màxim de comissions en un graf de comissions separades sense base"
+#: builtin/commit-graph.c
msgid "maximum ratio between two levels of a split commit-graph"
msgstr "ràtio màxima entre dos nivells d'un graf de comissions dividit"
+#: builtin/commit-graph.c
msgid "only expire files older than a given date-time"
msgstr "fes caducar només els objectes més antics que l'hora i data donades"
+#: builtin/commit-graph.c
msgid "maximum number of changed-path Bloom filters to compute"
-msgstr "nombre màxim de canvis de camí en filtres Bloom a calcular"
+msgstr "nombre màxim de canvis de camí en filtres de Bloom a calcular"
+#: builtin/commit-graph.c
msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
-msgstr "usa com a màxim un --reachable, --stdin-commits, o --stdin-packs"
+msgstr "usa com a màxim un entre --reachable, --stdin-commits, o --stdin-packs"
+#: builtin/commit-graph.c
msgid "Collecting commits from input"
msgstr "S'estan recollint les comissions de l'entrada"
+#: builtin/commit-tree.c
msgid "git commit-tree <tree> [(-p <parent>)...]"
-msgstr "git commit-tree <tree> [(-p <pare>)...]"
+msgstr "git commit-tree <arbre> [(-p <pare>)...]"
+#: builtin/commit-tree.c
msgid ""
"git commit-tree [(-p <parent>)...] [-S[<keyid>]] [(-m <message>)...]\n"
" [(-F <file>)...] <tree>"
msgstr ""
"git commit-tree [(-p <pare>)...] [-S[<keyid>]] [(-m <missatge>)...]\n"
-" [(-F <fitxer>)...] <tree>"
+" [(-F <fitxer>)...] <arbre>"
+#: builtin/commit-tree.c
#, c-format
msgid "duplicate parent %s ignored"
msgstr "s'han ignorat el pare %s duplicat"
+#: builtin/commit-tree.c builtin/log.c
#, c-format
msgid "not a valid object name %s"
msgstr "no és un nom d'objecte vàlid %s"
+#: builtin/commit-tree.c
#, c-format
msgid "git commit-tree: failed to read '%s'"
msgstr "git commit-tree: ha fallat en llegir «%s»"
+#: builtin/commit-tree.c
#, c-format
msgid "git commit-tree: failed to close '%s'"
msgstr "git commit-tree: ha fallat en tancar «%s»"
+#: builtin/commit-tree.c
msgid "parent"
msgstr "pare"
+#: builtin/commit-tree.c
msgid "id of a parent commit object"
msgstr "id d'un objecte de comissió pare"
+#: builtin/commit-tree.c builtin/commit.c builtin/merge.c builtin/notes.c
+#: builtin/stash.c builtin/tag.c
msgid "message"
msgstr "missatge"
+#: builtin/commit-tree.c builtin/commit.c
msgid "commit message"
msgstr "missatge de comissió"
+#: builtin/commit-tree.c
msgid "read commit log message from file"
msgstr "llegeix el missatge de registre de comissió des d'un fitxer"
+#: builtin/commit-tree.c builtin/commit.c builtin/merge.c builtin/pull.c
+#: builtin/revert.c
msgid "GPG sign commit"
msgstr "signa la comissió amb GPG"
+#: builtin/commit-tree.c
msgid "must give exactly one tree"
msgstr "ha de donar exactament un arbre"
+#: builtin/commit-tree.c
msgid "git commit-tree: failed to read"
msgstr "git commit-tree: ha fallat en llegir"
+#: builtin/commit.c
msgid ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]\n"
" [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|"
-"reword):]<commit>)]\n"
+"reword):]<commit>]\n"
" [-F <file> | -m <msg>] [--reset-author] [--allow-empty]\n"
" [--allow-empty-message] [--no-verify] [-e] [--author=<author>]\n"
" [--date=<date>] [--cleanup=<mode>] [--[no-]status]\n"
@@ -4644,17 +5848,19 @@ msgid ""
msgstr ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]\n"
" [--dry-run] [(-c | -C | --squash) <comissió> | --fixup [(amend|"
-"reword):]<comissió>)]\n"
+"reword):]<comissió>]\n"
" [-F <fitxer> | -m <msg>] [--reset-author] [--allow-empty]\n"
-" [--allow-empty-message] [--no-verify] [-e] [--author=<author>]\n"
-" [--date=<date>] [--cleanup=<mode>] [--[no-]status]\n"
+" [--allow-empty-message] [--no-verify] [-e] [--author=<autor>]\n"
+" [--date=<data>] [--cleanup=<mode>] [--[no-]status]\n"
" [-i | -o] [--pathspec-from-file=<fitxer> [--pathspec-file-nul]]\n"
-" [(--trailer <token>[(=|:)<value>])...] [-S[<keyid>]]\n"
-" [--] [<pathspec>...]"
+" [(--trailer <token>[(=|:)<valor>])...] [-S[<id-clau>]]\n"
+" [--] [<especificació-camí>...]"
+#: builtin/commit.c
msgid "git status [<options>] [--] [<pathspec>...]"
msgstr "git status [<opcions>] [--] [<pathspec>...]"
+#: builtin/commit.c
msgid ""
"You asked to amend the most recent commit, but doing so would make\n"
"it empty. You can repeat your command with --allow-empty, or you can\n"
@@ -4664,6 +5870,7 @@ msgstr ""
"deixaria buida. Podeu repetir la vostra ordre amb --allow-empty, o\n"
"podeu eliminar la comissió per complet amb «git reset HEAD^».\n"
+#: builtin/commit.c
msgid ""
"The previous cherry-pick is now empty, possibly due to conflict resolution.\n"
"If you wish to commit it anyway, use:\n"
@@ -4678,12 +5885,15 @@ msgstr ""
" git commit --allow-empty\n"
"\n"
+#: builtin/commit.c
msgid "Otherwise, please use 'git rebase --skip'\n"
msgstr "Altrament, si us plau useu «git rebase --skip»\n"
+#: builtin/commit.c
msgid "Otherwise, please use 'git cherry-pick --skip'\n"
msgstr "Altrament, si us plau useu «git cherry-pick --skip»\n"
+#: builtin/commit.c
msgid ""
"and then use:\n"
"\n"
@@ -4705,57 +5915,74 @@ msgstr ""
" git cherry-pick --skip\n"
"\n"
+#: builtin/commit.c read-cache.c
msgid "updating files failed"
msgstr "s'ha produït un error en actualitzar els fitxers"
+#: builtin/commit.c
msgid "failed to unpack HEAD tree object"
msgstr "s'ha produït un error en desempaquetar l'objecte d'arbre HEAD"
+#: builtin/commit.c
msgid "No paths with --include/--only does not make sense."
msgstr "--include/--only no té sentit sense camí."
+#: builtin/commit.c
msgid "unable to create temporary index"
msgstr "no s'ha pogut crear un índex temporal"
+#: builtin/commit.c
msgid "interactive add failed"
msgstr "l'afegiment interactiu ha fallat"
+#: builtin/commit.c
msgid "unable to update temporary index"
msgstr "no s'ha pogut actualitzar l'índex temporal"
+#: builtin/commit.c
msgid "Failed to update main cache tree"
msgstr "S'ha produït un error en actualitzar l'arbre principal de memòria cau"
+#: builtin/commit.c
msgid "cannot do a partial commit during a merge."
msgstr "no es pot fer una comissió parcial durant una fusió."
+#: builtin/commit.c
msgid "cannot do a partial commit during a cherry-pick."
msgstr "no es pot fer una comissió parcial durant un «cherry pick»."
+#: builtin/commit.c
msgid "cannot do a partial commit during a rebase."
msgstr "no es pot fer una comissió parcial durant un «rebase»."
+#: builtin/commit.c
msgid "cannot read the index"
msgstr "no es pot llegir l'índex"
+#: builtin/commit.c
msgid "unable to write temporary index file"
msgstr "no s'ha pogut escriure un fitxer d'índex temporal"
+#: builtin/commit.c
#, c-format
msgid "commit '%s' lacks author header"
msgstr "a la comissió «%s» li manca la capçalera d'autor"
+#: builtin/commit.c
#, c-format
msgid "commit '%s' has malformed author line"
msgstr "la comissió «%s» té una línia d'autor mal formada"
+#: builtin/commit.c
msgid "malformed --author parameter"
msgstr "paràmetre --author mal format"
+#: builtin/commit.c ident.c
#, c-format
msgid "invalid date format: %s"
msgstr "format de data no vàlid: %s"
+#: builtin/commit.c
msgid ""
"unable to select a comment character that is not used\n"
"in the current commit message"
@@ -4763,74 +5990,88 @@ msgstr ""
"no es pot seleccionar un caràcter de comentari que\n"
"no sigui usat en el missatge de comissió actual"
+#: builtin/commit.c
#, c-format
msgid "could not lookup commit '%s'"
msgstr "no s'ha pogut cercar la comissió «%s»"
+#: builtin/commit.c builtin/shortlog.c
#, c-format
msgid "(reading log message from standard input)\n"
msgstr "(s'està llegint el missatge de registre des de l'entrada estàndard)\n"
+#: builtin/commit.c
msgid "could not read log from standard input"
msgstr "no s'ha pogut llegir el registre des de l'entrada estàndard"
+#: builtin/commit.c
#, c-format
msgid "could not read log file '%s'"
msgstr "no s'ha pogut llegir el fitxer de registre «%s»"
+#: builtin/commit.c
#, c-format
msgid "options '%s' and '%s:%s' cannot be used together"
msgstr "les opcions «%s» i «%s:%s» no es poden usar juntes"
+#: builtin/commit.c
msgid "could not read SQUASH_MSG"
msgstr "no s'ha pogut llegir SQUASH_MSG"
+#: builtin/commit.c
msgid "could not read MERGE_MSG"
msgstr "no s'ha pogut llegir MERGE_MSG"
+#: builtin/commit.c bundle.c rerere.c sequencer.c
#, c-format
msgid "could not open '%s'"
msgstr "no s'ha pogut obrir «%s»"
+#: builtin/commit.c
msgid "could not write commit template"
msgstr "no s'ha pogut escriure la plantilla de comissió"
+#: builtin/commit.c
#, c-format
msgid ""
"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be ignored.\n"
+"with '%s' will be ignored.\n"
msgstr ""
-"Introduïu el missatge de comissió per als vostres canvis.\n"
-"S'ignoraran les línies que comencin amb «%c».\n"
+"Introduïu el missatge de comissió per als vostres canvis. \n"
+"S'ignoraran les línies que comencin amb «%s».\n"
+#: builtin/commit.c
#, c-format
msgid ""
"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be ignored, and an empty message aborts the commit.\n"
+"with '%s' will be ignored, and an empty message aborts the commit.\n"
msgstr ""
"Introduïu el missatge de comissió dels vostres canvis.\n"
-"S'ignoraran les línies que comencin amb «%c». Un missatge de\n"
+"S'ignoraran les línies que comencin amb «%s». Un missatge de\n"
"comissió buit avorta la comissió.\n"
+#: builtin/commit.c
#, c-format
msgid ""
"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be kept; you may remove them yourself if you want to.\n"
+"with '%s' will be kept; you may remove them yourself if you want to.\n"
msgstr ""
"Introduïu el missatge de comissió pels vostres canvis. Es mantindran\n"
-"les línies que comencin amb «%c»; podeu eliminar-les si voleu.\n"
+"les línies que comencin amb «%s»; podeu eliminar-les vosaltres mateixos\n"
+"si voleu.\n"
+#: builtin/commit.c
#, c-format
msgid ""
"Please enter the commit message for your changes. Lines starting\n"
-"with '%c' will be kept; you may remove them yourself if you want to.\n"
+"with '%s' will be kept; you may remove them yourself if you want to.\n"
"An empty message aborts the commit.\n"
msgstr ""
"Introduïu el missatge de comissió dels vostres canvis.\n"
-"Es mantindran les línies que comencin amb «%c»; podeu eliminar-les "
-"vosaltres\n"
-"mateixos si voleu. Un missatge buit avorta la comissió.\n"
+"Es mantindran les línies que comencin amb «%s»; podeu eliminar-les \n"
+"vosaltres mateixos si voleu. Un missatge buit avorta la comissió.\n"
+#: builtin/commit.c
msgid ""
"\n"
"It looks like you may be committing a merge.\n"
@@ -4844,6 +6085,7 @@ msgstr ""
"\tgit update-ref -d MERGE_HEAD\n"
"i intenteu-ho de nou.\n"
+#: builtin/commit.c
msgid ""
"\n"
"It looks like you may be committing a cherry-pick.\n"
@@ -4857,111 +6099,142 @@ msgstr ""
"\tgit update-ref -d CHERRY_PICK_HEAD\n"
"i intenteu-ho de nou.\n"
+#: builtin/commit.c
#, c-format
msgid "%sAuthor: %.*s <%.*s>"
msgstr "%sAutor: %.*s <%.*s>"
+#: builtin/commit.c
#, c-format
msgid "%sDate: %s"
msgstr "%sData: %s"
+#: builtin/commit.c
#, c-format
msgid "%sCommitter: %.*s <%.*s>"
msgstr "%sComitent: %.*s <%.*s>"
+#: builtin/commit.c
msgid "Cannot read index"
msgstr "No es pot llegir l'índex"
+#: builtin/commit.c builtin/tag.c
msgid "unable to pass trailers to --trailers"
msgstr "no s'han pogut passar els «trailers» a --trailers"
+#: builtin/commit.c
msgid "Error building trees"
msgstr "Error en construir els arbres"
+#: builtin/commit.c builtin/tag.c
#, c-format
msgid "Please supply the message using either -m or -F option.\n"
msgstr "Especifiqueu el missatge usant l'opció -m o l'opció -F.\n"
+#: builtin/commit.c
#, c-format
msgid "--author '%s' is not 'Name <email>' and matches no existing author"
msgstr ""
"--author «%s» no és «Nom <adreça-electrònica>» i no coincideix amb\n"
"cap autor existent"
+#: builtin/commit.c
#, c-format
msgid "Invalid ignored mode '%s'"
msgstr "Mode d'ignorància no vàlid «%s»"
+#: builtin/commit.c
#, c-format
msgid "Invalid untracked files mode '%s'"
msgstr "Mode de fitxers no seguits no vàlid «%s»"
+#: builtin/commit.c
msgid "You are in the middle of a merge -- cannot reword."
msgstr "Esteu enmig d'una fusió -- no es pot fer «reword»."
+#: builtin/commit.c
msgid "You are in the middle of a cherry-pick -- cannot reword."
msgstr "Esteu enmig d'un «cherry pick» -- no es pot fer «reword»."
+#: builtin/commit.c
#, c-format
msgid "reword option of '%s' and path '%s' cannot be used together"
msgstr "les opcions de «reword» «%s» i camí «%s» no es poden usar juntes"
+#: builtin/commit.c
#, c-format
msgid "reword option of '%s' and '%s' cannot be used together"
msgstr "les opcions de «reword» «%s» i «%s» no es poden usar juntes"
+#: builtin/commit.c
msgid "You have nothing to amend."
msgstr "No teniu res a esmenar."
+#: builtin/commit.c
msgid "You are in the middle of a merge -- cannot amend."
msgstr "Esteu enmig d'una fusió -- no es pot esmenar."
+#: builtin/commit.c
msgid "You are in the middle of a cherry-pick -- cannot amend."
msgstr "Esteu enmig d'un «cherry pick» -- no es pot esmenar."
+#: builtin/commit.c
msgid "You are in the middle of a rebase -- cannot amend."
msgstr "Esteu enmig d'un «rebase» -- no es pot esmenar."
+#: builtin/commit.c
msgid "--reset-author can be used only with -C, -c or --amend."
msgstr "--reset-author només es pot usar amb -C, -c o --amend."
+#: builtin/commit.c
#, c-format
msgid "unknown option: --fixup=%s:%s"
msgstr "opció desconeguda: --fixup=%s:%s"
+#: builtin/commit.c
#, c-format
msgid "paths '%s ...' with -a does not make sense"
msgstr "els camins «%s ...» amb -a no tenen sentit"
+#: builtin/commit.c
msgid "show status concisely"
msgstr "mostra l'estat concisament"
+#: builtin/commit.c
msgid "show branch information"
msgstr "mostra la informació de branca"
+#: builtin/commit.c
msgid "show stash information"
msgstr "mostra la informació de «stash»"
+#: builtin/commit.c
msgid "compute full ahead/behind values"
msgstr "calcula els valors complets endavant/darrere"
+#: builtin/commit.c
msgid "version"
msgstr "versió"
+#: builtin/commit.c builtin/fetch.c builtin/push.c builtin/worktree.c
msgid "machine-readable output"
msgstr "sortida llegible per una màquina"
+#: builtin/commit.c
msgid "show status in long format (default)"
msgstr "mostra l'estat en format llarg (per defecte)"
+#: builtin/commit.c
msgid "terminate entries with NUL"
msgstr "acaba les entrades amb NUL"
+#: builtin/commit.c
msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
msgstr ""
"mostra els fitxers no seguits, modes opcionals: all, normal, no. (Per "
"defecte: all)"
+#: builtin/commit.c
msgid ""
"show ignored files, optional modes: traditional, matching, no. (Default: "
"traditional)"
@@ -4969,9 +6242,11 @@ msgstr ""
"mostra els fitxers ignorats, modes opcionals: traditional, matching, no. "
"(Per defecte: traditional, matching, no.)"
+#: builtin/commit.c parse-options.h
msgid "when"
msgstr "quan"
+#: builtin/commit.c
msgid ""
"ignore changes to submodules, optional when: all, dirty, untracked. "
"(Default: all)"
@@ -4979,153 +6254,199 @@ msgstr ""
"ignora els canvis als submòduls, opcional quan: all, dirty, untracked. (Per "
"defecte: all)"
+#: builtin/commit.c
msgid "list untracked files in columns"
msgstr "mostra els fitxers no seguits en columnes"
+#: builtin/commit.c
msgid "do not detect renames"
msgstr "no detectis canvis de noms"
+#: builtin/commit.c
msgid "detect renames, optionally set similarity index"
msgstr "detecta canvis de noms, i opcionalment estableix un índex de semblança"
+#: builtin/commit.c
msgid "Unsupported combination of ignored and untracked-files arguments"
msgstr ""
"No s'admet la combinació d'arguments d'ignorància i de fitxers no seguits"
+#: builtin/commit.c
msgid "suppress summary after successful commit"
msgstr "omet el resum després d'una comissió reeixida"
+#: builtin/commit.c
msgid "show diff in commit message template"
msgstr "mostra la diferència en la plantilla de missatge de comissió"
+#: builtin/commit.c
msgid "Commit message options"
msgstr "Opcions de missatge de comissió"
+#: builtin/commit.c builtin/merge.c builtin/tag.c
msgid "read message from file"
msgstr "llegeix el missatge des d'un fitxer"
+#: builtin/commit.c
msgid "author"
msgstr "autor"
+#: builtin/commit.c
msgid "override author for commit"
msgstr "sobreescriu l'autor de la comissió"
+#: builtin/commit.c builtin/gc.c
msgid "date"
msgstr "data"
+#: builtin/commit.c
msgid "override date for commit"
msgstr "sobreescriu la data de la comissió"
+#: builtin/commit.c parse-options.h ref-filter.h
msgid "commit"
msgstr "comissió"
+#: builtin/commit.c
msgid "reuse and edit message from specified commit"
msgstr "reusa i edita el missatge de la comissió especificada"
+#: builtin/commit.c
msgid "reuse message from specified commit"
msgstr "reusa el missatge de la comissió especificada"
#. TRANSLATORS: Leave "[(amend|reword):]" as-is,
#. and only translate <commit>.
#.
+#: builtin/commit.c
msgid "[(amend|reword):]commit"
msgstr "[(amend|reword):]commit"
+#: builtin/commit.c
msgid ""
"use autosquash formatted message to fixup or amend/reword specified commit"
msgstr ""
-"usa un missatge amb format de «squash» automàtic per a esmenar la comissió "
-"especificada"
+"usa un missatge amb format de «squash» automàtic per a fer amend/reword de "
+"la comissió especificada"
+#: builtin/commit.c
msgid "use autosquash formatted message to squash specified commit"
msgstr ""
"usa un missatge amb format de «squash» automàtic per a fer «squash» de la "
"comissió especificada"
+#: builtin/commit.c
msgid "the commit is authored by me now (used with -C/-c/--amend)"
msgstr "l'autor de la comissió soc jo ara (s'usa amb -C/-c/--amend)"
+#: builtin/commit.c builtin/interpret-trailers.c builtin/tag.c
msgid "trailer"
msgstr "remolc"
+#: builtin/commit.c builtin/tag.c
msgid "add custom trailer(s)"
msgstr "afegeix un «trailer» personalitzat"
+#: builtin/commit.c builtin/log.c builtin/merge.c builtin/pull.c
+#: builtin/revert.c
msgid "add a Signed-off-by trailer"
msgstr "afegeix un «trailer» tipus «Signed-off-by»"
+#: builtin/commit.c
msgid "use specified template file"
msgstr "usa el fitxer de plantilla especificat"
+#: builtin/commit.c
msgid "force edit of commit"
msgstr "força l'edició de la comissió"
+#: builtin/commit.c
msgid "include status in commit message template"
msgstr "inclou l'estat en la plantilla de missatge de comissió"
+#: builtin/commit.c
msgid "Commit contents options"
msgstr "Opcions per al contingut de les comissions"
+#: builtin/commit.c
msgid "commit all changed files"
msgstr "comet tots els fitxers canviats"
+#: builtin/commit.c
msgid "add specified files to index for commit"
msgstr "afegeix els fitxers especificats a l'índex per a cometre"
+#: builtin/commit.c
msgid "interactively add files"
msgstr "afegeix els fitxers interactivament"
+#: builtin/commit.c
msgid "interactively add changes"
msgstr "afegeix els canvis interactivament"
+#: builtin/commit.c
msgid "commit only specified files"
msgstr "comet només els fitxers especificats"
+#: builtin/commit.c
msgid "bypass pre-commit and commit-msg hooks"
msgstr "evita els lligams de precomissió i missatge de comissió"
+#: builtin/commit.c
msgid "show what would be committed"
msgstr "mostra què es cometria"
+#: builtin/commit.c
msgid "amend previous commit"
msgstr "esmena la comissió anterior"
+#: builtin/commit.c
msgid "bypass post-rewrite hook"
msgstr "evita el lligam de post escriptura"
+#: builtin/commit.c
msgid "ok to record an empty change"
msgstr "està bé registrar un canvi buit"
+#: builtin/commit.c
msgid "ok to record a change with an empty message"
msgstr "està bé registrar un canvi amb missatge buit"
+#: builtin/commit.c sequencer.c
msgid "could not parse HEAD commit"
msgstr "no s'ha pogut analitzar la comissió HEAD"
+#: builtin/commit.c
#, c-format
msgid "Corrupt MERGE_HEAD file (%s)"
msgstr "Fitxer MERGE_HEAD malmès (%s)"
+#: builtin/commit.c
msgid "could not read MERGE_MODE"
msgstr "no s'ha pogut llegir MERGE_MODE"
+#: builtin/commit.c
#, c-format
msgid "could not read commit message: %s"
msgstr "no s'ha pogut llegir el missatge de comissió: %s"
+#: builtin/commit.c
#, c-format
msgid "Aborting commit due to empty commit message.\n"
msgstr "S'està avortant la comissió a causa d'un missatge de comissió buit.\n"
+#: builtin/commit.c
#, c-format
msgid "Aborting commit; you did not edit the message.\n"
msgstr "S'està avortant la comissió; no heu editat el missatge.\n"
+#: builtin/commit.c
#, c-format
msgid "Aborting commit due to empty commit message body.\n"
msgstr ""
"S'està interrompent la comissió a causa d'un missatge de comissió buit.\n"
+#: builtin/commit.c
msgid ""
"repository has been updated, but unable to write\n"
"new index file. Check that disk is not full and quota is\n"
@@ -5136,183 +6457,230 @@ msgstr ""
"la quota no s'ha excedit, i després feu «git restore --staged :/n»\n"
"per a recuperar-ho."
-msgid "git config [<options>]"
-msgstr "git config [<opcions>]"
+# Cal traduir els paràmetres amb <...>?
+#: builtin/config.c
+msgid "git config list [<file-option>] [<display-option>] [--includes]"
+msgstr "git config list [<opció-fitxer>] [<opció-presentació>] [--includes]"
-#, c-format
-msgid "unrecognized --type argument, %s"
-msgstr "argument --type no reconegut, %s"
+# Cal traduir els paràmetres amb <...>?
+#: builtin/config.c
+msgid ""
+"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
+"regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name>"
+msgstr ""
+"git config get [<opció-fitxer>] [<opció-presentació>] [--includes] [--all] "
+"[--regexp] [--value=<valor>] [--fixed-value] [--default=<default>] <nom>"
-msgid "only one type at a time"
-msgstr "només un tipus cada cop"
+# Cal traduir els paràmetres amb <...>?
+#: builtin/config.c
+msgid ""
+"git config set [<file-option>] [--type=<type>] [--all] [--value=<value>] [--"
+"fixed-value] <name> <value>"
+msgstr ""
+"git config set [<opció-fitxer>] [--type=<tipus>] [--all] [--value=<valor>] "
+"[--fixed-value] <nom> <valor>"
+# Cal traduir els paràmetres amb <...>?
+#: builtin/config.c
+msgid ""
+"git config unset [<file-option>] [--all] [--value=<value>] [--fixed-value] "
+"<name> <value>"
+msgstr ""
+"git config unset [<opció-fitxer>] [--all] [--value=<valor>] [--fixed-value] "
+"<name> <valor>"
+
+#: builtin/config.c
+msgid "git config rename-section [<file-option>] <old-name> <new-name>"
+msgstr "git config rename-section [<opció-fitxer>] <nom-vell> <nom-nou>"
+
+# Cal traduir els paràmetres amb <...>?
+#: builtin/config.c
+msgid "git config remove-section [<file-option>] <name>"
+msgstr "git config remove-section [<opció-fitxer>] <nom>"
+
+# Cal traduir els paràmetres amb <...>?
+#: builtin/config.c
+msgid "git config edit [<file-option>]"
+msgstr "git config edit [<opció-fitxer>]"
+
+# Cal traduir els paràmetres amb <...>?
+#: builtin/config.c
+msgid "git config [<file-option>] --get-colorbool <name> [<stdout-is-tty>]"
+msgstr "git config [<opció-fitxer>] --get-colorbool <nom> [<stdout-is-tty>]"
+
+# Cal traduir els paràmetres amb <...>?
+#: builtin/config.c
+msgid ""
+"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
+"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
+"<name>"
+msgstr ""
+"git config get [<opció-fitxer>] [<opció-presentació>] [--includes] [--all] "
+"[--regexp=<expr-reg>] [--value=<valor>] [--fixed-value] [--"
+"default=<default>] <nom>"
+
+# Cal traduir els paràmetres amb <...>?
+#: builtin/config.c
+msgid ""
+"git config set [<file-option>] [--type=<type>] [--comment=<message>] [--all] "
+"[--value=<value>] [--fixed-value] <name> <value>"
+msgstr ""
+"git config set [<opció-fitxer>] [--type=<tipus>] [--comment=<missatge>] [--"
+"all] [--value=<valor>] [--fixed-value] <nom> <valor>"
+
+#: builtin/config.c
msgid "Config file location"
msgstr "Ubicació del fitxer de configuració"
+#: builtin/config.c
msgid "use global config file"
msgstr "usa el fitxer de configuració global"
+#: builtin/config.c
msgid "use system config file"
msgstr "usa el fitxer de configuració del sistema"
+#: builtin/config.c
msgid "use repository config file"
msgstr "usa el fitxer de configuració del repositori"
+#: builtin/config.c
msgid "use per-worktree config file"
msgstr "usa un fitxer de configuració per repositori"
+#: builtin/config.c builtin/gc.c
msgid "use given config file"
msgstr "usa el fitxer de configuració donat"
+#: builtin/config.c
msgid "blob-id"
msgstr "ID de blob"
+#: builtin/config.c
msgid "read config from given blob object"
msgstr "llegeix la configuració de l'objecte de blob donat"
-msgid "Action"
-msgstr "Acció"
-
-msgid "get value: name [value-pattern]"
-msgstr "obtén valor: nom [value-pattern]"
-
-msgid "get all values: key [value-pattern]"
-msgstr "obtén tots els valors: clau [value-pattern]"
-
-msgid "get values for regexp: name-regex [value-pattern]"
-msgstr "obtén valors de regexp: name-regex [value-pattern]"
-
-msgid "get value specific for the URL: section[.var] URL"
-msgstr "obtén el valor específic per a l'URL: secció[.variable] URL"
-
-msgid "replace all matching variables: name value [value-pattern]"
-msgstr ""
-"reemplaça totes les variables que coincideixen: nom valor [value-pattern]"
-
-msgid "add a new variable: name value"
-msgstr "afegeix una variable nova: nom valor"
-
-msgid "remove a variable: name [value-pattern]"
-msgstr "elimina una variable: nom [value-pattern]"
-
-msgid "remove all matches: name [value-pattern]"
-msgstr "elimina totes les coincidències: nom [value-pattern]"
-
-msgid "rename section: old-name new-name"
-msgstr "canvia el nom de secció: nom-antic nom-nou"
-
-msgid "remove a section: name"
-msgstr "elimina una secció: nom"
-
-msgid "list all"
-msgstr "llista'ls tots"
-
-msgid "use string equality when comparing values to 'value-pattern'"
-msgstr ""
-"usa la igualtat de les cadenes quan es comparen els valors amb «value-"
-"pattern»"
-
-msgid "open an editor"
-msgstr "obre un editor"
-
-msgid "find the color configured: slot [default]"
-msgstr "troba el color configurat: ranura [per defecte]"
-
-msgid "find the color setting: slot [stdout-is-tty]"
-msgstr "troba el paràmetre de color: ranura [stdout-és-tty]"
-
+#: builtin/config.c
msgid "Type"
msgstr "Tipus"
+#: builtin/config.c builtin/hash-object.c
msgid "type"
msgstr "tipus"
+#: builtin/config.c
msgid "value is given this type"
msgstr "el valor és d'aquest tipus que s'ha donat"
+#: builtin/config.c
msgid "value is \"true\" or \"false\""
msgstr "el valor és «true» o «false»"
+#: builtin/config.c
msgid "value is decimal number"
msgstr "el valor és un nombre decimal"
+#: builtin/config.c
msgid "value is --bool or --int"
msgstr "el valor és --bool o --int"
+#: builtin/config.c
msgid "value is --bool or string"
msgstr "el valor és --bool o string"
+#: builtin/config.c
msgid "value is a path (file or directory name)"
msgstr "el valor és un camí (nom de fitxer o directori)"
+#: builtin/config.c
msgid "value is an expiry date"
msgstr "el valor és una data de venciment"
-msgid "Other"
-msgstr "Altre"
+#: builtin/config.c
+msgid "Display options"
+msgstr "Opcions de visualització"
+#: builtin/config.c
msgid "terminate values with NUL byte"
msgstr "acaba els valors amb un octet NUL"
+#: builtin/config.c
msgid "show variable names only"
msgstr "mostra només els noms de variable"
-msgid "respect include directives on lookup"
-msgstr "respecta les directives d'inclusió en cercar"
-
+#: builtin/config.c
msgid "show origin of config (file, standard input, blob, command line)"
msgstr ""
"mostra l'origen de la configuració (fitxer, entrada estàndard, blob, línia "
"d'ordres)"
+#: builtin/config.c
msgid "show scope of config (worktree, local, global, system, command)"
msgstr ""
"mostra l'abast de la configuració («worktree», «local», «global», «system», "
"«command»)"
-msgid "value"
-msgstr "valor"
+#: builtin/config.c
+msgid "show config keys in addition to their values"
+msgstr "mostra les claus de configuració a més dels seus valors"
-msgid "with --get, use default value when missing entry"
-msgstr "amb --get utilitza el valor per defecte quan falti una entrada"
+#: builtin/config.c
+#, c-format
+msgid "unrecognized --type argument, %s"
+msgstr "argument --type no reconegut, %s"
+
+#: builtin/config.c
+msgid "only one type at a time"
+msgstr "només un tipus cada cop"
+#: builtin/config.c
#, c-format
msgid "wrong number of arguments, should be %d"
msgstr "nombre d'arguments erroni, ha de ser %d"
+#: builtin/config.c
#, c-format
msgid "wrong number of arguments, should be from %d to %d"
msgstr "nombre d'arguments erroni, ha de ser %d a %d"
+#: builtin/config.c
#, c-format
msgid "invalid key pattern: %s"
msgstr "patró de la clau no vàlid: %s"
+#: builtin/config.c config.c
#, c-format
msgid "invalid pattern: %s"
msgstr "patró no vàlid: %s"
+#: builtin/config.c
#, c-format
msgid "failed to format default config value: %s"
msgstr ""
"s'ha produït un error en formatar el valor per defecte de la configuració: %s"
+#: builtin/config.c
#, c-format
msgid "cannot parse color '%s'"
msgstr "no es pot analitzar el color «%s»"
+#: builtin/config.c
msgid "unable to parse default color value"
msgstr "no s'ha pogut analitzar el valor de color per defecte"
+#: builtin/config.c
msgid "not in a git directory"
msgstr "no és en un directori git"
+#: builtin/config.c
msgid "writing to stdin is not supported"
msgstr "no s'admet escriure a stdin"
+#: builtin/config.c
msgid "writing config blobs is not supported"
msgstr "no s'admet l'escriptura de blobs de configuració"
+#: builtin/config.c
#, c-format
msgid ""
"# This is Git's per-user configuration file.\n"
@@ -5327,21 +6695,27 @@ msgstr ""
"#\tname = %s\n"
"#\temail = %s\n"
+#: builtin/config.c
msgid "only one config file at a time"
msgstr "només un fitxer de configuració cada cop"
+#: builtin/config.c
msgid "--local can only be used inside a git repository"
msgstr "--local només es pot usar dins d'un repositori git"
+#: builtin/config.c
msgid "--blob can only be used inside a git repository"
msgstr "--blob només es pot usar dins d'un repositori git"
+#: builtin/config.c
msgid "--worktree can only be used inside a git repository"
msgstr "--worktree només es pot usar dins d'un repositori git"
+#: builtin/config.c builtin/gc.c
msgid "$HOME not set"
msgstr "$HOME no està establerta"
+#: builtin/config.c
msgid ""
"--worktree cannot be used with multiple working trees unless the config\n"
"extension worktreeConfig is enabled. Please read \"CONFIGURATION FILE\"\n"
@@ -5351,44 +6725,102 @@ msgstr ""
"l'extensió de configuració worktreeConfig estigui habilitada. Llegiu la "
"secció «CONFIGURATION FILE» a «git help worktree» per a més detalls"
-msgid "--get-color and variable type are incoherent"
-msgstr "--get-color i el tipus de variable són incoherents"
+#: builtin/config.c
+msgid "Other"
+msgstr "Altre"
-msgid "only one action at a time"
-msgstr "només una acció cada cop"
+#: builtin/config.c
+msgid "respect include directives on lookup"
+msgstr "respecta les directives d'inclusió en cercar"
-msgid "--name-only is only applicable to --list or --get-regexp"
-msgstr "--name-only només és aplicable a --list o --get-regexp"
+#: builtin/config.c
+#, c-format
+msgid "unable to read config file '%s'"
+msgstr "no s'ha pogut llegir el fitxer de configuració «%s»"
-msgid ""
-"--show-origin is only applicable to --get, --get-all, --get-regexp, and --"
-"list"
+#: builtin/config.c
+msgid "error processing config file(s)"
+msgstr "s'ha produït un error en processar els fitxers de configuració"
+
+#: builtin/config.c
+msgid "Filter options"
+msgstr "Opcions de filtre"
+
+# multi-valued → multivalor?
+#: builtin/config.c
+msgid "return all values for multi-valued config options"
+msgstr "retorna tots els valors per a les opcions de configuració multivalor"
+
+#: builtin/config.c
+msgid "interpret the name as a regular expression"
+msgstr "interpreta el nom com una expressió regular"
+
+#: builtin/config.c
+msgid "show config with values matching the pattern"
+msgstr "mostra la configuració amb els valors coincidents amb el patró"
+
+#: builtin/config.c
+msgid "use string equality when comparing values to value pattern"
msgstr ""
-"--show-origin només és aplicable a --get, --get-all, --get-regexp, i --list"
+"usa la igualtat de cadenes quan es comparen els valors amb el patró de valor"
-msgid "--default is only applicable to --get"
-msgstr "--default només és aplicable a --get"
+#: builtin/config.c
+msgid "URL"
+msgstr "URL"
+
+#: builtin/config.c
+msgid "show config matching the given URL"
+msgstr "mostra la configuració coincident amb l'URL indicat"
+
+#: builtin/config.c
+msgid "value"
+msgstr "valor"
+
+#: builtin/config.c
+msgid "use default value when missing entry"
+msgstr "utilitza el valor per defecte quan falti una entrada"
+#: builtin/config.c
msgid "--fixed-value only applies with 'value-pattern'"
msgstr "--fixed-value només s'aplica amb «value-pattern»"
-#, c-format
-msgid "unable to read config file '%s'"
-msgstr "no s'ha pogut llegir el fitxer de configuració «%s»"
+#: builtin/config.c
+msgid "--default= cannot be used with --all or --url="
+msgstr "--default= no es pot utilitzar amb --all o --url="
-msgid "error processing config file(s)"
-msgstr "s'ha produït un error en processar els fitxers de configuració"
+#: builtin/config.c
+msgid "--url= cannot be used with --all, --regexp or --value"
+msgstr "--url= no es pot usar amb --all, --regexp o --value"
-msgid "editing stdin is not supported"
-msgstr "no hi ha compatibilitat per a l'edició a stdin"
+#: builtin/config.c
+msgid "Filter"
+msgstr "Filtra"
-msgid "editing blobs is not supported"
-msgstr "no hi ha compatibilitat per l'edició de blobs"
+# multi-valued → multivalor?
+#: builtin/config.c
+msgid "replace multi-valued config option with new value"
+msgstr "reemplaça l'opció de configuració multivalor amb el valor nou"
-#, c-format
-msgid "cannot create configuration file %s"
-msgstr "no es pot crear el fitxer de configuració %s"
+#: builtin/config.c
+msgid "human-readable comment string (# will be prepended as needed)"
+msgstr ""
+"cadena de comentari llegible per humans (es farà que comence per\n"
+"# si cal)"
+
+#: builtin/config.c
+msgid "add a new line without altering any existing values"
+msgstr "afegeix una línia nova sense alterar cap dels valors existents"
+
+# only applies → només funciona?
+#: builtin/config.c
+msgid "--fixed-value only applies with --value=<pattern>"
+msgstr "--fixed-value només s'aplica amb --value=<patró>"
+#: builtin/config.c
+msgid "--append cannot be used with --value=<pattern>"
+msgstr "no es pot utilitzar --append amb --value=<patró>"
+
+#: builtin/config.c
#, c-format
msgid ""
"cannot overwrite multiple values with a single value\n"
@@ -5397,13 +6829,128 @@ msgstr ""
"no es poden sobreescriure múltiples valors amb un sol valor\n"
" Useu una expressió regular, --add o --replace-all per a canviar %s."
+#: builtin/config.c
#, c-format
msgid "no such section: %s"
msgstr "no existeix la secció: %s"
+#: builtin/config.c
+msgid "editing stdin is not supported"
+msgstr "no hi ha compatibilitat per a l'edició a stdin"
+
+#: builtin/config.c
+msgid "editing blobs is not supported"
+msgstr "no hi ha compatibilitat per l'edició de blobs"
+
+#: builtin/config.c
+#, c-format
+msgid "cannot create configuration file %s"
+msgstr "no es pot crear el fitxer de configuració %s"
+
+#: builtin/config.c
+msgid "Action"
+msgstr "Acció"
+
+#: builtin/config.c
+msgid "get value: name [<value-pattern>]"
+msgstr "get value: nom [<patró-valors>]"
+
+#: builtin/config.c
+msgid "get all values: key [<value-pattern>]"
+msgstr "obté tots els valors: clau [<patró-valors>]"
+
+# he traduit el nom del paràmetre
+#: builtin/config.c
+msgid "get values for regexp: name-regex [<value-pattern>]"
+msgstr ""
+"obté els valors per a l'expressió regular: expressio-regular-nom [<patró-"
+"valors>]"
+
+#: builtin/config.c
+msgid "get value specific for the URL: section[.var] URL"
+msgstr "obtén el valor específic per a l'URL: secció[.variable] URL"
+
+# he traduït els noms dels paràmetres
+#: builtin/config.c
+msgid "replace all matching variables: name value [<value-pattern>]"
+msgstr ""
+"reemplaça totes les variables que coincideixin: nom valor [<patró-valors>]"
+
+#: builtin/config.c
+msgid "add a new variable: name value"
+msgstr "afegeix una variable nova: nom valor"
+
+# cal traduir name?
+#: builtin/config.c
+msgid "remove a variable: name [<value-pattern>]"
+msgstr "elimina una variable: nom [<patró-valors>]"
+
+#: builtin/config.c
+msgid "remove all matches: name [<value-pattern>]"
+msgstr "elimina totes les coincidències: nom [<patró-valors>]"
+
+#: builtin/config.c
+msgid "rename section: old-name new-name"
+msgstr "canvia el nom de secció: nom-antic nom-nou"
+
+#: builtin/config.c
+msgid "remove a section: name"
+msgstr "elimina una secció: nom"
+
+#: builtin/config.c
+msgid "list all"
+msgstr "llista'ls tots"
+
+#: builtin/config.c
+msgid "open an editor"
+msgstr "obre un editor"
+
+# slot → ??? ; <default> → ???
+#: builtin/config.c
+msgid "find the color configured: slot [<default>]"
+msgstr "troba el color configurat: slot [<default>]"
+
+#: builtin/config.c
+msgid "find the color setting: slot [<stdout-is-tty>]"
+msgstr "troba la configuració de color: slot [<stdout-is-tty>]"
+
+#: builtin/config.c
+msgid "with --get, use default value when missing entry"
+msgstr "amb --get utilitza el valor per defecte quan falti una entrada"
+
+#: builtin/config.c
+msgid "--get-color and variable type are incoherent"
+msgstr "--get-color i el tipus de variable són incoherents"
+
+#: builtin/config.c
+msgid "no action specified"
+msgstr "no s'ha especificat cap acció"
+
+#: builtin/config.c
+msgid "--name-only is only applicable to --list or --get-regexp"
+msgstr "--name-only només és aplicable a --list o --get-regexp"
+
+#: builtin/config.c
+msgid ""
+"--show-origin is only applicable to --get, --get-all, --get-regexp, and --"
+"list"
+msgstr ""
+"--show-origin només és aplicable a --get, --get-all, --get-regexp, i --list"
+
+#: builtin/config.c
+msgid "--default is only applicable to --get"
+msgstr "--default només és aplicable a --get"
+
+# add/set/replace sense traduir, entenc
+#: builtin/config.c
+msgid "--comment is only applicable to add/set/replace operations"
+msgstr "--comment només es pot aplicar a operacions add/set/replace"
+
+#: builtin/count-objects.c
msgid "print sizes in human readable format"
msgstr "imprimeix les mides en un format llegible pels humans"
+#: builtin/credential-cache--daemon.c
#, c-format
msgid ""
"The permissions on your socket directory are too loose; other\n"
@@ -5417,67 +6964,83 @@ msgstr ""
"\n"
"\tchmod 0700 %s"
+#: builtin/credential-cache--daemon.c
msgid "print debugging messages to stderr"
msgstr "imprimeix els missatges de depuració a stderr"
+#: builtin/credential-cache--daemon.c
msgid "credential-cache--daemon unavailable; no unix socket support"
msgstr ""
"credential-cache--daemon no disponible; no hi ha compatibilitat amb sòcols "
"d'unix"
+#: builtin/credential-cache.c
msgid "credential-cache unavailable; no unix socket support"
msgstr ""
"credencial-cache no disponible; no hi ha compatibilitat amb els sòcols d'unix"
+#: builtin/credential-store.c
#, c-format
msgid "unable to get credential storage lock in %d ms"
msgstr ""
"no s'ha pogut obtenir el bloqueig de l'emmagatzematge de credencials en %d ms"
+#: builtin/describe.c
msgid ""
"git describe [--all] [--tags] [--contains] [--abbrev=<n>] [<commit-ish>...]"
msgstr ""
"git describe [--all] [--tags] [--contains] [--abbrev=<n>] [<commit-ish>...]"
+#: builtin/describe.c
msgid ""
"git describe [--all] [--tags] [--contains] [--abbrev=<n>] --dirty[=<mark>]"
msgstr ""
"git describe [--all] [--tags] [--contains] [--abbrev=<n>] --dirty[=<mark>]"
+#: builtin/describe.c
msgid "git describe <blob>"
msgstr "git describe <blob>"
+#: builtin/describe.c
msgid "head"
msgstr "davant per"
+#: builtin/describe.c
msgid "lightweight"
msgstr "lleuger"
+#: builtin/describe.c
msgid "annotated"
msgstr "anotat"
+#: builtin/describe.c
#, c-format
msgid "annotated tag %s not available"
msgstr "l'etiqueta anotada %s no és disponible"
+#: builtin/describe.c
#, c-format
msgid "tag '%s' is externally known as '%s'"
msgstr "l'etiqueta «%s» es coneix externament com a «%s»"
+#: builtin/describe.c
#, c-format
msgid "no tag exactly matches '%s'"
msgstr "cap etiqueta coincideix exactament amb «%s»"
+#: builtin/describe.c
#, c-format
msgid "No exact match on refs or tags, searching to describe\n"
msgstr ""
"No hi ha cap coincidència exacta en la cerca de referències o etiquetes per "
"a descriure\n"
+#: builtin/describe.c
#, c-format
msgid "finished search at %s\n"
msgstr "s'ha finalitzat la cerca a %s\n"
+#: builtin/describe.c
#, c-format
msgid ""
"No annotated tags can describe '%s'.\n"
@@ -5486,6 +7049,7 @@ msgstr ""
"Cap etiqueta anotada pot descriure «%s».\n"
"No obstant això, hi havia etiquetes no anotades: proveu --tags."
+#: builtin/describe.c
#, c-format
msgid ""
"No tags can describe '%s'.\n"
@@ -5494,10 +7058,12 @@ msgstr ""
"Cap etiqueta pot descriure «%s».\n"
"Proveu --always, o creeu algunes etiquetes."
+#: builtin/describe.c
#, c-format
msgid "traversed %lu commits\n"
msgstr "%lu comissions recorregudes\n"
+#: builtin/describe.c
#, c-format
msgid ""
"more than %i tags found; listed %i most recent\n"
@@ -5506,67 +7072,87 @@ msgstr ""
"s'han trobat més de %i etiquetes: s'han llistat les %i més recents\n"
"s'ha renunciat la cerca a %s\n"
+#: builtin/describe.c
#, c-format
msgid "describe %s\n"
msgstr "descriu %s\n"
+#: builtin/describe.c
#, c-format
msgid "Not a valid object name %s"
msgstr "%s no és un nom d'objecte vàlid"
+#: builtin/describe.c
#, c-format
msgid "%s is neither a commit nor blob"
msgstr "%s no és una comissió o un blob"
+#: builtin/describe.c
msgid "find the tag that comes after the commit"
msgstr "troba l'etiqueta que vingui després de la comissió"
+#: builtin/describe.c
msgid "debug search strategy on stderr"
msgstr "estratègia de cerca de depuració en stderr"
+#: builtin/describe.c
msgid "use any ref"
msgstr "usa qualsevol referència"
+#: builtin/describe.c
msgid "use any tag, even unannotated"
msgstr "usa qualsevol etiqueta, fins i tot aquelles sense anotar"
+#: builtin/describe.c
msgid "always use long format"
msgstr "sempre usa el format llarg"
+#: builtin/describe.c
msgid "only follow first parent"
msgstr "només segueix el primer pare"
+#: builtin/describe.c
msgid "only output exact matches"
msgstr "emet només coincidències exactes"
+#: builtin/describe.c
msgid "consider <n> most recent tags (default: 10)"
msgstr "considera les <n> etiquetes més recents (per defecte: 10)"
+#: builtin/describe.c
msgid "only consider tags matching <pattern>"
msgstr "només considera les etiquetes que coincideixen amb <patró>"
+#: builtin/describe.c
msgid "do not consider tags matching <pattern>"
msgstr "no consideris les etiquetes que no coincideixen amb <patró>"
+#: builtin/describe.c builtin/name-rev.c
msgid "show abbreviated commit object as fallback"
msgstr "mostra l'objecte de comissió abreviat com a sistema alternatiu"
+#: builtin/describe.c
msgid "mark"
msgstr "marca"
+#: builtin/describe.c
msgid "append <mark> on dirty working tree (default: \"-dirty\")"
msgstr "annexa <marca> en l'arbre de treball brut (per defecte: «-dirty»)"
+#: builtin/describe.c
msgid "append <mark> on broken working tree (default: \"-broken\")"
msgstr "annexa <marca> en l'arbre de treball brut (per defecte: «-broken»)"
+#: builtin/describe.c
msgid "No names found, cannot describe anything."
msgstr "No s'ha trobat cap nom, no es pot descriure res."
+#: builtin/describe.c
#, c-format
msgid "option '%s' and commit-ishes cannot be used together"
msgstr "opció «%s» i les de comissió no es poden usar juntes"
+#: builtin/diagnose.c
msgid ""
"git diagnose [(-o | --output-directory) <path>] [(-s | --suffix) <format>]\n"
" [--mode=<mode>]"
@@ -5574,67 +7160,85 @@ msgstr ""
"git diagnose [(-o | --output-directory) <camí>] [(-s | --suffix) <format>]\n"
" [--mode=<mode>]"
+#: builtin/diagnose.c
msgid "specify a destination for the diagnostics archive"
msgstr "especifiqueu una destinació per a l'arxiu de diagnòstic"
+#: builtin/diagnose.c
msgid "specify a strftime format suffix for the filename"
msgstr "especifiqueu un sufix en format strftime per al nom de fitxer"
+#: builtin/diagnose.c
msgid "specify the content of the diagnostic archive"
msgstr "especifica el contingut de l'arxiu de diagnòstic"
+#: builtin/diff-tree.c
msgid "--merge-base only works with two commits"
msgstr "--merge-base només funciona amb dues comissions"
+#: builtin/diff.c
#, c-format
msgid "'%s': not a regular file or symlink"
msgstr "«%s»: no és ni fitxer regular ni enllaç simbòlic"
+#: builtin/diff.c
msgid "no merge given, only parents."
msgstr "no s'ha donat cap fusió, només els pares."
+#: builtin/diff.c
#, c-format
msgid "invalid option: %s"
msgstr "opció no vàlida: %s"
+#: builtin/diff.c
#, c-format
msgid "%s...%s: no merge base"
msgstr "%s...%s: sense una base de fusió"
+#: builtin/diff.c
msgid "Not a git repository"
msgstr "No és un repositori de git"
+#: builtin/diff.c builtin/grep.c
#, c-format
msgid "invalid object '%s' given."
msgstr "s'ha donat un objecte no vàlid «%s»."
+#: builtin/diff.c
#, c-format
msgid "more than two blobs given: '%s'"
msgstr "s'ha donat més de dos blobs: «%s»"
+#: builtin/diff.c
#, c-format
msgid "unhandled object '%s' given."
msgstr "s'ha donat l'objecte no gestionat «%s»."
+#: builtin/diff.c
#, c-format
msgid "%s...%s: multiple merge bases, using %s"
msgstr "%s...%s: múltiples bases de fusió, utilitzant %s"
+#: builtin/difftool.c
msgid "git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]"
msgstr "git difftool [<opcions>] [<comissió> [<comissió>]] [--] [<camí>...]"
+#: builtin/difftool.c
#, c-format
msgid "could not read symlink %s"
msgstr "no s'ha pogut llegir l'enllaç simbòlic %s"
+#: builtin/difftool.c
#, c-format
msgid "could not read symlink file %s"
msgstr "no s'ha pogut llegir el fitxer d'enllaç simbòlic %s"
+#: builtin/difftool.c
#, c-format
msgid "could not read object %s for symlink %s"
msgstr "no es pot llegir l'objecte %s per l'enllaç simbòlic %s"
+#: builtin/difftool.c
msgid ""
"combined diff formats ('-c' and '--cc') are not supported in\n"
"directory diff mode ('-d' and '--dir-diff')."
@@ -5642,50 +7246,64 @@ msgstr ""
"els formats de diff combinats («-c» i «--cc») no s'admeten\n"
"en el mode diff de directoris («-d» i «--dir-diff»)."
+#: builtin/difftool.c
#, c-format
msgid "both files modified: '%s' and '%s'."
msgstr "s'han modificat ambdós fitxers: «%s» i «%s»."
+#: builtin/difftool.c
msgid "working tree file has been left."
msgstr "s'ha deixat un fitxer de l'arbre de treball."
+#: builtin/difftool.c sequencer.c
#, c-format
msgid "could not copy '%s' to '%s'"
msgstr "no s'ha pogut copiar «%s» a «%s»"
+#: builtin/difftool.c
#, c-format
msgid "temporary files exist in '%s'."
msgstr "existeix un fitxer temporal a «%s»."
+#: builtin/difftool.c
msgid "you may want to cleanup or recover these."
msgstr "podeu netejar o recuperar-los."
+#: builtin/difftool.c
#, c-format
msgid "failed: %d"
msgstr "ha fallat: %d"
+#: builtin/difftool.c
msgid "use `diff.guitool` instead of `diff.tool`"
msgstr "usa «diff.guitool» en lloc de «diff.tool»"
+#: builtin/difftool.c
msgid "perform a full-directory diff"
msgstr "fes un diff de tot el directori"
+#: builtin/difftool.c
msgid "do not prompt before launching a diff tool"
msgstr "no preguntis abans d'executar l'eina diff"
+#: builtin/difftool.c
msgid "use symlinks in dir-diff mode"
msgstr "utilitza enllaços simbòlics en mode dir-diff"
+#: builtin/difftool.c
msgid "tool"
msgstr "eina"
+#: builtin/difftool.c
msgid "use the specified diff tool"
msgstr "utilitza l'eina de diff especificada"
+#: builtin/difftool.c
msgid "print a list of diff tools that may be used with `--tool`"
msgstr ""
"imprimeix una llista de totes les eines diff que podeu usar amb «--tool»"
+#: builtin/difftool.c
msgid ""
"make 'git-difftool' exit when an invoked diff tool returns a non-zero exit "
"code"
@@ -5693,187 +7311,241 @@ msgstr ""
"fes que «git-difftool» surti quan l'eina de diff invocada torna un codi de "
"sortida diferent de zero"
+#: builtin/difftool.c
msgid "specify a custom command for viewing diffs"
msgstr "especifiqueu una ordre personalitzada per a veure diffs"
+#: builtin/difftool.c
msgid "passed to `diff`"
msgstr "passa-ho a «diff»"
+#: builtin/difftool.c
msgid "difftool requires worktree or --no-index"
msgstr "difftool requereix worktree o --no-index"
+#: builtin/difftool.c
msgid "no <tool> given for --tool=<tool>"
msgstr "no s'ha proporcionat l'<eina> per a --tool=<eina>"
+#: builtin/difftool.c
msgid "no <cmd> given for --extcmd=<cmd>"
msgstr "no s'ha proporcionat l'<ordre> per a --extcmd=<ordre>"
+#: builtin/fast-export.c
msgid "git fast-export [<rev-list-opts>]"
msgstr "git fast-export [<rev-list-opts>]"
+#: builtin/fast-export.c
msgid "Error: Cannot export nested tags unless --mark-tags is specified."
msgstr ""
"Error: no es poden exportar les etiquetes imbricades a menys que "
"s'especifiqui --mark-tags."
+#: builtin/fast-export.c
msgid "--anonymize-map token cannot be empty"
msgstr "el testimoni de --anonymize-map no pot estar buit"
+#: builtin/fast-export.c
msgid "show progress after <n> objects"
msgstr "mostra el progrés després de <n> objectes"
+#: builtin/fast-export.c
msgid "select handling of signed tags"
msgstr "selecciona la gestió de les etiquetes signades"
+#: builtin/fast-export.c
msgid "select handling of tags that tag filtered objects"
msgstr "selecciona la gestió de les etiquetes que etiquetin objectes filtrats"
+#: builtin/fast-export.c
msgid "select handling of commit messages in an alternate encoding"
msgstr ""
"selecciona la gestió dels missatges de comissió en una codificació "
"alternativa"
+#: builtin/fast-export.c
msgid "dump marks to this file"
msgstr "bolca les marques a aquest fitxer"
+#: builtin/fast-export.c
msgid "import marks from this file"
msgstr "importa les marques d'aquest fitxer"
+#: builtin/fast-export.c
msgid "import marks from this file if it exists"
msgstr "importa marques d'aquest fitxer si existeix"
+#: builtin/fast-export.c
msgid "fake a tagger when tags lack one"
msgstr "fingeix un etiquetador quan en falti un a les etiquetes"
+#: builtin/fast-export.c
msgid "output full tree for each commit"
msgstr "imprimeix l'arbre complet de per a cada comissió"
+#: builtin/fast-export.c
msgid "use the done feature to terminate the stream"
msgstr "usa la característica fet per a acabar el flux"
+#: builtin/fast-export.c
msgid "skip output of blob data"
msgstr "omet la sortida de dades de blob"
+#: builtin/fast-export.c builtin/log.c
msgid "refspec"
msgstr "especificació de referència"
+#: builtin/fast-export.c
msgid "apply refspec to exported refs"
msgstr "aplica l'especificació de referència a les referències exportades"
+#: builtin/fast-export.c
msgid "anonymize output"
msgstr "anonimitza la sortida"
+#: builtin/fast-export.c
msgid "from:to"
msgstr "des de:a"
+#: builtin/fast-export.c
msgid "convert <from> to <to> in anonymized output"
msgstr "converteix <from> a <to> en una sortida anònima"
+#: builtin/fast-export.c
msgid "reference parents which are not in fast-export stream by object id"
msgstr ""
"referència els pares que no estan en flux d'exportació ràpida per "
"identificador d'objecte"
+#: builtin/fast-export.c
msgid "show original object ids of blobs/commits"
msgstr "mostra els ID dels objectes originals dels blobs i comissions"
+#: builtin/fast-export.c
msgid "label tags with mark ids"
msgstr "marca les etiquetes amb els identificadors de marca"
+#: builtin/fast-import.c
#, c-format
msgid "Missing from marks for submodule '%s'"
msgstr "Falten les marques «from» per al submòdul «%s»"
+#: builtin/fast-import.c
#, c-format
msgid "Missing to marks for submodule '%s'"
msgstr "Falten les marques per al submòdul «%s»"
+#: builtin/fast-import.c
#, c-format
msgid "Expected 'mark' command, got %s"
msgstr "S'esperava l'ordre «mark», s'ha rebut %s"
+#: builtin/fast-import.c
#, c-format
msgid "Expected 'to' command, got %s"
msgstr "S'esperava l'ordre «to», s'ha rebut «%s»"
+#: builtin/fast-import.c
msgid "Expected format name:filename for submodule rewrite option"
msgstr ""
"S'esperava el format «nom:nom de fitxer» per a l'opció de reescriptura de "
"submòdul"
+#: builtin/fast-import.c
#, c-format
msgid "feature '%s' forbidden in input without --allow-unsafe-features"
msgstr ""
"característica «%s» prohibida a l'entrada sense --allow-unsafe-features"
+#: builtin/fetch-pack.c
#, c-format
msgid "Lockfile created but not reported: %s"
msgstr "S'ha creat el fitxer de bloqueig però no s'ha informat: %s"
+#: builtin/fetch.c
msgid "git fetch [<options>] [<repository> [<refspec>...]]"
-msgstr ""
-"git fetch [<opcions>] [<repositori> [<especificació-de-referència>...]]"
+msgstr "git fetch [<opcions>] [<repositori> [<especificació-referència>...]]"
+#: builtin/fetch.c
msgid "git fetch [<options>] <group>"
msgstr "git fetch [<opcions>] <grup>"
+#: builtin/fetch.c
msgid "git fetch --multiple [<options>] [(<repository> | <group>)...]"
msgstr "git fetch --multiple [<opcions>] [(<repositori> | <grup>)...]"
+#: builtin/fetch.c
msgid "git fetch --all [<options>]"
msgstr "git fetch --all [<opcions>]"
+#: builtin/fetch.c
msgid "fetch.parallel cannot be negative"
msgstr "fetch.parallel no pot ser negatiu"
+#: builtin/fetch.c
msgid "couldn't find remote ref HEAD"
msgstr "no s'ha pogut trobar la referència HEAD remota"
+#: builtin/fetch.c
#, c-format
msgid "From %.*s\n"
msgstr "De %.*s\n"
+#: builtin/fetch.c
#, c-format
msgid "object %s not found"
msgstr "objecte %s no trobat"
+#: builtin/fetch.c
msgid "[up to date]"
msgstr "[al dia]"
+#: builtin/fetch.c
msgid "[rejected]"
msgstr "[rebutjat]"
+#: builtin/fetch.c
msgid "can't fetch into checked-out branch"
msgstr "no es pot obtenir en la branca actual"
+#: builtin/fetch.c
msgid "[tag update]"
msgstr "[actualització d'etiqueta]"
+#: builtin/fetch.c
msgid "unable to update local ref"
msgstr "no s'ha pogut actualitzar la referència local"
+#: builtin/fetch.c
msgid "would clobber existing tag"
msgstr "s'adjuntaria l'etiqueta existent"
+#: builtin/fetch.c
msgid "[new tag]"
msgstr "[etiqueta nova]"
+#: builtin/fetch.c
msgid "[new branch]"
msgstr "[branca nova]"
+#: builtin/fetch.c
msgid "[new ref]"
msgstr "[referència nova]"
+#: builtin/fetch.c
msgid "forced update"
msgstr "actualització forçada"
+#: builtin/fetch.c
msgid "non-fast-forward"
msgstr "sense avanç ràpid"
+#: builtin/fetch.c builtin/grep.c sequencer.c
#, c-format
msgid "cannot open '%s'"
msgstr "no es pot obrir «%s»"
+#: builtin/fetch.c
msgid ""
"fetch normally indicates which branches had a forced update,\n"
"but that check has been disabled; to re-enable, use '--show-forced-updates'\n"
@@ -5885,6 +7557,7 @@ msgstr ""
"utilitzeu\n"
"«--show-forced-updates» o executeu «git config fetch.showForcedUpdates true»"
+#: builtin/fetch.c
#, c-format
msgid ""
"it took %.2f seconds to check forced updates; you can use\n"
@@ -5896,15 +7569,18 @@ msgstr ""
"utilitzar «--no-show-forced-updates» o executar «git config \n"
"fetch.showForcedUpdates false» per a evitar aquesta comprovació.\n"
+#: builtin/fetch.c
#, c-format
-msgid "%s did not send all necessary objects\n"
-msgstr "%s no ha enviat tots els objectes necessaris\n"
+msgid "%s did not send all necessary objects"
+msgstr "%s no ha enviat tot els objectes necessaris"
+#: builtin/fetch.c
#, c-format
msgid "rejected %s because shallow roots are not allowed to be updated"
msgstr ""
"s'ha rebutjat %s perquè no es permeten actualitzar les arrels superficials"
+#: builtin/fetch.c
#, c-format
msgid ""
"some local refs could not be updated; try running\n"
@@ -5914,43 +7590,54 @@ msgstr ""
" intenteu executar «git remote prune %s» per a eliminar\n"
" qualsevol branca antiga o conflictiva"
+#: builtin/fetch.c
#, c-format
msgid " (%s will become dangling)"
-msgstr " (%s es tornarà penjant)"
+msgstr " (%s es tornarà despenjat)"
+#: builtin/fetch.c
#, c-format
msgid " (%s has become dangling)"
-msgstr " (%s s'ha tornat penjant)"
+msgstr " (%s s'ha quedat despenjat)"
+#: builtin/fetch.c
msgid "[deleted]"
msgstr "[suprimit]"
+#: builtin/fetch.c builtin/remote.c
msgid "(none)"
msgstr "(cap)"
+#: builtin/fetch.c
#, c-format
msgid "refusing to fetch into branch '%s' checked out at '%s'"
msgstr "s'ha rebutjat l'obtenció en la branca «%s» agafada a «%s»"
+#: builtin/fetch.c
#, c-format
msgid "option \"%s\" value \"%s\" is not valid for %s"
msgstr "l'opció «%s» amb valor «%s» no és vàlida per a %s"
+#: builtin/fetch.c
#, c-format
-msgid "option \"%s\" is ignored for %s\n"
-msgstr "s'ignora l'opció «%s» per a %s\n"
+msgid "option \"%s\" is ignored for %s"
+msgstr "l'opció «%s» s'ignora per a «%s»"
+#: builtin/fetch.c object-file.c
#, c-format
msgid "%s is not a valid object"
msgstr "%s no és un objecte vàlid"
+#: builtin/fetch.c
#, c-format
msgid "the object %s does not exist"
msgstr "l'objecte %s no existeix"
+#: builtin/fetch.c
msgid "multiple branches detected, incompatible with --set-upstream"
msgstr "s'han detectat múltiples branques, incompatible amb --set-upstream"
+#: builtin/fetch.c
#, c-format
msgid ""
"could not set upstream of HEAD to '%s' from '%s' when it does not point to "
@@ -5959,16 +7646,20 @@ msgstr ""
"no s'ha pogut establir la font de HEAD a «%s» des de «%s» quan no assenyala "
"cap branca."
+#: builtin/fetch.c
msgid "not setting upstream for a remote remote-tracking branch"
msgstr ""
"no s'està configurant la font per a una branca remota amb seguiment remot"
+#: builtin/fetch.c
msgid "not setting upstream for a remote tag"
msgstr "no s'està configurant la font d'una etiqueta remota"
+#: builtin/fetch.c
msgid "unknown branch type"
msgstr "tipus de branca desconegut"
+#: builtin/fetch.c
msgid ""
"no source branch found;\n"
"you need to specify exactly one branch with the --set-upstream option"
@@ -5976,18 +7667,22 @@ msgstr ""
"no s'ha trobat cap branca d'origen.\n"
"heu d'especificar exactament una branca amb l'opció --set-upstream"
+#: builtin/fetch.c
#, c-format
msgid "Fetching %s\n"
msgstr "S'està obtenint %s\n"
+#: builtin/fetch.c
#, c-format
msgid "could not fetch %s"
msgstr "no s'ha pogut obtenir %s"
+#: builtin/fetch.c
#, c-format
msgid "could not fetch '%s' (exit code: %d)\n"
msgstr "no s'ha pogut obtenir «%s» (codi de sortida: %d)\n"
+#: builtin/fetch.c
msgid ""
"no remote repository specified; please specify either a URL or a\n"
"remote name from which new revisions should be fetched"
@@ -5995,82 +7690,107 @@ msgstr ""
"no s'ha especificat cap repositori remot. Especifiqueu un URL o\n"
"un nom remot del qual s'han d'obtenir les revisions noves"
+#: builtin/fetch.c
msgid "you need to specify a tag name"
msgstr "necessiteu especificar un nom d'etiqueta"
+#: builtin/fetch.c builtin/pull.c
msgid "fetch from all remotes"
msgstr "obtén de tots els remots"
+#: builtin/fetch.c builtin/pull.c
msgid "set upstream for git pull/fetch"
msgstr "estableix la font per a git pull/fetch"
+#: builtin/fetch.c builtin/pull.c
msgid "append to .git/FETCH_HEAD instead of overwriting"
msgstr "annexa a .git/FETCH_HEAD en lloc de sobreescriure'l"
+#: builtin/fetch.c
msgid "use atomic transaction to update references"
msgstr "usa una transacció atòmica per a actualitzar les referències"
+#: builtin/fetch.c builtin/pull.c
msgid "path to upload pack on remote end"
msgstr "camí al qual pujar el paquet al costat remot"
+#: builtin/fetch.c
msgid "force overwrite of local reference"
msgstr "força la sobreescriptura de la referència local"
+#: builtin/fetch.c
msgid "fetch from multiple remotes"
msgstr "obtén de múltiples remots"
+#: builtin/fetch.c builtin/pull.c
msgid "fetch all tags and associated objects"
msgstr "obtén totes les etiquetes i tots els objectes associats"
+#: builtin/fetch.c
msgid "do not fetch all tags (--no-tags)"
msgstr "no obtinguis les etiquetes (--no-tags)"
+#: builtin/fetch.c
msgid "number of submodules fetched in parallel"
msgstr "nombre de submòduls obtinguts en paral·lel"
+#: builtin/fetch.c
msgid "modify the refspec to place all refs within refs/prefetch/"
msgstr ""
"modifica l'especificació de referència per a col·locar totes les referències "
"dins de refs/prefetch/"
+#: builtin/fetch.c builtin/pull.c
msgid "prune remote-tracking branches no longer on remote"
msgstr "poda les branques amb seguiment remot que ja no estiguin en el remot"
+#: builtin/fetch.c
msgid "prune local tags no longer on remote and clobber changed tags"
msgstr ""
"poda les etiquetes locals que ja no existeixen al remot i adjunta les "
"etiquetes que han canviat"
+#: builtin/fetch.c builtin/pull.c
msgid "on-demand"
msgstr "sota demanda"
+#: builtin/fetch.c
msgid "control recursive fetching of submodules"
msgstr "controla l'obtenció recursiva de submòduls"
+#: builtin/fetch.c
msgid "write fetched references to the FETCH_HEAD file"
msgstr "escriu les referències obtingudes al fitxer FETCH_HEAD"
+#: builtin/fetch.c builtin/pull.c
msgid "keep downloaded pack"
msgstr "retén el paquet baixat"
+#: builtin/fetch.c
msgid "allow updating of HEAD ref"
msgstr "permet l'actualització de la referència HEAD"
+#: builtin/fetch.c builtin/pull.c
msgid "deepen history of shallow clone"
msgstr "aprofundeix la història d'un clon superficial"
+#: builtin/fetch.c builtin/pull.c
msgid "deepen history of shallow repository based on time"
msgstr "aprofundeix la història d'un clon superficial basat en una data"
+#: builtin/fetch.c builtin/pull.c
msgid "convert to a complete repository"
msgstr "converteix en un repositori complet"
+#: builtin/fetch.c
msgid "re-fetch without negotiating common commits"
msgstr "tornar a obtenir sense negociar comissions comunes"
+#: builtin/fetch.c
msgid "prepend this to submodule path output"
msgstr "anteposa això a la sortida de camí del submòdul"
+#: builtin/fetch.c
msgid ""
"default for recursive fetching of submodules (lower priority than config "
"files)"
@@ -6078,68 +7798,88 @@ msgstr ""
"per defecte per a l'obtenció recursiva de submòduls (prioritat més baixa que "
"els fitxers de configuració)"
+#: builtin/fetch.c builtin/pull.c
msgid "accept refs that update .git/shallow"
msgstr "accepta les referències que actualitzin .git/shallow"
+#: builtin/fetch.c builtin/pull.c
msgid "refmap"
msgstr "mapa de referències"
+#: builtin/fetch.c builtin/pull.c
msgid "specify fetch refmap"
msgstr "específica l'obtenció del mapa de referències"
+#: builtin/fetch.c builtin/pull.c
msgid "report that we have only objects reachable from this object"
msgstr "informa que només hi ha objectes abastables des d'aquest objecte"
+#: builtin/fetch.c
msgid "do not fetch a packfile; instead, print ancestors of negotiation tips"
msgstr ""
"no obtinguis un fitxer de paquet; en canvi, mostra els avantpassats dels "
"consells de negociació"
+#: builtin/fetch.c
msgid "run 'maintenance --auto' after fetching"
msgstr "executa «maintenance --auto» després d'obtenir"
+#: builtin/fetch.c builtin/pull.c
msgid "check for forced-updates on all updated branches"
msgstr ""
"comprova si hi ha actualitzacions forçades a totes les branques actualitzades"
+#: builtin/fetch.c
msgid "write the commit-graph after fetching"
msgstr "escriu el graf de comissions després de recollir"
+#: builtin/fetch.c
msgid "accept refspecs from stdin"
msgstr "llegeix les especificacions de referència des de stdin"
+#: builtin/fetch.c
msgid "--negotiate-only needs one or more --negotiation-tip=*"
msgstr "--negotiate-only necessita un o més --negotiation-tip=*"
+#: builtin/fetch.c
msgid "negative depth in --deepen is not supported"
msgstr "no s'admet una profunditat negativa en --deepen"
+#: builtin/fetch.c
msgid "--unshallow on a complete repository does not make sense"
msgstr "--unshallow en un repositori complet no té sentit"
+#: builtin/fetch.c
#, c-format
msgid "failed to fetch bundles from '%s'"
msgstr "no s'han pogut obtenir els paquets de «%s»"
+#: builtin/fetch.c
msgid "fetch --all does not take a repository argument"
msgstr "fetch --all no accepta un argument de repositori"
+#: builtin/fetch.c
msgid "fetch --all does not make sense with refspecs"
msgstr "fetch --all no té sentit amb especificacions de referència"
+#: builtin/fetch.c
#, c-format
msgid "no such remote or remote group: %s"
msgstr "no existeix un remot ni un grup remot: %s"
+#: builtin/fetch.c
msgid "fetching a group and specifying refspecs does not make sense"
msgstr "obtenir un grup i especificar referències no té sentit"
+#: builtin/fetch.c
msgid "must supply remote when using --negotiate-only"
msgstr "s'ha de subministrar el remot en usar --negotiate-only"
+#: builtin/fetch.c
msgid "protocol does not support --negotiate-only, exiting"
msgstr "el protocol no admet --negotiate-only, se surt"
+#: builtin/fetch.c
msgid ""
"--filter can only be used with the remote configured in extensions."
"partialclone"
@@ -6147,125 +7887,170 @@ msgstr ""
"--filter només es pot utilitzar amb el remot configurat en extensions."
"partialclone"
+#: builtin/fetch.c
msgid "--atomic can only be used when fetching from one remote"
msgstr "l'opció --atomic només es pot usar quan s'obté des d'un remot"
+#: builtin/fetch.c
msgid "--stdin can only be used when fetching from one remote"
msgstr "l'opció --stdin només es pot usar quan s'obté des d'un remot"
+#: builtin/fmt-merge-msg.c
msgid ""
"git fmt-merge-msg [-m <message>] [--log[=<n>] | --no-log] [--file <file>]"
msgstr ""
"git fmt-merge-msg [-m <missatge>] [--log[=<n>] | --no-log] [--file <fitxer>]"
+#: builtin/fmt-merge-msg.c
msgid "populate log with at most <n> entries from shortlog"
msgstr "emplena el registre amb <n> entrades del registre curt com a màxim"
+#: builtin/fmt-merge-msg.c
msgid "alias for --log (deprecated)"
msgstr "àlies per a --log (en desús)"
+#: builtin/fmt-merge-msg.c
msgid "text"
msgstr "text"
+#: builtin/fmt-merge-msg.c
msgid "use <text> as start of message"
msgstr "usa <text> com a inici de missatge"
+#: builtin/fmt-merge-msg.c
msgid "use <name> instead of the real target branch"
msgstr "usa <nom> en lloc de la branca de destí real"
+#: builtin/fmt-merge-msg.c
msgid "file to read from"
msgstr "fitxer del qual llegir"
+#: builtin/for-each-ref.c
msgid "git for-each-ref [<options>] [<pattern>]"
msgstr "git for-each-ref [<opcions>] [<patró>]"
+#: builtin/for-each-ref.c
msgid "git for-each-ref [--points-at <object>]"
msgstr "git for-each-ref [--points-at <objecte>]"
+#: builtin/for-each-ref.c
msgid "git for-each-ref [--merged [<commit>]] [--no-merged [<commit>]]"
msgstr "git for-each-ref [--merged [<comissió>]] [--no-merged [<comissió>]]"
+#: builtin/for-each-ref.c
msgid "git for-each-ref [--contains [<commit>]] [--no-contains [<commit>]]"
msgstr ""
"git for-each-ref [--contains [<comissió>]] [--no-contains [<comissió>]]"
+#: builtin/for-each-ref.c
msgid "quote placeholders suitably for shells"
msgstr ""
"posa els marcadors de posició entre cometes adequades per a intèrprets "
"d'ordres"
+#: builtin/for-each-ref.c
msgid "quote placeholders suitably for perl"
msgstr "posa els marcadors de posició entre cometes adequades per al perl"
+#: builtin/for-each-ref.c
msgid "quote placeholders suitably for python"
msgstr "posa els marcadors de posició entre cometes adequades per al python"
+#: builtin/for-each-ref.c
msgid "quote placeholders suitably for Tcl"
msgstr "posa els marcadors de posició entre cometes adequades per al Tcl"
+#: builtin/for-each-ref.c
msgid "show only <n> matched refs"
msgstr "mostra només <n> referències coincidents"
+#: builtin/for-each-ref.c builtin/tag.c
msgid "respect format colors"
msgstr "respecta els colors del format"
+#: builtin/for-each-ref.c
msgid "print only refs which points at the given object"
msgstr "imprimeix només les referències que assenyalin l'objecte donat"
+#: builtin/for-each-ref.c
msgid "print only refs that are merged"
msgstr "imprimeix només les referències que s'han fusionat"
+#: builtin/for-each-ref.c
msgid "print only refs that are not merged"
msgstr "imprimeix només les referències que no s'han fusionat"
+#: builtin/for-each-ref.c
msgid "print only refs which contain the commit"
msgstr "imprimeix només les referències que continguin la comissió"
+#: builtin/for-each-ref.c
msgid "print only refs which don't contain the commit"
msgstr "imprimeix només les referències que no continguin la comissió"
+#: builtin/for-each-ref.c
msgid "read reference patterns from stdin"
msgstr "llegeix els patrons de referència de l'entrada estàndard"
+#: builtin/for-each-ref.c
+msgid "also include HEAD ref and pseudorefs"
+msgstr "inclou també la referència HEAD i les pseudoreferències"
+
+#: builtin/for-each-ref.c
msgid "unknown arguments supplied with --stdin"
msgstr "s'han proporcionat arguments desconeguts amb --stdin"
+#: builtin/for-each-repo.c
msgid "git for-each-repo --config=<config> [--] <arguments>"
msgstr "git for-each-repo --config=<config> [--] <arguments>"
+#: builtin/for-each-repo.c
msgid "config"
msgstr "config"
+#: builtin/for-each-repo.c
msgid "config key storing a list of repository paths"
msgstr "clau de configuració emmagatzemant una llista de camins de repositori"
+#: builtin/for-each-repo.c
+msgid "keep going even if command fails in a repository"
+msgstr "continua fins i tot si l'ordre falla en un repositori"
+
+#: builtin/for-each-repo.c
msgid "missing --config=<config>"
msgstr "falta --config=<config>"
+#: builtin/for-each-repo.c
#, c-format
msgid "got bad config --config=%s"
msgstr "s'ha obtingut una configuració incorrecta --config=%s"
+#: builtin/fsck.c
msgid "unknown"
msgstr "desconegut"
#. TRANSLATORS: e.g. error in tree 01bfda: <more explanation>
+#: builtin/fsck.c
#, c-format
msgid "error in %s %s: %s"
msgstr "error en %s %s: %s"
#. TRANSLATORS: e.g. warning in tree 01bfda: <more explanation>
+#: builtin/fsck.c
#, c-format
msgid "warning in %s %s: %s"
msgstr "avís en %s %s: %s"
+#: builtin/fsck.c
#, c-format
msgid "broken link from %7s %s"
msgstr "enllaç trencat de %7s %s"
+#: builtin/fsck.c
msgid "wrong object type in link"
msgstr "tipus d'objecte incorrecte en l'enllaç"
+#: builtin/fsck.c
#, c-format
msgid ""
"broken link from %7s %s\n"
@@ -6274,147 +8059,186 @@ msgstr ""
"enllaç trencat des de %7s %s\n"
" fins a %7s %s"
+#: builtin/fsck.c builtin/prune.c connected.c
msgid "Checking connectivity"
msgstr "S'està comprovant la connectivitat"
+#: builtin/fsck.c
#, c-format
msgid "missing %s %s"
msgstr "%s %s manca"
+#: builtin/fsck.c
#, c-format
msgid "unreachable %s %s"
msgstr "%s %s inabastable"
+#: builtin/fsck.c
#, c-format
msgid "dangling %s %s"
msgstr "%s %s sense assignació"
+#: builtin/fsck.c
msgid "could not create lost-found"
msgstr "no s'ha pogut crear el trobat-perdut"
+#: builtin/fsck.c builtin/gc.c builtin/rebase.c rebase-interactive.c rerere.c
+#: sequencer.c
#, c-format
msgid "could not write '%s'"
msgstr "no s'ha pogut escriure «%s»"
+#: builtin/fsck.c
#, c-format
msgid "could not finish '%s'"
msgstr "no s'ha pogut finalitzar «%s»"
+#: builtin/fsck.c
#, c-format
msgid "Checking %s"
msgstr "S'està comprovant %s"
+#: builtin/fsck.c
#, c-format
msgid "Checking connectivity (%d objects)"
msgstr "S'està comprovant la connectivitat (%d objectes)"
+#: builtin/fsck.c
#, c-format
msgid "Checking %s %s"
msgstr "S'està comprovant %s %s"
+#: builtin/fsck.c
msgid "broken links"
msgstr "enllaços trencats"
+#: builtin/fsck.c
#, c-format
msgid "root %s"
msgstr "arrel %s"
+#: builtin/fsck.c
#, c-format
msgid "tagged %s %s (%s) in %s"
msgstr "marcat %s %s (%s) a %s"
+#: builtin/fsck.c
#, c-format
msgid "%s: object corrupt or missing"
msgstr "%s: objecte corrupte o no trobat"
+#: builtin/fsck.c
#, c-format
msgid "%s: invalid reflog entry %s"
-msgstr "%s: entrada de referència no vàlida %s"
+msgstr "%s: entrada de registre de referències no vàlida %s"
+#: builtin/fsck.c
#, c-format
msgid "Checking reflog %s->%s"
-msgstr "S'està comprovant reflog %s->%s"
+msgstr "S'està comprovant el registre de referències %s->%s"
+#: builtin/fsck.c
#, c-format
msgid "%s: invalid sha1 pointer %s"
msgstr "%s: punter %s sha1 no vàlid"
+#: builtin/fsck.c
#, c-format
msgid "%s: not a commit"
msgstr "%s: no és una comissió"
+#: builtin/fsck.c
msgid "notice: No default references"
msgstr "avís: no hi ha referències per defecte"
+#: builtin/fsck.c
#, c-format
msgid "%s: hash-path mismatch, found at: %s"
msgstr "%s: el resum del camí no coincideix, trobat a: %s"
+#: builtin/fsck.c
#, c-format
msgid "%s: object corrupt or missing: %s"
msgstr "%s: objecte corrupte o no trobat: %s"
+#: builtin/fsck.c
#, c-format
msgid "%s: object is of unknown type '%s': %s"
msgstr "%s: l'objecte és de tipus desconegut «%s»: %s"
+#: builtin/fsck.c
#, c-format
msgid "%s: object could not be parsed: %s"
msgstr "%s: no s'ha pogut analitzar l'objecte: %s"
+#: builtin/fsck.c
#, c-format
msgid "bad sha1 file: %s"
msgstr "fitxer sha1 malmès: %s"
+#: builtin/fsck.c
msgid "Checking object directory"
msgstr "S'està comprovant el directori d'objecte"
+#: builtin/fsck.c
msgid "Checking object directories"
msgstr "S'estan comprovant els directoris d'objecte"
+#: builtin/fsck.c
#, c-format
msgid "Checking %s link"
msgstr "S'està comprovant l'enllaç %s"
+#: builtin/fsck.c builtin/index-pack.c
#, c-format
msgid "invalid %s"
msgstr "%s no vàlid"
+#: builtin/fsck.c
#, c-format
msgid "%s points to something strange (%s)"
msgstr "%s apunta a una cosa estranya (%s)"
+#: builtin/fsck.c
#, c-format
msgid "%s: detached HEAD points at nothing"
msgstr "%s: la HEAD separada no apunta a res"
+#: builtin/fsck.c
#, c-format
msgid "notice: %s points to an unborn branch (%s)"
msgstr "avís: %s apunta a una branca no nascuda (%s)"
+#: builtin/fsck.c
#, c-format
msgid "Checking cache tree of %s"
msgstr "S'està comprovant l'arbre de la memòria cau %s"
+#: builtin/fsck.c
#, c-format
msgid "%s: invalid sha1 pointer in cache-tree of %s"
msgstr "%s: punter sha1 no vàlid a l'arbre de la memòria cau %s"
+#: builtin/fsck.c
msgid "non-tree in cache-tree"
msgstr "un no arbre en l'arbre de la memòria cau"
+#: builtin/fsck.c
#, c-format
msgid "%s: invalid sha1 pointer in resolve-undo of %s"
msgstr "%s: punter sha1 no vàlid a «resolve-undo» de %s"
+#: builtin/fsck.c
#, c-format
msgid "unable to load rev-index for pack '%s'"
msgstr "no s'ha pogut carregar l'índex de reversió per al paquet «%s»"
+#: builtin/fsck.c
#, c-format
msgid "invalid rev-index for pack '%s'"
msgstr "rev-index no vàlid per al paquet «%s»"
+#: builtin/fsck.c
msgid ""
"git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
" [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
@@ -6426,159 +8250,205 @@ msgstr ""
" [--[no-]dangling] [--[no-]progress] [--connectivity-only]\n"
" [--[no-]name-objects] [<objecte>...]"
+#: builtin/fsck.c
msgid "show unreachable objects"
msgstr "mostra els objectes inabastables"
+#: builtin/fsck.c
msgid "show dangling objects"
-msgstr "mostra els objectes penjants"
+msgstr "mostra els objectes despenjats"
+#: builtin/fsck.c
msgid "report tags"
msgstr "informa de les etiquetes"
+#: builtin/fsck.c
msgid "report root nodes"
msgstr "informa dels nodes d'arrel"
+#: builtin/fsck.c
msgid "make index objects head nodes"
-msgstr "fes dels objectes d'índex nodes cap"
+msgstr "fes dels objectes d'índex nodes HEAD"
+#: builtin/fsck.c
msgid "make reflogs head nodes (default)"
-msgstr "fes que els registres de referències siguin nodes cap (per defecte)"
+msgstr "fes que els registres de referències siguin nodes HEAD (per defecte)"
+#: builtin/fsck.c
msgid "also consider packs and alternate objects"
msgstr "també considera els paquets i els objectes alternatius"
+#: builtin/fsck.c
msgid "check only connectivity"
msgstr "comprova només la connectivitat"
+#: builtin/fsck.c builtin/mktag.c
msgid "enable more strict checking"
msgstr "habilita la comprovació més estricta"
+#: builtin/fsck.c
msgid "write dangling objects in .git/lost-found"
-msgstr "escriu objectes penjants a .git/lost-found"
+msgstr "escriu objectes despenjats a .git/lost-found"
+#: builtin/fsck.c builtin/prune.c
msgid "show progress"
msgstr "mostra el progrés"
+#: builtin/fsck.c
msgid "show verbose names for reachable objects"
msgstr "mostra els noms detallats dels objectes abastables"
+#: builtin/fsck.c builtin/index-pack.c
msgid "Checking objects"
msgstr "S'estan comprovant els objectes"
+#: builtin/fsck.c
#, c-format
msgid "%s: object missing"
msgstr "%s: falta l'objecte"
+#: builtin/fsck.c
#, c-format
msgid "invalid parameter: expected sha1, got '%s'"
msgstr "paràmetre no vàlid: s'esperava sha1, s'ha obtingut «%s»"
+#: builtin/fsmonitor--daemon.c
msgid "git fsmonitor--daemon start [<options>]"
msgstr "git fsmonitor--daemon start [<opcions>]"
+#: builtin/fsmonitor--daemon.c
msgid "git fsmonitor--daemon run [<options>]"
msgstr "git fsmonitor--daemon run [<opcions>]"
+#: builtin/fsmonitor--daemon.c
#, c-format
msgid "value of '%s' out of range: %d"
msgstr "el valor de «%s» està fora de rang: %d"
+#: builtin/fsmonitor--daemon.c
#, c-format
msgid "value of '%s' not bool or int: %d"
msgstr "valor de «%s» no és booleà ni enter: %d"
+#: builtin/fsmonitor--daemon.c
#, c-format
msgid "fsmonitor-daemon is watching '%s'\n"
msgstr "fsmonitor-daemon està veient «%s»\n"
+#: builtin/fsmonitor--daemon.c
#, c-format
msgid "fsmonitor-daemon is not watching '%s'\n"
msgstr "fsmonitor-daemon no està vigilant «%s»\n"
+#: builtin/fsmonitor--daemon.c
#, c-format
msgid "could not create fsmonitor cookie '%s'"
msgstr "no s'ha pogut crear la galeta fsmonitor «%s»"
+#: builtin/fsmonitor--daemon.c
#, c-format
msgid "fsmonitor: cookie_result '%d' != SEEN"
msgstr "fsmonitor: cookie_result «%d» != SEEN"
+#: builtin/fsmonitor--daemon.c
#, c-format
msgid "could not start IPC thread pool on '%s'"
msgstr "no s'ha pogut iniciar el grup de fils IPC a «%s»"
+#: builtin/fsmonitor--daemon.c
msgid "could not start fsmonitor listener thread"
msgstr "no s'ha pogut iniciar el fil receptor del fsmonitor"
+#: builtin/fsmonitor--daemon.c
msgid "could not start fsmonitor health thread"
msgstr "no s'ha pogut iniciar el fil de salut del fsmonitor"
+#: builtin/fsmonitor--daemon.c
msgid "could not initialize listener thread"
msgstr "no s'ha pogut inicialitzar el fil receptor"
+#: builtin/fsmonitor--daemon.c
msgid "could not initialize health thread"
msgstr "no s'ha pogut inicialitzar el fil de salut"
+#: builtin/fsmonitor--daemon.c
#, c-format
msgid "could not cd home '%s'"
msgstr "no s'ha pogut fer cd home «%s»"
+#: builtin/fsmonitor--daemon.c
#, c-format
msgid "fsmonitor--daemon is already running '%s'"
msgstr "fsmonitor--daemon is already running «%s»"
+#: builtin/fsmonitor--daemon.c
#, c-format
msgid "running fsmonitor-daemon in '%s'\n"
msgstr "s'està executant fsmonitor-daemon en «%s»\n"
+#: builtin/fsmonitor--daemon.c
#, c-format
msgid "starting fsmonitor-daemon in '%s'\n"
msgstr "s'està iniciant fsmonitor-daemon a «%s»\n"
+#: builtin/fsmonitor--daemon.c
msgid "daemon failed to start"
msgstr "el dimoni ha fallat en iniciar"
+#: builtin/fsmonitor--daemon.c
msgid "daemon not online yet"
msgstr "el dimoni encara no està en línia"
+#: builtin/fsmonitor--daemon.c
msgid "daemon terminated"
msgstr "s'ha finalitzat el dimoni"
+#: builtin/fsmonitor--daemon.c
msgid "detach from console"
msgstr "separat de la consola"
+#: builtin/fsmonitor--daemon.c
msgid "use <n> ipc worker threads"
msgstr "usa <n> fils de treball ipc"
+#: builtin/fsmonitor--daemon.c
msgid "max seconds to wait for background daemon startup"
msgstr "màxim de segons a esperar a l'inici del dimoni en segon pla"
+#: builtin/fsmonitor--daemon.c
#, c-format
msgid "invalid 'ipc-threads' value (%d)"
msgstr "valor «ipc-threads» no vàlid (%d)"
+#: builtin/fsmonitor--daemon.c t/helper/test-cache-tree.c
#, c-format
msgid "Unhandled subcommand '%s'"
msgstr "Subordre no gestionada «%s»"
+#: builtin/fsmonitor--daemon.c
msgid "fsmonitor--daemon not supported on this platform"
msgstr "fsmonitor--daemon no és compatible amb aquesta plataforma"
+#: builtin/gc.c
msgid "git gc [<options>]"
msgstr "git gc [<opcions>]"
+#: builtin/gc.c
#, c-format
msgid "Failed to fstat %s: %s"
msgstr "S'ha produït un error en fer fstat %s: %s"
+#: builtin/gc.c
#, c-format
msgid "failed to parse '%s' value '%s'"
msgstr "no s'ha pogut analitzar «%s» valor «%s»"
+#: builtin/gc.c setup.c
#, c-format
msgid "cannot stat '%s'"
msgstr "no es pot fer stat en «%s»"
+#: builtin/gc.c
#, c-format
msgid ""
"The last gc run reported the following. Please correct the root cause\n"
@@ -6593,246 +8463,322 @@ msgstr ""
"\n"
"%s"
+#: builtin/gc.c
msgid "prune unreferenced objects"
msgstr "poda objectes sense referència"
+#: builtin/gc.c
msgid "pack unreferenced objects separately"
msgstr "empaqueta els objectes no referenciats de forma separada"
+#: builtin/gc.c builtin/repack.c
msgid "with --cruft, limit the size of new cruft packs"
msgstr "amb --cruft, limiteu la mida dels paquets cruft nous"
+#: builtin/gc.c
msgid "be more thorough (increased runtime)"
msgstr "sigues més exhaustiu (el temps d'execució augmenta)"
+#: builtin/gc.c
msgid "enable auto-gc mode"
msgstr "habilita el mode de recollida d'escombraries automàtica"
+#: builtin/gc.c
+msgid "perform garbage collection in the background"
+msgstr "fes la recollida de memòria brossa en segon pla"
+
+#: builtin/gc.c
msgid "force running gc even if there may be another gc running"
msgstr ""
"força l'execució de gc encara que hi pugui haver un altre gc executant-se"
+#: builtin/gc.c
msgid "repack all other packs except the largest pack"
msgstr "reempaqueta tots els altres paquets excepte el paquet més gran"
+#: builtin/gc.c
#, c-format
msgid "failed to parse gc.logExpiry value %s"
msgstr "no s'ha pogut analitzar el valor %s de gc.logExpiry"
+#: builtin/gc.c
#, c-format
msgid "failed to parse prune expiry value %s"
msgstr "no s'ha pogut analitzar el valor de venciment de la poda %s"
+#: builtin/gc.c
#, c-format
msgid "Auto packing the repository in background for optimum performance.\n"
msgstr ""
"S'està empaquetant el repositori automàticament en el rerefons per a un "
"rendiment òptim.\n"
+#: builtin/gc.c
#, c-format
msgid "Auto packing the repository for optimum performance.\n"
msgstr ""
"S'està empaquetant automàticament el repositori per a un rendiment òptim.\n"
+#: builtin/gc.c
#, c-format
msgid "See \"git help gc\" for manual housekeeping.\n"
msgstr "Vegeu «git help gc» per a neteja manual.\n"
+#: builtin/gc.c
#, c-format
msgid ""
"gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
msgstr ""
"gc ja s'està executant en la màquina «%s» pid %<PRIuMAX> (useu --force si no)"
+#: builtin/gc.c
msgid ""
"There are too many unreachable loose objects; run 'git prune' to remove them."
msgstr ""
"Hi ha massa objectes solts inabastables; executeu «git prune» per a eliminar-"
"los."
+#: builtin/gc.c
msgid ""
"git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
msgstr ""
"git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
+#: builtin/gc.c
msgid "--no-schedule is not allowed"
msgstr "--no-schedule no està permès"
+#: builtin/gc.c
#, c-format
msgid "unrecognized --schedule argument '%s'"
msgstr "argument --schedule no reconegut, «%s»"
+#: builtin/gc.c
msgid "failed to write commit-graph"
msgstr "s'ha produït un error en escriure el graf de comissions"
+#: builtin/gc.c
msgid "failed to prefetch remotes"
msgstr "s'ha produït un error en preobtenir els remots"
+#: builtin/gc.c
msgid "failed to start 'git pack-objects' process"
msgstr "no s'ha pogut iniciar el procés «git pack-objects»"
+#: builtin/gc.c
msgid "failed to finish 'git pack-objects' process"
msgstr "no s'ha pogut finalitzar el procés «git pack-objects»"
+#: builtin/gc.c
msgid "failed to write multi-pack-index"
msgstr "no s'ha pogut escriure l'índex del multipaquet"
+#: builtin/gc.c
msgid "'git multi-pack-index expire' failed"
msgstr "ha fallat el venciment de «git multi-pack-index expire»"
+#: builtin/gc.c
msgid "'git multi-pack-index repack' failed"
msgstr "ha fallat l'execució de «git multi-pack-index repack»"
+#: builtin/gc.c
msgid ""
"skipping incremental-repack task because core.multiPackIndex is disabled"
msgstr ""
"s'està ometent la tasca incremental-repack perquè core.multiPackIndex està "
"desactivat"
+#: builtin/gc.c
#, c-format
msgid "lock file '%s' exists, skipping maintenance"
msgstr "el fitxer de bloqueig «%s» existeix, s'omet el manteniment"
+#: builtin/gc.c
#, c-format
msgid "task '%s' failed"
msgstr "la tasca «%s» ha fallat"
+#: builtin/gc.c
#, c-format
msgid "'%s' is not a valid task"
msgstr "«%s» no és una tasca vàlida"
+#: builtin/gc.c
#, c-format
msgid "task '%s' cannot be selected multiple times"
msgstr "la tasca «%s» no es pot seleccionar múltiples vegades"
+#: builtin/gc.c
msgid "run tasks based on the state of the repository"
msgstr "executa les tasques basades en l'estat del repositori"
+#: builtin/gc.c
+msgid "perform maintenance in the background"
+msgstr "fes el manteniment en segon pla"
+
+#: builtin/gc.c
msgid "frequency"
msgstr "freqüència"
+#: builtin/gc.c
msgid "run tasks based on frequency"
msgstr "executa les tasques basant-se en freqüència"
+#: builtin/gc.c
msgid "do not report progress or other information over stderr"
-msgstr "no informeu sobre el progrés o altra informació as stderr"
+msgstr "no informeu sobre el progrés o altra informació a stderr"
+#: builtin/gc.c
msgid "task"
msgstr "tasca"
+#: builtin/gc.c
msgid "run a specific task"
msgstr "executa una tasca específica"
+#: builtin/gc.c
msgid "use at most one of --auto and --schedule=<frequency>"
-msgstr "usa com a màxim un entre --auto i --schedule=<frequency>"
+msgstr "usa com a màxim un entre --auto i --schedule=<freqüència>"
+#: builtin/gc.c
#, c-format
msgid "unable to add '%s' value of '%s'"
msgstr "no es pot afegir el valor «%s» de «%s»"
+#: builtin/gc.c
msgid "return success even if repository was not registered"
msgstr "retorna èxit encara que el repositori no estigui registrat"
+#: builtin/gc.c
#, c-format
msgid "unable to unset '%s' value of '%s'"
msgstr "no es pot desassignar el valor «%s» de «%s»"
+#: builtin/gc.c
#, c-format
msgid "repository '%s' is not registered"
msgstr "el repositori «%s» no està registrat"
+#: builtin/gc.c
#, c-format
msgid "failed to expand path '%s'"
msgstr "s'ha produït un error en expandir el camí «%s»"
+#: builtin/gc.c
msgid "failed to start launchctl"
msgstr "s'ha produït un error en iniciar launchctl"
+#: builtin/gc.c
#, c-format
msgid "failed to create directories for '%s'"
msgstr "s'ha produït un error en crear els directoris per a «%s»"
+#: builtin/gc.c
#, c-format
msgid "failed to bootstrap service %s"
msgstr "s'ha produït un error en arrencar el servei %s"
+#: builtin/gc.c
msgid "failed to create temp xml file"
msgstr "no s'han pogut crear un fitxer xml temporal"
+#: builtin/gc.c
msgid "failed to start schtasks"
msgstr "s'ha produït un error en iniciar schtasks"
+#: builtin/gc.c
msgid "failed to run 'crontab -l'; your system might not support 'cron'"
msgstr ""
"no s'ha pogut executar «crontab -l»; el vostre sistema podria no admetre "
"«cron»"
+#: builtin/gc.c
msgid "failed to create crontab temporary file"
msgstr "no s'ha pogut crear un fitxer temporal crontab"
+#: builtin/gc.c
msgid "failed to open temporary file"
msgstr "no s'ha pogut obrir el fitxer temporal"
+#: builtin/gc.c
msgid "failed to run 'crontab'; your system might not support 'cron'"
msgstr ""
"no s'ha pogut executar «crontab»; el vostre sistema podria no admetre «cron»"
+#: builtin/gc.c
msgid "'crontab' died"
msgstr "«crontab» ha mort"
+#: builtin/gc.c builtin/worktree.c
#, c-format
msgid "failed to delete '%s'"
msgstr "s'ha produït un error en suprimir «%s»"
+#: builtin/gc.c rerere.c
#, c-format
msgid "failed to flush '%s'"
msgstr "no s'ha pogut buidar «%s»"
+#: builtin/gc.c
msgid "failed to start systemctl"
msgstr "s'ha produït un error en iniciar systemctl"
+#: builtin/gc.c
msgid "failed to run systemctl"
msgstr "s'ha produït un error en executar systemctl"
+#: builtin/gc.c
#, c-format
msgid "unrecognized --scheduler argument '%s'"
msgstr "l'argument --scheduler no reconegut «%s»"
+#: builtin/gc.c
msgid "neither systemd timers nor crontab are available"
msgstr "ni els temporitzadors de systemd ni de crontab estan disponibles"
+#: builtin/gc.c
#, c-format
msgid "%s scheduler is not available"
msgstr "el planificador %s no està disponible"
+#: builtin/gc.c
msgid "another process is scheduling background maintenance"
msgstr "un altre procés està planificant un manteniment en segon pla"
+#: builtin/gc.c
msgid "git maintenance start [--scheduler=<scheduler>]"
msgstr "git maintenance start [--scheduler=<scheduler>]"
+#: builtin/gc.c
msgid "scheduler"
msgstr "planificador"
+#: builtin/gc.c
msgid "scheduler to trigger git maintenance run"
msgstr "planificador per a activar l'execució de manteniment del git"
+#: builtin/gc.c
msgid "failed to set up maintenance schedule"
msgstr "no s'ha pogut configurar la planificació del manteniment"
+#: builtin/gc.c
msgid "failed to add repo to global config"
msgstr "no s'ha pogut afegir un repositori a la configuració global"
+#: builtin/gc.c
msgid "git maintenance <subcommand> [<options>]"
-msgstr "git maintenance <subcommand> [<opcions>]"
+msgstr "git maintenance <subordre> [<opcions>]"
+#: builtin/grep.c
msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
msgstr "git grep [<opcions>] [-e] <patró> [<revisió>...] [[--] <camí>...]"
+#: builtin/grep.c
#, c-format
msgid "grep: failed to create thread: %s"
msgstr "grep: s'ha produït un error en crear fil: %s"
+#: builtin/grep.c
#, c-format
msgid "invalid number of threads specified (%d) for %s"
msgstr "s'ha especificat un nombre de fils no vàlid (%d) per a %s"
@@ -6842,203 +8788,261 @@ msgstr "s'ha especificat un nombre de fils no vàlid (%d) per a %s"
#. variable for tweaking threads, currently
#. grep.threads
#.
+#: builtin/grep.c builtin/index-pack.c builtin/pack-objects.c
#, c-format
msgid "no threads support, ignoring %s"
msgstr "no s'admeten fils, s'ignorarà %s"
-#, c-format
-msgid "unable to read tree (%s)"
-msgstr "no s'ha pogut llegir l'arbre (%s)"
-
+#: builtin/grep.c
#, c-format
msgid "unable to read tree %s"
msgstr "no s'ha pogut llegir l'arbre %s"
+#: builtin/grep.c
#, c-format
msgid "unable to grep from object of type %s"
msgstr "no es pot fer grep des d'un objecte de tipus %s"
+#: builtin/grep.c
#, c-format
msgid "switch `%c' expects a numerical value"
msgstr "l'opció «%c» espera un valor numèric"
+#: builtin/grep.c
msgid "search in index instead of in the work tree"
msgstr "cerca en l'índex en lloc de l'arbre de treball"
+#: builtin/grep.c
msgid "find in contents not managed by git"
msgstr "cerca en continguts no gestionats per git"
+#: builtin/grep.c
msgid "search in both tracked and untracked files"
msgstr "cerca tant en fitxers seguits com en no seguits"
+#: builtin/grep.c
msgid "ignore files specified via '.gitignore'"
msgstr "ignora els fitxers especificats mitjançant «.gitignore»"
+#: builtin/grep.c
msgid "recursively search in each submodule"
msgstr "cerca recursivament a cada submòdul"
+#: builtin/grep.c
msgid "show non-matching lines"
msgstr "mostra les línies no coincidents"
+#: builtin/grep.c
msgid "case insensitive matching"
msgstr "coincidència no distingeix entre majúscules i minúscules"
+#: builtin/grep.c
msgid "match patterns only at word boundaries"
msgstr "coincideix amb els patrons només als límits de paraula"
+#: builtin/grep.c
msgid "process binary files as text"
msgstr "processa els fitxers binaris com a text"
+#: builtin/grep.c
msgid "don't match patterns in binary files"
msgstr "no cerquis els patrons en els fitxers binaris"
+#: builtin/grep.c
msgid "process binary files with textconv filters"
msgstr "processa els fitxers binaris amb filtres de textconv"
+#: builtin/grep.c
msgid "search in subdirectories (default)"
msgstr "cerca als subdirectoris (per defecte)"
+#: builtin/grep.c
msgid "descend at most <n> levels"
msgstr "descendeix com a màxim <n> nivells"
+#: builtin/grep.c
msgid "use extended POSIX regular expressions"
msgstr "usa les expressions regulars POSIX ampliades"
+#: builtin/grep.c
msgid "use basic POSIX regular expressions (default)"
msgstr "usa les expressions regulars POSIX bàsiques (per defecte)"
+#: builtin/grep.c
msgid "interpret patterns as fixed strings"
msgstr "interpreta els patrons com a cadenes fixes"
+#: builtin/grep.c
msgid "use Perl-compatible regular expressions"
msgstr "usa les expressions regulars compatibles amb Perl"
+#: builtin/grep.c
msgid "show line numbers"
msgstr "mostra els números de línia"
+#: builtin/grep.c
msgid "show column number of first match"
msgstr "mostra el nombre de columna de la primera coincidència"
+#: builtin/grep.c
msgid "don't show filenames"
msgstr "no mostris els noms de fitxer"
+#: builtin/grep.c
msgid "show filenames"
msgstr "mostra els noms de fitxer"
+#: builtin/grep.c
msgid "show filenames relative to top directory"
msgstr "mostra els noms de fitxer relatius al directori superior"
+#: builtin/grep.c
msgid "show only filenames instead of matching lines"
msgstr "mostra només els noms de fitxer en lloc de les línies coincidents"
+#: builtin/grep.c
msgid "synonym for --files-with-matches"
msgstr "sinònim de --files-with-matches"
+#: builtin/grep.c
msgid "show only the names of files without match"
msgstr "mostra només els noms dels fitxers sense coincidència"
+#: builtin/grep.c
msgid "print NUL after filenames"
msgstr "imprimeix NUL després dels noms de fitxer"
+#: builtin/grep.c
msgid "show only matching parts of a line"
msgstr "mostra només les parts de coincidents de la línia"
+#: builtin/grep.c
msgid "show the number of matches instead of matching lines"
msgstr "mostra el nombre de coincidències en lloc de les línies coincidents"
+#: builtin/grep.c
msgid "highlight matches"
msgstr "ressalta les coincidències"
+#: builtin/grep.c
msgid "print empty line between matches from different files"
msgstr "imprimeix una línia buida entre coincidències de fitxers distints"
+#: builtin/grep.c
msgid "show filename only once above matches from same file"
msgstr ""
"mostra el nom de fitxer només una vegada a dalt de les coincidències del "
"mateix fitxer"
+#: builtin/grep.c
msgid "show <n> context lines before and after matches"
msgstr "mostra <n> línies de context abans i després d'una coincidència"
+#: builtin/grep.c
msgid "show <n> context lines before matches"
msgstr "mostra <n> línies de context abans d'una coincidència"
+#: builtin/grep.c
msgid "show <n> context lines after matches"
msgstr "mostra <n> línies de context després d'una coincidència"
+#: builtin/grep.c
msgid "use <n> worker threads"
msgstr "usa <n> fils de treball"
+#: builtin/grep.c
msgid "shortcut for -C NUM"
msgstr "drecera per a -C NUM"
+#: builtin/grep.c
msgid "show a line with the function name before matches"
msgstr "mostra una línia amb el nom de funció abans de les coincidències"
+#: builtin/grep.c
msgid "show the surrounding function"
msgstr "mostra la funció circumdant"
+#: builtin/grep.c
msgid "read patterns from file"
msgstr "llegeix els patrons des d'un fitxer"
+#: builtin/grep.c
msgid "match <pattern>"
msgstr "coincideix amb <patró>"
+#: builtin/grep.c
msgid "combine patterns specified with -e"
msgstr "combina els patrons especificats amb -e"
+#: builtin/grep.c
msgid "indicate hit with exit status without output"
msgstr "indica coincidència amb estat de sortida sense sortida textual"
+#: builtin/grep.c
msgid "show only matches from files that match all patterns"
msgstr ""
"mostra només les coincidències dels fitxers que coincideixin amb tots els "
"patrons"
+#: builtin/grep.c
msgid "pager"
msgstr "paginador"
+#: builtin/grep.c
msgid "show matching files in the pager"
msgstr "mostra els fitxers coincidents en el paginador"
+#: builtin/grep.c
msgid "allow calling of grep(1) (ignored by this build)"
msgstr "permet la invocació de grep(1) (ignorat per aquesta compilació)"
+#: builtin/grep.c
msgid "maximum number of results per file"
msgstr "nombre màxim de resultats per fitxer"
+#: builtin/grep.c
msgid "no pattern given"
msgstr "no s'ha donat cap patró"
+#: builtin/grep.c
msgid "--no-index or --untracked cannot be used with revs"
msgstr "--no-index o --untracked no es pot usar amb revisions"
+#: builtin/grep.c
#, c-format
msgid "unable to resolve revision: %s"
msgstr "no s'ha pogut resoldre la revisió: %s"
+#: builtin/grep.c
msgid "--untracked not supported with --recurse-submodules"
msgstr "--untracked no s'admet amb --recurse-submodules"
+#: builtin/grep.c
msgid "invalid option combination, ignoring --threads"
msgstr "combinació d'opcions no vàlida, s'està ignorant --threads"
+#: builtin/grep.c builtin/pack-objects.c
msgid "no threads support, ignoring --threads"
msgstr "no s'admeten fils, s'ignorarà --threads"
+#: builtin/grep.c builtin/index-pack.c builtin/pack-objects.c
#, c-format
msgid "invalid number of threads specified (%d)"
msgstr "s'ha especificat un nombre de fils no vàlid (%d)"
+#: builtin/grep.c
msgid "--open-files-in-pager only works on the worktree"
msgstr "--open-files-in-pager només funciona en l'arbre de treball"
+#: builtin/grep.c
msgid "--[no-]exclude-standard cannot be used for tracked contents"
msgstr "--[no-]exclude-standard no es pot utilitzar per als continguts seguits"
+#: builtin/grep.c
msgid "both --cached and trees are given"
msgstr "ambdós --cached i arbres venen donats"
+#: builtin/hash-object.c
msgid ""
"git hash-object [-t <type>] [-w] [--path=<file> | --no-filters]\n"
" [--stdin [--literally]] [--] <file>..."
@@ -7046,91 +9050,117 @@ msgstr ""
"git hash-object [-t <tipus>] [-w] [--path=<fitxer> | --no-filters]\n"
" [--stdin [--literally]] [--] <fitxer>..."
+#: builtin/hash-object.c
msgid "git hash-object [-t <type>] [-w] --stdin-paths [--no-filters]"
msgstr "git hash-object [-t <tipus>] [-w] --stdin-paths [--no-filters]"
+#: builtin/hash-object.c
msgid "object type"
msgstr "tipus d'objecte"
+#: builtin/hash-object.c
msgid "write the object into the object database"
msgstr "escriu l'objecte a la base de dades d'objectes"
+#: builtin/hash-object.c
msgid "read the object from stdin"
msgstr "llegeix l'objecte des de stdin"
+#: builtin/hash-object.c
msgid "store file as is without filters"
msgstr "emmagatzema el fitxer tal com és sense filtres"
+#: builtin/hash-object.c
msgid ""
"just hash any random garbage to create corrupt objects for debugging Git"
msgstr ""
"només suma qualsevol brossa aleatòria per a crear objectes malmesos per a "
"depurar al Git"
+#: builtin/hash-object.c
msgid "process file as it were from this path"
msgstr "processa el fitxer com si fos d'aquest camí"
+#: builtin/help.c
msgid "print all available commands"
msgstr "imprimeix totes les ordres disponibles"
+#: builtin/help.c
msgid "show external commands in --all"
msgstr "mostra les ordres externes a --all"
+#: builtin/help.c
msgid "show aliases in --all"
msgstr "mostra els àlies a --all"
+#: builtin/help.c
msgid "exclude guides"
msgstr "exclou guies"
+#: builtin/help.c
msgid "show man page"
msgstr "mostra la pàgina de manual"
+#: builtin/help.c
msgid "show manual in web browser"
msgstr "mostra la pàgina de manual en el navegador web"
+#: builtin/help.c
msgid "show info page"
msgstr "mostra la pàgina d'informació"
+#: builtin/help.c
msgid "print command description"
msgstr "imprimeix la descripció de l'ordre"
+#: builtin/help.c
msgid "print list of useful guides"
msgstr "imprimeix la llista de guies útils"
+#: builtin/help.c
msgid "print list of user-facing repository, command and file interfaces"
msgstr ""
"imprimeix la llista de repositoris, ordres i interfícies de fitxers que veu "
"l'usuari"
+#: builtin/help.c
msgid "print list of file formats, protocols and other developer interfaces"
msgstr ""
"mostra la llista de formats de fitxer, protocols i altres interfícies de "
"desenvolupador"
+#: builtin/help.c
msgid "print all configuration variable names"
msgstr "imprimeix tots els noms de les variables de configuració"
+#: builtin/help.c
msgid "git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]"
-msgstr "git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]"
+msgstr "git help [[-i|--info] [-m|--man] [-w|--web]] [<ordre>|<doc>]"
+#: builtin/help.c
#, c-format
msgid "unrecognized help format '%s'"
msgstr "format d'ajuda no reconegut «%s»"
+#: builtin/help.c
msgid "Failed to start emacsclient."
msgstr "S'ha produït un error en iniciar emacsclient."
+#: builtin/help.c
msgid "Failed to parse emacsclient version."
msgstr "S'ha produït un error en analitzar la versió d'emacsclient."
+#: builtin/help.c
#, c-format
msgid "emacsclient version '%d' too old (< 22)."
msgstr "la versió d'emacsclient «%d» és massa vella (< 22)."
+#: builtin/help.c
#, c-format
msgid "failed to exec '%s'"
msgstr "s'ha produït un error en executar «%s»"
+#: builtin/help.c
#, c-format
msgid ""
"'%s': path for unsupported man viewer.\n"
@@ -7139,6 +9169,7 @@ msgstr ""
"«%s»: camí a un visualitzador de manuals no compatible.\n"
"Considereu usar «man.<eina>.cmd» en lloc d'això."
+#: builtin/help.c
#, c-format
msgid ""
"'%s': cmd for supported man viewer.\n"
@@ -7147,41 +9178,51 @@ msgstr ""
"«%s»: ordre per a un visualitzador de manuals compatible.\n"
"Considereu usar «man.<eina>.path» en lloc d'això."
+#: builtin/help.c
#, c-format
msgid "'%s': unknown man viewer."
msgstr "«%s»: visualitzador de manuals desconegut."
+#: builtin/help.c
msgid "no man viewer handled the request"
msgstr "cap visualitzador de manuals ha gestionat la sol·licitud"
+#: builtin/help.c
msgid "no info viewer handled the request"
msgstr "cap visualitzador d'informació ha gestionat la sol·licitud"
+#: builtin/help.c git.c
#, c-format
msgid "'%s' is aliased to '%s'"
msgstr "«%s» és un àlies de «%s»"
+#: builtin/help.c git.c
#, c-format
msgid "bad alias.%s string: %s"
msgstr "cadena «alias.%s» incorrecte: %s"
+#: builtin/help.c
#, c-format
msgid "the '%s' option doesn't take any non-option arguments"
msgstr "l'opció «%s» no pren cap argument que no sigui una opció"
+#: builtin/help.c
msgid ""
"the '--no-[external-commands|aliases]' options can only be used with '--all'"
msgstr ""
"les opcions «--no-[external-commands|aliases]» només es poden utilitzar amb "
"«--all»"
+#: builtin/help.c
#, c-format
msgid "usage: %s%s"
msgstr "ús: %s%s"
+#: builtin/help.c
msgid "'git help config' for more information"
msgstr "«git help config» per a més informació"
+#: builtin/hook.c
msgid ""
"git hook run [--ignore-missing] [--to-stdin=<path>] <hook-name> [-- <hook-"
"args>]"
@@ -7189,75 +9230,95 @@ msgstr ""
"git hook run [--ignore-missing] [--to-stdin=<camí>] <hook-name> [-- <hook-"
"args>]"
+#: builtin/hook.c
msgid "silently ignore missing requested <hook-name>"
msgstr "ignora silenciosament la sol·licitud <hook-name> perduda"
+#: builtin/hook.c
msgid "file to read into hooks' stdin"
msgstr "fitxer per a llegir a l'entrada estàndard dels lligams"
+#: builtin/index-pack.c
#, c-format
msgid "object type mismatch at %s"
msgstr "hi ha una discordança de tipus d'objecte a %s"
+#: builtin/index-pack.c
#, c-format
msgid "did not receive expected object %s"
msgstr "no s'ha rebut l'objecte esperat %s"
+#: builtin/index-pack.c
#, c-format
msgid "object %s: expected type %s, found %s"
msgstr "objecte %s: s'esperava el tipus %s, s'ha trobat %s"
+#: builtin/index-pack.c
#, c-format
msgid "cannot fill %d byte"
msgid_plural "cannot fill %d bytes"
msgstr[0] "no es pot omplir %d octet"
msgstr[1] "no es poden omplir %d octets"
+#: builtin/index-pack.c
msgid "early EOF"
msgstr "EOF prematur"
+#: builtin/index-pack.c
msgid "read error on input"
msgstr "error de lectura d'entrada"
+#: builtin/index-pack.c
msgid "used more bytes than were available"
msgstr "s'han usat més octets que hi havia disponibles"
+#: builtin/index-pack.c builtin/pack-objects.c
msgid "pack too large for current definition of off_t"
msgstr "paquet massa gran per a la definició actual d'off_t"
+#: builtin/index-pack.c
#, c-format
msgid "pack exceeds maximum allowed size (%s)"
msgstr "el paquet supera la mida màxima permesa (%s)"
+#: builtin/index-pack.c
msgid "pack signature mismatch"
msgstr "hi ha una discordança de signatura de paquet"
+#: builtin/index-pack.c
#, c-format
msgid "pack version %<PRIu32> unsupported"
msgstr "la versió de paquet %<PRIu32> no és compatible"
+#: builtin/index-pack.c
#, c-format
msgid "pack has bad object at offset %<PRIuMAX>: %s"
msgstr "el paquet té un objecte incorrecte a la posició %<PRIuMAX>: %s"
+#: builtin/index-pack.c
#, c-format
msgid "inflate returned %d"
msgstr "la inflació ha retornat %d"
+#: builtin/index-pack.c
msgid "offset value overflow for delta base object"
msgstr ""
"desbordament de valor de desplaçament per a l'objecte base de diferències"
+#: builtin/index-pack.c
msgid "delta base offset is out of bound"
msgstr "el desplaçament de base de diferències està fora de límits"
+#: builtin/index-pack.c
#, c-format
msgid "unknown object type %d"
msgstr "tipus d'objecte desconegut %d"
+#: builtin/index-pack.c
msgid "cannot pread pack file"
msgstr "no es pot fer pread en el fitxer empaquetat"
+#: builtin/index-pack.c
#, c-format
msgid "premature end of pack file, %<PRIuMAX> byte missing"
msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
@@ -7265,150 +9326,189 @@ msgstr[0] "el final del fitxer empaquetat és prematur, manca %<PRIuMAX> octet"
msgstr[1] ""
"el final del fitxer empaquetat és prematur, manquen %<PRIuMAX> octets"
+#: builtin/index-pack.c
msgid "serious inflate inconsistency"
msgstr "hi ha una inconsistència seriosa d'inflació"
+#: builtin/index-pack.c
#, c-format
msgid "SHA1 COLLISION FOUND WITH %s !"
msgstr "S'HA TROBAT UNA COL·LISIÓ SHA1 AMB %s !"
+#: builtin/index-pack.c
#, c-format
msgid "cannot read existing object info %s"
msgstr "no es pot llegir la informació d'objecte existent %s"
+#: builtin/index-pack.c
#, c-format
msgid "cannot read existing object %s"
msgstr "no es pot llegir l'objecte existent %s"
+#: builtin/index-pack.c
#, c-format
msgid "invalid blob object %s"
msgstr "objecte de blob no vàlid %s"
+#: builtin/index-pack.c
msgid "fsck error in packed object"
msgstr "fsck error en un objecte empaquetat"
+#: builtin/index-pack.c
#, c-format
msgid "Not all child objects of %s are reachable"
msgstr "No tots els objectes fills de %s són abastables"
+#: builtin/index-pack.c
msgid "failed to apply delta"
msgstr "s'ha produït un error en aplicar la diferència"
+#: builtin/index-pack.c
msgid "Receiving objects"
msgstr "S'estan rebent objectes"
+#: builtin/index-pack.c
msgid "Indexing objects"
msgstr "S'estan indexant objectes"
+#: builtin/index-pack.c
msgid "pack is corrupted (SHA1 mismatch)"
msgstr "el paquet és malmès (discordança SHA1)"
+#: builtin/index-pack.c
msgid "cannot fstat packfile"
msgstr "no es pot fer fstat en el fitxer de paquet"
+#: builtin/index-pack.c
msgid "pack has junk at the end"
msgstr "el paquet té brossa al seu final"
+#: builtin/index-pack.c
msgid "confusion beyond insanity in parse_pack_objects()"
msgstr "confusió més enllà de la bogeria en parse_pack_objects()"
+#: builtin/index-pack.c
msgid "Resolving deltas"
msgstr "S'estan resolent les diferències"
+#: builtin/index-pack.c builtin/pack-objects.c
#, c-format
msgid "unable to create thread: %s"
msgstr "no s'ha pogut crear fil: %s"
+#: builtin/index-pack.c
msgid "confusion beyond insanity"
msgstr "confusió més enllà de la bogeria"
+#: builtin/index-pack.c
#, c-format
msgid "completed with %d local object"
msgid_plural "completed with %d local objects"
msgstr[0] "s'ha completat amb %d objecte local"
msgstr[1] "s'ha completat amb %d objectes locals"
+#: builtin/index-pack.c
#, c-format
msgid "Unexpected tail checksum for %s (disk corruption?)"
msgstr "Suma de verificació final no esperada per a %s (corrupció de disc?)"
+#: builtin/index-pack.c
#, c-format
msgid "pack has %d unresolved delta"
msgid_plural "pack has %d unresolved deltas"
msgstr[0] "el paquet té %d diferència no resolta"
msgstr[1] "el paquet té %d diferències no resoltes"
+#: builtin/index-pack.c
#, c-format
msgid "unable to deflate appended object (%d)"
msgstr "no s'ha pogut desinflar l'objecte annexat (%d)"
+#: builtin/index-pack.c
#, c-format
msgid "local object %s is corrupt"
msgstr "l'objecte local %s és malmès"
+#: builtin/index-pack.c
#, c-format
msgid "packfile name '%s' does not end with '.%s'"
msgstr "el nom del fitxer de paquet «%s» no acaba amb «.%s»"
+#: builtin/index-pack.c
#, c-format
msgid "cannot write %s file '%s'"
msgstr "no es pot escriure «%s» al fitxer «%s»"
+#: builtin/index-pack.c
#, c-format
msgid "cannot close written %s file '%s'"
msgstr "no s'ha pogut tancar el fitxer %s escrit «%s»"
+#: builtin/index-pack.c
#, c-format
msgid "unable to rename temporary '*.%s' file to '%s'"
msgstr "no s'ha pogut canviar el nom del fitxer temporal «*.%s» a «%s»"
+#: builtin/index-pack.c
msgid "error while closing pack file"
msgstr "error en tancar el fitxer empaquetat"
+#: builtin/index-pack.c builtin/pack-objects.c
#, c-format
msgid "bad pack.indexVersion=%<PRIu32>"
msgstr "bad pack.indexVersion=%<PRIu32>"
+#: builtin/index-pack.c
#, c-format
msgid "Cannot open existing pack file '%s'"
msgstr "No es pot obrir el fitxer empaquetat existent «%s»"
+#: builtin/index-pack.c
#, c-format
msgid "Cannot open existing pack idx file for '%s'"
msgstr "No es pot obrir el fitxer d'índex de paquets existent de «%s»"
+#: builtin/index-pack.c
#, c-format
msgid "non delta: %d object"
msgid_plural "non delta: %d objects"
msgstr[0] "sense diferències: %d objecte"
msgstr[1] "sense diferències: %d objectes"
+#: builtin/index-pack.c
#, c-format
msgid "chain length = %d: %lu object"
msgid_plural "chain length = %d: %lu objects"
msgstr[0] "longitud de cadena = %d: %lu objecte"
msgstr[1] "longitud de cadena = %d: %lu objectes"
+#: builtin/index-pack.c
msgid "Cannot come back to cwd"
msgstr "No es pot tornar al directori de treball actual"
+#: builtin/index-pack.c
#, c-format
msgid "bad %s"
msgstr "%s incorrecte"
+#: builtin/index-pack.c builtin/init-db.c setup.c
#, c-format
msgid "unknown hash algorithm '%s'"
msgstr "algorisme de resum desconegut «%s»"
+#: builtin/index-pack.c
msgid "--stdin requires a git repository"
msgstr "--stdin requereix un repositori git"
+#: builtin/index-pack.c
msgid "--verify with no packfile name given"
msgstr "s'ha donat --verify sense nom de fitxer de paquet"
+#: builtin/index-pack.c builtin/unpack-objects.c
msgid "fsck error in pack objects"
msgstr "error fsck als objectes del paquet"
+#: builtin/init-db.c
msgid ""
"git init [-q | --quiet] [--bare] [--template=<template-directory>]\n"
" [--separate-git-dir <git-dir>] [--object-format=<format>]\n"
@@ -7420,32 +9520,40 @@ msgstr ""
" [--separate-git-dir <git-dir>] [--object-format=<format>]\n"
" [--ref-format=<format>]\n"
" [-b <branch-name> | --initial-branch=<branch-name>]\n"
-" [--shared[=<permissions>]] [<directory>]"
+" [--shared[=<permissions>]] [<directori>]"
+#: builtin/init-db.c
msgid "permissions"
msgstr "permisos"
+#: builtin/init-db.c
msgid "specify that the git repository is to be shared amongst several users"
msgstr ""
"especifica que el repositori de git es compartirà entre diversos usuaris"
+#: builtin/init-db.c
msgid "override the name of the initial branch"
msgstr "sobreescriu el nom de la branca inicial"
+#: builtin/init-db.c builtin/verify-pack.c
msgid "hash"
msgstr "resum"
+#: builtin/init-db.c builtin/show-index.c builtin/verify-pack.c
msgid "specify the hash algorithm to use"
msgstr "especifiqueu l'algorisme de resum a usar"
+#: builtin/init-db.c
#, c-format
msgid "cannot mkdir %s"
msgstr "no es pot mkdir %s"
+#: builtin/init-db.c
#, c-format
msgid "cannot chdir to %s"
msgstr "no es pot canviar de directori a %s"
+#: builtin/init-db.c
#, c-format
msgid ""
"%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
@@ -7454,174 +9562,252 @@ msgstr ""
"no es permet %s (o --work-tree=<directori>) sense especificar %s (o --git-"
"dir=<directori>)"
+#: builtin/init-db.c
#, c-format
msgid "Cannot access work tree '%s'"
msgstr "No es pot accedir a l'arbre de treball «%s»"
+#: builtin/init-db.c
msgid "--separate-git-dir incompatible with bare repository"
msgstr "--separate-git-dir és incompatible amb un repositori nu"
+#: builtin/interpret-trailers.c
msgid ""
"git interpret-trailers [--in-place] [--trim-empty]\n"
-" [(--trailer (<key>|<keyAlias>)[(=|:)<value>])...]\n"
+" [(--trailer (<key>|<key-alias>)[(=|:)<value>])...]\n"
" [--parse] [<file>...]"
msgstr ""
"git interpret-trailers [--in-place] [--trim-empty]\n"
-" [(--trailer (<key>|<keyAlias>)[(=|:)<value>])...]\n"
-" [--parse] [<file>...]"
+" [(--trailer (<clau>|<alies-clau>)[(=|:)<valor>])...]\n"
+" [--parse] [<fitxer>...]"
+
+#: builtin/interpret-trailers.c wrapper.c
+#, c-format
+msgid "could not stat %s"
+msgstr "no s'ha pogut fer stat a %s"
+
+#: builtin/interpret-trailers.c
+#, c-format
+msgid "file %s is not a regular file"
+msgstr "el fitxer %s no és un fitxer regular"
+#: builtin/interpret-trailers.c
+#, c-format
+msgid "file %s is not writable by user"
+msgstr "el fitxer %s no és gravable per l'usuari"
+
+#: builtin/interpret-trailers.c
+msgid "could not open temporary file"
+msgstr "no s'ha pogut obrir el fitxer temporal"
+
+#: builtin/interpret-trailers.c
+#, c-format
+msgid "could not read input file '%s'"
+msgstr "no s'ha pogut llegir el fitxer d'entrada «%s»"
+
+#: builtin/interpret-trailers.c builtin/mktag.c imap-send.c
+msgid "could not read from stdin"
+msgstr "no s'ha pogut llegir des de stdin"
+
+#: builtin/interpret-trailers.c
+#, c-format
+msgid "could not rename temporary file to %s"
+msgstr "no s'ha pogut canviar el nom del fitxer temporal a %s"
+
+#: builtin/interpret-trailers.c
msgid "edit files in place"
msgstr "edita els fitxers in situ"
+#: builtin/interpret-trailers.c
msgid "trim empty trailers"
msgstr "escurça els remolcs buits"
+#: builtin/interpret-trailers.c
msgid "placement"
msgstr "posicionament"
+#: builtin/interpret-trailers.c
msgid "where to place the new trailer"
msgstr "on ubicar el «trailer» nou"
+#: builtin/interpret-trailers.c
msgid "action if trailer already exists"
msgstr "acció si el «trailer» ja existeix"
+#: builtin/interpret-trailers.c
msgid "action if trailer is missing"
msgstr "acció si el «trailer» falta"
+#: builtin/interpret-trailers.c
msgid "output only the trailers"
msgstr "mostra només els «trailer»"
+#: builtin/interpret-trailers.c
msgid "do not apply trailer.* configuration variables"
msgstr "no apliquis les variables de configuració trailer.*"
+#: builtin/interpret-trailers.c
msgid "reformat multiline trailer values as single-line values"
msgstr ""
"reformata els valors del tràiler multilínia com a valors de línia única"
+#: builtin/interpret-trailers.c
msgid "alias for --only-trailers --only-input --unfold"
msgstr "àlies per a --only-trailers --only-input --unfold"
+#: builtin/interpret-trailers.c
msgid "do not treat \"---\" as the end of input"
msgstr "no tractis «---» com el final de l'entrada"
+#: builtin/interpret-trailers.c
msgid "trailer(s) to add"
msgstr "remolcs a afegir"
+#: builtin/interpret-trailers.c
msgid "--trailer with --only-input does not make sense"
msgstr "--trailer amb --only-input no té sentit"
+#: builtin/interpret-trailers.c
msgid "no input file given for in-place editing"
msgstr "no s'ha donat cap fitxer d'entrada per a edició in situ"
+#: builtin/log.c
msgid "git log [<options>] [<revision-range>] [[--] <path>...]"
msgstr "git log [<opcions>] [<rang-de-revisions>] [[--] <camí>...]"
+#: builtin/log.c
msgid "git show [<options>] <object>..."
msgstr "git show [<opcions>] <objecte>..."
+#: builtin/log.c
#, c-format
msgid "invalid --decorate option: %s"
msgstr "opció --decorate no vàlida: %s"
+#: builtin/log.c diff.c
msgid "suppress diff output"
msgstr "omet la sortida de diferències"
+#: builtin/log.c
msgid "show source"
msgstr "mostra la font"
+#: builtin/log.c
msgid "clear all previously-defined decoration filters"
msgstr "neteja tots els filtres de decoració prèviament definits"
+#: builtin/log.c
msgid "only decorate refs that match <pattern>"
msgstr "només decora les referències que coincideixin amb <patró>"
+#: builtin/log.c
msgid "do not decorate refs that match <pattern>"
msgstr "no decoris les referències que coincideixen amb <patró>"
+#: builtin/log.c
msgid "decorate options"
msgstr "opcions de decoració"
+#: builtin/log.c
msgid ""
"trace the evolution of line range <start>,<end> or function :<funcname> in "
"<file>"
msgstr ""
-"traça l'evolució del rang de línia <start>,<end> o funcions :<funcname> a "
-"<fitxer>"
+"traça l'evolució del rang de línia <inici>,<final> o funcions :<nom-funció> "
+"a <fitxer>"
+#: builtin/log.c builtin/replay.c builtin/shortlog.c bundle.c
#, c-format
msgid "unrecognized argument: %s"
msgstr "argument no reconegut: %s"
+#: builtin/log.c
msgid "-L<range>:<file> cannot be used with pathspec"
-msgstr "-L<range>:<fitxer> no es pot usar amb una especificació de camí"
+msgstr "-L<rang>:<fitxer> no es pot usar amb una especificació de camí"
+#: builtin/log.c
#, c-format
msgid "Final output: %d %s\n"
msgstr "Sortida final: %d %s\n"
-msgid "unable to create temporary object directory"
-msgstr "no s'ha pogut crear el directori temporal de l'objecte"
-
+#: builtin/log.c
#, c-format
msgid "git show %s: bad file"
msgstr "git show %s: fitxer incorrecte"
+#: builtin/log.c
#, c-format
msgid "could not read object %s"
msgstr "no s'ha pogut llegir l'objecte %s"
+#: builtin/log.c
#, c-format
msgid "unknown type: %d"
msgstr "tipus desconegut: %d"
+#: builtin/log.c
#, c-format
msgid "%s: invalid cover from description mode"
msgstr "%s: cobertura no vàlida des del mode descripció"
+#: builtin/log.c
msgid "format.headers without value"
msgstr "format.headers sense valor"
+#: builtin/log.c
#, c-format
msgid "cannot open patch file %s"
msgstr "no s'ha pogut obrir el fitxer de pedaç %s"
+#: builtin/log.c
msgid "need exactly one range"
msgstr "necessita exactament un interval"
+#: builtin/log.c
msgid "not a range"
msgstr "no és un interval"
+#: builtin/log.c
#, c-format
msgid "unable to read branch description file '%s'"
msgstr "no es pot llegir el fitxer de descripció de la branca «%s»"
+#: builtin/log.c
msgid "cover letter needs email format"
msgstr "la carta de presentació necessita un format de correu electrònic"
+#: builtin/log.c
msgid "failed to create cover-letter file"
msgstr "s'ha produït un error en crear el fitxer de carta de presentació"
+#: builtin/log.c
#, c-format
msgid "insane in-reply-to: %s"
msgstr "in-reply-to boig: %s"
+#: builtin/log.c
msgid "git format-patch [<options>] [<since> | <revision-range>]"
msgstr "git format-patch [<opcions>] [<des-de> | <rang-de-revisions>]"
+#: builtin/log.c
msgid "two output directories?"
msgstr "dos directoris de sortida?"
+#: builtin/log.c
#, c-format
msgid "unknown commit %s"
msgstr "comissió desconeguda %s"
+#: builtin/log.c builtin/replace.c
#, c-format
msgid "failed to resolve '%s' as a valid ref"
msgstr "s'ha produït un error en resoldre «%s» com a referència vàlida"
+#: builtin/log.c
msgid "could not find exact merge base"
msgstr "no s'ha pogut trobar la base exacta de la fusió"
+#: builtin/log.c
msgid ""
"failed to get upstream, if you want to record base commit automatically,\n"
"please use git branch --set-upstream-to to track a remote branch.\n"
@@ -7632,228 +9818,302 @@ msgstr ""
"branca remota. També podeu especificar la comissió base amb --base=<base-"
"commit-id> manualment"
+#: builtin/log.c
msgid "failed to find exact merge base"
msgstr "no s'ha pogut trobar la base exacta de la fusió"
+#: builtin/log.c
msgid "base commit should be the ancestor of revision list"
msgstr "la comissió base ha de ser l'avantpassat de la llista de revisions"
+#: builtin/log.c
msgid "base commit shouldn't be in revision list"
msgstr "la comissió base no ha de ser en la llista de revisions"
+#: builtin/log.c
msgid "cannot get patch id"
msgstr "no es pot obtenir l'id del pedaç"
+#: builtin/log.c
msgid "failed to infer range-diff origin of current series"
msgstr ""
"no s'ha pogut inferir el rang de diferències d'origen de les sèries actuals"
+#: builtin/log.c
#, c-format
msgid "using '%s' as range-diff origin of current series"
msgstr "utilitzant «%s» com a origen de rang de diferències de la sèrie actual"
+#: builtin/log.c
msgid "use [PATCH n/m] even with a single patch"
msgstr "usa [PATCH n/m] fins i tot amb un sol pedaç"
+#: builtin/log.c
msgid "use [PATCH] even with multiple patches"
msgstr "usa [PATCH] fins i tot amb múltiples pedaços"
+#: builtin/log.c
msgid "print patches to standard out"
msgstr "imprimeix els pedaços a la sortida estàndard"
+#: builtin/log.c
msgid "generate a cover letter"
msgstr "genera una carta de presentació"
+#: builtin/log.c
msgid "use simple number sequence for output file names"
msgstr "usa una seqüència de números per als noms dels fitxers de sortida"
+#: builtin/log.c
msgid "sfx"
msgstr "sufix"
+#: builtin/log.c
msgid "use <sfx> instead of '.patch'"
msgstr "usa <sufix> en lloc de «.patch»"
+#: builtin/log.c
msgid "start numbering patches at <n> instead of 1"
msgstr "comença numerant els pedaços a <n> en lloc d'1"
+#: builtin/log.c
msgid "reroll-count"
msgstr "reroll-count"
+#: builtin/log.c
msgid "mark the series as Nth re-roll"
msgstr "marca la sèrie com a l'enèsima llançada"
+#: builtin/log.c
msgid "max length of output filename"
msgstr "mida màxima del nom del fitxer de sortida"
-msgid "use [RFC PATCH] instead of [PATCH]"
-msgstr "useu [RFC PATCH] en comptes de [PATCH]"
+#: builtin/log.c
+msgid "rfc"
+msgstr "rfc"
+
+#: builtin/log.c
+msgid "add <rfc> (default 'RFC') before 'PATCH'"
+msgstr "afig <rfc> (per defecte «RFC») abans de «PATCH»"
+#: builtin/log.c
msgid "cover-from-description-mode"
msgstr "cover-from-description-mode"
+#: builtin/log.c
msgid "generate parts of a cover letter based on a branch's description"
msgstr ""
"genera parts d'una carta de presentació basant-se en la descripció d'una "
"branca"
+#: builtin/log.c
msgid "use branch description from file"
msgstr "utilitza la descripció de la branca des del fitxer"
+#: builtin/log.c
msgid "use [<prefix>] instead of [PATCH]"
msgstr "useu [<prefix>] en comptes de [PATCH]"
+#: builtin/log.c
msgid "store resulting files in <dir>"
msgstr "emmagatzema els fitxers resultants a <directori>"
+#: builtin/log.c
msgid "don't strip/add [PATCH]"
msgstr "no despullis/afegeixis [PATCH]"
+#: builtin/log.c
msgid "don't output binary diffs"
msgstr "no emetis diferències binàries"
+#: builtin/log.c
msgid "output all-zero hash in From header"
msgstr "emet un resum de tots zeros en la capçalera From"
+#: builtin/log.c
msgid "don't include a patch matching a commit upstream"
msgstr "no incloguis pedaços que coincideixin amb comissions a la font"
+#: builtin/log.c
msgid "show patch format instead of default (patch + stat)"
msgstr ""
"mostra el format de pedaç en lloc del per defecte (pedaç + estadístiques)"
+#: builtin/log.c
msgid "Messaging"
msgstr "Missatgeria"
+#: builtin/log.c
msgid "header"
msgstr "capçalera"
+#: builtin/log.c
msgid "add email header"
msgstr "afegeix una capçalera de correu electrònic"
+#: builtin/log.c
msgid "email"
msgstr "correu electrònic"
+#: builtin/log.c
msgid "add To: header"
msgstr "afegeix la capçalera To:"
+#: builtin/log.c
msgid "add Cc: header"
msgstr "afegeix la capçalera Cc:"
+#: builtin/log.c
msgid "ident"
msgstr "identitat"
+#: builtin/log.c
msgid "set From address to <ident> (or committer ident if absent)"
msgstr ""
"estableix l'adreça From a <identitat> (o la identitat del comitent si manca)"
+#: builtin/log.c
msgid "message-id"
msgstr "ID de missatge"
+#: builtin/log.c
msgid "make first mail a reply to <message-id>"
msgstr "fes que el primer missatge sigui una resposta a <ID de missatge>"
+#: builtin/log.c
msgid "boundary"
msgstr "límit"
+#: builtin/log.c
msgid "attach the patch"
msgstr "adjunta el pedaç"
+#: builtin/log.c
msgid "inline the patch"
msgstr "posa el pedaç en el cos"
+#: builtin/log.c
msgid "enable message threading, styles: shallow, deep"
msgstr "habilita l'enfilada de missatges, estils: shallow, deep"
+#: builtin/log.c
msgid "signature"
msgstr "signatura"
+#: builtin/log.c
msgid "add a signature"
msgstr "afegeix una signatura"
+#: builtin/log.c
msgid "base-commit"
msgstr "comissió base"
+#: builtin/log.c
msgid "add prerequisite tree info to the patch series"
msgstr "afegeix la informació d'arbre requerida a la sèrie de pedaços"
+#: builtin/log.c
msgid "add a signature from a file"
msgstr "afegeix una signatura des d'un fitxer"
+#: builtin/log.c
msgid "don't print the patch filenames"
msgstr "no imprimeixis els noms de fitxer del pedaç"
+#: builtin/log.c
msgid "show progress while generating patches"
msgstr "mostra el progrés durant la generació de pedaços"
+#: builtin/log.c
msgid "show changes against <rev> in cover letter or single patch"
msgstr ""
-"mostra els canvis contra <rev> a la carta de presentació o a un sol pedaç"
+"mostra els canvis contra <revisió> a la carta de presentació o a un sol pedaç"
+#: builtin/log.c
msgid "show changes against <refspec> in cover letter or single patch"
msgstr ""
"mostra els canvis contra <refspec> a la carta de presentació o a un sol pedaç"
+#: builtin/log.c builtin/range-diff.c
msgid "percentage by which creation is weighted"
msgstr "percentatge pel qual la creació és ponderada"
+#: builtin/log.c
msgid "show in-body From: even if identical to the e-mail header"
msgstr ""
"mostra en el cos el remitent: encara que sigui idèntic a la capçalera del "
"correu electrònic"
+#: builtin/log.c
#, c-format
msgid "invalid ident line: %s"
msgstr "línia d'identitat no vàlida: %s"
+#: builtin/log.c
msgid "--name-only does not make sense"
msgstr "--name-only no té sentit"
+#: builtin/log.c
msgid "--name-status does not make sense"
msgstr "--name-status no té sentit"
+#: builtin/log.c
msgid "--check does not make sense"
msgstr "--check no té sentit"
+#: builtin/log.c
msgid "--remerge-diff does not make sense"
msgstr "--remerge-diff no té sentit"
+#: builtin/log.c builtin/submodule--helper.c rerere.c submodule.c
#, c-format
msgid "could not create directory '%s'"
msgstr "no s'ha pogut crear el directori «%s»"
+#: builtin/log.c
msgid "--interdiff requires --cover-letter or single patch"
msgstr "--interdiff requereix --cover-letter o un sol pedaç"
+#: builtin/log.c
msgid "Interdiff:"
msgstr "Interdiff:"
+#: builtin/log.c
#, c-format
msgid "Interdiff against v%d:"
msgstr "Interdiff contra v%d:"
+#: builtin/log.c
msgid "--range-diff requires --cover-letter or single patch"
msgstr "--range-diff requereix --cover-letter o un sol pedaç"
+#: builtin/log.c
msgid "Range-diff:"
msgstr "Diferència de l'interval:"
+#: builtin/log.c
#, c-format
msgid "Range-diff against v%d:"
msgstr "Diferència de l'interval contra el v%d:"
+#: builtin/log.c
#, c-format
msgid "unable to read signature file '%s'"
msgstr "no s'ha pogut llegir el fitxer de signatura «%s»"
+#: builtin/log.c
msgid "Generating patches"
msgstr "S'estan generant els pedaços"
+#: builtin/log.c
msgid "failed to create output files"
msgstr "no s'han pogut crear els fitxers de sortida"
+#: builtin/log.c
msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
msgstr "git cherry [-v] [<font> [<cap> [<límit>]]]"
+#: builtin/log.c
#, c-format
msgid ""
"Could not find a tracked remote branch, please specify <upstream> manually.\n"
@@ -7861,108 +10121,126 @@ msgstr ""
"No s'ha pogut trobar una branca remota seguida. Especifiqueu <font> "
"manualment.\n"
+#: builtin/ls-files.c builtin/ls-tree.c
#, c-format
msgid "could not get object info about '%s'"
msgstr "no s'ha pogut obtenir la informació sobre l'objecte «%s»"
-#, c-format
-msgid "bad ls-files format: element '%s' does not start with '('"
-msgstr "format incorrecte del ls-files: l'element «%s» no comença amb «(»"
-
-#, c-format
-msgid "bad ls-files format: element '%s' does not end in ')'"
-msgstr "format incorrecte del ls-files: l'element «%s» no acaba amb «)»"
-
-#, c-format
-msgid "bad ls-files format: %%%.*s"
-msgstr "format incorrecte de ls-files: %%%.*s"
-
+#: builtin/ls-files.c
msgid "git ls-files [<options>] [<file>...]"
msgstr "git ls-files [<opcions>] [<fitxer>...]"
+#: builtin/ls-files.c builtin/merge-tree.c
msgid "separate paths with the NUL character"
msgstr "separa els camins amb el caràcter NUL"
+#: builtin/ls-files.c
msgid "identify the file status with tags"
msgstr "identifica l'estat de fitxer amb etiquetes"
+#: builtin/ls-files.c
msgid "use lowercase letters for 'assume unchanged' files"
msgstr "usa lletres minúscules per als fitxers «assume unchanged»"
+#: builtin/ls-files.c
msgid "use lowercase letters for 'fsmonitor clean' files"
msgstr "usa lletres minúscules per als fitxers «fsmonitor clean»"
+#: builtin/ls-files.c
msgid "show cached files in the output (default)"
msgstr ""
"mostra en la sortida els fitxers desats en la memòria cau (per defecte)"
+#: builtin/ls-files.c
msgid "show deleted files in the output"
msgstr "mostra en la sortida els fitxers suprimits"
+#: builtin/ls-files.c
msgid "show modified files in the output"
msgstr "mostra en la sortida els fitxers modificats"
+#: builtin/ls-files.c
msgid "show other files in the output"
msgstr "mostra en la sortida els altres fitxers"
+#: builtin/ls-files.c
msgid "show ignored files in the output"
msgstr "mostra en la sortida els fitxers ignorats"
+#: builtin/ls-files.c
msgid "show staged contents' object name in the output"
msgstr "mostra en la sortida el nom d'objecte dels continguts «stage»"
+#: builtin/ls-files.c
msgid "show files on the filesystem that need to be removed"
msgstr "mostra els fitxers en el sistema de fitxers que s'han d'eliminar"
+#: builtin/ls-files.c
msgid "show 'other' directories' names only"
msgstr "mostra només els noms dels directoris «other»"
+#: builtin/ls-files.c
msgid "show line endings of files"
msgstr "mostra els terminadors de línia dels fitxers"
+#: builtin/ls-files.c
msgid "don't show empty directories"
msgstr "no mostris els directoris buits"
+#: builtin/ls-files.c
msgid "show unmerged files in the output"
msgstr "mostra en la sortida els fitxers sense fusionar"
+#: builtin/ls-files.c
msgid "show resolve-undo information"
msgstr "mostra la informació de resolució de desfet"
+#: builtin/ls-files.c
msgid "skip files matching pattern"
msgstr "omet els fitxers coincidents amb el patró"
+#: builtin/ls-files.c
msgid "read exclude patterns from <file>"
msgstr "llegeix els patrons des de <fitxer>"
+#: builtin/ls-files.c
msgid "read additional per-directory exclude patterns in <file>"
msgstr "llegeix els patrons addicionals d'exclusió per directori en <fitxer>"
+#: builtin/ls-files.c
msgid "add the standard git exclusions"
msgstr "afegeix les exclusions estàndards de git"
+#: builtin/ls-files.c
msgid "make the output relative to the project top directory"
msgstr "fes que la sortida sigui relativa al directori superior del projecte"
+#: builtin/ls-files.c
msgid "if any <file> is not in the index, treat this as an error"
msgstr "si qualsevol <fitxer> no és en l'índex, tracta-ho com a error"
+#: builtin/ls-files.c builtin/merge-tree.c
msgid "tree-ish"
msgstr "arbre"
+#: builtin/ls-files.c
msgid "pretend that paths removed since <tree-ish> are still present"
msgstr ""
"pretén que els camins eliminats després de <arbre> encara siguin presents"
+#: builtin/ls-files.c
msgid "show debugging data"
msgstr "mostra les dades de depuració"
+#: builtin/ls-files.c
msgid "suppress duplicate entries"
msgstr "suprimeix les entrades duplicades"
+#: builtin/ls-files.c
msgid "show sparse directories in the presence of a sparse index"
msgstr "mostra els directoris dispersos en presència d'un índex dispers"
+#: builtin/ls-files.c
msgid ""
"--format cannot be used with -s, -o, -k, -t, --resolve-undo, --deduplicate, "
"--eol"
@@ -7970,163 +10248,202 @@ msgstr ""
"--format no es pot usar amb -s, -o, -k, -t, --resolve-undo, --deduplicate, --"
"eol"
+#: builtin/ls-remote.c
msgid ""
-"git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
+"git ls-remote [--branches] [--tags] [--refs] [--upload-pack=<exec>]\n"
" [-q | --quiet] [--exit-code] [--get-url] [--sort=<key>]\n"
" [--symref] [<repository> [<patterns>...]]"
msgstr ""
-"git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
-" [-q | --quiet] [--exit-code] [--get-url] [--sort=<key>]\n"
-" [--symref] [<repository> [<patterns>...]]"
+"git ls-remote [--branches] [--tags] [--refs] [--upload-pack=<exec>]\n"
+" [-q | --quiet] [--exit-code] [--get-url] [--sort=<clau>]\n"
+" [--symref] [<repositori> [<patrons>...]]"
+#: builtin/ls-remote.c
msgid "do not print remote URL"
msgstr "no imprimeixis l'URL remot"
+#: builtin/ls-remote.c builtin/rebase.c
msgid "exec"
msgstr "executable"
+#: builtin/ls-remote.c
msgid "path of git-upload-pack on the remote host"
msgstr "camí a git-upload-pack en la màquina remota"
+#: builtin/ls-remote.c
msgid "limit to tags"
msgstr "limita a etiquetes"
-msgid "limit to heads"
-msgstr "limita a «heads»"
+# limita-ho?
+#: builtin/ls-remote.c
+msgid "limit to branches"
+msgstr "limita a les branques"
+
+#: builtin/ls-remote.c builtin/show-ref.c
+msgid "deprecated synonym for --branches"
+msgstr "sinònim de «--branches» en desús"
+#: builtin/ls-remote.c
msgid "do not show peeled tags"
msgstr "no mostris les etiquetes pelades"
+#: builtin/ls-remote.c
msgid "take url.<base>.insteadOf into account"
msgstr "tingues en compte url.<base>.insteadOf"
+#: builtin/ls-remote.c
msgid "exit with exit code 2 if no matching refs are found"
msgstr "surt amb codi de sortida 2 si no es troba cap referència coincident"
+#: builtin/ls-remote.c
msgid "show underlying ref in addition to the object pointed by it"
msgstr "mostra la referència subjacent a més de l'objecte que assenyali"
+#: builtin/ls-tree.c
msgid "git ls-tree [<options>] <tree-ish> [<path>...]"
msgstr "git ls-tree [<opcions>] <arbre> [<camí>...]"
-#, c-format
-msgid "bad ls-tree format: element '%s' does not start with '('"
-msgstr "format incorrecte del ls-tree: l'element '%s' no comença amb «(»"
-
-#, c-format
-msgid "bad ls-tree format: element '%s' does not end in ')'"
-msgstr "format incorrecte del ls-tree: l'element '%s' no acaba en «(»"
-
-#, c-format
-msgid "bad ls-tree format: %%%.*s"
-msgstr "format incorrecte de ls-tree: %%%.*s"
-
+#: builtin/ls-tree.c
msgid "only show trees"
msgstr "mostra només els arbres"
+#: builtin/ls-tree.c
msgid "recurse into subtrees"
msgstr "inclou recursivament als subarbres"
+#: builtin/ls-tree.c
msgid "show trees when recursing"
msgstr "mostra els arbres quan es treballa recursivament"
+#: builtin/ls-tree.c
msgid "terminate entries with NUL byte"
msgstr "acaba les entrades amb un octet NUL"
+#: builtin/ls-tree.c
msgid "include object size"
msgstr "mida de l'objecte d'inclusió"
+#: builtin/ls-tree.c
msgid "list only filenames"
msgstr "llista només els noms de fitxer"
+#: builtin/ls-tree.c
msgid "list only objects"
msgstr "llista només els objectes"
+#: builtin/ls-tree.c
msgid "use full path names"
msgstr "usa els noms de camí complets"
+#: builtin/ls-tree.c
msgid "list entire tree; not just current directory (implies --full-name)"
msgstr ""
"llista l'arbre sencer; no només el directori actual (implica --full-name)"
+#: builtin/ls-tree.c
msgid "--format can't be combined with other format-altering options"
msgstr "--format no es pot combinar amb altres opcions d'alteració de format"
#. TRANSLATORS: keep <> in "<" mail ">" info.
+#: builtin/mailinfo.c
msgid "git mailinfo [<options>] <msg> <patch> < mail >info"
msgstr "git mailinfo [<opcions>] <msg> <pedaç> < mail >info"
+#: builtin/mailinfo.c
msgid "keep subject"
msgstr "mantén l'assumpte"
+#: builtin/mailinfo.c
msgid "keep non patch brackets in subject"
msgstr "mantén els parèntesis que no són del pedaç en l'assumpte"
+#: builtin/mailinfo.c
msgid "copy Message-ID to the end of commit message"
msgstr "copia el Message-ID al final del missatge de comissió"
+#: builtin/mailinfo.c
msgid "re-code metadata to i18n.commitEncoding"
msgstr "torna a codificar les metadades a i18n.commitEncoding"
+#: builtin/mailinfo.c
msgid "disable charset re-coding of metadata"
msgstr "inhabilita la recodificació del joc de caràcters de les metadades"
+#: builtin/mailinfo.c
msgid "encoding"
msgstr "codificació"
+#: builtin/mailinfo.c
msgid "re-code metadata to this encoding"
msgstr "recodifica les metadades en aquesta codificació"
+#: builtin/mailinfo.c
msgid "use scissors"
msgstr "usa les tisores"
+#: builtin/mailinfo.c
msgid "<action>"
msgstr "<acció>"
+#: builtin/mailinfo.c
msgid "action when quoted CR is found"
msgstr "acció quan es troba un CR entre cometes"
+#: builtin/mailinfo.c
msgid "use headers in message's body"
msgstr "utilitza les capçaleres en el cos del missatge"
+#: builtin/mailsplit.c
msgid "reading patches from stdin/tty..."
msgstr "s'estan llegint pedaços de stdin/tty..."
+#: builtin/mailsplit.c
#, c-format
msgid "empty mbox: '%s'"
msgstr "mbox buit: «%s»"
+#: builtin/merge-base.c
msgid "git merge-base [-a | --all] <commit> <commit>..."
msgstr "git merge-base [-a | --all] <comissió> <comissió>..."
+#: builtin/merge-base.c
msgid "git merge-base [-a | --all] --octopus <commit>..."
msgstr "git merge-base [-a | --all] --octopus <comissió>..."
+#: builtin/merge-base.c
msgid "git merge-base --is-ancestor <commit> <commit>"
msgstr "git merge-base --is-ancestor <comissió> <comissió>"
+#: builtin/merge-base.c
msgid "git merge-base --independent <commit>..."
msgstr "git merge-base --independent <comissió>..."
+#: builtin/merge-base.c
msgid "git merge-base --fork-point <ref> [<commit>]"
msgstr "git merge-base --fork-point <referència> [<comissió>]"
+#: builtin/merge-base.c
msgid "output all common ancestors"
msgstr "emet tots els avantpassats comuns"
+#: builtin/merge-base.c
msgid "find ancestors for a single n-way merge"
msgstr "troba els avantpassats per a una sola fusió d'n vies"
+#: builtin/merge-base.c
msgid "list revs not reachable from others"
msgstr "llista les revisions no abastables d'altres"
+#: builtin/merge-base.c
msgid "is the first one ancestor of the other?"
msgstr "és la primera un avantpassat de l'altre?"
+#: builtin/merge-base.c
msgid "find where <commit> forked from reflog of <ref>"
msgstr ""
"troba on <comissió> s'ha bifurcat del registre de referències de <referència>"
+#: builtin/merge-file.c
msgid ""
"git merge-file [<options>] [-L <name1> [-L <orig> [-L <name2>]]] <file1> "
"<orig-file> <file2>"
@@ -8134,269 +10451,342 @@ msgstr ""
"git merge-file [<opcions>] [-L <nom1> [-L <original> [-L <nom2>]]] <fitxer1> "
"<fitxer-original> <fitxer2>"
+#: builtin/merge-file.c diff.c
msgid ""
"option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
"\"histogram\""
msgstr ""
"l'opció diff-algorithm accepta «myers», «minimal», «patience» i «histogram»"
+#: builtin/merge-file.c
msgid "send results to standard output"
msgstr "envia els resultats a la sortida estàndard"
+#: builtin/merge-file.c
msgid "use object IDs instead of filenames"
msgstr "utilitza els ID dels objectes en comptes dels noms de fitxer"
+#: builtin/merge-file.c
msgid "use a diff3 based merge"
msgstr "usa una fusió basada en diff3"
+#: builtin/merge-file.c
msgid "use a zealous diff3 based merge"
msgstr "usa una fusió basada en zealous diff3"
-msgid "for conflicts, use our version"
-msgstr "en conflictes, usa la nostra versió"
-
-msgid "for conflicts, use their version"
-msgstr "en conflictes, usa la seva versió"
-
-msgid "for conflicts, use a union version"
-msgstr "en conflictes, usa una versió d'unió"
-
+#: builtin/merge-file.c diff.c
msgid "<algorithm>"
msgstr "<algorisme>"
+#: builtin/merge-file.c diff.c
msgid "choose a diff algorithm"
msgstr "trieu un algorisme per al diff"
+#: builtin/merge-file.c
msgid "for conflicts, use this marker size"
msgstr "en conflictes, usa aquesta mida de marcador"
+#: builtin/merge-file.c
msgid "do not warn about conflicts"
msgstr "no avisis de conflictes"
+#: builtin/merge-file.c
msgid "set labels for file1/orig-file/file2"
msgstr "estableix les etiquetes per a fitxer1/fitxer-original/fitxer2"
+#: builtin/merge-file.c
#, c-format
msgid "object '%s' does not exist"
msgstr "l'objecte «%s» no existeix"
+#: builtin/merge-file.c
msgid "Could not write object file"
msgstr "No s'ha pogut escriure el fitxer de l'objecte"
+#: builtin/merge-recursive.c
#, c-format
msgid "unknown option %s"
msgstr "opció desconeguda %s"
+#: builtin/merge-recursive.c
#, c-format
msgid "could not parse object '%s'"
msgstr "no s'ha pogut analitzar l'objecte «%s»"
+#: builtin/merge-recursive.c
#, c-format
msgid "cannot handle more than %d base. Ignoring %s."
msgid_plural "cannot handle more than %d bases. Ignoring %s."
msgstr[0] "no es pot gestionar més d'%d base. S'està ignorant %s."
msgstr[1] "no es poden gestionar més de %d bases. S'està ignorant %s."
+#: builtin/merge-recursive.c
msgid "not handling anything other than two heads merge."
msgstr "no s'està gestionant res a part de la fusió de dos caps."
+#: builtin/merge-recursive.c
#, c-format
msgid "could not resolve ref '%s'"
msgstr "no s'ha pogut resoldre la referència «%s»"
+#: builtin/merge-recursive.c
#, c-format
msgid "Merging %s with %s\n"
msgstr "S'està fusionant %s amb %s\n"
+#: builtin/merge-tree.c
+#, c-format
+msgid "could not parse as tree '%s'"
+msgstr "no s'ha pogut analitzar com a arbre «%s»"
+
+#: builtin/merge-tree.c builtin/merge.c
msgid "not something we can merge"
msgstr "no és quelcom que puguem fusionar"
+#: builtin/merge-tree.c builtin/merge.c
msgid "refusing to merge unrelated histories"
msgstr "s'està refusant fusionar històries no relacionades"
+#: builtin/merge-tree.c
msgid "failure to merge"
msgstr "s'ha produït un error en fusionar"
+#: builtin/merge-tree.c
msgid "git merge-tree [--write-tree] [<options>] <branch1> <branch2>"
-msgstr "git merge-tree [--write-tree] [<opcions>] <branch1> <branch2>"
+msgstr "git merge-tree [--write-tree] [<opcions>] <branca1> <branca2>"
+#: builtin/merge-tree.c
msgid "git merge-tree [--trivial-merge] <base-tree> <branch1> <branch2>"
-msgstr "git merge-tree [--trivial-merge] <base-tree> <branch1> <branch2>"
+msgstr "git merge-tree [--trivial-merge] <base-tree> <branca1> <branca2>"
+#: builtin/merge-tree.c
msgid "do a real merge instead of a trivial merge"
msgstr "fes una fusió real en lloc d'una fusió trivial"
+#: builtin/merge-tree.c
msgid "do a trivial merge only"
msgstr "fes només una fusió trivial"
+#: builtin/merge-tree.c
msgid "also show informational/conflict messages"
msgstr "també mostra missatges informatius i de conflictes"
+#: builtin/merge-tree.c
msgid "list filenames without modes/oids/stages"
msgstr "llista els noms de fitxer sense modes/oids/stages"
+#: builtin/merge-tree.c builtin/merge.c builtin/pull.c
msgid "allow merging unrelated histories"
msgstr "permet fusionar històries no relacionades"
+#: builtin/merge-tree.c
msgid "perform multiple merges, one per line of input"
msgstr "realitza múltiples fusions, una per línia d'entrada"
+#: builtin/merge-tree.c
msgid "specify a merge-base for the merge"
msgstr "cal especificar una referència base per a la fusió"
+#: builtin/merge-tree.c builtin/merge.c builtin/pull.c
msgid "option=value"
msgstr "opció=valor"
+#: builtin/merge-tree.c builtin/merge.c builtin/pull.c
msgid "option for selected merge strategy"
msgstr "opció per a l'estratègia de fusió seleccionada"
+#: builtin/merge-tree.c
msgid "--trivial-merge is incompatible with all other options"
msgstr "--trivial-merge és incompatible amb totes les altres opcions"
+#: builtin/merge-tree.c builtin/merge.c
#, c-format
msgid "unknown strategy option: -X%s"
msgstr "opció d'estratègia desconeguda: -X%s"
+#: builtin/merge-tree.c builtin/notes.c
#, c-format
msgid "malformed input line: '%s'."
msgstr "línia d'entrada mal formada: «%s»."
+#: builtin/merge-tree.c
#, c-format
msgid "merging cannot continue; got unclean result of %d"
msgstr "la fusió no pot continuar; s'ha obtingut un resultat no net de %d"
+#: builtin/merge.c
msgid "git merge [<options>] [<commit>...]"
msgstr "git merge [<opcions>] [<comissió>...]"
+#: builtin/merge.c
msgid "switch `m' requires a value"
msgstr "l'opció «m» requereix un valor"
+#: builtin/merge.c
#, c-format
msgid "option `%s' requires a value"
msgstr "l'opció «%s» requereix un valor"
+#: builtin/merge.c
#, c-format
msgid "Could not find merge strategy '%s'.\n"
msgstr "No s'ha pogut trobar l'estratègia de fusió «%s».\n"
+#: builtin/merge.c
#, c-format
msgid "Available strategies are:"
msgstr "Les estratègies disponibles són:"
+#: builtin/merge.c
#, c-format
msgid "Available custom strategies are:"
msgstr "Les estratègies personalitzades disponibles són:"
+#: builtin/merge.c builtin/pull.c
msgid "do not show a diffstat at the end of the merge"
msgstr "no mostris les estadístiques de diferència al final de la fusió"
+#: builtin/merge.c builtin/pull.c
msgid "show a diffstat at the end of the merge"
msgstr "mostra les estadístiques de diferència al final de la fusió"
+#: builtin/merge.c builtin/pull.c
msgid "(synonym to --stat)"
msgstr "(sinònim de --stat)"
+#: builtin/merge.c builtin/pull.c
msgid "add (at most <n>) entries from shortlog to merge commit message"
msgstr ""
"afegeix (com a màxim <n>) entrades del registre curt al missatge de comissió "
"de fusió"
+#: builtin/merge.c builtin/pull.c
msgid "create a single commit instead of doing a merge"
msgstr "crea una única comissió en lloc de fusionar"
+#: builtin/merge.c builtin/pull.c
msgid "perform a commit if the merge succeeds (default)"
msgstr "realitza una comissió si la fusió té èxit (per defecte)"
+#: builtin/merge.c builtin/pull.c
msgid "edit message before committing"
msgstr "edita el missatge abans de cometre"
+#: builtin/merge.c
msgid "allow fast-forward (default)"
msgstr "permet l'avanç ràpid (per defecte)"
+#: builtin/merge.c builtin/pull.c
msgid "abort if fast-forward is not possible"
msgstr "avorta si l'avanç ràpid no és possible"
+#: builtin/merge.c builtin/pull.c
msgid "verify that the named commit has a valid GPG signature"
msgstr "verifica que la comissió anomenada tingui una signatura GPG vàlida"
+#: builtin/merge.c builtin/notes.c builtin/pull.c builtin/rebase.c
+#: builtin/revert.c
msgid "strategy"
msgstr "estratègia"
+#: builtin/merge.c builtin/pull.c
msgid "merge strategy to use"
msgstr "estratègia de fusió a usar"
+#: builtin/merge.c
msgid "merge commit message (for a non-fast-forward merge)"
msgstr "missatge de comissió de fusió (per a una fusió no d'avanç ràpid)"
+#: builtin/merge.c
msgid "use <name> instead of the real target"
msgstr "usa <nom> en lloc de destí real"
+#: builtin/merge.c
msgid "abort the current in-progress merge"
msgstr "avorta la fusió en curs actual"
+#: builtin/merge.c
msgid "--abort but leave index and working tree alone"
msgstr "--abort però deixa l'índex i l'arbre de treball intactes"
+#: builtin/merge.c
msgid "continue the current in-progress merge"
msgstr "continua la fusió actual en curs"
+#: builtin/merge.c
msgid "bypass pre-merge-commit and commit-msg hooks"
msgstr "evita els lligams pre-merge-commit i commit-msg"
+#: builtin/merge.c
msgid "could not run stash."
msgstr "no s'ha pogut executar «stash»."
+#: builtin/merge.c
msgid "stash failed"
msgstr "l'«stash» ha fallat"
+#: builtin/merge.c
#, c-format
msgid "not a valid object: %s"
msgstr "no és un objecte vàlid: %s"
+#: builtin/merge.c
msgid "read-tree failed"
msgstr "read-tree ha fallat"
+#: builtin/merge.c
msgid "Already up to date. (nothing to squash)"
msgstr "Ja està actualitzat. (res a fer «squash»)"
+#: builtin/merge.c merge-ort-wrappers.c merge-recursive.c
msgid "Already up to date."
msgstr "Ja està al dia."
+#: builtin/merge.c
#, c-format
msgid "Squash commit -- not updating HEAD\n"
msgstr "Comissió «squash» -- no s'està actualitzant HEAD\n"
+#: builtin/merge.c
#, c-format
msgid "No merge message -- not updating HEAD\n"
msgstr "Cap missatge de fusió -- no s'està actualitzant HEAD\n"
+#: builtin/merge.c
#, c-format
msgid "'%s' does not point to a commit"
msgstr "«%s» no assenyala una comissió"
+#: builtin/merge.c
#, c-format
msgid "Bad branch.%s.mergeoptions string: %s"
msgstr "Cadena branch.%s.mergeoptions incorrecta: %s"
+#: builtin/merge.c merge-recursive.c
msgid "Unable to write index."
msgstr "No s'ha pogut escriure l'índex."
+#: builtin/merge.c
msgid "Not handling anything other than two heads merge."
msgstr "No s'està gestionant res a part de la fusió de dos caps."
+#: builtin/merge.c builtin/sparse-checkout.c
#, c-format
msgid "unable to write %s"
msgstr "no s'ha pogut escriure %s"
+#: builtin/merge.c
#, c-format
msgid "Could not read from '%s'"
msgstr "No s'ha pogut llegir de «%s»"
+#: builtin/merge.c
#, c-format
msgid "Not committing merge; use 'git commit' to complete the merge.\n"
msgstr ""
"No s'està cometent la fusió; useu «git commit» per a completar la fusió.\n"
+#: builtin/merge.c
msgid ""
"Please enter a commit message to explain why this merge is necessary,\n"
"especially if it merges an updated upstream into a topic branch.\n"
@@ -8406,70 +10796,89 @@ msgstr ""
"necessària, especialment si es fusiona una branca amb funcionalitat nova.\n"
"\n"
+#: builtin/merge.c
msgid "An empty message aborts the commit.\n"
msgstr "Un missatge buit interromp la comissió.\n"
+# will be ignored → es descartaran?
+#: builtin/merge.c
#, c-format
msgid ""
-"Lines starting with '%c' will be ignored, and an empty message aborts\n"
+"Lines starting with '%s' will be ignored, and an empty message aborts\n"
"the commit.\n"
msgstr ""
-"Les línies que comencen amb «%c» seran ignorades i un missatge buit "
-"interromp la comissió.\n"
+"Les línies que comencin amb «%s» s'ignoraran, i un missatge buit\n"
+"avorta la comissió.\n"
+#: builtin/merge.c
msgid "Empty commit message."
msgstr "El missatge de comissió és buit."
+#: builtin/merge.c
#, c-format
msgid "Wonderful.\n"
msgstr "Meravellós.\n"
+#: builtin/merge.c
#, c-format
msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
msgstr ""
"La fusió automàtica ha fallat; arregleu els conflictes i després cometeu el "
"resultat.\n"
+#: builtin/merge.c
msgid "No current branch."
msgstr "No hi ha cap branca actual."
+#: builtin/merge.c
msgid "No remote for the current branch."
msgstr "No hi ha cap remot per a la branca actual."
+#: builtin/merge.c
msgid "No default upstream defined for the current branch."
msgstr "No hi ha cap font per defecte definida per a la branca actual."
+#: builtin/merge.c
#, c-format
msgid "No remote-tracking branch for %s from %s"
msgstr "No hi ha cap branca amb seguiment remot per a %s de %s"
+#: builtin/merge.c
#, c-format
msgid "Bad value '%s' in environment '%s'"
msgstr "Valor incorrecte «%s» en l'entorn «%s»"
+#: builtin/merge.c editor.c read-cache.c wrapper.c
#, c-format
msgid "could not close '%s'"
msgstr "no s'ha pogut tancar «%s»"
+#: builtin/merge.c
#, c-format
msgid "not something we can merge in %s: %s"
msgstr "no és quelcom que puguem fusionar en %s: %s"
+#: builtin/merge.c
msgid "--abort expects no arguments"
msgstr "--abort no espera cap argument"
+#: builtin/merge.c
msgid "There is no merge to abort (MERGE_HEAD missing)."
msgstr "No hi ha fusió a avortar (manca MERGE_HEAD)."
+#: builtin/merge.c
msgid "--quit expects no arguments"
msgstr "--quit no espera cap argument"
+#: builtin/merge.c
msgid "--continue expects no arguments"
msgstr "--continue no espera cap argument"
+#: builtin/merge.c
msgid "There is no merge in progress (MERGE_HEAD missing)."
msgstr "No hi ha cap fusió en curs (manca MERGE_HEAD)."
+#: builtin/merge.c
msgid ""
"You have not concluded your merge (MERGE_HEAD exists).\n"
"Please, commit your changes before you merge."
@@ -8477,6 +10886,7 @@ msgstr ""
"No heu conclòs la vostra fusió (MERGE_HEAD existeix).\n"
"Cometeu els vostres canvis abans de fusionar."
+#: builtin/merge.c
msgid ""
"You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
"Please, commit your changes before you merge."
@@ -8484,31 +10894,39 @@ msgstr ""
"No heu conclòs el vostre «cherry pick» (CHERRY_PICK_HEAD existeix).\n"
"Cometeu els vostres canvis abans de fusionar."
+#: builtin/merge.c
msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
msgstr "No heu conclòs el vostre «cherry pick» (CHERRY_PICK_HEAD existeix)."
+#: builtin/merge.c
msgid "No commit specified and merge.defaultToUpstream not set."
msgstr ""
"No hi ha una comissió especificada i merge.defaultToUpstream no està "
"establert."
+#: builtin/merge.c
msgid "Squash commit into empty head not supported yet"
msgstr "Una comissió «squash» a una HEAD buida encara no es permet"
+#: builtin/merge.c
msgid "Non-fast-forward commit does not make sense into an empty head"
msgstr "Una comissió no d'avanç ràpid no té sentit a una HEAD buida"
+#: builtin/merge.c
#, c-format
msgid "%s - not something we can merge"
msgstr "%s - no és una cosa que puguem fusionar"
+#: builtin/merge.c
msgid "Can merge only exactly one commit into empty head"
msgstr "Es pot fusionar només una comissió a una HEAD buida"
+#: builtin/merge.c
#, c-format
msgid "Updating %s..%s\n"
msgstr "S'estan actualitzant %s..%s\n"
+#: builtin/merge.c merge-ort-wrappers.c merge-recursive.c
#, c-format
msgid ""
"Your local changes to the following files would be overwritten by merge:\n"
@@ -8517,126 +10935,159 @@ msgstr ""
"Els canvis locals als fitxers següents se sobreescriuran per la fusió:\n"
" %s"
+#: builtin/merge.c
#, c-format
msgid "Trying really trivial in-index merge...\n"
msgstr "S'està intentant una fusió molt trivial en l'índex...\n"
+#: builtin/merge.c
#, c-format
msgid "Nope.\n"
msgstr "No.\n"
+#: builtin/merge.c
#, c-format
msgid "Rewinding the tree to pristine...\n"
msgstr "S'està rebobinant l'arbre a la pristina...\n"
+#: builtin/merge.c
#, c-format
msgid "Trying merge strategy %s...\n"
msgstr "S'està intentant l'estratègia de fusió %s...\n"
+#: builtin/merge.c
#, c-format
msgid "No merge strategy handled the merge.\n"
msgstr "Cap estratègia de fusió ha gestionat la fusió.\n"
+#: builtin/merge.c
#, c-format
msgid "Merge with strategy %s failed.\n"
msgstr "L'estratègia de fusió %s ha fallat.\n"
+#: builtin/merge.c
#, c-format
msgid "Using the %s strategy to prepare resolving by hand.\n"
msgstr "S'està usant l'estratègia %s per a preparar la resolució a mà.\n"
+#: builtin/merge.c
#, c-format
msgid "Automatic merge went well; stopped before committing as requested\n"
msgstr ""
"La fusió automàtica ha sortit bé; s'ha aturat abans de cometre com s'havia "
"demanat\n"
+#: builtin/merge.c
#, c-format
msgid "When finished, apply stashed changes with `git stash pop`\n"
msgstr "Quan acabi, aplica els canvis «stashed» amb «git stash pop»\n"
+#: builtin/mktag.c
#, c-format
msgid "warning: tag input does not pass fsck: %s"
msgstr "avís: l'entrada d'etiqueta no passa fsck: %s"
+#: builtin/mktag.c
#, c-format
msgid "error: tag input does not pass fsck: %s"
msgstr "error: l'entrada d'etiqueta no passa fsck: %s"
+#: builtin/mktag.c
#, c-format
msgid "%d (FSCK_IGNORE?) should never trigger this callback"
msgstr "%d (FSCK_IGNORE?) no hauria d'activar mai aquesta crida de retorn"
+#: builtin/mktag.c
#, c-format
msgid "could not read tagged object '%s'"
msgstr "no s'ha pogut llegir l'objecte etiquetat «%s»"
+#: builtin/mktag.c
#, c-format
msgid "object '%s' tagged as '%s', but is a '%s' type"
msgstr "l'objecte «%s» s'ha etiquetat com a «%s», però és del tipus «%s»"
-msgid "could not read from stdin"
-msgstr "no s'ha pogut llegir des de stdin"
-
+#: builtin/mktag.c
msgid "tag on stdin did not pass our strict fsck check"
msgstr "l'etiqueta a stdin no ha passat la comprovació estricta del fsck"
+#: builtin/mktag.c
msgid "tag on stdin did not refer to a valid object"
msgstr "l'etiqueta a stdin no apunta a un objecte vàlid"
+#: builtin/mktag.c builtin/tag.c
msgid "unable to write tag file"
msgstr "no s'ha pogut escriure el fitxer d'etiqueta"
+#: builtin/mktree.c
msgid "input is NUL terminated"
msgstr "l'entrada és acabada amb NUL"
+#: builtin/mktree.c builtin/write-tree.c
msgid "allow missing objects"
msgstr "permet els objectes absents"
+#: builtin/mktree.c
msgid "allow creation of more than one tree"
msgstr "permet la creació de més d'un arbre"
+#: builtin/multi-pack-index.c
msgid ""
"git multi-pack-index [<options>] write [--preferred-pack=<pack>][--refs-"
"snapshot=<path>]"
msgstr ""
-"git multi-pack-index [<opcions>] write [--preferred-pack=<pack>][--refs-"
+"git multi-pack-index [<opcions>] write [--preferred-pack=<paquet>][--refs-"
"snapshot=<camí>]"
+#: builtin/multi-pack-index.c
msgid "git multi-pack-index [<options>] verify"
msgstr "git multi-pack-index [<opcions>] verify"
+#: builtin/multi-pack-index.c
msgid "git multi-pack-index [<options>] expire"
msgstr "git multi-pack-index [<opcions>] expire"
+#: builtin/multi-pack-index.c
msgid "git multi-pack-index [<options>] repack [--batch-size=<size>]"
msgstr "git multi-pack-index [<opcions>] repack [--batch-size=<mida>]"
+#: builtin/multi-pack-index.c
msgid "directory"
msgstr "directori"
+#: builtin/multi-pack-index.c
msgid "object directory containing set of packfile and pack-index pairs"
msgstr ""
"directori de l'objecte que conté el conjunt de parells de fitxers i índexs "
"de paquets"
+#: builtin/multi-pack-index.c
msgid "preferred-pack"
msgstr "paquet preferit"
+#: builtin/multi-pack-index.c
msgid "pack for reuse when computing a multi-pack bitmap"
msgstr ""
"empaqueta per a reutilitzar quan es calcula un mapa de bits multipaquet"
+#: builtin/multi-pack-index.c
msgid "write multi-pack bitmap"
msgstr "escriu un map de bits multipaquet"
+#: builtin/multi-pack-index.c
+msgid "write a new incremental MIDX"
+msgstr "escriu un nou MIDX incremental"
+
+#: builtin/multi-pack-index.c
msgid "write multi-pack index containing only given indexes"
msgstr "escriu un índex multipaquet que contingui només els índexs donats"
+#: builtin/multi-pack-index.c
msgid "refs snapshot for selecting bitmap commits"
msgstr ""
"instantània de referències per a seleccionar les comissions de mapa de bits"
+#: builtin/multi-pack-index.c
msgid ""
"during repack, collect pack-files of smaller size into a batch that is "
"larger than this size"
@@ -8644,245 +11095,309 @@ msgstr ""
"durant el reempaquetament, recull els fitxers de paquets de mida més petita "
"en un lot que és més gran que aquesta mida"
+#: builtin/mv.c
msgid "git mv [<options>] <source>... <destination>"
msgstr "git mv [<opcions>] <origen>... <destí>"
+#: builtin/mv.c
#, c-format
msgid "Directory %s is in index and no submodule?"
msgstr "El directori %s és en l'índex i no hi ha cap submòdul?"
+#: builtin/mv.c
msgid "Please stage your changes to .gitmodules or stash them to proceed"
msgstr ""
"Feu «stage» dels vostres canvis a .gitmodules o feu «stash» dels mateixos "
"per a procedir"
+#: builtin/mv.c
#, c-format
msgid "%.*s is in index"
msgstr "%.*s és en l'índex"
+#: builtin/mv.c
msgid "force move/rename even if target exists"
msgstr "força el moviment / canvi de nom encara que el destí existeixi"
+#: builtin/mv.c
msgid "skip move/rename errors"
msgstr "omet els errors de moviment / canvi de nom"
+#: builtin/mv.c
#, c-format
msgid "destination '%s' is not a directory"
msgstr "el destí «%s» no és un directori"
+#: builtin/mv.c
#, c-format
msgid "Checking rename of '%s' to '%s'\n"
msgstr "S'està comprovant el canvi de nom de «%s» a «%s»\n"
+#: builtin/mv.c
msgid "bad source"
msgstr "origen incorrecte"
+#: builtin/mv.c
msgid "destination exists"
msgstr "el destí existeix"
+#: builtin/mv.c
msgid "can not move directory into itself"
msgstr "no es pot moure un directori a dins d'ell mateix"
+#: builtin/mv.c
msgid "destination already exists"
msgstr "la destinació ja existeix"
+#: builtin/mv.c
msgid "source directory is empty"
msgstr "el directori d'origen està buit"
+#: builtin/mv.c
msgid "not under version control"
msgstr "no està sota control de versions"
+#: builtin/mv.c
msgid "conflicted"
msgstr "en conflicte"
+#: builtin/mv.c
#, c-format
msgid "overwriting '%s'"
msgstr "s'està sobreescrivint «%s»"
+#: builtin/mv.c
msgid "Cannot overwrite"
msgstr "No es pot sobreescriure"
+#: builtin/mv.c
msgid "multiple sources for the same target"
msgstr "múltiples orígens per al mateix destí"
+#: builtin/mv.c
msgid "destination directory does not exist"
msgstr "el directori destí no existeix"
+#: builtin/mv.c
msgid "destination exists in the index"
msgstr "el destí existeix a l'índex"
+#: builtin/mv.c
#, c-format
msgid "%s, source=%s, destination=%s"
msgstr "%s, origen=%s, destí=%s"
+#: builtin/mv.c
#, c-format
msgid "Renaming %s to %s\n"
msgstr "S'està canviant el nom de %s a %s\n"
+#: builtin/mv.c builtin/remote.c
#, c-format
msgid "renaming '%s' failed"
msgstr "el canvi del nom de «%s» ha fallat"
+#: builtin/name-rev.c
msgid "git name-rev [<options>] <commit>..."
msgstr "git name-rev [<opcions>] <comissió>..."
+#: builtin/name-rev.c
msgid "git name-rev [<options>] --all"
msgstr "git name-rev [<opcions>] --all"
+#: builtin/name-rev.c
msgid "git name-rev [<options>] --annotate-stdin"
msgstr "git name-rev [<opcions>] --annotate-stdin"
+#: builtin/name-rev.c
msgid "print only ref-based names (no object names)"
msgstr "imprimeix només els noms basats en referències (no els noms d'objecte)"
+#: builtin/name-rev.c
msgid "only use tags to name the commits"
msgstr "només usa les etiquetes per a anomenar les comissions"
+#: builtin/name-rev.c
msgid "only use refs matching <pattern>"
msgstr "només usa les referències que coincideixin amb <patró>"
+#: builtin/name-rev.c
msgid "ignore refs matching <pattern>"
msgstr "ignora les referències que coincideixin amb <patró>"
+#: builtin/name-rev.c
msgid "list all commits reachable from all refs"
msgstr "llista totes les comissions abastables de totes les referències"
+#: builtin/name-rev.c
msgid "deprecated: use --annotate-stdin instead"
msgstr "obsolet: useu en comptes --annotate-stdin"
+#: builtin/name-rev.c
msgid "annotate text from stdin"
msgstr "anota el text de stdin"
+#: builtin/name-rev.c
msgid "allow to print `undefined` names (default)"
msgstr "permet imprimir els noms «undefined» (per defecte)"
+#: builtin/name-rev.c
msgid "dereference tags in the input (internal use)"
msgstr "desreferencia les etiquetes en l'entrada (ús intern)"
+#: builtin/notes.c
msgid "git notes [--ref <notes-ref>] [list [<object>]]"
msgstr "git notes [--ref <referència-de-notes>] [llista [<objecte>]]"
+#: builtin/notes.c
msgid ""
"git notes [--ref <notes-ref>] add [-f] [--allow-empty] [--[no-]separator|--"
"separator=<paragraph-break>] [--[no-]stripspace] [-m <msg> | -F <file> | (-c "
"| -C) <object>] [<object>]"
msgstr ""
"git notes [--ref <notes-ref>] add [-f] [--allow-empty] [--[no-]separator|--"
-"separator=<paragraph-break>] [--[no-]stripspace] [-m <msg> | -F <file> | (-c "
-"| -C) <object>] [<object>]"
+"separator=<paragraph-break>] [--[no-]stripspace] [-m <msg> | -F <fitxer> | (-"
+"c | -C) <object>] [<object>]"
+#: builtin/notes.c
msgid "git notes [--ref <notes-ref>] copy [-f] <from-object> <to-object>"
msgstr ""
-"git notes [--ref <referència-de-notes>] copy [-f] <d'objecte> <a-objecte>"
+"git notes [--ref <referència-de-notes>] copy [-f] <objecte-de> <objecte-a>"
+#: builtin/notes.c
msgid ""
"git notes [--ref <notes-ref>] append [--allow-empty] [--[no-]separator|--"
"separator=<paragraph-break>] [--[no-]stripspace] [-m <msg> | -F <file> | (-c "
"| -C) <object>] [<object>]"
msgstr ""
"git notes [--ref <notes-ref>] append [--allow-empty] [--[no-]separator|--"
-"separator=<paragraph-break>] [--[no-]stripspace] [-m <msg> | -F <file> | (-c "
-"| -C) <object>] [<object>]"
+"separator=<paragraph-break>] [--[no-]stripspace] [-m <msg> | -F <fitxer> | (-"
+"c | -C) <objecte>] [<objecte>]"
+#: builtin/notes.c
msgid "git notes [--ref <notes-ref>] edit [--allow-empty] [<object>]"
msgstr ""
"git notes [--ref <referència-de-notes>] edit [--allow-empty] [<objecte>]"
+#: builtin/notes.c
msgid "git notes [--ref <notes-ref>] show [<object>]"
msgstr "git notes [--ref <referència-de-notes>] show [<objecte>]"
+#: builtin/notes.c
msgid ""
"git notes [--ref <notes-ref>] merge [-v | -q] [-s <strategy>] <notes-ref>"
msgstr ""
"git notes [--ref <referència-de-notes>] merge [-v | -q] [-s <estratègia>] "
"<referència-de-notes>"
+#: builtin/notes.c
msgid "git notes [--ref <notes-ref>] remove [<object>...]"
msgstr "git notes [--ref <referència-de-notes>] remove [<objecte>...]"
+#: builtin/notes.c
msgid "git notes [--ref <notes-ref>] prune [-n] [-v]"
msgstr "git notes [--ref <referència-de-notes>] prune [-n] [-v]"
+#: builtin/notes.c
msgid "git notes [--ref <notes-ref>] get-ref"
msgstr "git notes [--ref <referència-de-notes>] get-ref"
+#: builtin/notes.c
msgid "git notes [list [<object>]]"
msgstr "git notes [llista [<objecte>]]"
+#: builtin/notes.c
msgid "git notes add [<options>] [<object>]"
msgstr "git notes add [<opcions>] [<objecte>]"
+#: builtin/notes.c
msgid "git notes copy [<options>] <from-object> <to-object>"
-msgstr "git notes copy [<opcions>] <d'objecte> <a-objecte>"
+msgstr "git notes copy [<opcions>] <objecte-de> <objecte-a>"
+#: builtin/notes.c
msgid "git notes copy --stdin [<from-object> <to-object>]..."
-msgstr "git notes copy --stdin [<d'objecte> <a-objecte>]..."
+msgstr "git notes copy --stdin [<objecte-de> <objecte-a>]..."
+#: builtin/notes.c
msgid "git notes append [<options>] [<object>]"
msgstr "git notes append [<opcions>] [<objecte>]"
+#: builtin/notes.c
msgid "git notes edit [<object>]"
msgstr "git notes edit [<objecte>]"
+#: builtin/notes.c
msgid "git notes show [<object>]"
msgstr "git notes show [<objecte>]"
+#: builtin/notes.c
msgid "git notes merge [<options>] <notes-ref>"
msgstr "git notes merge [<opcions>] <referència-de-notes>"
+#: builtin/notes.c
msgid "git notes merge --commit [<options>]"
msgstr "git notes merge --commit [<opcions>]"
+#: builtin/notes.c
msgid "git notes merge --abort [<options>]"
msgstr "git notes merge --abort [<opcions>]"
+#: builtin/notes.c
msgid "git notes remove [<object>]"
msgstr "git notes remove [<objecte>]"
+#: builtin/notes.c
msgid "git notes prune [<options>]"
msgstr "git notes prune [<opcions>]"
+#: builtin/notes.c
msgid "Write/edit the notes for the following object:"
msgstr "Escriviu/editeu les notes per l'objecte següent:"
-#, c-format
-msgid "unable to start 'show' for object '%s'"
-msgstr "no s'ha pogut iniciar «show» per a l'objecte «%s»"
-
+#: builtin/notes.c
msgid "could not read 'show' output"
msgstr "no s'ha pogut llegir la sortida de «show»"
+#: builtin/notes.c
#, c-format
msgid "failed to finish 'show' for object '%s'"
msgstr "s'ha produït un error en finalitzar «show» per a l'objecte «%s»"
+#: builtin/notes.c
msgid "please supply the note contents using either -m or -F option"
msgstr ""
"especifiqueu el contingut de la nota fent servir l'opció -m o l'opció -F"
+#: builtin/notes.c
msgid "unable to write note object"
msgstr "no s'ha pogut escriure l'objecte de nota"
+#: builtin/notes.c
#, c-format
msgid "the note contents have been left in %s"
msgstr "s'han deixat els continguts de la nota en %s"
+#: builtin/notes.c builtin/tag.c
#, c-format
msgid "could not open or read '%s'"
msgstr "no s'ha pogut obrir o llegir «%s»"
+#: builtin/notes.c
#, c-format
msgid "failed to resolve '%s' as a valid ref."
msgstr "s'ha produït un error en resoldre «%s» com a referència vàlida."
+#: builtin/notes.c
#, c-format
msgid "failed to read object '%s'."
msgstr "s'ha produït un error en llegir l'objecte «%s»."
+#: builtin/notes.c
#, c-format
msgid "cannot read note data from non-blob object '%s'."
msgstr "no es poden llegir les dades de node de l'objecte no de blob «%s»."
+#: builtin/notes.c
#, c-format
msgid "failed to copy notes from '%s' to '%s'"
msgstr "s'ha produït un error en copiar les notes de «%s» a «%s»"
@@ -8890,41 +11405,53 @@ msgstr "s'ha produït un error en copiar les notes de «%s» a «%s»"
#. TRANSLATORS: the first %s will be replaced by a git
#. notes command: 'add', 'merge', 'remove', etc.
#.
+#: builtin/notes.c
#, c-format
msgid "refusing to %s notes in %s (outside of refs/notes/)"
msgstr "s'està refusant %s les notes en %s (fora de refs/notes/)"
+#: builtin/notes.c
#, c-format
msgid "no note found for object %s."
msgstr "no s'ha trobat cap nota per a l'objecte %s."
+#: builtin/notes.c
msgid "note contents as a string"
msgstr "anota els continguts com a cadena"
+#: builtin/notes.c
msgid "note contents in a file"
msgstr "anota els continguts en un fitxer"
+#: builtin/notes.c
msgid "reuse and edit specified note object"
msgstr "reusa i edita l'objecte de nota especificat"
+#: builtin/notes.c
msgid "reuse specified note object"
msgstr "reusa l'objecte de nota especificat"
+#: builtin/notes.c
msgid "allow storing empty note"
msgstr "permet l'emmagatzematge d'una nota buida"
+#: builtin/notes.c
msgid "replace existing notes"
msgstr "reemplaça les notes existents"
+#: builtin/notes.c
msgid "<paragraph-break>"
msgstr "<paragraph-break>"
+#: builtin/notes.c
msgid "insert <paragraph-break> between paragraphs"
msgstr "insereix <paragraph-break> entre paràgrafs"
+#: builtin/notes.c
msgid "remove unnecessary whitespace"
msgstr "elimina l'espai en blanc innecessari"
+#: builtin/notes.c
#, c-format
msgid ""
"Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite "
@@ -8933,24 +11460,30 @@ msgstr ""
"No es poden afegir les notes. S'han trobat notes existents de l'objecte %s. "
"Useu «-f» per a sobreescriure les notes existents"
+#: builtin/notes.c
#, c-format
msgid "Overwriting existing notes for object %s\n"
msgstr "S'estan sobreescrivint les notes existents de l'objecte %s\n"
+#: builtin/notes.c
#, c-format
msgid "Removing note for object %s\n"
msgstr "S'està eliminant la nota de l'objecte %s\n"
+#: builtin/notes.c
msgid "read objects from stdin"
msgstr "llegeix els objectes des de stdin"
+#: builtin/notes.c
msgid "load rewriting config for <command> (implies --stdin)"
msgstr ""
"carrega la configuració de reescriptura per a <ordre> (implica --stdin)"
+#: builtin/notes.c
msgid "too few arguments"
msgstr "massa pocs arguments"
+#: builtin/notes.c
#, c-format
msgid ""
"Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite "
@@ -8959,10 +11492,12 @@ msgstr ""
"No es poden copiar les notes. S'han trobat notes existents de l'objecte %s. "
"Useu «-f» per a sobreescriure les notes existents"
+#: builtin/notes.c
#, c-format
msgid "missing notes on source object %s. Cannot copy."
msgstr "manquen notes a l'objecte font %s. No es pot copiar."
+#: builtin/notes.c
#, c-format
msgid ""
"The -m/-F/-c/-C options have been deprecated for the 'edit' subcommand.\n"
@@ -8971,41 +11506,53 @@ msgstr ""
"Es desaconsellen les opcions -m/-F/-c/-C en favor de la subordre «edit».\n"
"Useu «git notes add -f -m/-F/-c/-C» en lloc d'això.\n"
+#: builtin/notes.c
msgid "failed to delete ref NOTES_MERGE_PARTIAL"
msgstr "s'ha produït un error en suprimir la referència NOTES_MERGE_PARTIAL"
+#: builtin/notes.c
msgid "failed to delete ref NOTES_MERGE_REF"
msgstr "s'ha produït un error en suprimir la referència NOTES_MERGE_REF"
+#: builtin/notes.c
msgid "failed to remove 'git notes merge' worktree"
msgstr ""
"s'ha produït un error en eliminar l'arbre de treball de «git notes merge»"
+#: builtin/notes.c
msgid "failed to read ref NOTES_MERGE_PARTIAL"
msgstr "s'ha produït un error en llegir la referència NOTES_MERGE_PARTIAL"
+#: builtin/notes.c
msgid "could not find commit from NOTES_MERGE_PARTIAL."
msgstr "no s'ha pogut trobar cap comissió de NOTES_MERGE_PARTIAL."
+#: builtin/notes.c
msgid "could not parse commit from NOTES_MERGE_PARTIAL."
msgstr "no s'ha pogut analitzar la comissió de NOTES_MERGE_PARTIAL."
+#: builtin/notes.c
msgid "failed to resolve NOTES_MERGE_REF"
msgstr "s'ha produït un error en resoldre NOTES_MERGE_REF"
+#: builtin/notes.c
msgid "failed to finalize notes merge"
msgstr "s'ha produït un error en finalitzar la fusió de notes"
+#: builtin/notes.c
#, c-format
msgid "unknown notes merge strategy %s"
msgstr "estratègia de fusió de notes desconeguda %s"
+#: builtin/notes.c
msgid "General options"
msgstr "Opcions generals"
+#: builtin/notes.c
msgid "Merge options"
msgstr "Opcions de fusió"
+#: builtin/notes.c
msgid ""
"resolve notes conflicts using the given strategy (manual/ours/theirs/union/"
"cat_sort_uniq)"
@@ -9013,38 +11560,48 @@ msgstr ""
"resol els conflictes de nota usant l'estratègia donada (manual/ours/theirs/"
"union/cat_sort_uniq)"
+#: builtin/notes.c
msgid "Committing unmerged notes"
msgstr "S'estan cometent les notes sense fusionar"
+#: builtin/notes.c
msgid "finalize notes merge by committing unmerged notes"
msgstr "finalitza la fusió de notes cometent les notes sense fusionar"
+#: builtin/notes.c
msgid "Aborting notes merge resolution"
msgstr "S'està avortant la resolució de fusió de notes"
+#: builtin/notes.c
msgid "abort notes merge"
msgstr "avorta la fusió de notes"
+#: builtin/notes.c
msgid "cannot mix --commit, --abort or -s/--strategy"
msgstr "no es pot combinar --commit, --abort i -s/--strategy"
+#: builtin/notes.c
msgid "must specify a notes ref to merge"
msgstr "cal especificar una referència de notes a fusionar"
+#: builtin/notes.c
#, c-format
msgid "unknown -s/--strategy: %s"
msgstr "-s/--strategy desconeguda: %s"
+#: builtin/notes.c
#, c-format
msgid "a notes merge into %s is already in-progress at %s"
msgstr "una fusió de notes a %s ja està en curs a %s"
+#: builtin/notes.c
#, c-format
msgid "failed to store link to current notes ref (%s)"
msgstr ""
"s'ha produït un error en emmagatzemar l'enllaç a la referència de notes "
"actual (%s)"
+#: builtin/notes.c
#, c-format
msgid ""
"Automatic notes merge failed. Fix conflicts in %s and commit the result with "
@@ -9055,44 +11612,56 @@ msgstr ""
"cometeu el resultat amb «git notes merge --commit», o avorteu la fusió amb "
"«git notes merge --abort».\n"
+#: builtin/notes.c builtin/tag.c
#, c-format
msgid "Failed to resolve '%s' as a valid ref."
msgstr "S'ha produït un error en resoldre «%s» com a referència vàlida."
+#: builtin/notes.c
#, c-format
msgid "Object %s has no note\n"
msgstr "L'objecte %s no té cap nota\n"
+#: builtin/notes.c
msgid "attempt to remove non-existent note is not an error"
msgstr "l'intent d'eliminar una nota no existent no és un error"
+#: builtin/notes.c
msgid "read object names from the standard input"
msgstr "llegeix els noms d'objecte des de l'entrada estàndard"
+#: builtin/notes.c builtin/prune.c builtin/worktree.c
msgid "do not remove, show only"
msgstr "no eliminis, només mostra"
+#: builtin/notes.c
msgid "report pruned notes"
msgstr "informa de notes podades"
+#: builtin/notes.c
msgid "notes-ref"
msgstr "referència de notes"
+#: builtin/notes.c
msgid "use notes from <notes-ref>"
msgstr "usa les notes de <referència-de-notes>"
+#: builtin/notes.c builtin/remote.c parse-options.c
#, c-format
msgid "unknown subcommand: `%s'"
msgstr "subordre desconeguda: «%s»"
+#: builtin/pack-objects.c
msgid "git pack-objects --stdout [<options>] [< <ref-list> | < <object-list>]"
msgstr "git pack-objects --stdout [<opcions>] [< <ref-list> | < <object-list>]"
+#: builtin/pack-objects.c
msgid ""
"git pack-objects [<options>] <base-name> [< <ref-list> | < <object-list>]"
msgstr ""
"git pack-objects [<opcions>] <base-name> [< <ref-list> | < <object-list>]"
+#: builtin/pack-objects.c
#, c-format
msgid ""
"write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
@@ -9101,108 +11670,135 @@ msgstr ""
"write_reuse_object: no s'ha pogut localitzar %s, s'esperava a la posició "
"%<PRIuMAX> al paquet %s"
+#: builtin/pack-objects.c
#, c-format
msgid "bad packed object CRC for %s"
msgstr "CRC de l'objecte empaquetat malmès per a %s"
+#: builtin/pack-objects.c
#, c-format
msgid "corrupt packed object for %s"
msgstr "objecte empaquetat corrupte per a %s"
+#: builtin/pack-objects.c
#, c-format
msgid "recursive delta detected for object %s"
msgstr "diferència recursiva detectada per a l'objecte %s"
+#: builtin/pack-objects.c
#, c-format
msgid "ordered %u objects, expected %<PRIu32>"
msgstr "ordenats %u objectes, s'esperaven %<PRIu32>"
+#: builtin/pack-objects.c
#, c-format
msgid "expected object at offset %<PRIuMAX> in pack %s"
msgstr "objecte esperat a la posició %<PRIuMAX> al paquet %s"
+#: builtin/pack-objects.c
msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
msgstr ""
"s'està inhabilitant l'escriptura de mapes de bits, es divideixen els paquets "
"a causa de pack.packSizeLimit"
+#: builtin/pack-objects.c
msgid "Writing objects"
msgstr "S'estan escrivint els objectes"
+#: builtin/pack-objects.c builtin/update-index.c
#, c-format
msgid "failed to stat %s"
msgstr "s'ha produït un error en fer stat a %s"
+#: builtin/pack-objects.c object-file.c
#, c-format
msgid "failed utime() on %s"
msgstr "ha fallat utime() a %s"
+#: builtin/pack-objects.c
msgid "failed to write bitmap index"
msgstr "s'ha produït un error en escriure l'índex de mapa de bits"
+#: builtin/pack-objects.c
#, c-format
msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
msgstr "escrits %<PRIu32> objectes mentre s'esperaven %<PRIu32>"
+#: builtin/pack-objects.c builtin/repack.c
msgid "disabling bitmap writing, as some objects are not being packed"
msgstr ""
"s'està inhabilitant l'escriptura de mapes de bits, perquè alguns objectes no "
"s'empaqueten"
+#: builtin/pack-objects.c
#, c-format
msgid "delta base offset overflow in pack for %s"
msgstr "desbordament del desplaçament base de diferències en paquet per a %s"
+#: builtin/pack-objects.c
#, c-format
msgid "delta base offset out of bound for %s"
msgstr "desplaçament base de diferències fora dels límits per a %s"
+#: builtin/pack-objects.c
msgid "Counting objects"
msgstr "S'estan comptant els objectes"
+#: builtin/pack-objects.c pack-bitmap.c
#, c-format
msgid "unable to get size of %s"
msgstr "no s'ha pogut obtenir la mida de %s"
+#: builtin/pack-objects.c
#, c-format
msgid "unable to parse object header of %s"
msgstr "no s'ha pogut analitzar la capçalera de l'objecte de %s"
+#: builtin/pack-objects.c
#, c-format
msgid "object %s cannot be read"
msgstr "no es pot llegir l'objecte %s"
+#: builtin/pack-objects.c
#, c-format
msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
msgstr ""
"l'objecte %s té una longitud d'objecte inconsistent (%<PRIuMAX> vs "
"%<PRIuMAX>)"
+#: builtin/pack-objects.c
msgid "suboptimal pack - out of memory"
msgstr "paquet subòptim - sense memòria"
+#: builtin/pack-objects.c
#, c-format
msgid "Delta compression using up to %d threads"
msgstr "Compressió de diferències usant fins a %d fils"
+#: builtin/pack-objects.c
#, c-format
msgid "unable to pack objects reachable from tag %s"
msgstr "no s'han pogut empaquetar els objectes abastables des de l'etiqueta %s"
+#: builtin/pack-objects.c commit-graph.c
#, c-format
msgid "unable to get type of object %s"
msgstr "no s'ha pogut obtenir el tipus de l'objecte: %s"
+#: builtin/pack-objects.c
msgid "Compressing objects"
msgstr "S'estan comprimint els objectes"
+#: builtin/pack-objects.c
msgid "inconsistency with delta count"
msgstr "inconsistència amb el comptador de diferències"
+#: builtin/pack-objects.c
#, c-format
msgid "invalid pack.allowPackReuse value: '%s'"
msgstr "valor pack.allowPackReuse value no vàlid: «%s»"
+#: builtin/pack-objects.c
#, c-format
msgid ""
"value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
@@ -9211,6 +11807,7 @@ msgstr ""
"el valor de uploadpack.blobpackfileuri ha de tenir la forma «<object-hash> "
"<pack-hash> <uri>» (s'ha rebut «%s»)"
+#: builtin/pack-objects.c
#, c-format
msgid ""
"object already configured in another uploadpack.blobpackfileuri (got '%s')"
@@ -9218,27 +11815,34 @@ msgstr ""
"l'objecte ja està configurat en un altre uploadpack.blobpackfileuri (s'ha "
"rebut «%s»)"
+#: builtin/pack-objects.c
#, c-format
msgid "could not get type of object %s in pack %s"
msgstr "no s'ha pogut obtenir el tipus de l'objecte %s al paquet %s"
+#: builtin/pack-objects.c
#, c-format
msgid "could not find pack '%s'"
msgstr "no s'ha pogut trobar el paquet «%s»"
+#: builtin/pack-objects.c
#, c-format
msgid "packfile %s cannot be accessed"
msgstr "no es pot accedir al fitxer de paquet %s"
+#: builtin/pack-objects.c
msgid "Enumerating cruft objects"
msgstr "S'estan enumerant els objectes superflus"
+#: builtin/pack-objects.c
msgid "unable to add cruft objects"
msgstr "no s'han pogut afegir els objectes superflus"
+#: builtin/pack-objects.c
msgid "Traversing cruft objects"
msgstr "S'estan recorrent els objectes superflus"
+#: builtin/pack-objects.c
#, c-format
msgid ""
"expected edge object ID, got garbage:\n"
@@ -9247,6 +11851,7 @@ msgstr ""
"s'esperava un identificador vora de l'objecte, s'ha rebut brossa:\n"
" %s"
+#: builtin/pack-objects.c
#, c-format
msgid ""
"expected object ID, got garbage:\n"
@@ -9255,216 +11860,280 @@ msgstr ""
"s'esperava un identificador d'objecte, s'ha rebut brossa:\n"
" %s"
+#: builtin/pack-objects.c reachable.c
msgid "could not load cruft pack .mtimes"
msgstr "no s'ha pogut carregar superflus del paquet superflu"
+#: builtin/pack-objects.c
msgid "cannot open pack index"
msgstr "no s'ha pogut obrir l'índex del paquet"
+#: builtin/pack-objects.c
#, c-format
msgid "loose object at %s could not be examined"
msgstr "no s'ha pogut examinar l'objecte solt a %s"
+#: builtin/pack-objects.c
msgid "unable to force loose object"
msgstr "no s'ha pogut forçar l'objecte solt"
+#: builtin/pack-objects.c
#, c-format
msgid "not a rev '%s'"
msgstr "«%s» no és una revisió"
+#: builtin/pack-objects.c builtin/rev-parse.c
#, c-format
msgid "bad revision '%s'"
msgstr "revisió incorrecta «%s»"
+#: builtin/pack-objects.c
msgid "unable to add recent objects"
msgstr "no s'han pogut afegir els objectes recents"
+#: builtin/pack-objects.c
#, c-format
msgid "unsupported index version %s"
msgstr "versió d'índex no compatible %s"
+#: builtin/pack-objects.c
#, c-format
msgid "bad index version '%s'"
msgstr "versió d'índex incorrecta «%s»"
+#: builtin/pack-objects.c
msgid "show progress meter during object writing phase"
msgstr "mostra l'indicador de progrés durant la fase d'escriptura d'objectes"
+#: builtin/pack-objects.c
msgid "similar to --all-progress when progress meter is shown"
msgstr "similar a --all-progress quan l'indicador de progrés es mostra"
+#: builtin/pack-objects.c
msgid "<version>[,<offset>]"
msgstr "<versió>[,<desplaçament>]"
+#: builtin/pack-objects.c
msgid "write the pack index file in the specified idx format version"
msgstr ""
"escriu el fitxer d'índex de paquet en la versió de format d'índex "
"especificada"
+#: builtin/pack-objects.c
msgid "maximum size of each output pack file"
msgstr "mida màxima de cada fitxer empaquetat de sortida"
+#: builtin/pack-objects.c
msgid "ignore borrowed objects from alternate object store"
msgstr ""
"ignora els objectes manllevats d'un emmagatzematge d'objectes alternatiu"
+#: builtin/pack-objects.c
msgid "ignore packed objects"
msgstr "ignora els objectes empaquetats"
+#: builtin/pack-objects.c
msgid "limit pack window by objects"
msgstr "limita la finestra d'empaquetament per objectes"
+#: builtin/pack-objects.c
msgid "limit pack window by memory in addition to object limit"
msgstr ""
"limita la finestra d'empaquetament per memòria a més del límit d'objectes"
+#: builtin/pack-objects.c
msgid "maximum length of delta chain allowed in the resulting pack"
msgstr ""
"longitud màxima de la cadena de diferències permesa en el paquet resultant"
+#: builtin/pack-objects.c
msgid "reuse existing deltas"
msgstr "reusa les diferències existents"
+#: builtin/pack-objects.c
msgid "reuse existing objects"
msgstr "reusa els objectes existents"
+#: builtin/pack-objects.c
msgid "use OFS_DELTA objects"
msgstr "usa objectes OFS_DELTA"
+#: builtin/pack-objects.c
msgid "use threads when searching for best delta matches"
msgstr "usa fils en cercar les millors coincidències de diferències"
+#: builtin/pack-objects.c
msgid "do not create an empty pack output"
msgstr "no creïs una emissió de paquet buit"
+#: builtin/pack-objects.c
msgid "read revision arguments from standard input"
msgstr "llegeix els arguments de revisió des de l'entrada estàndard"
+#: builtin/pack-objects.c
msgid "limit the objects to those that are not yet packed"
msgstr "limita els objectes a aquells que encara no estan empaquetats"
+#: builtin/pack-objects.c
msgid "include objects reachable from any reference"
msgstr "inclou els objectes abastables de qualsevol referència"
+#: builtin/pack-objects.c
msgid "include objects referred by reflog entries"
msgstr ""
"inclou els objectes als quals facin referència les entrades del registre de "
"referències"
+#: builtin/pack-objects.c
msgid "include objects referred to by the index"
msgstr "inclou els objectes als quals faci referència l'índex"
+#: builtin/pack-objects.c
msgid "read packs from stdin"
msgstr "llegeix els paquets des de stdin"
+#: builtin/pack-objects.c
msgid "output pack to stdout"
msgstr "emet el paquet a stdout"
+#: builtin/pack-objects.c
msgid "include tag objects that refer to objects to be packed"
msgstr ""
"inclou els objectes d'etiqueta que facin referència als objectes a empaquetar"
+#: builtin/pack-objects.c
msgid "keep unreachable objects"
msgstr "retén els objectes inabastables"
+#: builtin/pack-objects.c
msgid "pack loose unreachable objects"
msgstr "empaqueta els objectes inabastables solts"
+#: builtin/pack-objects.c
msgid "unpack unreachable objects newer than <time>"
msgstr "desempaqueta els objectes inabastables més nous que <data>"
+#: builtin/pack-objects.c
msgid "create a cruft pack"
msgstr "crea un paquet superflu"
+#: builtin/pack-objects.c
msgid "expire cruft objects older than <time>"
msgstr "fes caducar els objectes superflus més antics que <data>"
+#: builtin/pack-objects.c
msgid "use the sparse reachability algorithm"
msgstr "utilitza l'algorisme d'accessibilitat dispers"
+#: builtin/pack-objects.c
msgid "create thin packs"
msgstr "crea paquets prims"
+#: builtin/pack-objects.c
msgid "create packs suitable for shallow fetches"
msgstr "crea paquets adequats per a les obtencions superficials"
+#: builtin/pack-objects.c
msgid "ignore packs that have companion .keep file"
msgstr "ignora els paquets que tinguin un fitxer .keep corresponent"
+#: builtin/pack-objects.c
msgid "ignore this pack"
msgstr "ignora aquest paquet"
+#: builtin/pack-objects.c
msgid "pack compression level"
msgstr "nivell de compressió de paquet"
+#: builtin/pack-objects.c
msgid "do not hide commits by grafts"
msgstr "no amaguis les comissions per empelt"
+#: builtin/pack-objects.c
msgid "use a bitmap index if available to speed up counting objects"
msgstr ""
"usa un índex de mapa de bits, si està disponible, per a accelerar el "
"recompte d'objectes"
+#: builtin/pack-objects.c
msgid "write a bitmap index together with the pack index"
msgstr "escriu un índex de mapa de bits juntament amb l'índex de paquet"
+#: builtin/pack-objects.c
msgid "write a bitmap index if possible"
msgstr "escriu un índex de mapa de bits si és possible"
+#: builtin/pack-objects.c
msgid "handling for missing objects"
msgstr "gestió dels objectes absents"
+#: builtin/pack-objects.c
msgid "do not pack objects in promisor packfiles"
msgstr "no empaquetis els objectes als fitxers de paquet «promisor»"
+#: builtin/pack-objects.c
msgid "respect islands during delta compression"
msgstr "respecta les illes durant la compressió delta"
+#: builtin/pack-objects.c
msgid "protocol"
msgstr "protocol"
+#: builtin/pack-objects.c
msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
msgstr ""
"exclou qualsevol uploadpack.blobpackfileuri configurat amb aquest protocol"
+#: builtin/pack-objects.c
#, c-format
msgid "delta chain depth %d is too deep, forcing %d"
msgstr "la profunditat de la cadena delta %d és massa profunda, forçant %d"
+#: builtin/pack-objects.c
#, c-format
msgid "pack.deltaCacheLimit is too high, forcing %d"
msgstr "pack.deltaCacheLimit és massa alt, forçant %d"
+#: builtin/pack-objects.c config.c
#, c-format
msgid "bad pack compression level %d"
msgstr "nivell de compressió de paquet %d erroni"
+#: builtin/pack-objects.c
msgid "--max-pack-size cannot be used to build a pack for transfer"
msgstr ""
"--max-pack-size no es pot utilitzar per a construir un paquet per a la "
"transferència"
+#: builtin/pack-objects.c
msgid "minimum pack size limit is 1 MiB"
msgstr "el límit mínim de mida del paquet és 1 MiB"
+#: builtin/pack-objects.c
msgid "--thin cannot be used to build an indexable pack"
msgstr "--thin no es pot utilitzar per a construir un paquet indexable"
+#: builtin/pack-objects.c
msgid "cannot use --filter with --stdin-packs"
msgstr "no es pot utilitzar --filter sense --stdin-packs"
+#: builtin/pack-objects.c
msgid "cannot use internal rev list with --stdin-packs"
msgstr "no es pot utilitzar la llista de revisió interna amb --stdin-packs"
+#: builtin/pack-objects.c
msgid "cannot use internal rev list with --cruft"
msgstr "no es pot utilitzar la llista de revisió interna amb --cruft"
+#: builtin/pack-objects.c
msgid "cannot use --stdin-packs with --cruft"
msgstr "no es pot --stdin-packs amb --cruft"
+#: builtin/pack-objects.c
msgid "Enumerating objects"
msgstr "S'estan enumerant els objectes"
+#: builtin/pack-objects.c
#, c-format
msgid ""
"Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -9473,6 +12142,7 @@ msgstr ""
"Total %<PRIu32> (%<PRIu32> diferències), reusats %<PRIu32> (%<PRIu32> "
"diferències), paquets reusats %<PRIu32> (de %<PRIuMAX>)"
+#: builtin/pack-redundant.c
msgid ""
"'git pack-redundant' is nominated for removal.\n"
"If you still use this command, please add an extra\n"
@@ -9486,91 +12156,124 @@ msgstr ""
"i feu-nos saber que encara l'useu enviant un correu electrònic\n"
"a <git@vger.kernel.org>. Gràcies.\n"
+#: builtin/pack-redundant.c
msgid "refusing to run without --i-still-use-this"
msgstr "es rebutja a executar sense --i-still-use-this"
+#: builtin/pack-refs.c
msgid ""
-"git pack-refs [--all] [--no-prune] [--include <pattern>] [--exclude "
+"git pack-refs [--all] [--no-prune] [--auto] [--include <pattern>] [--exclude "
"<pattern>]"
msgstr ""
-"git pack-refs [--all] [--no-prune] [--include <patró>] [--exclude <patró>]"
+"git pack-refs [--all] [--no-prune] [--auto] [--include <patró>] [--exclude "
+"<patró>]"
+#: builtin/pack-refs.c
msgid "pack everything"
msgstr "empaqueta-ho tot"
+#: builtin/pack-refs.c
msgid "prune loose refs (default)"
msgstr "poda les referències soltes (per defecte)"
+#: builtin/pack-refs.c
+msgid "auto-pack refs as needed"
+msgstr "auto-empaqueta referències si cal"
+
+#: builtin/pack-refs.c
msgid "references to include"
msgstr "referències a incloure"
+#: builtin/pack-refs.c
msgid "references to exclude"
msgstr "referències a excloure"
+#: builtin/patch-id.c
msgid "git patch-id [--stable | --unstable | --verbatim]"
msgstr "git patch-id [--stable | --unstable | --verbatim]"
+#: builtin/patch-id.c
msgid "use the unstable patch-id algorithm"
msgstr "utilitza l'algorisme inestable de patch-id"
+#: builtin/patch-id.c
msgid "use the stable patch-id algorithm"
msgstr "utilitza l'algorisme estable de patch-id"
+#: builtin/patch-id.c
msgid "don't strip whitespace from the patch"
msgstr "no eliminis els espais en blanc del pedaç"
+#: builtin/prune.c
msgid "git prune [-n] [-v] [--progress] [--expire <time>] [--] [<head>...]"
-msgstr "git prune [-n] [-v] [--progress] [--expire <data>] [--] [<head>...]"
+msgstr "git prune [-n] [-v] [--progress] [--expire <data>] [--] [<cap>...]"
+#: builtin/prune.c
msgid "report pruned objects"
msgstr "informa d'objectes podats"
+#: builtin/prune.c
msgid "expire objects older than <time>"
msgstr "fes caducar els objectes més antics que <data>"
+#: builtin/prune.c
msgid "limit traversal to objects outside promisor packfiles"
msgstr ""
"limita el recorregut als objectes fora dels fitxers de paquet «promisor»"
+#: builtin/prune.c
msgid "cannot prune in a precious-objects repo"
msgstr "no es pot podar en un repositori d'objectes preciosos"
+#: builtin/pull.c
msgid "git pull [<options>] [<repository> [<refspec>...]]"
-msgstr "git pull [<opcions>] [<repositori> [<especificació-de-referència>...]]"
+msgstr "git pull [<opcions>] [<repositori> [<especificació-referència>...]]"
+#: builtin/pull.c
msgid "control for recursive fetching of submodules"
msgstr "controla l'obtenció recursiva de submòduls"
+#: builtin/pull.c
msgid "Options related to merging"
msgstr "Opcions relacionades amb fusionar"
+#: builtin/pull.c
msgid "incorporate changes by rebasing rather than merging"
msgstr "incorpora els canvis fent «rebase» en lloc de fusionar"
+#: builtin/pull.c builtin/revert.c
msgid "allow fast-forward"
msgstr "permet l'avanç ràpid"
+#: builtin/pull.c
msgid "control use of pre-merge-commit and commit-msg hooks"
msgstr "controla l'ús dels lligams pre-merge-commit i commit-msg"
+#: builtin/pull.c parse-options.h
msgid "automatically stash/stash pop before and after"
msgstr "fes «stash» i «stash pop» automàticament abans i després"
+#: builtin/pull.c
msgid "Options related to fetching"
msgstr "Opcions relacionades amb obtenir"
+#: builtin/pull.c
msgid "force overwrite of local branch"
msgstr "força la sobreescriptura de la branca local"
+#: builtin/pull.c
msgid "number of submodules pulled in parallel"
msgstr "nombre de submòduls baixats en paral·lel"
+#: builtin/pull.c parse-options.h
msgid "use IPv4 addresses only"
msgstr "usa només adreces IPv4"
+#: builtin/pull.c parse-options.h
msgid "use IPv6 addresses only"
msgstr "usa només adreces IPv6"
+#: builtin/pull.c
msgid ""
"There is no candidate for rebasing against among the refs that you just "
"fetched."
@@ -9578,11 +12281,13 @@ msgstr ""
"No hi ha cap candidat sobre el qual fer «rebase» entre les referències que "
"acabeu d'obtenir."
+#: builtin/pull.c
msgid ""
"There are no candidates for merging among the refs that you just fetched."
msgstr ""
"No hi ha candidats per a fusionar entre les referències que acabeu d'obtenir."
+#: builtin/pull.c
msgid ""
"Generally this means that you provided a wildcard refspec which had no\n"
"matches on the remote end."
@@ -9590,6 +12295,7 @@ msgstr ""
"Generalment això vol dir que heu proveït una especificació de\n"
"referència de comodí que no tenia cap coincidència en el costat remot."
+#: builtin/pull.c
#, c-format
msgid ""
"You asked to pull from the remote '%s', but did not specify\n"
@@ -9600,33 +12306,42 @@ msgstr ""
"Perquè aquest no és el remot configurat per defecte per a la vostra\n"
"branca actual, heu d'especificar una branca en la línia d'ordres."
+#: builtin/pull.c builtin/rebase.c
msgid "You are not currently on a branch."
msgstr "Actualment no sou en cap branca."
+#: builtin/pull.c
msgid "Please specify which branch you want to rebase against."
msgstr "Especifiqueu sobre quina branca voleu fer «rebase»."
+#: builtin/pull.c
msgid "Please specify which branch you want to merge with."
msgstr "Especifiqueu amb quina branca voleu fusionar."
+#: builtin/pull.c
msgid "See git-pull(1) for details."
msgstr "Vegeu git-pull(1) per a més informació."
+#: builtin/pull.c builtin/rebase.c
msgid "<remote>"
msgstr "<remot>"
+#: builtin/pull.c scalar.c
msgid "<branch>"
msgstr "<branca>"
+#: builtin/pull.c builtin/rebase.c
msgid "There is no tracking information for the current branch."
msgstr "No hi ha cap informació de seguiment per a la branca actual."
+#: builtin/pull.c
msgid ""
"If you wish to set tracking information for this branch you can do so with:"
msgstr ""
"Si voleu establir la informació de seguiment per a aquesta branca, podeu fer-"
"ho amb:"
+#: builtin/pull.c
#, c-format
msgid ""
"Your configuration specifies to merge with the ref '%s'\n"
@@ -9635,13 +12350,16 @@ msgstr ""
"La vostra configuració especifica fusionar amb la referència «%s»\n"
"del remot, però no s'ha obtingut tal referència."
+#: builtin/pull.c
#, c-format
msgid "unable to access commit %s"
msgstr "no s'ha pogut accedir a la comissió %s"
+#: builtin/pull.c
msgid "ignoring --verify-signatures for rebase"
msgstr "s'està ignorant --verify-signatures en fer «rebase»"
+#: builtin/pull.c
msgid ""
"You have divergent branches and need to specify how to reconcile them.\n"
"You can do so by running one of the following commands sometime before\n"
@@ -9671,26 +12389,31 @@ msgstr ""
"--no-rebase o --ff-only en la línia d'ordres per a sobreescriure el valor\n"
"per defecte de la configuració en aquesta execució.\n"
+#: builtin/pull.c
msgid "Updating an unborn branch with changes added to the index."
msgstr ""
"S'està actualitzant una branca no nascuda amb canvis afegits a l'índex."
+#: builtin/pull.c
msgid "pull with rebase"
msgstr "baixar fent «rebase»"
+#: builtin/pull.c builtin/rebase.c
msgid "Please commit or stash them."
msgstr "Cometeu-los o emmagatzemeu-los."
+#: builtin/pull.c
#, c-format
msgid ""
"fetch updated the current branch head.\n"
"fast-forwarding your working tree from\n"
"commit %s."
msgstr ""
-"l'obtenció ha actualitzat HEAD de la branca actual.\n"
+"l'obtenció ha actualitzat el HEAD de la branca actual.\n"
"s'està avançant ràpidament el vostre arbre de treball des de\n"
"la comissió %s."
+#: builtin/pull.c
#, c-format
msgid ""
"Cannot fast-forward your working tree.\n"
@@ -9708,32 +12431,41 @@ msgstr ""
"$ git reset --hard\n"
"per a recuperar."
+#: builtin/pull.c
msgid "Cannot merge multiple branches into empty head."
msgstr "No es poden fusionar múltiples branques a una HEAD buida."
+#: builtin/pull.c
msgid "Cannot rebase onto multiple branches."
msgstr "No es pot fer «rebase» sobre múltiples branques."
+#: builtin/pull.c
msgid "Cannot fast-forward to multiple branches."
msgstr "No es pot fer un avançament ràpid a branques múltiples."
+#: builtin/pull.c
msgid "Need to specify how to reconcile divergent branches."
msgstr "Cal especificar com reconciliar les branques divergents."
+#: builtin/pull.c
msgid "cannot rebase with locally recorded submodule modifications"
msgstr ""
"no es pot fer «rebase» amb modificacions als submòduls enregistrades "
"localment"
+#: builtin/push.c
msgid "git push [<options>] [<repository> [<refspec>...]]"
-msgstr "git push [<opcions>] [<repositori> [<especificació-de-referència>...]]"
+msgstr "git push [<opcions>] [<repositori> [<especificació-referència>...]]"
+#: builtin/push.c
msgid "tag shorthand without <tag>"
-msgstr "abreviatura d'etiqueta sense <tag>"
+msgstr "abreviatura d'etiqueta sense <etiqueta>"
+#: builtin/push.c
msgid "--delete only accepts plain target ref names"
msgstr "--delete només accepta noms de referència de destí senzills"
+#: builtin/push.c
msgid ""
"\n"
"To choose either option permanently, see push.default in 'git help config'.\n"
@@ -9742,6 +12474,7 @@ msgstr ""
"Per a triar qualsevol de les opcions permanentment, vegeu push.default a "
"«git help config».\n"
+#: builtin/push.c
msgid ""
"\n"
"To avoid automatically configuring an upstream branch when its name\n"
@@ -9753,6 +12486,7 @@ msgstr ""
"no coincideix amb el de la branca local, vegeu l'opció «simple» de\n"
"«branch.autoSetupMerge» a «git help config».\n"
+#: builtin/push.c
#, c-format
msgid ""
"The upstream branch of your current branch does not match\n"
@@ -9777,6 +12511,7 @@ msgstr ""
" git push %s HEAD\n"
"%s%s"
+#: builtin/push.c
#, c-format
msgid ""
"You are not currently on a branch.\n"
@@ -9791,6 +12526,7 @@ msgstr ""
"\n"
" git push %s HEAD:<nom-de-branca-remota>\n"
+#: builtin/push.c
msgid ""
"\n"
"To have this happen automatically for branches without a tracking\n"
@@ -9801,6 +12537,7 @@ msgstr ""
"seguiment\n"
"font, vegeu «push.autoSetupRemote» a «git help config».\n"
+#: builtin/push.c
#, c-format
msgid ""
"The current branch %s has no upstream branch.\n"
@@ -9815,17 +12552,20 @@ msgstr ""
" git push --set-upstream %s %s\n"
"%s"
+#: builtin/push.c
#, c-format
msgid "The current branch %s has multiple upstream branches, refusing to push."
msgstr ""
"La branca actual %s té múltiples branques fonts, s'està refusant pujar."
+#: builtin/push.c
msgid ""
"You didn't specify any refspecs to push, and push.default is \"nothing\"."
msgstr ""
"No heu especificat cap especificació de referència a pujar, i push.default "
"és «nothing»."
+#: builtin/push.c
#, c-format
msgid ""
"You are pushing to remote '%s', which is not the upstream of\n"
@@ -9836,6 +12576,7 @@ msgstr ""
"branca actual «%s», sense dir-me què pujar per a actualitzar\n"
"quina branca remota."
+#: builtin/push.c
msgid ""
"Updates were rejected because the tip of your current branch is behind\n"
"its remote counterpart. If you want to integrate the remote changes,\n"
@@ -9847,6 +12588,7 @@ msgstr ""
"remots useu «git pull» abans de tornar a pujar.\n"
"Vegeu «Note about fast-forwards» a «git push --help» per a més detalls."
+#: builtin/push.c
msgid ""
"Updates were rejected because a pushed branch tip is behind its remote\n"
"counterpart. If you want to integrate the remote changes, use 'git pull'\n"
@@ -9858,6 +12600,7 @@ msgstr ""
"utilitzeu «git pull» abans de tornar a pujar.\n"
"Vegeu «Note about fast-forwards» a «git push --help» per a més detalls."
+#: builtin/push.c
msgid ""
"Updates were rejected because the remote contains work that you do not\n"
"have locally. This is usually caused by another repository pushing to\n"
@@ -9867,15 +12610,17 @@ msgid ""
msgstr ""
"Les actualitzacions s'han rebutjat perquè el remot conté canvis que no "
"teniu\n"
-"localment. Això sol ser causat per un altre repositori que a pujat a\n"
+"localment. Això sol ser causat per un altre repositori que ha pujat a\n"
"la mateixa referència. Si voleu integrar els canvis remots, utilitzeu\n"
"«git pull» abans de tornar a pujar.\n"
"Vegeu «Note about fast-forwards» a «git push --help» per a més detalls."
+#: builtin/push.c
msgid "Updates were rejected because the tag already exists in the remote."
msgstr ""
"S'han rebutjat les actualitzacions perquè l'etiqueta ja existeix en el remot."
+#: builtin/push.c
msgid ""
"You cannot update a remote ref that points at a non-commit object,\n"
"or update a remote ref to make it point at a non-commit object,\n"
@@ -9886,6 +12631,7 @@ msgstr ""
"a fer que assenyali un objecte no de comissió, sense usar l'opció\n"
"«--force».\n"
+#: builtin/push.c
msgid ""
"Updates were rejected because the tip of the remote-tracking branch has\n"
"been updated since the last checkout. If you want to integrate the\n"
@@ -9897,14 +12643,17 @@ msgstr ""
"canvis remots, utilitzeu «git pull» abans de tornar a pujar.\n"
"Vegeu «Note about fast-forwards» a «git push --help» per a més detalls."
+#: builtin/push.c
#, c-format
msgid "Pushing to %s\n"
msgstr "S'està pujant a %s\n"
+#: builtin/push.c
#, c-format
msgid "failed to push some refs to '%s'"
msgstr "s'ha produït un error en pujar algunes referències a «%s»"
+#: builtin/push.c
msgid ""
"recursing into submodule with push.recurseSubmodules=only; using on-demand "
"instead"
@@ -9912,71 +12661,93 @@ msgstr ""
"cerca recursivament en el submòdul amb push.recurseSubmodules=only; "
"utilitzant «on-demand» en el seu lloc"
+#: builtin/push.c builtin/send-pack.c submodule-config.c
#, c-format
msgid "invalid value for '%s'"
msgstr "valor no vàlid per a «%s»"
+#: builtin/push.c builtin/submodule--helper.c
msgid "repository"
msgstr "repositori"
+#: builtin/push.c
msgid "push all branches"
msgstr "puja totes les referències"
+#: builtin/push.c builtin/send-pack.c
msgid "mirror all refs"
msgstr "reflecteix totes les referències"
+#: builtin/push.c
msgid "delete refs"
msgstr "suprimeix les referències"
+#: builtin/push.c
msgid "push tags (can't be used with --all or --branches or --mirror)"
msgstr "puja les etiquetes (no es pot usar amb --all, --branches o --mirror)"
+#: builtin/push.c builtin/send-pack.c
msgid "force updates"
msgstr "força les actualitzacions"
+#: builtin/push.c builtin/send-pack.c
msgid "<refname>:<expect>"
-msgstr "<nom-de-referència>:<esperat>"
+msgstr "<nom-referència>:<esperat>"
+#: builtin/push.c builtin/send-pack.c
msgid "require old value of ref to be at this value"
msgstr "requereix que el valor antic de la referència sigui d'aquest valor"
+#: builtin/push.c builtin/send-pack.c
msgid "require remote updates to be integrated locally"
msgstr "requereix que les actualitzacions remotes s'integrin localment"
+#: builtin/push.c
msgid "control recursive pushing of submodules"
msgstr "controla la pujada recursiva dels submòduls"
+#: builtin/push.c builtin/send-pack.c
msgid "use thin pack"
msgstr "usa el paquet prim"
+#: builtin/push.c builtin/send-pack.c
msgid "receive pack program"
msgstr "programa que rep els paquets"
+#: builtin/push.c
msgid "set upstream for git pull/status"
msgstr "estableix la font per a git pull/status"
+#: builtin/push.c
msgid "prune locally removed refs"
msgstr "poda les referències eliminades localment"
+#: builtin/push.c
msgid "bypass pre-push hook"
msgstr "evita el lligam de prepujada"
+#: builtin/push.c
msgid "push missing but relevant tags"
msgstr "puja les etiquetes absents però rellevants"
+#: builtin/push.c builtin/send-pack.c
msgid "GPG sign the push"
msgstr "signa la pujada amb GPG"
+#: builtin/push.c builtin/send-pack.c
msgid "request atomic transaction on remote side"
msgstr "demana una transacció atòmica al costat remot"
+#: builtin/push.c
msgid "--delete doesn't make sense without any refs"
msgstr "--delete no té sentit sense referències"
+#: builtin/push.c t/helper/test-bundle-uri.c
#, c-format
msgid "bad repository '%s'"
msgstr "repositori incorrecte «%s»"
+#: builtin/push.c
msgid ""
"No configured push destination.\n"
"Either specify the URL from the command-line or configure a remote "
@@ -9998,54 +12769,70 @@ msgstr ""
"\n"
" git push <nom>\n"
+#: builtin/push.c
msgid "--all can't be combined with refspecs"
msgstr "--all no es pot combinar amb especificacions de referència"
+#: builtin/push.c
msgid "--mirror can't be combined with refspecs"
msgstr "--mirror no es pot combinar amb especificacions de referència"
+#: builtin/push.c
msgid "push options must not have new line characters"
msgstr "les opcions de pujada no han de tenir caràcters de línia nova"
+#: builtin/range-diff.c
msgid "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
msgstr "git range-diff [<opcions>] <old-base>..<old-tip> <new-base>..<new-tip>"
+#: builtin/range-diff.c
msgid "git range-diff [<options>] <old-tip>...<new-tip>"
msgstr "git range-diff [<opcions>] <old-tip>...<new-tip>"
+#: builtin/range-diff.c
msgid "git range-diff [<options>] <base> <old-tip> <new-tip>"
msgstr "git range-diff [<opcions>] <base> <old-tip> <new-tip>"
+#: builtin/range-diff.c
msgid "use simple diff colors"
msgstr "utilitza colors simples de diff"
+#: builtin/range-diff.c
msgid "notes"
msgstr "notes"
+#: builtin/range-diff.c
msgid "passed to 'git log'"
msgstr "passa-ho a «git log»"
+#: builtin/range-diff.c
msgid "only emit output related to the first range"
msgstr "emet només la sortida relacionada amb el primer interval"
+#: builtin/range-diff.c
msgid "only emit output related to the second range"
msgstr "emet només la sortida relacionada amb el segon interval"
+#: builtin/range-diff.c
#, c-format
msgid "not a revision: '%s'"
msgstr "«%s» no és una revisió"
+#: builtin/range-diff.c
#, c-format
msgid "not a commit range: '%s'"
msgstr "no és un rang de comissions: «%s»"
+#: builtin/range-diff.c
#, c-format
msgid "not a symmetric range: '%s'"
msgstr "no és un rang simètric: «%s»"
+#: builtin/range-diff.c
msgid "need two commit ranges"
msgstr "calen dos rangs de comissió"
+#: builtin/read-tree.c
msgid ""
"git read-tree [(-m [--trivial] [--aggressive] | --reset | --"
"prefix=<prefix>)\n"
@@ -10057,60 +12844,79 @@ msgstr ""
" [-u | -i]] [--index-output=<fitxer>] [--no-sparse-checkout]\n"
" (--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])"
+#: builtin/read-tree.c
msgid "write resulting index to <file>"
msgstr "escriu l'índex resultant al <fitxer>"
+#: builtin/read-tree.c
msgid "only empty the index"
msgstr "només buida l'índex"
+#: builtin/read-tree.c
msgid "Merging"
msgstr "S'està fusionant"
+#: builtin/read-tree.c
msgid "perform a merge in addition to a read"
msgstr "realitza una fusió a més d'una lectura"
+#: builtin/read-tree.c
msgid "3-way merge if no file level merging required"
msgstr "fusió de 3 vies si no cal fusió a nivell de fitxers"
+#: builtin/read-tree.c
msgid "3-way merge in presence of adds and removes"
msgstr "fusió de 3 vies en presència d'afegiments i eliminacions"
+#: builtin/read-tree.c
msgid "same as -m, but discard unmerged entries"
msgstr "el mateix que -m, però descarta les entrades no fusionades"
+#: builtin/read-tree.c
msgid "<subdirectory>/"
msgstr "<subdirectori>/"
+#: builtin/read-tree.c
msgid "read the tree into the index under <subdirectory>/"
msgstr "llegeix l'arbre a l'índex sota <subdirectori>/"
+#: builtin/read-tree.c
msgid "update working tree with merge result"
msgstr "actualitza l'arbre de treball amb el resultat de fusió"
+#: builtin/read-tree.c
msgid "gitignore"
msgstr "gitignore"
+#: builtin/read-tree.c
msgid "allow explicitly ignored files to be overwritten"
msgstr "permet que els fitxers explícitament ignorats se sobreescriguin"
+#: builtin/read-tree.c
msgid "don't check the working tree after merging"
msgstr "no comprovis l'arbre de treball després de fusionar"
+#: builtin/read-tree.c
msgid "don't update the index or the work tree"
msgstr "no actualitzis l'índex ni l'arbre de treball"
+#: builtin/read-tree.c
msgid "skip applying sparse checkout filter"
msgstr "omet l'aplicació del filtre d'agafament parcial"
+#: builtin/read-tree.c
msgid "debug unpack-trees"
msgstr "depura unpack-trees"
+#: builtin/read-tree.c
msgid "suppress feedback messages"
msgstr "suprimeix els missatges de retroacció"
+#: builtin/read-tree.c
msgid "You need to resolve your current index first"
msgstr "Primer heu de resoldre el vostre índex actual"
+#: builtin/rebase.c
msgid ""
"git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] "
"[<upstream> [<branch>]]"
@@ -10118,64 +12924,61 @@ msgstr ""
"git rebase [-i] [options] [--exec <ordre>] [--onto <newbase> | --keep-base] "
"[<upstream> [<branca>]]"
+#: builtin/rebase.c
msgid ""
"git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]"
msgstr ""
"git rebase [-i] [options] [--exec <ordre>] [--onto <newbase>] --root "
"[<branca>]"
+#: builtin/rebase.c sequencer.c
#, c-format
msgid "could not read '%s'."
msgstr "no s'ha pogut llegir «%s»."
+#: builtin/rebase.c
#, c-format
msgid "could not create temporary %s"
msgstr "no s'ha pogut crear el fitxer temporal %s"
+#: builtin/rebase.c
msgid "could not mark as interactive"
msgstr "no s'ha pogut marcar com a interactiu"
+#: builtin/rebase.c
msgid "could not generate todo list"
msgstr "no s'ha pogut generar la llista per a fer"
+#: builtin/rebase.c
msgid "a base commit must be provided with --upstream or --onto"
msgstr "s'ha de proporcionar una comissió base amb --upstream o --onto"
+#: builtin/rebase.c
#, c-format
msgid "%s requires the merge backend"
msgstr "%s requereix un rerefons de fusió"
+#: builtin/rebase.c
#, c-format
msgid "invalid onto: '%s'"
msgstr "no vàlid a: «%s»"
+#: builtin/rebase.c
#, c-format
msgid "invalid orig-head: '%s'"
msgstr "orig-head no és vàlid: «%s»"
+#: builtin/rebase.c
#, c-format
msgid "ignoring invalid allow_rerere_autoupdate: '%s'"
msgstr "s'ignora allow_rerere_autoupdate no vàlid: «%s»"
+#: builtin/rebase.c builtin/rm.c sequencer.c
#, c-format
msgid "could not remove '%s'"
msgstr "no s'ha pogut eliminar «%s»"
-msgid ""
-"Resolve all conflicts manually, mark them as resolved with\n"
-"\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
-"You can instead skip this commit: run \"git rebase --skip\".\n"
-"To abort and get back to the state before \"git rebase\", run \"git rebase --"
-"abort\"."
-msgstr ""
-"Resoleu tots els conflictes manualment, marqueu-los com a resolts amb\n"
-"«git add/rm <fitxers_amb_conflicte>», llavors executeu «git rebase --"
-"continue».\n"
-"Alternativament podeu ometre aquesta comissió: executeu «git rebase --"
-"skip».\n"
-"Per a avortar i tornar a l'estat anterior abans de l'ordre «git rebase», "
-"executeu «git rebase --abort»."
-
+#: builtin/rebase.c
#, c-format
msgid ""
"\n"
@@ -10194,24 +12997,34 @@ msgstr ""
"\n"
"Com a resultat, git no pot fer un «rebase» d'elles."
+#: builtin/rebase.c
#, c-format
msgid "Unknown rebase-merges mode: %s"
msgstr "Mode de fusió de rebase desconegut: %s"
+#: builtin/rebase.c
#, c-format
msgid "could not switch to %s"
msgstr "no s'ha pogut commutar a %s"
+#: builtin/rebase.c
msgid "apply options and merge options cannot be used together"
msgstr "les opcions apply i merge no es poden usar juntes"
+#: builtin/rebase.c
+msgid "--empty=ask is deprecated; use '--empty=stop' instead."
+msgstr "--empty=ask és obslolet; utilitzeu '--empty=stop' en el seu lloc."
+
+#: builtin/rebase.c
#, c-format
msgid ""
"unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and "
-"\"ask\"."
+"\"stop\"."
msgstr ""
-"tipus buit no reconegut «%s»; els valors vàlids són «drop», «keep» i «ask»."
+"tipus buit «%s» no reconegut; els valors vàlids són \"drop\", \"keep\" i "
+"\"stop\"."
+#: builtin/rebase.c
msgid ""
"--rebase-merges with an empty string argument is deprecated and will stop "
"working in a future version of Git. Use --rebase-merges without an argument "
@@ -10221,6 +13034,7 @@ msgstr ""
"funcionar en una versió futura del Git. Utilitzeu --rebase-merges sense un "
"argument, que fa el mateix."
+#: builtin/rebase.c
#, c-format
msgid ""
"%s\n"
@@ -10237,6 +13051,7 @@ msgstr ""
" git rebase '<branca>'\n"
"\n"
+#: builtin/rebase.c
#, c-format
msgid ""
"If you wish to set tracking information for this branch you can do so with:\n"
@@ -10250,128 +13065,169 @@ msgstr ""
" git branch --set-upstream-to=%s/<branca> %s\n"
"\n"
+#: builtin/rebase.c
msgid "exec commands cannot contain newlines"
msgstr "les ordres exec no poden contenir línies noves"
+#: builtin/rebase.c
msgid "empty exec command"
msgstr "ordre exec buida"
+#: builtin/rebase.c
msgid "rebase onto given branch instead of upstream"
msgstr "fes un «rebase» en la branca donada en comptes de la font"
+#: builtin/rebase.c
msgid "use the merge-base of upstream and branch as the current base"
msgstr "utilitza la base de fusió de la font i la branca com a base actual"
+#: builtin/rebase.c
msgid "allow pre-rebase hook to run"
msgstr "permet al lligam pre-rebase executar-se"
+#: builtin/rebase.c
msgid "be quiet. implies --no-stat"
msgstr "silenciós. Implica --no-stat"
+#: builtin/rebase.c
msgid "display a diffstat of what changed upstream"
msgstr "mostra un «diffstat» del que ha canviat a la font"
+#: builtin/rebase.c
msgid "do not show diffstat of what changed upstream"
msgstr "no mostris «diffstat» del que ha canviat a la font"
+#: builtin/rebase.c
msgid "add a Signed-off-by trailer to each commit"
msgstr "afegeix un «trailer» tipus «Signed-off-by» a cada comissió"
+#: builtin/rebase.c
msgid "make committer date match author date"
msgstr "fes que la data del «committer» coincideixi amb la data de l'autor"
+#: builtin/rebase.c
msgid "ignore author date and use current date"
msgstr "ignora la data de l'autor i utilitza la data actual"
+#: builtin/rebase.c
msgid "synonym of --reset-author-date"
msgstr "sinònim de --reset-author-date"
+#: builtin/rebase.c
msgid "passed to 'git apply'"
msgstr "passa-ho a «git apply»"
+#: builtin/rebase.c
msgid "ignore changes in whitespace"
msgstr "ignora els canvis d'espais en blanc"
+#: builtin/rebase.c
msgid "cherry-pick all commits, even if unchanged"
msgstr "«cherry pick» totes les comissions, inclús les no canviades"
+#: builtin/rebase.c
msgid "continue"
msgstr "continua"
+#: builtin/rebase.c
msgid "skip current patch and continue"
msgstr "omet el pedaç actual i continua"
+#: builtin/rebase.c
msgid "abort and check out the original branch"
msgstr "interromp i agafa la branca original"
+#: builtin/rebase.c
msgid "abort but keep HEAD where it is"
msgstr "interromp però manté HEAD on és"
+#: builtin/rebase.c
msgid "edit the todo list during an interactive rebase"
msgstr "edita la llista de coses a fer durant un «rebase» interactiu"
+#: builtin/rebase.c
msgid "show the patch file being applied or merged"
msgstr "mostra el pedaç que s'està aplicant o fusionant"
+#: builtin/rebase.c
msgid "use apply strategies to rebase"
msgstr "utilitza estratègies d'aplicació per a fer «rebase»"
+#: builtin/rebase.c
msgid "use merging strategies to rebase"
msgstr "utilitza estratègies de fusió per a fer «rebase»"
+#: builtin/rebase.c
msgid "let the user edit the list of commits to rebase"
msgstr "permet a l'usuari editar la llista de comissions a fer «rebase»"
+#: builtin/rebase.c
msgid "(REMOVED) was: try to recreate merges instead of ignoring them"
msgstr "(SUPRIMIT) era: intenta recrear fusions en lloc d'ignorar-les"
+#: builtin/rebase.c builtin/revert.c
msgid "how to handle commits that become empty"
msgstr "com gestionar les comissions que queden buides"
+#: builtin/rebase.c
msgid "keep commits which start empty"
msgstr "manté les comissions que comencen en blanc"
+#: builtin/rebase.c
msgid "move commits that begin with squash!/fixup! under -i"
msgstr "mou les comissions que comencen amb squash!/fixup! sota -i"
+#: builtin/rebase.c
msgid "update branches that point to commits that are being rebased"
msgstr ""
"actualitza les branques que apunten a comissions a les quals se'ls està fent "
"«rebase»"
+#: builtin/rebase.c
msgid "add exec lines after each commit of the editable list"
msgstr "afegeix línies d'exec després de cada comissió de la llista editable"
+#: builtin/rebase.c
msgid "allow rebasing commits with empty messages"
msgstr "permet fer «rebase» de les comissions amb missatges buits"
+#: builtin/rebase.c
msgid "try to rebase merges instead of skipping them"
msgstr "intenta fer «rebase» de les fusions en comptes d'ometre-les"
+#: builtin/rebase.c
msgid "use 'merge-base --fork-point' to refine upstream"
msgstr "usa «merge-base --fork-point» per a refinar la font"
+#: builtin/rebase.c
msgid "use the given merge strategy"
msgstr "utilitza l'estratègia de fusió donada"
+#: builtin/rebase.c builtin/revert.c
msgid "option"
msgstr "opció"
+#: builtin/rebase.c
msgid "pass the argument through to the merge strategy"
msgstr "passa l'argument a l'estratègia de fusió"
+#: builtin/rebase.c
msgid "rebase all reachable commits up to the root(s)"
msgstr "fes «rebase» de totes les comissions accessibles fins a l'arrel"
+#: builtin/rebase.c
msgid "automatically re-schedule any `exec` that fails"
msgstr "torna a planificar automàticament qualsevol «exec» que falli"
+#: builtin/rebase.c
msgid "apply all changes, even those already present upstream"
msgstr "aplica tots els canvis, fins i tot els que ja estan a la font"
+#: builtin/rebase.c
msgid "It looks like 'git am' is in progress. Cannot rebase."
msgstr "Sembla que «git am» està en curs. No es pot fer «rebase»."
+#: builtin/rebase.c
msgid ""
"`rebase --preserve-merges` (-p) is no longer supported.\n"
"Use `git rebase --abort` to terminate current rebase.\n"
@@ -10381,6 +13237,7 @@ msgstr ""
"Utilitzeu «git rebase --abort» per a finalitzar el «rebase» actual.\n"
"O bé baixeu a la versió v2.33, o anterior, per a completar el «rebase»."
+#: builtin/rebase.c
msgid ""
"--preserve-merges was replaced by --rebase-merges\n"
"Note: Your `pull.rebase` configuration may also be set to 'preserve',\n"
@@ -10390,15 +13247,19 @@ msgstr ""
"Nota: la configuració «pull.rebase» també podria estar establerta a\n"
"+-«preserve», que ja no s'admet; utilitzeu «merge» en el seu lloc"
-msgid "No rebase in progress?"
-msgstr "No hi ha un «rebase» en curs?"
+#: builtin/rebase.c
+msgid "no rebase in progress"
+msgstr "no hi ha cap «rebase» en curs"
+#: builtin/rebase.c
msgid "The --edit-todo action can only be used during interactive rebase."
msgstr "L'acció --edit-todo només es pot usar durant un «rebase» interactiu."
+#: builtin/rebase.c
msgid "Cannot read HEAD"
msgstr "No es pot llegir HEAD"
+#: builtin/rebase.c
msgid ""
"You must edit all merge conflicts and then\n"
"mark them as resolved using git add"
@@ -10406,13 +13267,16 @@ msgstr ""
"Heu d'editar tots els conflictes de fusió i després\n"
"marcar-los com a resolts fent servir git add"
+#: builtin/rebase.c
msgid "could not discard worktree changes"
msgstr "no s'han pogut descartar els canvis de l'arbre de treball"
+#: builtin/rebase.c
#, c-format
msgid "could not move back to %s"
msgstr "no s'ha pogut tornar a %s"
+#: builtin/rebase.c
#, c-format
msgid ""
"It seems that there is already a %s directory, and\n"
@@ -10432,9 +13296,11 @@ msgstr ""
"i després executeu aquesta ordre de nou. S'atura l'operació en cas que\n"
"tingueu quelcom valuós.\n"
+#: builtin/rebase.c
msgid "switch `C' expects a numerical value"
msgstr "«switch» «c» espera un valor numèric"
+#: builtin/rebase.c
msgid ""
"apply options are incompatible with rebase.rebaseMerges. Consider adding --"
"no-rebase-merges"
@@ -10442,6 +13308,7 @@ msgstr ""
"les opcions «apply» són incompatibles amb rebase.rebaseMerges. Considereu "
"afegir-hi --no-rebase-merges"
+#: builtin/rebase.c
msgid ""
"apply options are incompatible with rebase.updateRefs. Consider adding --no-"
"update-refs"
@@ -10449,84 +13316,106 @@ msgstr ""
"les opcions «apply» són incompatibles amb rebase.updateRefs. Considereu "
"afegir-hi --no-update-refs"
+#: builtin/rebase.c
#, c-format
msgid "Unknown rebase backend: %s"
msgstr "Rerefons de «rebase» desconegut: %s"
+#: builtin/rebase.c
msgid "--reschedule-failed-exec requires --exec or --interactive"
msgstr "--reschedule-failed-exec requereix --exec o --interactive"
+#: builtin/rebase.c
#, c-format
msgid "invalid upstream '%s'"
msgstr "font no vàlida: «%s»"
+#: builtin/rebase.c
msgid "Could not create new root commit"
msgstr "No s'ha pogut crear una comissió arrel nova"
+#: builtin/rebase.c
#, c-format
msgid "no such branch/commit '%s'"
msgstr "no existeix aquesta branca o comissió «%s»"
+#: builtin/rebase.c builtin/submodule--helper.c
#, c-format
msgid "No such ref: %s"
msgstr "No hi ha tal referència: %s"
+#: builtin/rebase.c
msgid "Could not resolve HEAD to a commit"
msgstr "No s'ha pogut resoldre HEAD com a una comissió"
+#: builtin/rebase.c
#, c-format
msgid "'%s': need exactly one merge base with branch"
msgstr "«%s»: necessita exactament una base de fusió amb branca"
+#: builtin/rebase.c
#, c-format
msgid "'%s': need exactly one merge base"
msgstr "«%s»: necessita exactament una base de fusió"
+#: builtin/rebase.c
#, c-format
msgid "Does not point to a valid commit '%s'"
msgstr "No apunta a una comissió vàlida «%s»"
+#: builtin/rebase.c
msgid "HEAD is up to date."
msgstr "HEAD està al dia."
+#: builtin/rebase.c
#, c-format
msgid "Current branch %s is up to date.\n"
msgstr "La branca actual %s està al dia.\n"
+#: builtin/rebase.c
msgid "HEAD is up to date, rebase forced."
msgstr "La branca actual està al dia, «rebase» forçat."
+#: builtin/rebase.c
#, c-format
msgid "Current branch %s is up to date, rebase forced.\n"
msgstr "La branca actual %s està al dia; «rebase» forçat.\n"
+#: builtin/rebase.c
msgid "The pre-rebase hook refused to rebase."
msgstr "El lligam pre-rebase ha refusat a fer «rebase»."
+#: builtin/rebase.c
#, c-format
msgid "Changes to %s:\n"
msgstr "Canvis a %s:\n"
+#: builtin/rebase.c
#, c-format
msgid "Changes from %s to %s:\n"
msgstr "Canvis de %s a %s:\n"
+#: builtin/rebase.c
#, c-format
msgid "First, rewinding head to replay your work on top of it...\n"
msgstr ""
"Primer, s'està rebobinant HEAD per a reproduir el vostre treball al "
"damunt...\n"
+#: builtin/rebase.c
msgid "Could not detach HEAD"
msgstr "No s'ha pogut separar HEAD"
+#: builtin/rebase.c
#, c-format
msgid "Fast-forwarded %s to %s.\n"
msgstr "Avanç ràpid %s a %s.\n"
+#: builtin/receive-pack.c
msgid "git receive-pack <git-dir>"
msgstr "git receive-pack <git-dir>"
+#: builtin/receive-pack.c
msgid ""
"By default, updating the current branch in a non-bare repository\n"
"is denied, because it will make the index and work tree inconsistent\n"
@@ -10557,6 +13446,7 @@ msgstr ""
"per defecte, establiu la variable de configuració\n"
"«receive.denyCurrentBranch» a «refuse»."
+#: builtin/receive-pack.c
msgid ""
"By default, deleting the current branch is denied, because the next\n"
"'git clone' won't result in any file checked out, causing confusion.\n"
@@ -10578,15 +13468,23 @@ msgstr ""
"\n"
"Per a silenciar aquest missatge, podeu establir-la a «refuse»."
+#: builtin/receive-pack.c
msgid "quiet"
msgstr "silenciós"
+#: builtin/receive-pack.c
msgid "you must specify a directory"
msgstr "heu d'especificar un directori"
+#: builtin/reflog.c
msgid "git reflog [show] [<log-options>] [<ref>]"
-msgstr "git reflog [show] [<log-options>] [<ref>]"
+msgstr "git reflog [show] [<opcions-registre>] [<referència>]"
+
+#: builtin/reflog.c
+msgid "git reflog list"
+msgstr "git reflog list"
+#: builtin/reflog.c
msgid ""
"git reflog expire [--expire=<time>] [--expire-unreachable=<time>]\n"
" [--rewrite] [--updateref] [--stale-fix]\n"
@@ -10598,39 +13496,57 @@ msgstr ""
" [--dry-run | -n] [--verbose] [--all [--single-worktree] | "
"<refs>...]"
+#: builtin/reflog.c
msgid ""
"git reflog delete [--rewrite] [--updateref]\n"
" [--dry-run | -n] [--verbose] <ref>@{<specifier>}..."
msgstr ""
"git reflog delete [--rewrite] [--updateref]\n"
-" [--dry-run | -n] [--verbose] <ref>@{<specifier>}..."
+" [--dry-run | -n] [--verbose] "
+"<referència>@{<especificador>}..."
+#: builtin/reflog.c
msgid "git reflog exists <ref>"
msgstr "git reflog exists <referència>"
+#: builtin/reflog.c
#, c-format
msgid "invalid timestamp '%s' given to '--%s'"
msgstr "marca de temps «%s» donada a «--%s» no és vàlida"
+#: builtin/reflog.c sequencer.c
+#, c-format
+msgid "%s does not accept arguments: '%s'"
+msgstr "%s no accepta arguments: «%s»"
+
+#: builtin/reflog.c
msgid "do not actually prune any entries"
msgstr "no eliminis cap entrada"
+#: builtin/reflog.c
msgid ""
"rewrite the old SHA1 with the new SHA1 of the entry that now precedes it"
msgstr "reescriu l'antic SHA1 amb el nou SHA1 de l'entrada que ara precedeix"
+#: builtin/reflog.c
msgid "update the reference to the value of the top reflog entry"
-msgstr "actualitza la referència al valor de l'entrada de reflog superior"
+msgstr ""
+"actualitza la referència al valor de l'entrada de registre de referència "
+"superior"
+#: builtin/reflog.c
msgid "print extra information on screen"
msgstr "imprimeix informació extra a la pantalla"
+#: builtin/reflog.c
msgid "timestamp"
msgstr "marca de temps"
+#: builtin/reflog.c
msgid "prune entries older than the specified time"
msgstr "poda les entrades més antigues que el temps especificat"
+#: builtin/reflog.c
msgid ""
"prune entries older than <time> that are not reachable from the current tip "
"of the branch"
@@ -10638,30 +13554,75 @@ msgstr ""
"poda les entrades més antigues de <data> que no es poden accedir des de la "
"punta actual de la branca"
+#: builtin/reflog.c
msgid "prune any reflog entries that point to broken commits"
-msgstr "poda qualsevol entrada de reflog que apunti a comissions trencades"
+msgstr ""
+"poda qualsevol entrada del registre de referències que apunti a comissions "
+"trencades"
+#: builtin/reflog.c
msgid "process the reflogs of all references"
-msgstr "processa els reflogs de totes les referències"
+msgstr "processa els registres de referències de totes les referències"
+#: builtin/reflog.c
msgid "limits processing to reflogs from the current worktree only"
-msgstr "limita el processament a reflogs només de l'arbre de treball actual"
+msgstr ""
+"limita el processament només a registres de referències de l'arbre de "
+"treball actual"
+#: builtin/reflog.c
#, c-format
msgid "Marking reachable objects..."
msgstr "S'estan marcant els objectes abastables..."
+#: builtin/reflog.c
#, c-format
msgid "%s points nowhere!"
msgstr "%s no apunta a enlloc"
+#: builtin/reflog.c
msgid "no reflog specified to delete"
-msgstr "no s'ha especificat cap registre de referència per a suprimir"
+msgstr "no s'ha especificat cap registre de referències per a suprimir"
+#: builtin/reflog.c
#, c-format
msgid "invalid ref format: %s"
msgstr "format de referència no vàlid: %s"
+#: builtin/refs.c
+msgid "git refs migrate --ref-format=<format> [--dry-run]"
+msgstr "git refs migrate --ref-format=<format> [--dry-run]"
+
+#: builtin/refs.c
+msgid "git refs verify [--strict] [--verbose]"
+msgstr "git refs verify [--strict] [--verbose]"
+
+#: builtin/refs.c
+msgid "specify the reference format to convert to"
+msgstr "especifiqueu el format de referència al qual voleu convertir"
+
+#: builtin/refs.c
+msgid "perform a non-destructive dry-run"
+msgstr "fes una prova no destructiva"
+
+#: builtin/refs.c
+msgid "missing --ref-format=<format>"
+msgstr "falta --ref-format=<format>"
+
+#: builtin/refs.c
+#, c-format
+msgid "repository already uses '%s' format"
+msgstr "el repositori ja usa el format «%s»"
+
+#: builtin/refs.c
+msgid "enable strict checking"
+msgstr "habilita la comprovació estricta"
+
+#: builtin/refs.c
+msgid "'git refs verify' takes no arguments"
+msgstr "'git refs verify' no accepta arguments"
+
+#: builtin/remote.c
msgid ""
"git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
"mirror=<fetch|push>] <name> <url>"
@@ -10669,67 +13630,87 @@ msgstr ""
"git remote add [-t <branca>] [-m <master>] [-f] [--tags | --no-tags] [--"
"mirror=<fetch|push>] <nom> <url>"
+#: builtin/remote.c
msgid "git remote rename [--[no-]progress] <old> <new>"
-msgstr "git remote rename [--[no-]progress] <old> <new>"
+msgstr "git remote rename [--[no-]progress] <vell> <nou>"
+#: builtin/remote.c
msgid "git remote remove <name>"
msgstr "git remote remove <nom>"
+#: builtin/remote.c
msgid "git remote set-head <name> (-a | --auto | -d | --delete | <branch>)"
msgstr "git remote set-head <nom> (-a | --auto | -d | --delete | <branca>)"
+#: builtin/remote.c
msgid "git remote [-v | --verbose] show [-n] <name>"
msgstr "git remote [-v | --verbose] show [-n] <nom>"
+#: builtin/remote.c
msgid "git remote prune [-n | --dry-run] <name>"
msgstr "git remote prune [-n | --dry-run] <nom>"
+#: builtin/remote.c
msgid ""
"git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
msgstr ""
"git remote [-v | --verbose] update [-p | --prune] [(<grup> | <remot>)...]"
+#: builtin/remote.c
msgid "git remote set-branches [--add] <name> <branch>..."
msgstr "git remote set-branches [--add] <nom> <branca>..."
+#: builtin/remote.c
msgid "git remote get-url [--push] [--all] <name>"
msgstr "git remote get-url [--push] [--all] <nom>"
+#: builtin/remote.c
msgid "git remote set-url [--push] <name> <newurl> [<oldurl>]"
-msgstr "git remote set-url [--push] <nom> <url-nou> [<url-antic>]"
+msgstr "<git remote set-url [--push] <nom> <url-nou> [<url-vell>]"
+#: builtin/remote.c
msgid "git remote set-url --add <name> <newurl>"
msgstr "git remote set-url --add <nom> <url-nou>"
+#: builtin/remote.c
msgid "git remote set-url --delete <name> <url>"
msgstr "git remote set-url --delete <nom> <url>"
+#: builtin/remote.c
msgid "git remote add [<options>] <name> <url>"
msgstr "git remote add [<opcions>] <nom> <url>"
+#: builtin/remote.c
msgid "git remote set-branches <name> <branch>..."
msgstr "git remote set-branches <nom> <branca>..."
+#: builtin/remote.c
msgid "git remote set-branches --add <name> <branch>..."
msgstr "git remote set-branches --add <nom> <branca>..."
+#: builtin/remote.c
msgid "git remote show [<options>] <name>"
msgstr "git remote show [<opcions>] <nom>"
+#: builtin/remote.c
msgid "git remote prune [<options>] <name>"
msgstr "git remote prune [<opcions>] <nom>"
+#: builtin/remote.c
msgid "git remote update [<options>] [<group> | <remote>]..."
msgstr "git remote update [<opcions>] [<grup> | <remot>]..."
+#: builtin/remote.c
#, c-format
msgid "Updating %s"
msgstr "S'està actualitzant %s"
+#: builtin/remote.c
#, c-format
msgid "Could not fetch %s"
msgstr "No s'ha pogut obtenir %s"
+#: builtin/remote.c
msgid ""
"--mirror is dangerous and deprecated; please\n"
"\t use --mirror=fetch or --mirror=push instead"
@@ -10738,13 +13719,16 @@ msgstr ""
"\t useu --mirror=fetch o\n"
"\t --mirror=push en lloc d'això"
+#: builtin/remote.c
#, c-format
-msgid "unknown mirror argument: %s"
-msgstr "argument de «mirror» desconegut: %s"
+msgid "unknown --mirror argument: %s"
+msgstr "argument de «--mirror» desconegut: %s"
+#: builtin/remote.c
msgid "fetch the remote branches"
msgstr "obtén les branques remotes"
+#: builtin/remote.c
msgid ""
"import all tags and associated objects when fetching\n"
"or do not fetch any tag at all (--no-tags)"
@@ -10752,57 +13736,72 @@ msgstr ""
"importa totes les etiquetes i objectes associats en obtenir\n"
"o no obtingueu cap etiqueta (--no-tags)"
+#: builtin/remote.c
msgid "branch(es) to track"
msgstr "branques a seguir"
+#: builtin/remote.c
msgid "master branch"
msgstr "branca mestra"
+#: builtin/remote.c
msgid "set up remote as a mirror to push to or fetch from"
msgstr "estableix el remot com a mirall al qual pujar o del qual obtenir"
+#: builtin/remote.c
msgid "specifying a master branch makes no sense with --mirror"
msgstr "especificar una branca mestra no té sentit amb --mirror"
+#: builtin/remote.c
msgid "specifying branches to track makes sense only with fetch mirrors"
msgstr ""
"especificar les branques a seguir té sentit només amb miralls d'obtenció"
+#: builtin/remote.c
#, c-format
msgid "remote %s already exists."
msgstr "el remot %s ja existeix."
+#: builtin/remote.c
#, c-format
msgid "Could not setup master '%s'"
msgstr "No s'ha pogut configurar la mestra «%s»"
+#: builtin/remote.c trailer.c
#, c-format
msgid "more than one %s"
msgstr "més d'un %s"
+#: builtin/remote.c
#, c-format
msgid "unhandled branch.%s.rebase=%s; assuming 'true'"
msgstr "no s'ha gestionat branch.%s.rebase=%s; assumint «true»"
+#: builtin/remote.c
#, c-format
msgid "Could not get fetch map for refspec %s"
msgstr ""
"No s'ha pogut obtenir el mapa d'obtenció de l'especificació de referència %s"
+#: builtin/remote.c
msgid "(matching)"
msgstr "(coincident)"
+#: builtin/remote.c
msgid "(delete)"
msgstr "(suprimir)"
+#: builtin/remote.c
#, c-format
msgid "could not set '%s'"
msgstr "no s'ha pogut establir «%s»"
+#: builtin/remote.c config.c
#, c-format
msgid "could not unset '%s'"
msgstr "no s'ha pogut desassignar «%s»"
+#: builtin/remote.c
#, c-format
msgid ""
"The %s configuration remote.pushDefault in:\n"
@@ -10813,14 +13812,17 @@ msgstr ""
"\t%s:%d\n"
"ara anomena un remot no existent «%s»"
+#: builtin/remote.c
#, c-format
msgid "No such remote: '%s'"
msgstr "No existeix el remot «%s»"
+#: builtin/remote.c
#, c-format
msgid "Could not rename config section '%s' to '%s'"
msgstr "No s'ha pogut canviar el nom de la secció de configuració «%s» a «%s»"
+#: builtin/remote.c
#, c-format
msgid ""
"Not updating non-default fetch refspec\n"
@@ -10832,17 +13834,21 @@ msgstr ""
"\t%s\n"
"\tActualitzeu la configuració manualment si és necessari."
+#: builtin/remote.c
msgid "Renaming remote references"
msgstr "S'està canviant el nom de les referències remotes"
+#: builtin/remote.c
#, c-format
msgid "deleting '%s' failed"
msgstr "la supressió de «%s» ha fallat"
+#: builtin/remote.c
#, c-format
msgid "creating '%s' failed"
msgstr "la creació de «%s» ha fallat"
+#: builtin/remote.c
msgid ""
"Note: A branch outside the refs/remotes/ hierarchy was not removed;\n"
"to delete it, use:"
@@ -10857,246 +13863,307 @@ msgstr[1] ""
"eliminat;\n"
"per a suprimir-les, useu:"
+#: builtin/remote.c
#, c-format
msgid "Could not remove config section '%s'"
msgstr "No s'ha pogut eliminar la secció de configuració «%s»"
+#: builtin/remote.c
#, c-format
msgid " new (next fetch will store in remotes/%s)"
msgstr " nou (la pròxima obtenció emmagatzemarà a remotes/%s)"
+#: builtin/remote.c
msgid " tracked"
msgstr " seguit"
+#: builtin/remote.c
msgid " skipped"
msgstr " omès"
+#: builtin/remote.c
msgid " stale (use 'git remote prune' to remove)"
msgstr " estancat (useu «git remote prune» per a eliminar)"
+#: builtin/remote.c
msgid " ???"
msgstr " ???"
+#: builtin/remote.c
#, c-format
msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
msgstr "branch.%s.merge no vàlid; no es pot fer «rebase» sobre > 1 branca"
+#: builtin/remote.c
#, c-format
msgid "rebases interactively onto remote %s"
msgstr "es fa «rebase» interactivament sobre el remot %s"
+#: builtin/remote.c
#, c-format
msgid "rebases interactively (with merges) onto remote %s"
msgstr "es fa «rebase» interactivament (amb fusions) sobre el remot %s"
+#: builtin/remote.c
#, c-format
msgid "rebases onto remote %s"
msgstr "es fa «rebase» sobre el remot %s"
+#: builtin/remote.c
#, c-format
msgid " merges with remote %s"
msgstr " es fusiona amb el remot %s"
+#: builtin/remote.c
#, c-format
msgid "merges with remote %s"
msgstr "es fusiona amb el remot %s"
+#: builtin/remote.c
#, c-format
msgid "%-*s and with remote %s\n"
msgstr "%-*s i amb el remot %s\n"
+#: builtin/remote.c
msgid "create"
msgstr "crea"
+#: builtin/remote.c
msgid "delete"
msgstr "suprimeix"
+#: builtin/remote.c
msgid "up to date"
msgstr "al dia"
+#: builtin/remote.c
msgid "fast-forwardable"
msgstr "avanç ràpid possible"
+#: builtin/remote.c
msgid "local out of date"
msgstr "local no actualitzat"
+#: builtin/remote.c
#, c-format
msgid " %-*s forces to %-*s (%s)"
msgstr " %-*s força a %-*s (%s)"
+#: builtin/remote.c
#, c-format
msgid " %-*s pushes to %-*s (%s)"
msgstr " %-*s puja a %-*s (%s)"
+#: builtin/remote.c
#, c-format
msgid " %-*s forces to %s"
msgstr " %-*s força a %s"
+#: builtin/remote.c
#, c-format
msgid " %-*s pushes to %s"
msgstr " %-*s puja a %s"
+#: builtin/remote.c
msgid "do not query remotes"
msgstr "no consultis els remots"
+#: builtin/remote.c
#, c-format
msgid "* remote %s"
msgstr "* remot %s"
+#: builtin/remote.c
#, c-format
msgid " Fetch URL: %s"
msgstr " URL d'obtenció: %s"
-msgid "(no URL)"
-msgstr "(sense URL)"
-
#. TRANSLATORS: the colon ':' should align
#. with the one in " Fetch URL: %s"
#. translation.
#.
+#: builtin/remote.c
#, c-format
msgid " Push URL: %s"
msgstr " URL de pujada: %s"
+#: builtin/remote.c
+msgid "(no URL)"
+msgstr "(sense URL)"
+
+#: builtin/remote.c
#, c-format
msgid " HEAD branch: %s"
msgstr " Branca de HEAD: %s"
+#: builtin/remote.c
msgid "(not queried)"
msgstr "(no consultat)"
+#: builtin/remote.c
msgid "(unknown)"
msgstr "(desconegut)"
+#: builtin/remote.c
#, c-format
msgid ""
" HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
msgstr ""
" Branca de HEAD (la HEAD remot és ambigua, pot ser un dels següents):\n"
+#: builtin/remote.c
#, c-format
msgid " Remote branch:%s"
msgid_plural " Remote branches:%s"
msgstr[0] " Branca remota:%s"
msgstr[1] " Branques remotes:%s"
+#: builtin/remote.c
msgid " (status not queried)"
msgstr " (estat no consultat)"
+#: builtin/remote.c
msgid " Local branch configured for 'git pull':"
msgid_plural " Local branches configured for 'git pull':"
msgstr[0] " Branca local configurada per a «git pull»:"
msgstr[1] " Branques locals configurades per a «git pull»:"
+#: builtin/remote.c
msgid " Local refs will be mirrored by 'git push'"
msgstr " «git push» reflectirà les referències locals"
+#: builtin/remote.c
#, c-format
msgid " Local ref configured for 'git push'%s:"
msgid_plural " Local refs configured for 'git push'%s:"
msgstr[0] " Referència local configurada per a «git push»%s:"
msgstr[1] " Referències locals configurades per a «git push»%s:"
+#: builtin/remote.c
msgid "set refs/remotes/<name>/HEAD according to remote"
msgstr "estableix refs/remotes/<nom>/HEAD segons el remot"
+#: builtin/remote.c
msgid "delete refs/remotes/<name>/HEAD"
msgstr "suprimeix refs/remotes/<nom>/HEAD"
+#: builtin/remote.c
msgid "Cannot determine remote HEAD"
msgstr "No es pot determinar la HEAD remota"
+#: builtin/remote.c
msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
msgstr "Múltiples branques de HEAD remotes. Trieu-ne una explícitament amb:"
+#: builtin/remote.c
#, c-format
msgid "Could not delete %s"
msgstr "No s'ha pogut suprimir %s"
+#: builtin/remote.c
#, c-format
msgid "Not a valid ref: %s"
msgstr "No és una referència vàlida: %s"
+#: builtin/remote.c
#, c-format
msgid "Could not setup %s"
msgstr "No s'ha pogut configurar %s"
+#: builtin/remote.c
#, c-format
msgid " %s will become dangling!"
-msgstr " %s es tornarà penjant!"
+msgstr " %s es quedara despenjat!"
+#: builtin/remote.c
#, c-format
msgid " %s has become dangling!"
-msgstr " %s s'ha tornat penjant!"
+msgstr " %s s'ha quedat despenjat!"
+#: builtin/remote.c
#, c-format
msgid "Pruning %s"
msgstr "S'està podant %s"
+#: builtin/remote.c
#, c-format
msgid "URL: %s"
msgstr "URL: %s"
+#: builtin/remote.c
#, c-format
msgid " * [would prune] %s"
msgstr " * [podaria] %s"
+#: builtin/remote.c
#, c-format
msgid " * [pruned] %s"
msgstr " * [podat] %s"
+#: builtin/remote.c
msgid "prune remotes after fetching"
msgstr "poda els remots després d'obtenir-los"
+#: builtin/remote.c
#, c-format
msgid "No such remote '%s'"
msgstr "No hi ha tal remot «%s»"
+#: builtin/remote.c
msgid "add branch"
msgstr "afegeix branca"
+#: builtin/remote.c
msgid "no remote specified"
msgstr "cap remot especificat"
+#: builtin/remote.c
msgid "query push URLs rather than fetch URLs"
msgstr "consulta els URL de pujada en lloc dels URL d'obtenció"
+#: builtin/remote.c
msgid "return all URLs"
msgstr "retorna tots els URL"
-#, c-format
-msgid "no URLs configured for remote '%s'"
-msgstr "cap URL configurat per al remot «%s»"
-
+#: builtin/remote.c
msgid "manipulate push URLs"
msgstr "manipula els URL de pujada"
+#: builtin/remote.c
msgid "add URL"
msgstr "afegeix URL"
+#: builtin/remote.c
msgid "delete URLs"
msgstr "suprimeix els URL"
+#: builtin/remote.c
msgid "--add --delete doesn't make sense"
msgstr "--add --delete no té sentit"
+#: builtin/remote.c
#, c-format
msgid "Invalid old URL pattern: %s"
msgstr "Patró d'URL antic no vàlid: %s"
+#: builtin/remote.c
#, c-format
msgid "No such URL found: %s"
msgstr "No s'ha trobat tal URL: %s"
+#: builtin/remote.c
msgid "Will not delete all non-push URLs"
msgstr "No se suprimiran tots els URL no de pujada"
+#: builtin/remote.c
msgid "be verbose; must be placed before a subcommand"
msgstr "sigues detallat; s'ha de col·locar abans d'una subordre"
+#: builtin/repack.c
msgid "git repack [<options>]"
msgstr "git repack [<opcions>]"
+#: builtin/repack.c
msgid ""
"Incremental repacks are incompatible with bitmap indexes. Use\n"
"--no-write-bitmap-index or disable the pack.writeBitmaps configuration."
@@ -11106,173 +14173,225 @@ msgstr ""
"--no-write-bitmap-index o inhabiliteu el paràmetre de configuració pack."
"writeBitmaps."
+#: builtin/repack.c
msgid "could not start pack-objects to repack promisor objects"
msgstr ""
"no s'ha pogut iniciar pack-objects per a tornar a empaquetar els objectes "
"«promisor»"
+#: builtin/repack.c
+msgid "failed to feed promisor objects to pack-objects"
+msgstr "no s'ha pogut alimentar pack-objects amb objectes «promisor»"
+
+#: builtin/repack.c
msgid "repack: Expecting full hex object ID lines only from pack-objects."
msgstr ""
"repack: s'esperen només línies amb l'id d'objecte hexadecimal complet des de "
"pack-objects."
+#: builtin/repack.c
msgid "could not finish pack-objects to repack promisor objects"
msgstr ""
"no s'ha pogut finalitzar pack-objects per a tornar a empaquetar els objectes "
"«promisor»"
+#: builtin/repack.c
#, c-format
msgid "cannot open index for %s"
msgstr "no s'ha pogut obrir l'índex per a %s"
+#: builtin/repack.c
#, c-format
msgid "pack %s too large to consider in geometric progression"
msgstr ""
"el paquet %s és massa gran per a considerar-ho en progressió geomètrica"
+#: builtin/repack.c
#, c-format
msgid "pack %s too large to roll up"
msgstr "el paquet %s és massa gran per a enrotllar-lo"
+#: builtin/repack.c
#, c-format
msgid "could not open tempfile %s for writing"
msgstr "no s'ha pogut obrir el fitxer temporal «%s» per a escriptura"
+#: builtin/repack.c
msgid "could not close refs snapshot tempfile"
msgstr ""
"no s'ha pogut tancar el fitxer temporal amb la instantània de referències"
+#: builtin/repack.c
#, c-format
msgid "could not remove stale bitmap: %s"
msgstr "no s'ha pogut eliminar el mapa de bits estancat: %s"
+#: builtin/repack.c
#, c-format
msgid "pack prefix %s does not begin with objdir %s"
msgstr "el prefix de paquet %s no comença amb objdir %s"
+#: builtin/repack.c
msgid "pack everything in a single pack"
msgstr "empaqueta-ho tot en un únic paquet"
+#: builtin/repack.c
msgid "same as -a, and turn unreachable objects loose"
msgstr "el mateix que -a, i solta els objectes inabastables"
+#: builtin/repack.c
msgid "same as -a, pack unreachable cruft objects separately"
msgstr ""
"el mateix que -a, empaqueta els objectes superflus inabastables de forma "
"separada"
+#: builtin/repack.c
msgid "approxidate"
msgstr "data aproximada"
+#: builtin/repack.c
msgid "with --cruft, expire objects older than this"
msgstr "amb --cruft, vencen els objectes més antics que aquest"
+#: builtin/repack.c
msgid "remove redundant packs, and run git-prune-packed"
msgstr "elimina els paquets redundants, i executeu git-prune-packed"
+#: builtin/repack.c
msgid "pass --no-reuse-delta to git-pack-objects"
msgstr "passa --no-reuse-delta a git-pack-objects"
+#: builtin/repack.c
msgid "pass --no-reuse-object to git-pack-objects"
msgstr "passa --no-reuse-object a git-pack-objects"
+#: builtin/repack.c
msgid "do not run git-update-server-info"
msgstr "no executis git-update-server-info"
+#: builtin/repack.c
msgid "pass --local to git-pack-objects"
msgstr "passa --local a git-pack-objects"
+#: builtin/repack.c
msgid "write bitmap index"
msgstr "escriu índex de mapa de bits"
+#: builtin/repack.c
msgid "pass --delta-islands to git-pack-objects"
msgstr "passa --delta-islands a git-pack-objects"
+#: builtin/repack.c
msgid "with -A, do not loosen objects older than this"
msgstr "amb -A, no soltis els objectes més antics que aquest"
+#: builtin/repack.c
msgid "with -a, repack unreachable objects"
msgstr "amb -a, reempaqueta els objectes inabastables"
+#: builtin/repack.c
msgid "size of the window used for delta compression"
msgstr "mida de la finestra que s'usa per a compressió de diferències"
+#: builtin/repack.c
msgid "bytes"
msgstr "octets"
+#: builtin/repack.c
msgid "same as the above, but limit memory size instead of entries count"
msgstr ""
"el mateix que l'anterior, però limita la mida de memòria en lloc del nombre "
"d'entrades"
+#: builtin/repack.c
msgid "limits the maximum delta depth"
msgstr "limita la profunditat màxima de les diferències"
+#: builtin/repack.c
msgid "limits the maximum number of threads"
msgstr "limita el nombre màxim de fils"
+#: builtin/repack.c
msgid "maximum size of each packfile"
msgstr "mida màxima de cada fitxer de paquet"
+#: builtin/repack.c
msgid "repack objects in packs marked with .keep"
msgstr "reempaqueta els objectes en paquets marcats amb .keep"
+#: builtin/repack.c
msgid "do not repack this pack"
msgstr "no reempaquetis aquest paquet"
+#: builtin/repack.c
msgid "find a geometric progression with factor <N>"
msgstr "troba una progressió geomètrica amb el factor <N>"
+#: builtin/repack.c
msgid "write a multi-pack index of the resulting packs"
msgstr "escriu un índex multipaquet dels paquets resultants"
+#: builtin/repack.c
msgid "pack prefix to store a pack containing pruned objects"
msgstr ""
"prefix del paquet per a emmagatzemar un paquet que contingui objectes podats"
+#: builtin/repack.c
msgid "pack prefix to store a pack containing filtered out objects"
msgstr ""
"prefix del paquet per a emmagatzemar un paquet que contingui objectes "
"filtrats"
+#: builtin/repack.c
msgid "cannot delete packs in a precious-objects repo"
msgstr "no es poden suprimir paquets en un repositori d'objectes preciosos"
+#: builtin/repack.c
#, c-format
msgid "option '%s' can only be used along with '%s'"
msgstr "l'opció «%s» només es pot utilitzar juntament amb «%s»"
+#: builtin/repack.c
msgid "Nothing new to pack."
msgstr "Res nou a empaquetar."
+#: builtin/repack.c
#, c-format
msgid "renaming pack to '%s' failed"
msgstr "el canvi del nom a «%s» ha fallat"
+#: builtin/repack.c
#, c-format
msgid "pack-objects did not write a '%s' file for pack %s-%s"
msgstr ""
"els objectes de paquet no han escrit a un fitxer «%s» per al paquet %s-%s"
+#: builtin/repack.c sequencer.c
#, c-format
msgid "could not unlink: %s"
msgstr "no s'ha pogut desenllaçar: «%s»"
+#: builtin/replace.c
msgid "git replace [-f] <object> <replacement>"
msgstr "git replace [-f] <objecte> <reemplaçament>"
+#: builtin/replace.c
msgid "git replace [-f] --edit <object>"
msgstr "git replace [-f] --edit <objecte>"
+#: builtin/replace.c
msgid "git replace [-f] --graft <commit> [<parent>...]"
msgstr "git replace [-f] --graft <comissió> [<pare>...]"
+#: builtin/replace.c
msgid "git replace -d <object>..."
msgstr "git replace -d <objecte>..."
+#: builtin/replace.c
msgid "git replace [--format=<format>] [-l [<pattern>]]"
msgstr "git replace [--format=<format>] [-l [<patró>]]"
+#: builtin/replace.c
#, c-format
msgid ""
"invalid replace format '%s'\n"
@@ -11281,22 +14400,27 @@ msgstr ""
"format de reemplaçament no vàlid «%s»\n"
"els formats vàlids són «short» «medium» i «long»"
+#: builtin/replace.c
#, c-format
msgid "replace ref '%s' not found"
msgstr "no s'ha trobat la referència de reemplaçament '«%s»"
+#: builtin/replace.c
#, c-format
msgid "Deleted replace ref '%s'"
msgstr "S'ha suprimit la referència «%s»"
+#: builtin/replace.c
#, c-format
msgid "'%s' is not a valid ref name"
msgstr "«%s» no és un nom de referència vàlid"
+#: builtin/replace.c
#, c-format
msgid "replace ref '%s' already exists"
msgstr "la referència de reemplaçament «%s» ja existeix"
+#: builtin/replace.c
#, c-format
msgid ""
"Objects must be of the same type.\n"
@@ -11307,59 +14431,75 @@ msgstr ""
"«%s» apunta a un objecte substituït del tipus «%s»\n"
"mentre que «%s» apunta a un objecte de substitució del tipus «%s»."
+#: builtin/replace.c
#, c-format
msgid "unable to open %s for writing"
msgstr "no s'ha pogut obrir %s per a escriptura"
+#: builtin/replace.c
msgid "cat-file reported failure"
msgstr "cat-file ha informat d'un error"
+#: builtin/replace.c
#, c-format
msgid "unable to open %s for reading"
msgstr "no s'ha pogut obrir %s per a lectura"
+#: builtin/replace.c
msgid "unable to spawn mktree"
msgstr "no s'ha pogut engendrar el mktree"
+#: builtin/replace.c
msgid "unable to read from mktree"
msgstr "no s'ha pogut llegir des de mktree"
+#: builtin/replace.c
msgid "mktree reported failure"
msgstr "mktree ha informat d'una fallada"
+#: builtin/replace.c
msgid "mktree did not return an object name"
msgstr "mktree no ha retornat un nom d'objecte"
+#: builtin/replace.c
#, c-format
msgid "unable to fstat %s"
msgstr "no s'ha pogut fer fstat %s"
+#: builtin/replace.c
msgid "unable to write object to database"
msgstr "no s'ha pogut escriure l'objecte a la base de dades"
+#: builtin/replace.c
#, c-format
msgid "unable to get object type for %s"
msgstr "no s'ha pogut obtenir el tipus d'objecte per a %s"
+#: builtin/replace.c
msgid "editing object file failed"
msgstr "l'edició del fitxer d'objecte ha fallat"
+#: builtin/replace.c
#, c-format
msgid "new object is the same as the old one: '%s'"
msgstr "l'objecte nou és el mateix que l'antic: «%s»"
+#: builtin/replace.c
#, c-format
msgid "could not parse %s as a commit"
msgstr "no s'ha pogut analitzar %s com a comissió"
+#: builtin/replace.c
#, c-format
msgid "bad mergetag in commit '%s'"
msgstr "etiqueta de fusió incorrecta en la comissió «%s»"
+#: builtin/replace.c
#, c-format
msgid "malformed mergetag in commit '%s'"
msgstr "etiqueta de fusió mal formada en la comissió «%s»"
+#: builtin/replace.c
#, c-format
msgid ""
"original commit '%s' contains mergetag '%s' that is discarded; use --edit "
@@ -11368,25 +14508,31 @@ msgstr ""
"la comissió original «%s» conté l'etiqueta de fusió «%s» que es descarta; "
"useu --edit en lloc de --graft"
+#: builtin/replace.c
#, c-format
msgid "the original commit '%s' has a gpg signature"
msgstr "la comissió original «%s» té una signatura gpg"
+#: builtin/replace.c
msgid "the signature will be removed in the replacement commit!"
msgstr "s'eliminarà la signatura en la comissió de reemplaçament!"
+#: builtin/replace.c
#, c-format
msgid "could not write replacement commit for: '%s'"
msgstr "no s'ha pogut escriure la comissió de reemplaçament per a: «%s»"
+#: builtin/replace.c
#, c-format
msgid "graft for '%s' unnecessary"
msgstr "«graft» per a «%s» innecessari"
+#: builtin/replace.c
#, c-format
msgid "new commit is the same as the old one: '%s'"
msgstr "la comissió nova és la mateixa que l'antiga: «%s»"
+#: builtin/replace.c
#, c-format
msgid ""
"could not convert the following graft(s):\n"
@@ -11395,69 +14541,91 @@ msgstr ""
"no s'han pogut convertir els següents «grafts»:\n"
"%s"
+#: builtin/replace.c
msgid "list replace refs"
msgstr "llista les referències de reemplaçament"
+#: builtin/replace.c
msgid "delete replace refs"
msgstr "suprimeix les referències de reemplaçament"
+#: builtin/replace.c
msgid "edit existing object"
msgstr "edita un objecte existent"
+#: builtin/replace.c
msgid "change a commit's parents"
msgstr "canvia els pares d'una comissió"
+#: builtin/replace.c
msgid "convert existing graft file"
msgstr "converteix el fitxer «graft» existent"
+#: builtin/replace.c
msgid "replace the ref if it exists"
msgstr "reemplaça la referència si existeix"
+#: builtin/replace.c
msgid "do not pretty-print contents for --edit"
msgstr "no imprimeixis bellament els continguts per a --edit"
+#: builtin/replace.c
msgid "use this format"
msgstr "usa aquest format"
+#: builtin/replace.c
msgid "--format cannot be used when not listing"
msgstr "no es pot utilitzar «--format» quan no s'està llistant"
+#: builtin/replace.c
msgid "-f only makes sense when writing a replacement"
msgstr "-f només té sentit quan s'escriu un reemplaçament"
+#: builtin/replace.c
msgid "--raw only makes sense with --edit"
msgstr "--raw només té sentit amb --edit"
+#: builtin/replace.c
msgid "-d needs at least one argument"
msgstr "-d necessita almenys un argument"
+#: builtin/replace.c
msgid "bad number of arguments"
msgstr "nombre incorrecte d'arguments"
+#: builtin/replace.c
msgid "-e needs exactly one argument"
msgstr "-e necessita exactament un argument"
+#: builtin/replace.c
msgid "-g needs at least one argument"
msgstr "-g necessita almenys un argument"
+#: builtin/replace.c
msgid "--convert-graft-file takes no argument"
msgstr "--convert-graft-file arguments"
+#: builtin/replace.c
msgid "only one pattern can be given with -l"
msgstr "només es pot especificar un patró amb -l"
+#: builtin/replay.c
msgid "need some commits to replay"
msgstr "calen algunes comissions per tornar a reproduir"
+#: builtin/replay.c
msgid "--onto and --advance are incompatible"
msgstr "--onto i --advance són incompatibles"
+#: builtin/replay.c
msgid "all positive revisions given must be references"
msgstr "totes les revisions positives que s'han donat han de ser referències"
+#: builtin/replay.c
msgid "argument to --advance must be a reference"
msgstr "l'argument per a --advance ha de ser una referència"
+#: builtin/replay.c
msgid ""
"cannot advance target with multiple sources because ordering would be ill-"
"defined"
@@ -11465,12 +14633,14 @@ msgstr ""
"no es pot avançar l'objectiu amb múltiples fonts perquè l'ordenació no "
"estaria definida correctament"
+#: builtin/replay.c
msgid ""
"cannot implicitly determine whether this is an --advance or --onto operation"
msgstr ""
"no es pot determinar implícitament si aquesta és una operació --advance o --"
"onto"
+#: builtin/replay.c
msgid ""
"cannot advance target with multiple source branches because ordering would "
"be ill-defined"
@@ -11478,9 +14648,11 @@ msgstr ""
"no es pot avançar l'objectiu amb múltiples branques d'origen perquè "
"l'ordenació no estaria definida correctament"
+#: builtin/replay.c
msgid "cannot implicitly determine correct base for --onto"
msgstr "no es pot determinar implícitament la base correcta per a --onto"
+#: builtin/replay.c
msgid ""
"(EXPERIMENTAL!) git replay ([--contained] --onto <newbase> | --advance "
"<branch>) <revision-range>..."
@@ -11488,18 +14660,23 @@ msgstr ""
"(EXPERIMENTAL!) git replay ([--contained] --onto <newbase> | --advance "
"<branch>) <revision-range>..."
+#: builtin/replay.c
msgid "make replay advance given branch"
msgstr "fes avançar la repetició de la branca donada"
+#: builtin/replay.c
msgid "replay onto given commit"
msgstr "torna a reproduir a la comissió donada"
+#: builtin/replay.c
msgid "advance all branches contained in revision-range"
msgstr "avança totes les branques contingudes a l'interval de revisions"
+#: builtin/replay.c
msgid "option --onto or --advance is mandatory"
msgstr "l'opció --onto o --advance és obligatòria"
+#: builtin/replay.c
#, c-format
msgid ""
"some rev walking options will be overridden as '%s' bit in 'struct rev_info' "
@@ -11508,124 +14685,159 @@ msgstr ""
"algunes opcions de referència se sobreescriuran de forma forçada com a «%s» "
"bits a «struct rev_info»"
+#: builtin/replay.c
msgid "error preparing revisions"
msgstr "s'ha produït un error en preparar les revisions"
+#: builtin/replay.c
msgid "replaying down to root commit is not supported yet!"
msgstr "encara no s'admet la reproducció cap avall en una comissió arrel"
+#: builtin/replay.c
msgid "replaying merge commits is not supported yet!"
-msgstr "encara no s'admet la repetició de les comissió de fusió"
+msgstr "encara no s'admet la repetició de les comissions de fusió"
+#: builtin/rerere.c
msgid ""
"git rerere [clear | forget <pathspec>... | diff | status | remaining | gc]"
msgstr ""
"git rerere [clear | forget <pathspec>... | diff | status | remaining | gc]"
+#: builtin/rerere.c
msgid "register clean resolutions in index"
msgstr "registra les resolucions netes en l'índex"
+#: builtin/rerere.c
msgid "'git rerere forget' without paths is deprecated"
msgstr "«git rerere forget» sense camins està en desús"
+#: builtin/rerere.c
#, c-format
msgid "unable to generate diff for '%s'"
msgstr "no s'ha pogut generar el diff per a «%s»"
+#: builtin/reset.c
msgid ""
"git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]"
msgstr ""
"git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<comissió>]"
+#: builtin/reset.c
msgid "git reset [-q] [<tree-ish>] [--] <pathspec>..."
msgstr "git reset [-q] [<tree-ish>] [--] <pathspec>..."
+#: builtin/reset.c
msgid ""
"git reset [-q] [--pathspec-from-file [--pathspec-file-nul]] [<tree-ish>]"
msgstr ""
"git reset [-q] [--pathspec-from-file [--pathspec-file-nul]] [<tree-ish>]"
+#: builtin/reset.c
msgid "git reset --patch [<tree-ish>] [--] [<pathspec>...]"
msgstr "git reset --patch [<tree-ish>] [--] [<pathspec>...]"
+#: builtin/reset.c
msgid "mixed"
msgstr "mixt"
+#: builtin/reset.c
msgid "soft"
msgstr "suau"
+#: builtin/reset.c
msgid "hard"
msgstr "dur"
+#: builtin/reset.c
msgid "merge"
msgstr "fusió"
+#: builtin/reset.c
msgid "keep"
msgstr "reteniment"
+#: builtin/reset.c
msgid "You do not have a valid HEAD."
msgstr "No teniu una HEAD vàlida."
+#: builtin/reset.c
msgid "Failed to find tree of HEAD."
msgstr "S'ha produït un error en trobar l'arbre de HEAD."
+#: builtin/reset.c
#, c-format
msgid "Failed to find tree of %s."
msgstr "S'ha produït un error en cercar l'arbre de %s."
+#: builtin/reset.c
#, c-format
msgid "HEAD is now at %s"
msgstr "HEAD ara és a %s"
+#: builtin/reset.c
#, c-format
msgid "Cannot do a %s reset in the middle of a merge."
msgstr "No es pot fer un restabliment de %s enmig d'una fusió."
+#: builtin/reset.c builtin/stash.c
msgid "be quiet, only report errors"
msgstr "sigues silenciós, només informa d'errors"
+#: builtin/reset.c
msgid "skip refreshing the index after reset"
msgstr "omet l'actualització de l'índex després de reiniciar"
+#: builtin/reset.c
msgid "reset HEAD and index"
msgstr "restableix HEAD i l'índex"
+#: builtin/reset.c
msgid "reset only HEAD"
msgstr "restableix només HEAD"
+#: builtin/reset.c
msgid "reset HEAD, index and working tree"
msgstr "restableix HEAD, l'índex i l'arbre de treball"
+#: builtin/reset.c
msgid "reset HEAD but keep local changes"
msgstr "restableix HEAD però retén els canvis locals"
+#: builtin/reset.c
msgid "record only the fact that removed paths will be added later"
msgstr "registra només el fet que els camins eliminats s'afegiran després"
+#: builtin/reset.c
#, c-format
msgid "Failed to resolve '%s' as a valid revision."
msgstr "S'ha produït un error en resoldre «%s» com a revisió vàlida."
+#: builtin/reset.c
#, c-format
msgid "Failed to resolve '%s' as a valid tree."
msgstr "S'ha produït un error en resoldre «%s» com a arbre vàlid."
+#: builtin/reset.c
msgid "--mixed with paths is deprecated; use 'git reset -- <paths>' instead."
msgstr ""
"--mixed amb camins està en desús; useu «git reset -- <camins>» en lloc "
"d'això."
+#: builtin/reset.c
#, c-format
msgid "Cannot do %s reset with paths."
msgstr "No es pot restablir de %s amb camins."
+#: builtin/reset.c
#, c-format
msgid "%s reset is not allowed in a bare repository"
msgstr "el restabliment de %s no es permet en un repositori nu"
+#: builtin/reset.c
msgid "Unstaged changes after reset:"
msgstr "Canvis «unstaged» després del restabliment:"
+#: builtin/reset.c
#, c-format
msgid ""
"It took %.2f seconds to refresh the index after reset. You can use\n"
@@ -11635,52 +14847,67 @@ msgstr ""
"usar\n"
".--no-refresh' per a evitar això."
+#: builtin/reset.c
#, c-format
msgid "Could not reset index file to revision '%s'."
msgstr "No s'ha pogut restablir el fitxer d'índex a la revisió «%s»."
+#: builtin/reset.c
msgid "Could not write new index file."
msgstr "No s'ha pogut escriure el fitxer d'índex nou."
+#: builtin/rev-list.c
#, c-format
msgid "unable to get disk usage of %s"
msgstr "no s'ha pogut obtenir l'ús del disc de %s"
+#: builtin/rev-list.c
#, c-format
msgid "invalid value for '%s': '%s', the only allowed format is '%s'"
msgstr "valor no vàlid per a «%s»: «%s», l'únic format permès és «%s»"
+#: builtin/rev-list.c
msgid "rev-list does not support display of notes"
msgstr "el rev-list no permet mostrar notes"
+#: builtin/rev-list.c
#, c-format
msgid "marked counting and '%s' cannot be used together"
msgstr "«marked counting» i «%s» no es poden usar junts"
+#: builtin/rev-parse.c
msgid "git rev-parse --parseopt [<options>] -- [<args>...]"
msgstr "git rev-parse --parseopt [<opcions>] -- [<arguments>...]"
+#: builtin/rev-parse.c
msgid "keep the `--` passed as an arg"
msgstr "retén el «--» passat com a argument"
+#: builtin/rev-parse.c
msgid "stop parsing after the first non-option argument"
msgstr "deixa d'analitzar després del primer argument que no sigui d'opció"
+#: builtin/rev-parse.c
msgid "output in stuck long form"
msgstr "emet en forma llarga enganxada"
+#: builtin/rev-parse.c
msgid "premature end of input"
msgstr "final prematur de l'entrada"
+#: builtin/rev-parse.c
msgid "no usage string given before the `--' separator"
msgstr "no s'ha indicat cap cadena d'ús abans del separador «--»"
+#: builtin/rev-parse.c
msgid "missing opt-spec before option flags"
msgstr "manca l'opció opt-spec abans de les altres opcions"
+#: builtin/rev-parse.c
msgid "Needed a single revision"
msgstr "Cal una sola revisió"
+#: builtin/rev-parse.c
msgid ""
"git rev-parse --parseopt [<options>] -- [<args>...]\n"
" or: git rev-parse --sq-quote [<arg>...]\n"
@@ -11695,46 +14922,68 @@ msgstr ""
"Executeu «git rev-parse --parseopt -h» per a més informació sobre el primer "
"ús."
+#: builtin/rev-parse.c
msgid "--resolve-git-dir requires an argument"
msgstr "--resolve-git-dir requereix un argument"
+#: builtin/rev-parse.c
#, c-format
msgid "not a gitdir '%s'"
msgstr "no és un directori git «%s»"
+#: builtin/rev-parse.c
msgid "--git-path requires an argument"
msgstr "--git-path requereix un argument"
+#: builtin/rev-parse.c
msgid "-n requires an argument"
msgstr "-n requereix un argument"
+#: builtin/rev-parse.c
msgid "--path-format requires an argument"
msgstr "--path-format requereix un argument"
+#: builtin/rev-parse.c
#, c-format
msgid "unknown argument to --path-format: %s"
msgstr "argument no vàlid per a --path-format: %s"
+#: builtin/rev-parse.c
msgid "--default requires an argument"
msgstr "--default requereix un argument"
+#: builtin/rev-parse.c
msgid "--prefix requires an argument"
msgstr "--prefix requereix un argument"
+#: builtin/rev-parse.c
+msgid "no object format specified"
+msgstr "no s'ha especificat cap format d'objecte"
+
+#: builtin/rev-parse.c
+#, c-format
+msgid "unsupported object format: %s"
+msgstr "format d'objecte no compatible: %s"
+
+#: builtin/rev-parse.c
#, c-format
msgid "unknown mode for --abbrev-ref: %s"
msgstr "mode desconegut per a --abbrev-ref: %s"
+#: builtin/rev-parse.c setup.c
msgid "this operation must be run in a work tree"
msgstr "aquesta operació s'ha d'executar en un arbre de treball"
+#: builtin/rev-parse.c
msgid "Could not read the index"
msgstr "No s'ha pogut llegir l'índex"
+#: builtin/rev-parse.c
#, c-format
msgid "unknown mode for --show-object-format: %s"
msgstr "mode desconegut per a --show-object-format: %s"
+#: builtin/revert.c
msgid ""
"git revert [--[no-]edit] [-n] [-m <parent-number>] [-s] [-S[<keyid>]] "
"<commit>..."
@@ -11742,9 +14991,11 @@ msgstr ""
"git revert [--[no-]edit] [-n] [-m <parent-number>] [-s] [-S[<keyid>]] "
"<comissió>..."
+#: builtin/revert.c
msgid "git revert (--continue | --skip | --abort | --quit)"
msgstr "git revert (--continue | --skip | --abort | --quit)"
+#: builtin/revert.c
msgid ""
"git cherry-pick [--edit] [-n] [-m <parent-number>] [-s] [-x] [--ff]\n"
" [-S[<keyid>]] <commit>..."
@@ -11752,68 +15003,89 @@ msgstr ""
"git cherry-pick [--edit] [-n] [-m <parent-number>] [-s] [-x] [--ff]\n"
" [-S[<keyid>]] <comissió>..."
+#: builtin/revert.c
msgid "git cherry-pick (--continue | --skip | --abort | --quit)"
msgstr "git cherry-pick (--continue | --skip | --abort | --quit)"
+#: builtin/revert.c
#, c-format
msgid "option `%s' expects a number greater than zero"
msgstr "l'opció «%s» espera un nombre major que zero"
+#: builtin/revert.c
#, c-format
msgid "%s: %s cannot be used with %s"
msgstr "%s: %s no es pot usar amb %s"
+#: builtin/revert.c
msgid "end revert or cherry-pick sequence"
msgstr "acaba la seqüència de reversió o el «cherry pick»"
+#: builtin/revert.c
msgid "resume revert or cherry-pick sequence"
msgstr "reprèn la seqüència de reversió o el «cherry pick»"
+#: builtin/revert.c
msgid "cancel revert or cherry-pick sequence"
msgstr "cancel·la la seqüència de reversió o el «cherry pick»"
+#: builtin/revert.c
msgid "skip current commit and continue"
msgstr "omet la comissió actual i continua"
+#: builtin/revert.c
msgid "don't automatically commit"
msgstr "no cometis automàticament"
+#: builtin/revert.c
msgid "edit the commit message"
msgstr "edita el missatge de comissió"
+#: builtin/revert.c
msgid "parent-number"
msgstr "número del pare"
+#: builtin/revert.c
msgid "select mainline parent"
msgstr "selecciona la línia principal del pare"
+#: builtin/revert.c
msgid "merge strategy"
msgstr "estratègia de fusió"
+#: builtin/revert.c
msgid "option for merge strategy"
msgstr "opció d'estratègia de fusió"
+#: builtin/revert.c
msgid "append commit name"
msgstr "nom de la comissió a annexar"
+#: builtin/revert.c
msgid "preserve initially empty commits"
msgstr "conserva les comissions inicialment buides"
+#: builtin/revert.c
msgid "allow commits with empty messages"
msgstr "permet les comissions amb missatges buits"
-msgid "keep redundant, empty commits"
-msgstr "retén les comissions redundants i buides"
+#: builtin/revert.c
+msgid "deprecated: use --empty=keep instead"
+msgstr "obsolet: utilitzeu --empty=keep en el seu lloc"
+#: builtin/revert.c
msgid "use the 'reference' format to refer to commits"
msgstr "useu el format «referència» per a referir-vos a les comissions"
+#: builtin/revert.c
msgid "revert failed"
msgstr "la reversió ha fallat"
+#: builtin/revert.c
msgid "cherry-pick failed"
msgstr "el «cherry pick» ha fallat"
+#: builtin/rm.c
msgid ""
"git rm [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch]\n"
" [--quiet] [--pathspec-from-file=<file> [--pathspec-file-nul]]\n"
@@ -11823,6 +15095,7 @@ msgstr ""
" [--quiet] [--pathspec-from-file=<fitxer> [--pathspec-file-nul]]\n"
" [--] [<pathspec>...]"
+#: builtin/rm.c
msgid ""
"the following file has staged content different from both the\n"
"file and the HEAD:"
@@ -11830,12 +15103,13 @@ msgid_plural ""
"the following files have staged content different from both the\n"
"file and the HEAD:"
msgstr[0] ""
-"el fitxer següent té contingut «staged» diferent al fitxer\n"
-"i a HEAD:"
+"el fitxer següent té contingut «staged» diferent del fitxer\n"
+"i de HEAD:"
msgstr[1] ""
"els fitxers següents tenen contingut «staged» diferent al fitxer\n"
"i a HEAD:"
+#: builtin/rm.c
msgid ""
"\n"
"(use -f to force removal)"
@@ -11843,11 +15117,13 @@ msgstr ""
"\n"
"(useu -f per a forçar l'eliminació)"
+#: builtin/rm.c
msgid "the following file has changes staged in the index:"
msgid_plural "the following files have changes staged in the index:"
msgstr[0] "el fitxer següent té canvis «staged» en l'índex:"
msgstr[1] "els fitxers següents tenen canvis «staged» en l'índex:"
+#: builtin/rm.c
msgid ""
"\n"
"(use --cached to keep the file, or -f to force removal)"
@@ -11855,42 +15131,53 @@ msgstr ""
"\n"
"(useu --cached per a mantenir el fitxer, o -f per a forçar l'eliminació)"
+#: builtin/rm.c
msgid "the following file has local modifications:"
msgid_plural "the following files have local modifications:"
msgstr[0] "el fitxer següent té modificacions locals:"
msgstr[1] "els fitxers següents tenen modificacions locals:"
+#: builtin/rm.c
msgid "do not list removed files"
msgstr "no llistis els fitxers eliminats"
+#: builtin/rm.c
msgid "only remove from the index"
msgstr "només elimina de l'índex"
+#: builtin/rm.c
msgid "override the up-to-date check"
msgstr "passa per alt la comprovació d'actualitat"
+#: builtin/rm.c
msgid "allow recursive removal"
msgstr "permet l'eliminació recursiva"
+#: builtin/rm.c
msgid "exit with a zero status even if nothing matched"
msgstr "surt amb estat zero encara que res hagi coincidit"
+#: builtin/rm.c
msgid "No pathspec was given. Which files should I remove?"
msgstr ""
"No s'ha indicat cap especificació de camí. Quins fitxers s'han de suprimir?"
+#: builtin/rm.c
msgid "please stage your changes to .gitmodules or stash them to proceed"
msgstr ""
"feu un «stage» dels canvis a .gitmodules o feu un «stash» per a continuar"
+#: builtin/rm.c
#, c-format
msgid "not removing '%s' recursively without -r"
msgstr "no s'eliminarà «%s» recursivament sense -r"
+#: builtin/rm.c
#, c-format
msgid "git rm: unable to remove %s"
msgstr "git rm: no s'ha pogut eliminar %s"
+#: builtin/send-pack.c
msgid ""
"git send-pack [--mirror] [--dry-run] [--force]\n"
" [--receive-pack=<git-receive-pack>]\n"
@@ -11902,69 +15189,89 @@ msgstr ""
" [--receive-pack=<git-receive-pack>]\n"
" [--verbose] [--thin] [--atomic]\n"
" [--[no-]signed | --signed=(true|false|if-asked)]\n"
-" [<host>:]<directory> (--all | <ref>...)"
+" [<host>:]<directori> (--all | <referència>...)"
+#: builtin/send-pack.c
msgid "remote name"
msgstr "nom del remot"
+#: builtin/send-pack.c
msgid "push all refs"
msgstr "puja totes les referències"
+#: builtin/send-pack.c
msgid "use stateless RPC protocol"
msgstr "usa el protocol RPC sense estat"
+#: builtin/send-pack.c
msgid "read refs from stdin"
msgstr "llegeix les referències des de stdin"
+#: builtin/send-pack.c
msgid "print status from remote helper"
msgstr "imprimeix l'estat des de l'ajudant remot"
+#: builtin/shortlog.c
msgid "git shortlog [<options>] [<revision-range>] [[--] <path>...]"
msgstr "git shortlog [<opcions>] [<rang-de-revisions>] [[--] <camí>...]"
+#: builtin/shortlog.c
msgid "git log --pretty=short | git shortlog [<options>]"
msgstr "git log --pretty=short | git shortlog [<opcions>]"
+#: builtin/shortlog.c
msgid "using multiple --group options with stdin is not supported"
msgstr "no s'admet l'ús de múltiples opcions --group amb stdin"
+#: builtin/shortlog.c
#, c-format
msgid "using %s with stdin is not supported"
msgstr "no s'admet l'ús de %s amb stdin"
+#: builtin/shortlog.c
#, c-format
msgid "unknown group type: %s"
msgstr "tipus de grup desconegut: %s"
+#: builtin/shortlog.c
msgid "group by committer rather than author"
msgstr "agrupa per «committer» en comptes de per autor"
+#: builtin/shortlog.c
msgid "sort output according to the number of commits per author"
msgstr "ordena la sortida segons el nombre de comissions per autor"
+#: builtin/shortlog.c
msgid "suppress commit descriptions, only provides commit count"
msgstr ""
"omet les descripcions de les comissions, només proveeix el recompte de "
"comissions"
+#: builtin/shortlog.c
msgid "show the email address of each author"
msgstr "mostra l'adreça electrònica de cada autor"
+#: builtin/shortlog.c
msgid "<w>[,<i1>[,<i2>]]"
msgstr "<w>[,<i1>[,<i2>]]"
+#: builtin/shortlog.c
msgid "linewrap output"
msgstr "ajusta les línies de la sortida"
+#: builtin/shortlog.c
msgid "field"
msgstr "camp"
+#: builtin/shortlog.c
msgid "group by field"
msgstr "agrupa per camp"
+#: builtin/shortlog.c
msgid "too many arguments given outside repository"
msgstr "hi ha massa arguments donats fora del repositori"
+#: builtin/show-branch.c
msgid ""
"git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order]\n"
" [--current] [--color[=<when>] | --no-color] [--sparse]\n"
@@ -11976,114 +15283,144 @@ msgstr ""
" [--current] [--color[=<when>] | --no-color] [--sparse]\n"
" [--more=<n> | --list | --independent | --merge-base]\n"
" [--no-name | --sha1-name] [--topics]\n"
-" [(<rev> | <glob>)...]"
+" [(<revisió> | <glob>)...]"
+#: builtin/show-branch.c
msgid "git show-branch (-g | --reflog)[=<n>[,<base>]] [--list] [<ref>]"
msgstr "git show-branch (-g | --reflog)[=<n>[,<base>]] [--list] [<referència>]"
+#: builtin/show-branch.c
#, c-format
msgid "ignoring %s; cannot handle more than %d ref"
msgid_plural "ignoring %s; cannot handle more than %d refs"
msgstr[0] "s'està ignorant %s; no es pot gestionar més de %d referència"
msgstr[1] "s'està ignorant %s; no es poden gestionar més de %d referències"
+#: builtin/show-branch.c
#, c-format
msgid "no matching refs with %s"
msgstr "no hi ha referències coincidents amb %s"
+#: builtin/show-branch.c
msgid "show remote-tracking and local branches"
msgstr "mostra les branques amb seguiment remot i les locals"
+#: builtin/show-branch.c
msgid "show remote-tracking branches"
msgstr "mostra les branques amb seguiment remot"
+#: builtin/show-branch.c
msgid "color '*!+-' corresponding to the branch"
msgstr "colora «*!+-» corresponent a la branca"
+#: builtin/show-branch.c
msgid "show <n> more commits after the common ancestor"
msgstr "mostra <n> comissions després de l'avantpassat comú"
+#: builtin/show-branch.c
msgid "synonym to more=-1"
msgstr "sinònim de more=-1"
+#: builtin/show-branch.c
msgid "suppress naming strings"
msgstr "omet anomenar cadenes"
+#: builtin/show-branch.c
msgid "include the current branch"
msgstr "inclou la branca actual"
+#: builtin/show-branch.c
msgid "name commits with their object names"
msgstr "anomena les comissions amb els seus noms d'objecte"
+#: builtin/show-branch.c
msgid "show possible merge bases"
msgstr "mostra les bases de fusió possibles"
+#: builtin/show-branch.c
msgid "show refs unreachable from any other ref"
msgstr "mostra les referències inabastables de qualsevol altra referència"
+#: builtin/show-branch.c
msgid "show commits in topological order"
msgstr "mostra les comissions en ordre topològic"
+#: builtin/show-branch.c
msgid "show only commits not on the first branch"
msgstr "mostra només les comissions que no siguin en la primera branca"
+#: builtin/show-branch.c
msgid "show merges reachable from only one tip"
msgstr "mostra les fusions abastables de només una punta"
+#: builtin/show-branch.c
msgid "topologically sort, maintaining date order where possible"
msgstr "ordena topològicament, mantenint l'ordre de dates on sigui possible"
+#: builtin/show-branch.c
msgid "<n>[,<base>]"
msgstr "<n>[,<base>]"
+#: builtin/show-branch.c
msgid "show <n> most recent ref-log entries starting at base"
msgstr "mostra les <n> entrades més recents començant a la base"
+#: builtin/show-branch.c
msgid "no branches given, and HEAD is not valid"
msgstr "no s'ha donat cap branca, i HEAD no és vàlid"
+#: builtin/show-branch.c
msgid "--reflog option needs one branch name"
msgstr "l'opció --reflog necessita un nom de branca"
+#: builtin/show-branch.c
#, c-format
msgid "only %d entry can be shown at one time."
msgid_plural "only %d entries can be shown at one time."
msgstr[0] "es pot mostrar només %d entrada a la vegada."
msgstr[1] "es poden mostrar només %d entrades a la vegada."
+#: builtin/show-branch.c
#, c-format
msgid "no such ref %s"
msgstr "no hi ha tal referència %s"
+#: builtin/show-branch.c
#, c-format
msgid "cannot handle more than %d rev."
msgid_plural "cannot handle more than %d revs."
msgstr[0] "no es pot gestionar més d'%d revisió."
msgstr[1] "no es poden gestionar més de %d revisions."
+#: builtin/show-branch.c
#, c-format
msgid "'%s' is not a valid ref."
msgstr "«%s» no és una referència vàlida."
+#: builtin/show-branch.c
#, c-format
msgid "cannot find commit %s (%s)"
msgstr "no es pot trobar la comissió %s (%s)"
+#: builtin/show-index.c
msgid "hash-algorithm"
msgstr "algorisme de resum"
+#: builtin/show-index.c
msgid "Unknown hash algorithm"
msgstr "Algorisme de resum desconegut"
+#: builtin/show-ref.c
msgid ""
"git show-ref [--head] [-d | --dereference]\n"
-" [-s | --hash[=<n>]] [--abbrev[=<n>]] [--tags]\n"
-" [--heads] [--] [<pattern>...]"
+" [-s | --hash[=<n>]] [--abbrev[=<n>]] [--branches] [--tags]\n"
+" [--] [<pattern>...]"
msgstr ""
"git show-ref [--head] [-d | --dereference]\n"
-" [-s | --hash[=<n>]] [--abbrev[=<n>]] [--tags]\n"
-" [--heads] [--] [<pattern>...]"
+" [-s | --hash[=<n>]] [--abbrev[=<n>]] [--branches] [--tags]\n"
+" [--] [<patró>...]"
+#: builtin/show-ref.c
msgid ""
"git show-ref --verify [-q | --quiet] [-d | --dereference]\n"
" [-s | --hash[=<n>]] [--abbrev[=<n>]]\n"
@@ -12091,49 +15428,63 @@ msgid ""
msgstr ""
"git show-ref --verify [-q | --quiet] [-d | --dereference]\n"
" [-s | --hash[=<n>]] [--abbrev[=<n>]]\n"
-" [--] [<ref>...]"
+" [--] [<referència>...]"
+#: builtin/show-ref.c
msgid "git show-ref --exclude-existing[=<pattern>]"
msgstr "git show-ref --exclude-existing[=<patró>]"
+#: builtin/show-ref.c
msgid "git show-ref --exists <ref>"
-msgstr "git show-ref --exists <ref>"
+msgstr "git show-ref --exists <referència>"
+#: builtin/show-ref.c
msgid "reference does not exist"
msgstr "la referència no existeix"
+#: builtin/show-ref.c
msgid "failed to look up reference"
msgstr "s'ha produït en cercar la referència"
-msgid "only show tags (can be combined with heads)"
-msgstr "mostra només les etiquetes (es pot combinar amb heads)"
+#: builtin/show-ref.c
+msgid "only show tags (can be combined with --branches)"
+msgstr "mostra només les etiquetes (es pot combinar amb --branches)"
-msgid "only show heads (can be combined with tags)"
-msgstr "mostra només els caps (es pot combinar amb tags)"
+#: builtin/show-ref.c
+msgid "only show branches (can be combined with --tags)"
+msgstr "mostra només les branques (es pot combinar amb --tags)"
+#: builtin/show-ref.c
msgid "check for reference existence without resolving"
msgstr "comprova l'existència de referència sense resoldre"
+#: builtin/show-ref.c
msgid "stricter reference checking, requires exact ref path"
msgstr ""
"comprovació de referència més estricta, requereix el camí de referència "
"exacte"
+#: builtin/show-ref.c
msgid "show the HEAD reference, even if it would be filtered out"
msgstr "mostra la referència HEAD, encara que es filtrés"
+#: builtin/show-ref.c
msgid "dereference tags into object IDs"
msgstr "desreferencia les etiquetes a ID d'objecte"
+#: builtin/show-ref.c
msgid "only show SHA1 hash using <n> digits"
msgstr "mostra el resum SHA1 usant només <n> xifres"
+#: builtin/show-ref.c
msgid "do not print results to stdout (useful with --verify)"
msgstr "no imprimeixis els resultats a stdout (útil amb --verify)"
+#: builtin/show-ref.c
msgid "show refs from stdin that aren't in local repository"
msgstr "mostra les referències de stdin que no siguin en el repositori local"
+#: builtin/sparse-checkout.c
msgid ""
"git sparse-checkout (init | list | set | add | reapply | disable | check-"
"rules) [<options>]"
@@ -12141,14 +15492,17 @@ msgstr ""
"git sparse-checkout (init | list | set | add | reapply | disable | check-"
"rules) [<opcions>]"
+#: builtin/sparse-checkout.c
msgid "this worktree is not sparse"
msgstr "aquest arbre de treball no és dispers"
+#: builtin/sparse-checkout.c
msgid "this worktree is not sparse (sparse-checkout file may not exist)"
msgstr ""
"aquest arbre de treball no és dispers (pot ser que el fitxer sparse-checkout "
"no existeixi)"
+#: builtin/sparse-checkout.c
#, c-format
msgid ""
"directory '%s' contains untracked files, but is not in the sparse-checkout "
@@ -12157,53 +15511,73 @@ msgstr ""
"el directori «%s» conté fitxers no seguits, però no està en el con de sparse-"
"checkout"
+#: builtin/sparse-checkout.c
#, c-format
msgid "failed to remove directory '%s'"
msgstr "s'ha produït un error en suprimir el directori «%s»"
+#: builtin/sparse-checkout.c
msgid "failed to create directory for sparse-checkout file"
msgstr "no s'ha pogut crear el directori per al fitxer sparse-checkout"
+#: builtin/sparse-checkout.c
+#, c-format
+msgid "unable to fdopen %s"
+msgstr "no he pogut fer fdopen de «%s»"
+
+#: builtin/sparse-checkout.c
msgid "failed to initialize worktree config"
msgstr "no s'ha pogut inicialitzar la configuració de l'arbre de treball"
+#: builtin/sparse-checkout.c
msgid "failed to modify sparse-index config"
msgstr "no s'ha pogut modificar la configuració de l'índex dispers"
+#: builtin/sparse-checkout.c
msgid "initialize the sparse-checkout in cone mode"
msgstr "inicialitza el «sparse-checkout» en mode con"
+#: builtin/sparse-checkout.c
msgid "toggle the use of a sparse index"
msgstr "commuta l'ús d'un índex dispers"
+#: builtin/sparse-checkout.c commit-graph.c midx-write.c sequencer.c
#, c-format
msgid "unable to create leading directories of %s"
msgstr "no s'han pogut crear els directoris inicials de «%s»"
+#: builtin/sparse-checkout.c
#, c-format
msgid "failed to open '%s'"
msgstr "s'ha produït un error en obrir «%s»"
+#: builtin/sparse-checkout.c
#, c-format
msgid "could not normalize path %s"
msgstr "no s'ha pogut normalitzar el camí %s"
+#: builtin/sparse-checkout.c
#, c-format
msgid "unable to unquote C-style string '%s'"
msgstr "no s'han pogut treure les cometes a la cadena amb estil C «%s»"
+#: builtin/sparse-checkout.c
msgid "unable to load existing sparse-checkout patterns"
msgstr "no s'han pogut carregar els patrons de «sparse-checkout» existents"
+#: builtin/sparse-checkout.c
msgid "existing sparse-checkout patterns do not use cone mode"
msgstr "els patrons de «sparse-checkout» existents no usen el mode con"
+#: builtin/sparse-checkout.c
msgid "please run from the toplevel directory in non-cone mode"
msgstr "executeu des del directori de nivell superior en mode que no sigui con"
+#: builtin/sparse-checkout.c
msgid "specify directories rather than patterns (no leading slash)"
msgstr "especifica els directoris en lloc dels patrons (sense barra inclinada)"
+#: builtin/sparse-checkout.c
msgid ""
"specify directories rather than patterns. If your directory starts with a "
"'!', pass --skip-checks"
@@ -12211,6 +15585,7 @@ msgstr ""
"especifica els directoris en lloc dels patrons. Si el vostre directori "
"comença amb un «!», passeu --skip-checks"
+#: builtin/sparse-checkout.c
msgid ""
"specify directories rather than patterns. If your directory really has any "
"of '*?[]\\' in it, pass --skip-checks"
@@ -12218,6 +15593,7 @@ msgstr ""
"especifica els directoris en lloc dels patrons. Si el vostre directori "
"realment té alguna de «*?[]\\», useu --skip-checks"
+#: builtin/sparse-checkout.c
#, c-format
msgid ""
"'%s' is not a directory; to treat it as a directory anyway, rerun with --"
@@ -12226,6 +15602,7 @@ msgstr ""
"«%s» no és un directori; per a tractar-lo com un directori, torneu a "
"executar amb --skip-checks"
+#: builtin/sparse-checkout.c
#, c-format
msgid ""
"pass a leading slash before paths such as '%s' if you want a single file "
@@ -12234,35 +15611,43 @@ msgstr ""
"passa una barra d'inici abans dels camins com ara «%s» si voleu un sol "
"fitxer (vegeu «NON-CONE PROBLEMS» al manual de git-sparse-checkout)."
+#: builtin/sparse-checkout.c
msgid "git sparse-checkout add [--skip-checks] (--stdin | <patterns>)"
-msgstr "git sparse-checkout add [--skip-checks] (--stdin | <patterns>)"
+msgstr "git sparse-checkout add [--skip-checks] (--stdin | <patrons>)"
+#: builtin/sparse-checkout.c
msgid ""
"skip some sanity checks on the given paths that might give false positives"
msgstr ""
"omet alguns controls de sanitat en els camins donats que podrien donar "
"falsos positius"
+#: builtin/sparse-checkout.c
msgid "read patterns from standard in"
msgstr "llegeix els patrons de l'entrada estàndard"
+#: builtin/sparse-checkout.c
msgid "no sparse-checkout to add to"
msgstr "no hi ha un sparse-checkout a afegir"
+#: builtin/sparse-checkout.c
msgid ""
"git sparse-checkout set [--[no-]cone] [--[no-]sparse-index] [--skip-checks] "
"(--stdin | <patterns>)"
msgstr ""
"git sparse-checkout set [--[no-]cone] [--[no-]sparse-index] [--skip-checks] "
-"(--stdin | <patterns>)"
+"(--stdin | <patrons>)"
+#: builtin/sparse-checkout.c
msgid "must be in a sparse-checkout to reapply sparsity patterns"
msgstr ""
"ha d'estar en un sparse-checkout per a tornar a aplicar patrons de dispersió"
+#: builtin/sparse-checkout.c
msgid "error while refreshing working directory"
msgstr "s'ha produït un error en actualitzar el directori de treball"
+#: builtin/sparse-checkout.c
msgid ""
"git sparse-checkout check-rules [-z] [--skip-checks][--[no-]cone] [--rules-"
"file <file>]"
@@ -12270,20 +15655,25 @@ msgstr ""
"git sparse-checkout check-rules [-z] [--skip-checks][--[no-]cone] [--rules-"
"file <fitxer>]"
+#: builtin/sparse-checkout.c
msgid "terminate input and output files by a NUL character"
msgstr "acaba els fitxers d'entrada i de sortida amb un caràcter NUL"
+#: builtin/sparse-checkout.c
msgid "when used with --rules-file interpret patterns as cone mode patterns"
msgstr ""
"quan s'utilitza amb --rules-file, interpreta els patrons com a patrons del "
"mode con"
+#: builtin/sparse-checkout.c
msgid "use patterns in <file> instead of the current ones."
msgstr "utilitza patrons en <file> en lloc dels actuals."
+#: builtin/stash.c
msgid "git stash list [<log-options>]"
-msgstr "git stash list [<log-options>]"
+msgstr "git stash list [<opcions-registre>]"
+#: builtin/stash.c
msgid ""
"git stash show [-u | --include-untracked | --only-untracked] [<diff-"
"options>] [<stash>]"
@@ -12291,22 +15681,28 @@ msgstr ""
"git stash show [-u | --include-untracked | --only-untracked] [<diff-"
"options>] [<stash>]"
+#: builtin/stash.c
msgid "git stash drop [-q | --quiet] [<stash>]"
msgstr "git stash drop [-q | --quiet] [<stash>]"
+#: builtin/stash.c
msgid "git stash pop [--index] [-q | --quiet] [<stash>]"
msgstr "git stash pop [--index] [-q | --quiet] [<stash>]"
+#: builtin/stash.c
msgid "git stash apply [--index] [-q | --quiet] [<stash>]"
msgstr "git stash apply [--index] [-q | --quiet] [<stash>]"
+#: builtin/stash.c
msgid "git stash branch <branchname> [<stash>]"
msgstr "git stash branch <nom-de-branca> [<stash>]"
+#: builtin/stash.c
msgid "git stash store [(-m | --message) <message>] [-q | --quiet] <commit>"
msgstr ""
"git stash store [(-m | --message) <missatge>] [-q | --quiet] <comissió>"
+#: builtin/stash.c
msgid ""
"git stash [push [-p | --patch] [-S | --staged] [-k | --[no-]keep-index] [-q "
"| --quiet]\n"
@@ -12322,6 +15718,7 @@ msgstr ""
" [--pathspec-from-file=<fitxer> [--pathspec-file-nul]]\n"
" [--] [<pathspec>...]]"
+#: builtin/stash.c
msgid ""
"git stash save [-p | --patch] [-S | --staged] [-k | --[no-]keep-index] [-q | "
"--quiet]\n"
@@ -12331,27 +15728,34 @@ msgstr ""
"--quiet]\n"
" [-u | --include-untracked] [-a | --all] [<missatge>]"
+#: builtin/stash.c
msgid "git stash create [<message>]"
msgstr "git stash create [<missatge>]"
+#: builtin/stash.c
#, c-format
msgid "'%s' is not a stash-like commit"
msgstr "«%s» no és una comissió de tipus «stash»"
+#: builtin/stash.c
#, c-format
msgid "Too many revisions specified:%s"
msgstr "S'han especificat massa revisions:%s"
+#: builtin/stash.c
msgid "No stash entries found."
msgstr "No s'ha trobat cap entrada «stash»."
+#: builtin/stash.c
#, c-format
msgid "%s is not a valid reference"
msgstr "«%s» no és una referència vàlida"
+#: builtin/stash.c
msgid "git stash clear with arguments is unimplemented"
msgstr "git stash clear amb paràmetres no està implementat"
+#: builtin/stash.c
#, c-format
msgid ""
"WARNING: Untracked file in way of tracked file! Renaming\n"
@@ -12362,154 +15766,202 @@ msgstr ""
" %s -> %s\n"
" per a fer-ne espai.\n"
+#: builtin/stash.c
msgid "cannot apply a stash in the middle of a merge"
msgstr "no es pot aplicar un «stash» enmig d'una fusió"
+#: builtin/stash.c
#, c-format
msgid "could not generate diff %s^!."
msgstr "no s'ha pogut generar diff %s^!."
+#: builtin/stash.c
msgid "conflicts in index. Try without --index."
msgstr "hi ha conflictes en l'índex. Proveu-ho sense --index."
+#: builtin/stash.c
msgid "could not save index tree"
msgstr "no s'ha pogut desar l'arbre d'índex"
+#: builtin/stash.c
#, c-format
msgid "Merging %s with %s"
msgstr "S'està fusionant %s amb %s"
+#: builtin/stash.c
msgid "Index was not unstashed."
msgstr "L'índex no estava «unstashed»."
+#: builtin/stash.c
msgid "could not restore untracked files from stash"
msgstr "no s'han pogut restaurar els fitxers no seguits des del «stash»"
+#: builtin/stash.c
msgid "attempt to recreate the index"
msgstr "intenta tornar a crear l'índex"
+#: builtin/stash.c
#, c-format
msgid "Dropped %s (%s)"
msgstr "Descartada %s (%s)"
+#: builtin/stash.c
#, c-format
msgid "%s: Could not drop stash entry"
msgstr "%s: no s'ha pogut descartar l'entrada «stash»"
+#: builtin/stash.c
#, c-format
msgid "'%s' is not a stash reference"
msgstr "«%s» no és una referència «stash»"
+#: builtin/stash.c
msgid "The stash entry is kept in case you need it again."
-msgstr "Es conserva l'entrada «stash» en cas que la necessiteu altra vegada."
+msgstr ""
+"Es conserva l'entrada «stash» en cas que la necessiteu una altra vegada."
+#: builtin/stash.c
msgid "No branch name specified"
msgstr "Cap nom de branca especificat"
+#: builtin/stash.c
msgid "failed to parse tree"
msgstr "s'ha produït un error en analitzar l'arbre"
+#: builtin/stash.c
msgid "failed to unpack trees"
msgstr "s'ha produït un error en desempaquetar els arbres"
+#: builtin/stash.c
msgid "include untracked files in the stash"
msgstr "inclou els fitxers no seguits a «stash»"
+#: builtin/stash.c
msgid "only show untracked files in the stash"
msgstr "mostra només els fitxers no seguits a «stash»"
+#: builtin/stash.c
#, c-format
msgid "Cannot update %s with %s"
msgstr "No es pot actualitzar %s amb %s"
+#: builtin/stash.c
msgid "stash message"
msgstr "missatge «stash»"
+#: builtin/stash.c
msgid "\"git stash store\" requires one <commit> argument"
msgstr "«git stash store» requereix un argument <comissió>"
+#: builtin/stash.c
msgid "No staged changes"
msgstr "No hi ha canvis a «stage»"
+#: builtin/stash.c
msgid "No changes selected"
msgstr "No hi ha canvis seleccionats"
+#: builtin/stash.c
msgid "You do not have the initial commit yet"
msgstr "Encara no teniu la comissió inicial"
+#: builtin/stash.c
msgid "Cannot save the current index state"
msgstr "No es pot desar l'estat d'índex actual"
+#: builtin/stash.c
msgid "Cannot save the untracked files"
msgstr "No es poden desar els fitxers no seguits"
+#: builtin/stash.c
msgid "Cannot save the current worktree state"
msgstr "No es pot desar l'estat d'arbre de treball actual"
+#: builtin/stash.c
msgid "Cannot save the current staged state"
msgstr "No es pot desar l'estat «stage» actual"
+#: builtin/stash.c
msgid "Cannot record working tree state"
msgstr "No es pot registrar l'estat de l'arbre de treball"
+#: builtin/stash.c
msgid "Can't use --patch and --include-untracked or --all at the same time"
msgstr "No es poden usar --patch i --include-untracked o --all a la vegada"
+#: builtin/stash.c
msgid "Can't use --staged and --include-untracked or --all at the same time"
msgstr "No es poden usar --staged i --include-untracked o --all a la vegada"
+#: builtin/stash.c
msgid "Did you forget to 'git add'?"
msgstr "Heu oblidat de fer «git add»?"
+#: builtin/stash.c
msgid "No local changes to save"
msgstr "No hi ha canvis locals a desar"
+#: builtin/stash.c
msgid "Cannot initialize stash"
msgstr "No es pot inicialitzar el magatzem"
+#: builtin/stash.c
msgid "Cannot save the current status"
msgstr "No es pot desar l'estat actual"
+#: builtin/stash.c
#, c-format
msgid "Saved working directory and index state %s"
msgstr "S'han desat el directori de treball i l'estat d'índex %s"
+#: builtin/stash.c
msgid "Cannot remove worktree changes"
msgstr "No es poden eliminar els canvis de l'arbre de treball"
+#: builtin/stash.c
msgid "keep index"
msgstr "mantén l'índex"
+#: builtin/stash.c
msgid "stash staged changes only"
msgstr "fes «stash» només dels canvis «staged»"
+#: builtin/stash.c
msgid "stash in patch mode"
msgstr "fes «stash» en mode pedaç"
+#: builtin/stash.c
msgid "quiet mode"
msgstr "mode silenciós"
+#: builtin/stash.c
msgid "include untracked files in stash"
msgstr "inclou els fitxers no seguits a «stash»"
+#: builtin/stash.c
msgid "include ignore files"
msgstr "inclou els fitxers ignorats"
+#: builtin/stripspace.c
msgid "skip and remove all lines starting with comment character"
msgstr ""
"omet i elimina totes les línies que comencin amb el caràcter de comentari"
+#: builtin/stripspace.c
msgid "prepend comment character and space to each line"
msgstr "anteposa el caràcter de comentari i un espai a cada línia"
+#: builtin/submodule--helper.c
#, c-format
msgid "Expecting a full ref name, got %s"
msgstr "S'espera un nom de referència ple, s'ha rebut %s"
+#: builtin/submodule--helper.c
#, c-format
msgid "could not get a repository handle for submodule '%s'"
msgstr "no s'ha pogut obtenir el gestor del repositori pel submòdul «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid ""
"could not look up configuration '%s'. Assuming this repository is its own "
@@ -12518,14 +15970,17 @@ msgstr ""
"no s'ha pogut trobar la configuració «%s». S'assumeix que aquest repositori "
"és el seu repositori font autoritzat."
+#: builtin/submodule--helper.c
#, c-format
msgid "No url found for submodule path '%s' in .gitmodules"
msgstr "No s'ha trobat cap url per al camí de submòdul «%s» a .gitmodules"
+#: builtin/submodule--helper.c
#, c-format
msgid "Entering '%s'\n"
msgstr "S'està entrant a «%s»\n"
+#: builtin/submodule--helper.c
#, c-format
msgid ""
"run_command returned non-zero status for %s\n"
@@ -12534,6 +15989,7 @@ msgstr ""
"run_command ha retornat un estat diferent de zero per a %s\n"
"."
+#: builtin/submodule--helper.c
#, c-format
msgid ""
"run_command returned non-zero status while recursing in the nested "
@@ -12544,56 +16000,70 @@ msgstr ""
"recursivament als submòduls imbricats de %s\n"
"."
+#: builtin/submodule--helper.c
msgid "suppress output of entering each submodule command"
msgstr "omet la sortida en entrar a cada ordre del submòdul"
+#: builtin/submodule--helper.c
msgid "recurse into nested submodules"
msgstr "cerca recursivament als submòduls imbricats"
+#: builtin/submodule--helper.c
msgid "git submodule foreach [--quiet] [--recursive] [--] <command>"
msgstr "git submodule foreach [--quiet] [--recursive] [--] <ordre>"
+#: builtin/submodule--helper.c
#, c-format
msgid "Failed to register url for submodule path '%s'"
msgstr "S'ha produït un error en registrar l'url per al camí de submòdul «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid "Submodule '%s' (%s) registered for path '%s'\n"
msgstr "S'ha registrat el submòdul «%s» (%s) per al camí «%s»\n"
+#: builtin/submodule--helper.c
#, c-format
msgid "warning: command update mode suggested for submodule '%s'\n"
msgstr ""
"advertència: se suggereix el mode d'actualització per ordre per al submòdul "
"«%s»\n"
+#: builtin/submodule--helper.c
#, c-format
msgid "Failed to register update mode for submodule path '%s'"
msgstr ""
"S'ha produït un error en registrar el mode d'actualització per al camí de "
"submòdul «%s»"
+#: builtin/submodule--helper.c
msgid "suppress output for initializing a submodule"
msgstr "omet la sortida en inicialitzar un submòdul"
+#: builtin/submodule--helper.c
msgid "git submodule init [<options>] [<path>]"
msgstr "git submodule init [<opcions>] [<camí>]"
+#: builtin/submodule--helper.c
#, c-format
msgid "no submodule mapping found in .gitmodules for path '%s'"
msgstr "no s'ha trobat cap mapatge de submòdul a .gitmodules per al camí «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid "could not resolve HEAD ref inside the submodule '%s'"
msgstr "no s'ha pogut resoldre la referència a HEAD dins del submòdul «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid "failed to recurse into submodule '%s'"
msgstr "s'ha produït un error en cercar recursivament al submòdul «%s»"
+#: builtin/submodule--helper.c
msgid "suppress submodule status output"
msgstr "suprimeix la sortida de l'estat del submòdul"
+#: builtin/submodule--helper.c
msgid ""
"use commit stored in the index instead of the one stored in the submodule "
"HEAD"
@@ -12601,69 +16071,87 @@ msgstr ""
"utilitza la comissió emmagatzemada a l'índex en lloc de l'emmagatzemada al "
"HEAD del submòdul"
+#: builtin/submodule--helper.c
msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
msgstr "git submodule status [--quiet] [--cached] [--recursive] [<camí>...]"
+#: builtin/submodule--helper.c
#, c-format
msgid "* %s %s(blob)->%s(submodule)"
msgstr "* %s %s(blob)->%s(submòdul)"
+#: builtin/submodule--helper.c
#, c-format
msgid "* %s %s(submodule)->%s(blob)"
msgstr "* %s %s(submòdul)->%s(blob)"
+#: builtin/submodule--helper.c
#, c-format
msgid "%s"
msgstr "%s"
+#: builtin/submodule--helper.c
#, c-format
msgid "couldn't hash object from '%s'"
msgstr "no s'ha pogut fer el resum de l'objecte de «%s»"
+#: builtin/submodule--helper.c
#, c-format
-msgid "unexpected mode %o\n"
-msgstr "mode inesperat %o\n"
+msgid "unexpected mode %o"
+msgstr "mode %o inesperat"
+#: builtin/submodule--helper.c
msgid "use the commit stored in the index instead of the submodule HEAD"
msgstr ""
"utilitza la comissió emmagatzemada a l'índex en lloc de l'emmagatzemada al "
"HEAD del submòdul"
+#: builtin/submodule--helper.c
msgid "compare the commit in the index with that in the submodule HEAD"
msgstr ""
"compara la comissió emmagatzemada a l'índex en lloc de l'emmagatzemada al "
"HEAD del submòdul"
+#: builtin/submodule--helper.c
msgid "skip submodules with 'ignore_config' value set to 'all'"
msgstr "omet els submòduls amb el valor «ignore_config» establert a «all»"
+#: builtin/submodule--helper.c
msgid "limit the summary size"
msgstr "limita la mida del resum"
+#: builtin/submodule--helper.c
msgid "git submodule summary [<options>] [<commit>] [--] [<path>]"
msgstr "git submodule summary [<opcions>] [<comissió>] [--] [<camí>]"
+#: builtin/submodule--helper.c
msgid "could not fetch a revision for HEAD"
msgstr "no s'ha pogut obtenir una revisió per a HEAD"
+#: builtin/submodule--helper.c
#, c-format
msgid "Synchronizing submodule url for '%s'\n"
msgstr "S'està sincronitzant l'url del submòdul per a «%s»\n"
+#: builtin/submodule--helper.c
#, c-format
msgid "failed to register url for submodule path '%s'"
msgstr "s'ha produït un error en registrar l'url per al camí del submòdul «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid "failed to update remote for submodule '%s'"
msgstr "s'ha produït un error en actualitzar el remot pel submòdul «%s»"
+#: builtin/submodule--helper.c
msgid "suppress output of synchronizing submodule url"
msgstr "omet la sortida de la sincronització de l'URL del submòdul"
+#: builtin/submodule--helper.c
msgid "git submodule sync [--quiet] [--recursive] [<path>]"
msgstr "git submodule sync [--quiet] [--recursive] [<camí>]"
+#: builtin/submodule--helper.c
#, c-format
msgid ""
"Submodule work tree '%s' contains a .git directory. This will be replaced "
@@ -12672,6 +16160,7 @@ msgstr ""
"L'arbre de treball del submòdul «%s» conté un directori .git. Aquest es "
"reemplaçarà amb un fitxer a .git mitjançant l'ús d'«absorbgitdirs»."
+#: builtin/submodule--helper.c
#, c-format
msgid ""
"Submodule work tree '%s' contains local modifications; use '-f' to discard "
@@ -12680,38 +16169,47 @@ msgstr ""
"L'arbre de treball del submòdul «%s» conté modificacions locals; useu «-f» "
"per a descartar-les"
+#: builtin/submodule--helper.c
#, c-format
msgid "Cleared directory '%s'\n"
msgstr "S'ha esborrat el directori «%s»\n"
+#: builtin/submodule--helper.c
#, c-format
msgid "Could not remove submodule work tree '%s'\n"
msgstr "No s'ha pogut eliminar l'arbre de treball de submòdul «%s»\n"
+#: builtin/submodule--helper.c
#, c-format
msgid "could not create empty submodule directory %s"
msgstr "no s'ha pogut crear el directori de submòdul buit %s"
+#: builtin/submodule--helper.c
#, c-format
msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
msgstr "S'ha desregistrat el submòdul «%s» (%s) per al camí «%s»\n"
+#: builtin/submodule--helper.c
msgid "remove submodule working trees even if they contain local changes"
msgstr ""
"elimina els arbres de treball dels submòduls fins i tot si contenen canvis "
"locals"
+#: builtin/submodule--helper.c
msgid "unregister all submodules"
msgstr "desregistra tots els submòduls"
+#: builtin/submodule--helper.c
msgid ""
"git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
msgstr ""
"git submodule deinit [--quiet] [-f | --force] [--all | [--] [<camí>...]]"
+#: builtin/submodule--helper.c
msgid "Use '--all' if you really want to deinitialize all submodules"
msgstr "Useu «--all» si realment voleu desinicialitzar tots els submòduls"
+#: builtin/submodule--helper.c
msgid ""
"An alternate computed from a superproject's alternate is invalid.\n"
"To allow Git to clone without an alternate in such a case, set\n"
@@ -12724,138 +16222,172 @@ msgstr ""
"submodule.alternateErrorStrategy a «info» o bé cloneu amb\n"
"«--reference-if-able' en comptes de «--reference»."
+#: builtin/submodule--helper.c
#, c-format
msgid "could not get a repository handle for gitdir '%s'"
msgstr "no s'ha pogut obtenir el gestor del repositori per al gitdir «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid "submodule '%s' cannot add alternate: %s"
msgstr "el submòdul «%s» no pot afegir un alternatiu: %s"
+#: builtin/submodule--helper.c
#, c-format
msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
msgstr "No es reconeix el valor «%s» per a submodule.alternateErrorStrategy"
+#: builtin/submodule--helper.c
#, c-format
msgid "Value '%s' for submodule.alternateLocation is not recognized"
msgstr "No es reconeix el valor «%s» per a submodule.alternateLocation"
+#: builtin/submodule--helper.c submodule.c
#, c-format
msgid "refusing to create/use '%s' in another submodule's git dir"
msgstr "s'ha rebutjat crear/usar «%s» en el directori git d'un altre submòdul"
-#, c-format
-msgid "clone of '%s' into submodule path '%s' failed"
-msgstr "el clonatge de «%s» al camí de submòdul «%s» ha fallat"
-
+#: builtin/submodule--helper.c
#, c-format
msgid "directory not empty: '%s'"
msgstr "directori no buit: «%s»"
+#: builtin/submodule--helper.c
+#, c-format
+msgid "clone of '%s' into submodule path '%s' failed"
+msgstr "el clonatge de «%s» al camí de submòdul «%s» ha fallat"
+
+#: builtin/submodule--helper.c
#, c-format
msgid "could not get submodule directory for '%s'"
msgstr "no s'ha pogut obtenir el directori de submòdul per a «%s»"
+#: builtin/submodule--helper.c
msgid "alternative anchor for relative paths"
msgstr "àncora alternativa per als camins relatius"
+#: builtin/submodule--helper.c
msgid "where the new submodule will be cloned to"
msgstr "a on es clonarà el submòdul nou"
+#: builtin/submodule--helper.c
msgid "name of the new submodule"
msgstr "nom del submòdul nou"
+#: builtin/submodule--helper.c
msgid "url where to clone the submodule from"
msgstr "url del qual clonar el submòdul"
+#: builtin/submodule--helper.c
msgid "depth for shallow clones"
msgstr "profunditat dels clons superficials"
+#: builtin/submodule--helper.c
msgid "force cloning progress"
msgstr "força el progrés del clonatge"
+#: builtin/submodule--helper.c
msgid "disallow cloning into non-empty directory"
msgstr "no permetis clonar en un directori no buit"
+#: builtin/submodule--helper.c
msgid ""
"git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
"<repository>] [--name <name>] [--depth <depth>] [--single-branch] [--filter "
"<filter-spec>] --url <url> --path <path>"
msgstr ""
"git submodule--helper clone [--prefix=<camí>] [--quiet] [--reference "
-"<repository>] [--name <name>] [--depth <depth>] [--single-branch] [--filter "
+"<repositori>] [--name <nom>] [--depth <depth>] [--single-branch] [--filter "
"<filter-spec>] --url <url> --path <camí>"
+#: builtin/submodule--helper.c
#, c-format
msgid "Invalid update mode '%s' configured for submodule path '%s'"
msgstr ""
"Mode d'actualització «%s» configurat no vàlid per al camí de submòdul «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid "Submodule path '%s' not initialized"
msgstr "El camí de submòdul «%s» no està inicialitzat"
+#: builtin/submodule--helper.c
msgid "Maybe you want to use 'update --init'?"
msgstr "Potser voleu usar «update --init»?"
+#: builtin/submodule--helper.c
#, c-format
msgid "Skipping unmerged submodule %s"
msgstr "S'està ometent el submòdul no fusionat %s"
+#: builtin/submodule--helper.c
#, c-format
msgid "Skipping submodule '%s'"
msgstr "S'està ometent el submòdul «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid "cannot clone submodule '%s' without a URL"
msgstr "no es pot clonar el submòdul «%s» sense un URL"
+#: builtin/submodule--helper.c
#, c-format
msgid "Failed to clone '%s'. Retry scheduled"
msgstr "S'ha produït un error en clonar «%s». S'ha programat un reintent"
+#: builtin/submodule--helper.c
#, c-format
msgid "Failed to clone '%s' a second time, aborting"
msgstr "S'ha produït un error per segon cop en clonar «%s», s'està avortant"
+#: builtin/submodule--helper.c
#, c-format
msgid "Unable to checkout '%s' in submodule path '%s'"
msgstr "No s'ha pogut agafar «%s» en el camí de submòdul «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid "Unable to rebase '%s' in submodule path '%s'"
msgstr "No s'ha pogut fer «rebase» «%s» en el camí de submòdul «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid "Unable to merge '%s' in submodule path '%s'"
msgstr "No s'ha pogut fusionar «%s» en el camí de submòdul «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid "Execution of '%s %s' failed in submodule path '%s'"
msgstr "L'execució de «%s %s» ha fallat en el camí de submòdul «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid "Submodule path '%s': checked out '%s'\n"
msgstr "Camí de submòdul «%s»: s'ha agafat «%s»\n"
+#: builtin/submodule--helper.c
#, c-format
msgid "Submodule path '%s': rebased into '%s'\n"
msgstr "Camí de submòdul «%s»: s'ha fet «rebase» en «%s»\n"
+#: builtin/submodule--helper.c
#, c-format
msgid "Submodule path '%s': merged in '%s'\n"
msgstr "Camí de submòdul «%s»: s'ha fusionat en «%s»\n"
+#: builtin/submodule--helper.c
#, c-format
msgid "Submodule path '%s': '%s %s'\n"
msgstr "El camí de submòdul «%s»: '%s %s'\n"
+#: builtin/submodule--helper.c
#, c-format
msgid "Unable to fetch in submodule path '%s'; trying to directly fetch %s:"
msgstr ""
"No s'ha pogut obtenir en el camí de submòdul «$%s»; s'està intentant obtenir "
"directament %s:"
+#: builtin/submodule--helper.c
#, c-format
msgid ""
"Fetched in submodule path '%s', but it did not contain %s. Direct fetching "
@@ -12864,10 +16396,12 @@ msgstr ""
"S'ha obtingut en un camí de submòdul «%s», però no contenia %s. L'obtenció "
"directa d'aquesta comissió ha fallat."
+#: builtin/submodule--helper.c
#, c-format
msgid "could not initialize submodule at path '%s'"
msgstr "no s'ha pogut inicialitzar el submòdul al camí «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid ""
"Submodule (%s) branch configured to inherit branch from superproject, but "
@@ -12876,62 +16410,80 @@ msgstr ""
"La branca de submòdul (%s) està configurada per a heretar la branca del "
"superprojecte, però el superprojecte no és en cap branca"
+#: builtin/submodule--helper.c
#, c-format
msgid "Unable to find current revision in submodule path '%s'"
msgstr "No s'ha pogut trobar la revisió actual al camí del submòdul «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid "Unable to fetch in submodule path '%s'"
msgstr "No s'ha pogut obtenir el camí del submòdul «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid "Unable to find %s revision in submodule path '%s'"
msgstr "No s'ha pogut trobar la revisió %s en el camí del submòdul «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid "Failed to recurse into submodule path '%s'"
msgstr ""
"s'ha produït un error en cercar recursivament al camí del submòdul «%s»"
+#: builtin/submodule--helper.c
msgid "force checkout updates"
msgstr "força les actualitzacions"
+#: builtin/submodule--helper.c
msgid "initialize uninitialized submodules before update"
msgstr "inicialitza els submòduls sense inicialitzar abans d'actualitzar"
+#: builtin/submodule--helper.c
msgid "use SHA-1 of submodule's remote tracking branch"
msgstr "usa el SHA-1 de la branca de seguiment remota del submòdul"
+#: builtin/submodule--helper.c
msgid "traverse submodules recursively"
msgstr "recorre els submòduls recursivament"
+#: builtin/submodule--helper.c
msgid "don't fetch new objects from the remote site"
msgstr "no obtinguis els objectes nous del lloc remot"
+#: builtin/submodule--helper.c
msgid "use the 'checkout' update strategy (default)"
msgstr "utilitza l'estratègia d'actualització «checkout» (predeterminada)"
+#: builtin/submodule--helper.c
msgid "use the 'merge' update strategy"
msgstr "utilitza l'estratègia d'actualització de «merge»"
+#: builtin/submodule--helper.c
msgid "use the 'rebase' update strategy"
msgstr "utilitza l'estratègia d'actualització de «rebase»"
+#: builtin/submodule--helper.c
msgid "create a shallow clone truncated to the specified number of revisions"
msgstr "crea un clon superficial truncat al nombre de revisions especificat"
+#: builtin/submodule--helper.c
msgid "parallel jobs"
msgstr "tasques paral·leles"
+#: builtin/submodule--helper.c
msgid "whether the initial clone should follow the shallow recommendation"
msgstr "si el clonatge inicial ha de seguir la recomanació de superficialitat"
+#: builtin/submodule--helper.c
msgid "don't print cloning progress"
msgstr "no imprimeixis el progrés del clonatge"
+#: builtin/submodule--helper.c
msgid "disallow cloning into non-empty directory, implies --init"
msgstr "no permetis clonar en un directori no buit, implica --init"
+#: builtin/submodule--helper.c
msgid ""
"git submodule [--quiet] update [--init [--filter=<filter-spec>]] [--remote] "
"[-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--[no-]recommend-"
@@ -12940,68 +16492,86 @@ msgid ""
msgstr ""
"git submodule [--quiet] update [--init [--filter=<filter-spec>]] [--remote] "
"[-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--[no-]recommend-"
-"shallow] [--reference <repository>] [--recursive] [--[no-]single-branch] "
+"shallow] [--reference <repositori>] [--recursive] [--[no-]single-branch] "
"[--] [<camí>...]"
+#: builtin/submodule--helper.c submodule.c
msgid "Failed to resolve HEAD as a valid ref."
msgstr "S'ha produït un error en resoldre HEAD com a referència vàlida."
+#: builtin/submodule--helper.c
msgid "git submodule absorbgitdirs [<options>] [<path>...]"
msgstr "git submodule absorbgitdirs [<opcions>] [<camí>...]"
+#: builtin/submodule--helper.c
msgid "suppress output for setting url of a submodule"
msgstr "omet la sortida en configurar un URL d'un submòdul"
+#: builtin/submodule--helper.c
msgid "git submodule set-url [--quiet] <path> <newurl>"
-msgstr "git submodule set-url [--quiet] <camí> <newurl>"
+msgstr "git submodule set-url [--quiet] <camí> <url-nou>"
+#: builtin/submodule--helper.c
msgid "set the default tracking branch to master"
msgstr "estableix la branca de seguiment per defecte a «master»"
+#: builtin/submodule--helper.c
msgid "set the default tracking branch"
msgstr "estableix la branca de seguiment per defecte"
+#: builtin/submodule--helper.c
msgid "git submodule set-branch [-q|--quiet] (-d|--default) <path>"
msgstr "git submodule set-branch [-q|--quiet] (-d|--default) <camí>"
+#: builtin/submodule--helper.c
msgid "git submodule set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
msgstr "git submodule set-branch [-q|--quiet] (-b|--branch) <branca> <camí>"
+#: builtin/submodule--helper.c
msgid "--branch or --default required"
msgstr "cal --branch o --default"
+#: builtin/submodule--helper.c
msgid "print only error messages"
msgstr "mostra només els missatges d'error"
+#: builtin/submodule--helper.c
msgid "force creation"
msgstr "força la creació"
+#: builtin/submodule--helper.c
msgid "show whether the branch would be created"
msgstr "mostra si es crearà la branca"
+#: builtin/submodule--helper.c
msgid ""
"git submodule--helper create-branch [-f|--force] [--create-reflog] [-q|--"
"quiet] [-t|--track] [-n|--dry-run] <name> <start-oid> <start-name>"
msgstr ""
"git submodule--helper create-branch [-f|--force] [--create-reflog] [-q|--"
-"quiet] [-t|--track] [-n|--dry-run] <name> <start-oid> <start-name>"
+"quiet] [-t|--track] [-n|--dry-run] <nom> <oid-inicial> <nom-inicial>"
+#: builtin/submodule--helper.c
#, c-format
msgid "creating branch '%s'"
msgstr "s'està creant la branca «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid "Adding existing repo at '%s' to the index\n"
msgstr "S'està afegint el repositori existent a «%s» a l'índex\n"
+#: builtin/submodule--helper.c
#, c-format
msgid "'%s' already exists and is not a valid git repo"
msgstr "«%s» ja existeix i no és un repositori de git vàlid"
+#: builtin/submodule--helper.c
#, c-format
msgid "A git directory for '%s' is found locally with remote(s):\n"
msgstr "S'ha trobat un directori de git per a «%s» localment amb els remots:\n"
+#: builtin/submodule--helper.c
#, c-format
msgid ""
"If you want to reuse this local git directory instead of cloning again from\n"
@@ -13019,46 +16589,58 @@ msgstr ""
"o no esteu segur de què vol dir això, trieu un altre nom amb l'opció «--"
"name»."
+#: builtin/submodule--helper.c
#, c-format
msgid "Reactivating local git directory for submodule '%s'\n"
msgstr "S'està reactivant el directori de git local per al submòdul «%s»\n"
+#: builtin/submodule--helper.c
#, c-format
msgid "unable to checkout submodule '%s'"
msgstr "no s'ha pogut agafar el submòdul «%s»"
+#: builtin/submodule--helper.c
msgid "please make sure that the .gitmodules file is in the working tree"
msgstr "assegureu-vos que el fitxer .gitmodules és a l'arbre de treball"
+#: builtin/submodule--helper.c
#, c-format
msgid "Failed to add submodule '%s'"
msgstr "S'ha produït un error en afegir el submòdul «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid "Failed to register submodule '%s'"
msgstr "S'ha produït un error en registrar el submòdul «%s»"
+#: builtin/submodule--helper.c
#, c-format
msgid "'%s' already exists in the index"
msgstr "«%s» ja existeix en l'índex"
+#: builtin/submodule--helper.c
#, c-format
msgid "'%s' already exists in the index and is not a submodule"
msgstr "«%s» ja existeix en l'índex i no és submòdul"
+#: builtin/submodule--helper.c read-cache.c
#, c-format
msgid "'%s' does not have a commit checked out"
msgstr "«%s» no té una comissió comprovada"
+#: builtin/submodule--helper.c
msgid "branch of repository to add as submodule"
msgstr "la branca del repositori a afegir com a submòdul"
+#: builtin/submodule--helper.c
msgid "allow adding an otherwise ignored submodule path"
msgstr "permet afegir un camí de submòdul que si no s'hagués ignorat"
+#: builtin/submodule--helper.c
msgid "borrow the objects from reference repositories"
msgstr "manlleva els objectes dels repositoris de referències"
+#: builtin/submodule--helper.c
msgid ""
"sets the submodule's name to the given string instead of defaulting to its "
"path"
@@ -13066,62 +16648,81 @@ msgstr ""
"estableix el nom del submòdul a la cadena donada en lloc de per defecte al "
"seu camí"
+#: builtin/submodule--helper.c
msgid "git submodule add [<options>] [--] <repository> [<path>]"
-msgstr "git submodule add [<opcions>] [--] <repository> [<camí>]"
+msgstr "git submodule add [<opcions>] [--] <repositori> [<camí>]"
+#: builtin/submodule--helper.c
msgid "Relative path can only be used from the toplevel of the working tree"
msgstr ""
"El camí relatiu només es pot usar des del nivell superior de l'arbre de "
"treball"
+#: builtin/submodule--helper.c
#, c-format
msgid "repo URL: '%s' must be absolute or begin with ./|../"
msgstr "URL de repositori: «%s» ha de ser absolut o començar amb ./|../"
+#: builtin/submodule--helper.c
#, c-format
msgid "'%s' is not a valid submodule name"
msgstr "«%s» no és un nom de submòdul vàlid"
+#: builtin/submodule--helper.c
msgid "git submodule--helper <command>"
-msgstr "git submodule--helper <command>"
+msgstr "git submodule--helper <ordre>"
+#: builtin/symbolic-ref.c
msgid "git symbolic-ref [-m <reason>] <name> <ref>"
-msgstr "git symbolic-ref [-m <reason>] <name> <ref>"
+msgstr "git symbolic-ref [-m <raó>] <nom> <referència>"
+#: builtin/symbolic-ref.c
msgid "git symbolic-ref [-q] [--short] [--no-recurse] <name>"
-msgstr "git symbolic-ref [-q] [--short] [--no-recurse] <name>"
+msgstr "git symbolic-ref [-q] [--short] [--no-recurse] <nom>"
+#: builtin/symbolic-ref.c
msgid "git symbolic-ref --delete [-q] <name>"
-msgstr "git symbolic-ref --delete [-q] <name>"
+msgstr "git symbolic-ref --delete [-q] <nom>"
+#: builtin/symbolic-ref.c
msgid "suppress error message for non-symbolic (detached) refs"
msgstr "omet el missatge d'error de referències no simbòliques (separades)"
+#: builtin/symbolic-ref.c
msgid "delete symbolic ref"
msgstr "suprimeix la referència simbòlica"
+#: builtin/symbolic-ref.c
msgid "shorten ref output"
msgstr "escurça la sortida de referències"
+#: builtin/symbolic-ref.c
msgid "recursively dereference (default)"
msgstr "desreferencia recursivament (per defecte)"
+#: builtin/symbolic-ref.c builtin/update-ref.c
msgid "reason"
msgstr "raó"
+#: builtin/symbolic-ref.c builtin/update-ref.c
msgid "reason of the update"
msgstr "raó de l'actualització"
+#: builtin/tag.c
msgid ""
"git tag [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>] [-e]\n"
+" [(--trailer <token>[(=|:)<value>])...]\n"
" <tagname> [<commit> | <object>]"
msgstr ""
-"git tag [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <fitxer>] [-e]\n"
-" <tagname> [<comissió> | <objecte>]"
+"git tag [-a | -s | -u <id-clau>] [-f] [-m <missatge> | -F <fitxer>] [-e]\n"
+" [(--trailer <token>[(=|:)<valor>])...]\n"
+" <nom-etiqueta> [<comissió> | <objecte>]"
+#: builtin/tag.c
msgid "git tag -d <tagname>..."
-msgstr "git tag -d <nom-d'etiqueta>..."
+msgstr "git tag -d <nom-etiqueta>..."
+#: builtin/tag.c
msgid ""
"git tag [-n[<num>]] -l [--contains <commit>] [--no-contains <commit>]\n"
" [--points-at <object>] [--column[=<options>] | --no-column]\n"
@@ -13130,49 +16731,56 @@ msgid ""
msgstr ""
"git tag [-n[<num>]] -l [--contains <comissió>] [--no-contains <comissió>]\n"
" [--points-at <objecte>] [--column[=<opcions>] | --no-column]\n"
-" [--create-reflog] [--sort=<key>] [--format=<format>]\n"
+" [--create-reflog] [--sort=<clau>] [--format=<format>]\n"
" [--merged <comissió>] [--no-merged <comissió>] [<patró>...]"
+#: builtin/tag.c
msgid "git tag -v [--format=<format>] <tagname>..."
-msgstr "git tag -v [--format=<format>] <nom-d'etiqueta>..."
+msgstr "git tag -v [--format=<format>] <nom-etiqueta>..."
+#: builtin/tag.c
#, c-format
msgid "tag '%s' not found."
msgstr "no s'ha trobat l'etiqueta «%s»."
+#: builtin/tag.c
#, c-format
msgid "Deleted tag '%s' (was %s)\n"
msgstr "S'ha suprimit l'etiqueta «%s» (era %s)\n"
+#: builtin/tag.c
#, c-format
msgid ""
"\n"
"Write a message for tag:\n"
" %s\n"
-"Lines starting with '%c' will be ignored.\n"
+"Lines starting with '%s' will be ignored.\n"
msgstr ""
"\n"
-"Escriviu el missatge de l'etiqueta:\n"
+"Escriviu un missatge per a l'etiqueta:\n"
" %s\n"
-"Les línies que comencin amb «%c» s'ignoraran.\n"
+"S'ignoraran les línies que comencen amb «%s».\n"
+#: builtin/tag.c
#, c-format
msgid ""
"\n"
"Write a message for tag:\n"
" %s\n"
-"Lines starting with '%c' will be kept; you may remove them yourself if you "
+"Lines starting with '%s' will be kept; you may remove them yourself if you "
"want to.\n"
msgstr ""
"\n"
-"Escriviu el missatge de l'etiqueta:\n"
+"Escriviu un missatge per a l'etiqueta:\n"
" %s\n"
-"Les línies que comencin amb «%c» es retindran; podeu eliminar-les per vós "
-"mateix si voleu.\n"
+"Es mantindran les línies que comencin amb «%s»; les podeu eliminar si "
+"voleu.\n"
+#: builtin/tag.c
msgid "unable to sign the tag"
msgstr "no s'ha pogut signar l'etiqueta"
+#: builtin/tag.c
#, c-format
msgid ""
"You have created a nested tag. The object referred to by your new tag is\n"
@@ -13186,275 +16794,361 @@ msgstr ""
"\n"
"\tgit tag -f %s %s^{}"
+#: builtin/tag.c
msgid "bad object type."
msgstr "el tipus d'objecte és incorrecte."
+#: builtin/tag.c
msgid "no tag message?"
msgstr "no hi ha cap missatge d'etiqueta?"
+#: builtin/tag.c
#, c-format
msgid "The tag message has been left in %s\n"
msgstr "S'ha deixat el missatge de l'etiqueta en %s\n"
+#: builtin/tag.c
msgid "list tag names"
msgstr "llista els noms d'etiqueta"
+#: builtin/tag.c
msgid "print <n> lines of each tag message"
msgstr "imprimeix <n> línies de cada missatge d'etiqueta"
+#: builtin/tag.c
msgid "delete tags"
msgstr "suprimeix les etiquetes"
+#: builtin/tag.c
msgid "verify tags"
msgstr "verifica les etiquetes"
+#: builtin/tag.c
msgid "Tag creation options"
msgstr "Opcions de creació d'etiquetes"
+#: builtin/tag.c
msgid "annotated tag, needs a message"
msgstr "etiqueta anotada, necessita un missatge"
+#: builtin/tag.c
msgid "tag message"
msgstr "missatge d'etiqueta"
+#: builtin/tag.c
msgid "force edit of tag message"
msgstr "força l'edició del missatge de l'etiqueta"
+#: builtin/tag.c
msgid "annotated and GPG-signed tag"
msgstr "etiqueta anotada i signada per GPG"
+#: builtin/tag.c
msgid "use another key to sign the tag"
msgstr "usa una altra clau per a signar l'etiqueta"
+#: builtin/tag.c
msgid "replace the tag if exists"
msgstr "reemplaça l'etiqueta si existeix"
+#: builtin/tag.c builtin/update-ref.c
msgid "create a reflog"
msgstr "crea un registre de referències"
+#: builtin/tag.c
msgid "Tag listing options"
msgstr "Opcions de llistat d'etiquetes"
+#: builtin/tag.c
msgid "show tag list in columns"
msgstr "mostra la llista d'etiquetes en columnes"
+#: builtin/tag.c
msgid "print only tags that contain the commit"
msgstr "imprimeix només les etiquetes que continguin la comissió"
+#: builtin/tag.c
msgid "print only tags that don't contain the commit"
msgstr "imprimeix només les etiquetes que no continguin la comissió"
+#: builtin/tag.c
msgid "print only tags that are merged"
msgstr "imprimeix només les etiquetes que s'han fusionat"
+#: builtin/tag.c
msgid "print only tags that are not merged"
msgstr "imprimeix només les etiquetes que no s'han fusionat"
+#: builtin/tag.c
msgid "print only tags of the object"
msgstr "imprimeix només les etiquetes de l'objecte"
+#: builtin/tag.c
+msgid "could not start 'git column'"
+msgstr "no s'ha pogut iniciar «git column»"
+
+#: builtin/tag.c
#, c-format
msgid "the '%s' option is only allowed in list mode"
msgstr "l'opció «%s» només està permesa en mode de llista"
+#: builtin/tag.c
#, c-format
msgid "'%s' is not a valid tag name."
msgstr "«%s» no és un nom d'etiqueta vàlid."
+#: builtin/tag.c
#, c-format
msgid "tag '%s' already exists"
msgstr "l'etiqueta «%s» ja existeix"
+#: builtin/tag.c sequencer.c
#, c-format
msgid "Invalid cleanup mode %s"
msgstr "Mode de neteja no vàlid %s"
+#: builtin/tag.c
#, c-format
msgid "Updated tag '%s' (was %s)\n"
msgstr "Etiqueta «%s» actualitzada (era %s)\n"
+#: builtin/unpack-objects.c
msgid "pack exceeds maximum allowed size"
msgstr "el paquet supera la mida màxima permesa"
+#: builtin/unpack-objects.c
msgid "failed to write object in stream"
msgstr "no s'ha pogut escriure l'objecte al flux"
+#: builtin/unpack-objects.c
#, c-format
msgid "inflate returned (%d)"
msgstr "inflate ha retornat (%d)"
+#: builtin/unpack-objects.c
msgid "invalid blob object from stream"
msgstr "l'objecte blob del flux no és vàlid"
+#: builtin/unpack-objects.c
msgid "Unpacking objects"
msgstr "S'estan desempaquetant els objectes"
+#: builtin/update-index.c
#, c-format
msgid "failed to create directory %s"
msgstr "s'ha produït un error en crear el directori %s"
+#: builtin/update-index.c
#, c-format
msgid "failed to delete file %s"
msgstr "s'ha produït un error en suprimir el fitxer %s"
+#: builtin/update-index.c
#, c-format
msgid "failed to delete directory %s"
msgstr "s'ha produït un error en suprimir el directori %s"
+#: builtin/update-index.c
#, c-format
msgid "Testing mtime in '%s' "
msgstr "S'està provant mtime en «%s» "
+#: builtin/update-index.c
msgid "directory stat info does not change after adding a new file"
msgstr ""
"la informació de stat de directori no canvia després d'afegir un fitxer nou"
+#: builtin/update-index.c
msgid "directory stat info does not change after adding a new directory"
msgstr ""
"la informació de stat de directori no canvia després d'afegir un directori "
"nou"
+#: builtin/update-index.c
msgid "directory stat info changes after updating a file"
msgstr ""
"la informació de stat de directori canvia després d'actualitzar un fitxer"
+#: builtin/update-index.c
msgid "directory stat info changes after adding a file inside subdirectory"
msgstr ""
"la informació de stat de directori canvia després d'afegir un fitxer dins "
"d'un subdirectori"
+#: builtin/update-index.c
msgid "directory stat info does not change after deleting a file"
msgstr ""
"la informació de stat de directori no canvia després de suprimir un fitxer"
+#: builtin/update-index.c
msgid "directory stat info does not change after deleting a directory"
msgstr ""
"la informació de stat de directori no canvia després de suprimir un directori"
+#: builtin/update-index.c
msgid " OK"
msgstr " D'acord"
+#: builtin/update-index.c
msgid "git update-index [<options>] [--] [<file>...]"
msgstr "git update-index [<opcions>] [--] [<fitxer>...]"
+#: builtin/update-index.c
msgid "continue refresh even when index needs update"
msgstr ""
"continua l'actualització encara que l'índex necessiti una actualització"
+#: builtin/update-index.c
msgid "refresh: ignore submodules"
msgstr "actualitza: ignora els submòduls"
+#: builtin/update-index.c
msgid "do not ignore new files"
msgstr "no ignoris els fitxers nous"
+#: builtin/update-index.c
msgid "let files replace directories and vice-versa"
msgstr "deixa que els fitxers reemplacin els directoris i viceversa"
+#: builtin/update-index.c
msgid "notice files missing from worktree"
msgstr "tingues en compte els fitxers absents de l'arbre de treball"
+#: builtin/update-index.c
msgid "refresh even if index contains unmerged entries"
msgstr "actualitza encara que l'índex contingui entrades no fusionades"
+#: builtin/update-index.c
msgid "refresh stat information"
msgstr "actualitza la informació d'estadístiques"
+#: builtin/update-index.c
msgid "like --refresh, but ignore assume-unchanged setting"
msgstr "com --refresh, però ignora el paràmetre assume-unchanged"
+#: builtin/update-index.c
msgid "<mode>,<object>,<path>"
msgstr "<mode>,<objecte>,<camí>"
+#: builtin/update-index.c
msgid "add the specified entry to the index"
msgstr "afegeix l'entrada especificada a l'índex"
+#: builtin/update-index.c
msgid "mark files as \"not changing\""
msgstr "marca els fitxers com a «no canviant»"
+#: builtin/update-index.c
msgid "clear assumed-unchanged bit"
msgstr "esborra el bit assumed-unchanged"
+#: builtin/update-index.c
msgid "mark files as \"index-only\""
msgstr "marca els fitxers com a «només índex»"
+#: builtin/update-index.c
msgid "clear skip-worktree bit"
msgstr "esborra el bit skip-worktree"
+#: builtin/update-index.c
msgid "do not touch index-only entries"
msgstr "no toquis les entrades de només índex"
+#: builtin/update-index.c
msgid "add to index only; do not add content to object database"
msgstr ""
"només afegeix a l'índex; no afegeixis el contingut a la base de dades "
"d'objectes"
+#: builtin/update-index.c
msgid "remove named paths even if present in worktree"
msgstr ""
"elimina els camins anomenats encara que estiguin presents en l'arbre de "
"treball"
+#: builtin/update-index.c
msgid "with --stdin: input lines are terminated by null bytes"
msgstr "amb --stdin: les línies d'entrada acaben amb octets nuls"
+#: builtin/update-index.c
msgid "read list of paths to be updated from standard input"
msgstr "llegeix la llista de camins a actualitzar des de l'entrada estàndard"
+#: builtin/update-index.c
msgid "add entries from standard input to the index"
msgstr "afegeix les entrades de l'entrada estàndard a l'índex"
+#: builtin/update-index.c
msgid "repopulate stages #2 and #3 for the listed paths"
msgstr "reemplena les «stage» #2 i #3 per als camins llistats"
+#: builtin/update-index.c
msgid "only update entries that differ from HEAD"
msgstr "només actualitza les entrades que difereixin de HEAD"
+#: builtin/update-index.c
msgid "ignore files missing from worktree"
msgstr "ignora els fitxers absents de l'arbre de treball"
+#: builtin/update-index.c
msgid "report actions to standard output"
msgstr "informa de les accions en la sortida estàndard"
+#: builtin/update-index.c
msgid "(for porcelains) forget saved unresolved conflicts"
msgstr "(per a porcellanes) oblida't dels conflictes no resolts ni desats"
+#: builtin/update-index.c
msgid "write index in this format"
msgstr "escriu l'índex en aquest format"
+#: builtin/update-index.c
msgid "report on-disk index format version"
msgstr "informa sobre la versió del format de l'índex del disc"
+#: builtin/update-index.c
msgid "enable or disable split index"
msgstr "habilita o inhabilita l'índex dividit"
+#: builtin/update-index.c
msgid "enable/disable untracked cache"
msgstr "habilita/inhabilita la memòria cau no seguida"
+#: builtin/update-index.c
msgid "test if the filesystem supports untracked cache"
msgstr "prova si el sistema de fitxers admet la memòria cau no seguida"
+#: builtin/update-index.c
msgid "enable untracked cache without testing the filesystem"
msgstr "habilita la memòria cau no seguida sense provar el sistema de fitxers"
+#: builtin/update-index.c
msgid "write out the index even if is not flagged as changed"
msgstr "escriu l'índex encara que no estigui marcat com a canviat"
+#: builtin/update-index.c
msgid "enable or disable file system monitor"
msgstr "habilita o inhabilita el monitor del sistema de fitxers"
+#: builtin/update-index.c
msgid "mark files as fsmonitor valid"
msgstr "marca els fitxers com a vàlids pel fsmonitor"
+#: builtin/update-index.c
msgid "clear fsmonitor valid bit"
msgstr "esborra el bit de validesa del fsmonitor"
+#: builtin/update-index.c
#, c-format
msgid "%d\n"
msgstr "%d\n"
+#: builtin/update-index.c
#, c-format
msgid "index-version: was %d, set to %d"
msgstr "index-version: era %d, s'ha establert a %d"
+#: builtin/update-index.c
msgid ""
"core.splitIndex is set to false; remove or change it, if you really want to "
"enable split index"
@@ -13462,6 +17156,7 @@ msgstr ""
"core.splitIndex està establert a fals; elimineu-lo o canviar-lo, si realment "
"voleu habilitar l'índex dividit"
+#: builtin/update-index.c
msgid ""
"core.splitIndex is set to true; remove or change it, if you really want to "
"disable split index"
@@ -13469,6 +17164,7 @@ msgstr ""
"core.splitIndex està establert a cert; elimineu-lo o canvieu-lo, si realment "
"voleu inhabilitar l'índex dividit"
+#: builtin/update-index.c
msgid ""
"core.untrackedCache is set to true; remove or change it, if you really want "
"to disable the untracked cache"
@@ -13476,9 +17172,11 @@ msgstr ""
"core.untrackedCache està establert a cert; elimineu-lo o canvieu-lo, si "
"realment voleu inhabilitar el cau no seguit"
+#: builtin/update-index.c
msgid "Untracked cache disabled"
msgstr "La memòria cau no seguida està inhabilitada"
+#: builtin/update-index.c
msgid ""
"core.untrackedCache is set to false; remove or change it, if you really want "
"to enable the untracked cache"
@@ -13486,96 +17184,124 @@ msgstr ""
"core.untrackedCache està establert a fals; elimineu-lo o canviar-lo, si "
"realment voleu habilitar el cau no seguit"
+#: builtin/update-index.c
#, c-format
msgid "Untracked cache enabled for '%s'"
msgstr "La memòria cau no seguida està habilitada per a «%s»"
+#: builtin/update-index.c
msgid "core.fsmonitor is unset; set it if you really want to enable fsmonitor"
msgstr ""
"core.fsmonitor està establert a fals; establiu-lo a cert si realment voleu "
"habilitar fsmonitor"
+#: builtin/update-index.c
msgid "fsmonitor enabled"
msgstr "fsmonitor habilitat"
+#: builtin/update-index.c
msgid ""
"core.fsmonitor is set; remove it if you really want to disable fsmonitor"
msgstr ""
"core.fsmonitor està establert a cert; elimineu-lo si realment voleu "
"inhabilitar fsmonitor"
+#: builtin/update-index.c
msgid "fsmonitor disabled"
msgstr "fsmonitor inhabilitat"
-msgid "git update-ref [<options>] -d <refname> [<old-val>]"
-msgstr "git update-ref [<opcions>] -d <nom-de-referència> [<valor-antic>]"
+#: builtin/update-ref.c
+msgid "git update-ref [<options>] -d <refname> [<old-oid>]"
+msgstr "git update-ref [<opcions>] -d <nom-referència> [<oid-vell>]"
-msgid "git update-ref [<options>] <refname> <new-val> [<old-val>]"
-msgstr ""
-"git update-ref [<opcions>] <nom-de-referència> <valor-nou> [<valor-antic>]"
+#: builtin/update-ref.c
+msgid "git update-ref [<options>] <refname> <new-oid> [<old-oid>]"
+msgstr "git update-ref [<opcions>] <nom-referència> <oid-nou> [<oid-vell>]"
+#: builtin/update-ref.c
msgid "git update-ref [<options>] --stdin [-z]"
msgstr "git update-ref [<opcions>] --stdin [-z]"
+#: builtin/update-ref.c
msgid "delete the reference"
msgstr "suprimeix la referència"
+#: builtin/update-ref.c
msgid "update <refname> not the one it points to"
-msgstr "actualitza <nom de referència>, no la que apunti"
+msgstr "actualitza <nom-referència>, no la que apunti"
+#: builtin/update-ref.c
msgid "stdin has NUL-terminated arguments"
msgstr "stdin té arguments acabats amb NUL"
+#: builtin/update-ref.c
msgid "read updates from stdin"
msgstr "llegeix les actualitzacions des de stdin"
+#: builtin/update-server-info.c
msgid "update the info files from scratch"
msgstr "actualitza els fitxers d'informació des de zero"
+#: builtin/upload-pack.c
msgid ""
"git-upload-pack [--[no-]strict] [--timeout=<n>] [--stateless-rpc]\n"
" [--advertise-refs] <directory>"
msgstr ""
"git-upload-pack [--[no-]strict] [--timeout=<n>] [--stateless-rpc]\n"
-" [--advertise-refs] <directory>"
+" [--advertise-refs] <directori>"
+#: builtin/upload-pack.c t/helper/test-serve-v2.c
msgid "quit after a single request/response exchange"
msgstr "surt després d'un sol intercanvi de sol·licitud/resposta"
+#: builtin/upload-pack.c
msgid "serve up the info/refs for git-http-backend"
msgstr "serveix les info/refs per a git-http-backend"
+#: builtin/upload-pack.c
msgid "do not try <directory>/.git/ if <directory> is no Git directory"
msgstr ""
"no intentis <directori>/.git/ si <directori> no és cap directori del Git"
+#: builtin/upload-pack.c
msgid "interrupt transfer after <n> seconds of inactivity"
msgstr "interromp la transferència després de <n> segons d'inactivitat"
+#: builtin/verify-commit.c
msgid "git verify-commit [-v | --verbose] [--raw] <commit>..."
msgstr "git verify-commit [-v | --verbose] [--raw] <comissió>..."
+#: builtin/verify-commit.c
msgid "print commit contents"
msgstr "imprimeix els continguts de la comissió"
+#: builtin/verify-commit.c builtin/verify-tag.c
msgid "print raw gpg status output"
msgstr "imprimeix la sortida crua de l'estat gpg"
+#: builtin/verify-pack.c
msgid "git verify-pack [-v | --verbose] [-s | --stat-only] [--] <pack>.idx..."
-msgstr "git verify-pack [-v | --verbose] [-s | --stat-only] [--] <pack>.idx..."
+msgstr ""
+"git verify-pack [-v | --verbose] [-s | --stat-only] [--] <paquet>.idx..."
+#: builtin/verify-pack.c
msgid "verbose"
msgstr "detallat"
+#: builtin/verify-pack.c
msgid "show statistics only"
msgstr "mostra només estadístiques"
+#: builtin/verify-tag.c
msgid "git verify-tag [-v | --verbose] [--format=<format>] [--raw] <tag>..."
-msgstr "git verify-tag [-v | --verbose] [--format=<format>] [--raw] <tag>..."
+msgstr ""
+"git verify-tag [-v | --verbose] [--format=<format>] [--raw] <etiqueta>..."
+#: builtin/verify-tag.c
msgid "print tag contents"
msgstr "imprimeix els continguts de l'etiqueta"
+#: builtin/worktree.c
msgid ""
"git worktree add [-f] [--detach] [--checkout] [--lock [--reason <string>]]\n"
" [--orphan] [(-b | -B) <new-branch>] <path> [<commit-ish>]"
@@ -13583,30 +17309,39 @@ msgstr ""
"git worktree add [-f] [--detach] [--checkout] [--lock [--reason <cadena>]]\n"
" [--orphan] [(-b | -B) <new-branch>] <camí> [<commit-ish>]"
+#: builtin/worktree.c
msgid "git worktree list [-v | --porcelain [-z]]"
msgstr "git worktree list [-v | --porcelain [-z]]"
+#: builtin/worktree.c
msgid "git worktree lock [--reason <string>] <worktree>"
-msgstr "git worktree lock [--reason <string>] <worktree>"
+msgstr "git worktree lock [--reason <cadena>] <arbre-treball>"
+#: builtin/worktree.c
msgid "git worktree move <worktree> <new-path>"
-msgstr "git worktree move <arbre de treball> <camí-nou>"
+msgstr "git worktree move <arbre-treball> <camí-nou>"
+#: builtin/worktree.c
msgid "git worktree prune [-n] [-v] [--expire <expire>]"
msgstr "git worktree prune [-n] [-v] [--expire <expire>]"
+#: builtin/worktree.c
msgid "git worktree remove [-f] <worktree>"
-msgstr "git worktree remove [-f] <worktree>"
+msgstr "git worktree remove [-f] <arbre-treball>"
+#: builtin/worktree.c
msgid "git worktree repair [<path>...]"
msgstr "git worktree repair [<camí>...]"
+#: builtin/worktree.c
msgid "git worktree unlock <worktree>"
-msgstr "git worktree unlock <worktree>"
+msgstr "git worktree unlock <arbre-treball>"
+#: builtin/worktree.c
msgid "No possible source branch, inferring '--orphan'"
msgstr "No hi ha cap branca d'origen possible, inferint «--orphan»"
+#: builtin/worktree.c
#, c-format
msgid ""
"If you meant to create a worktree containing a new unborn branch\n"
@@ -13621,6 +17356,7 @@ msgstr ""
"\n"
" git worktree add --orphan -b %s %s\n"
+#: builtin/worktree.c
#, c-format
msgid ""
"If you meant to create a worktree containing a new unborn branch\n"
@@ -13635,24 +17371,30 @@ msgstr ""
"\n"
" git worktree add --orphan %s\n"
+#: builtin/worktree.c
#, c-format
msgid "Removing %s/%s: %s"
msgstr "S'està eliminant %s/%s: %s"
+#: builtin/worktree.c
msgid "report pruned working trees"
msgstr "informa dels arbres de treball podats"
+#: builtin/worktree.c
msgid "expire working trees older than <time>"
msgstr "fes caducar els arbres de treball més antics que <data>"
+#: builtin/worktree.c
#, c-format
msgid "'%s' already exists"
msgstr "«%s» ja existeix"
+#: builtin/worktree.c
#, c-format
msgid "unusable worktree destination '%s'"
msgstr "destinació de l'arbre de treball no utilitzable «%s»"
+#: builtin/worktree.c
#, c-format
msgid ""
"'%s' is a missing but locked worktree;\n"
@@ -13662,6 +17404,7 @@ msgstr ""
"useu «%s -f -f» per a sobreescriure-ho, o «unlock» i «prune» o «remove» per "
"a netejar"
+#: builtin/worktree.c
#, c-format
msgid ""
"'%s' is a missing but already registered worktree;\n"
@@ -13670,54 +17413,66 @@ msgstr ""
"manca «%s» però ja està registrat a l'arbre de treball;\n"
"useu «%s» per a sobreescriure-ho, o «prune» o «remove» per a netejar"
+#: builtin/worktree.c
#, c-format
msgid "failed to copy '%s' to '%s'; sparse-checkout may not work correctly"
msgstr ""
"no s'ha pogut copiar «%s» a «%s»; «sparse-checkout» pot no funcionar "
"correctament"
+#: builtin/worktree.c
#, c-format
msgid "failed to copy worktree config from '%s' to '%s'"
msgstr ""
"no s'ha pogut copiar la configuració de l'arbre de treball de «%s» a «%s»"
+#: builtin/worktree.c
#, c-format
msgid "failed to unset '%s' in '%s'"
msgstr "no s'ha pogut desassignar «%s» a «%s»"
+#: builtin/worktree.c
#, c-format
msgid "could not create directory of '%s'"
msgstr "no s'ha pogut crear directori de «%s»"
+#: builtin/worktree.c
msgid "initializing"
msgstr "s'està inicialitzant"
+#: builtin/worktree.c
#, c-format
msgid "could not find created worktree '%s'"
msgstr "no s'ha pogut trobar l'arbre de treball creat «%s»"
+#: builtin/worktree.c
#, c-format
msgid "Preparing worktree (new branch '%s')"
msgstr "S'està preparant l'arbre de treball (branca nova «%s»)"
+#: builtin/worktree.c
#, c-format
msgid "Preparing worktree (resetting branch '%s'; was at %s)"
msgstr ""
"S'està preparant l'arbre de treball (s'està reiniciant la branca «%s»; "
"estava a %s)"
+#: builtin/worktree.c
#, c-format
msgid "Preparing worktree (checking out '%s')"
msgstr "S'està preparant l'arbre de treball (s'està agafant «%s»)"
+#: builtin/worktree.c
#, c-format
msgid "unreachable: invalid reference: %s"
msgstr "no accessible: referència no vàlida: %s"
+#: builtin/worktree.c
#, c-format
msgid "Preparing worktree (detached HEAD %s)"
msgstr "S'està preparant l'arbre de treball (HEAD %s separat)"
+#: builtin/worktree.c
#, c-format
msgid ""
"HEAD points to an invalid (or orphaned) reference.\n"
@@ -13728,6 +17483,7 @@ msgstr ""
"Camí HEAD: «%s»\n"
"Contingut HEAD: «%s»"
+#: builtin/worktree.c
msgid ""
"No local or remote refs exist despite at least one remote\n"
"present, stopping; use 'add -f' to override or fetch a remote first"
@@ -13735,94 +17491,120 @@ msgstr ""
"No hi ha referències locals o remotes malgrat hi existeix almenys un\n"
"remot, aturada; useu «add -f» per a anul·lar o obtenir primer un remot"
+#: builtin/worktree.c
msgid "checkout <branch> even if already checked out in other worktree"
msgstr "agafa <branca> encara que sigui agafada en altre arbre de treball"
+#: builtin/worktree.c
msgid "create a new branch"
msgstr "crea una branca nova"
+#: builtin/worktree.c
msgid "create or reset a branch"
msgstr "crea o restableix una branca"
+#: builtin/worktree.c
msgid "create unborn branch"
msgstr "crea una branca no nascuda"
+#: builtin/worktree.c
msgid "populate the new working tree"
msgstr "emplena l'arbre de treball nou"
+#: builtin/worktree.c
msgid "keep the new working tree locked"
msgstr "mantén l'arbre de treball nou bloquejat"
+#: builtin/worktree.c
msgid "reason for locking"
msgstr "raó per a bloquejar"
+#: builtin/worktree.c
msgid "set up tracking mode (see git-branch(1))"
msgstr "configura el mode de seguiment (vegeu git-branch(1))"
+#: builtin/worktree.c
msgid "try to match the new branch name with a remote-tracking branch"
msgstr ""
"prova de fer coincidir el nom de la branca nova amb una branca amb seguiment "
"remot"
+#: builtin/worktree.c diff.c parse-options.c
#, c-format
msgid "options '%s', '%s', and '%s' cannot be used together"
msgstr "les opcions «%s», «%s», i «%s» no es poden usar juntes"
+#: builtin/worktree.c
#, c-format
msgid "option '%s' and commit-ish cannot be used together"
msgstr "opció «%s» i les de comissió no es poden usar juntes"
+#: builtin/worktree.c
msgid "added with --lock"
msgstr "afegit amb --lock"
+#: builtin/worktree.c
msgid "--[no-]track can only be used if a new branch is created"
msgstr "--[no-]track només es pot usar si es crea una branca nova"
+#: builtin/worktree.c
msgid "show extended annotations and reasons, if available"
msgstr "mostra les anotacions esteses i les raons, si estan disponibles"
+#: builtin/worktree.c
msgid "add 'prunable' annotation to worktrees older than <time>"
msgstr ""
"afegeix l'anotació «prunable» als arbres de treball més antics que <data>"
+#: builtin/worktree.c
msgid "terminate records with a NUL character"
msgstr "finalitza els registres amb un caràcter NUL"
+#: builtin/worktree.c
#, c-format
msgid "'%s' is not a working tree"
msgstr "«%s» no és un arbre de treball"
+#: builtin/worktree.c
msgid "The main working tree cannot be locked or unlocked"
msgstr "No es pot bloquejar ni desbloquejar l'arbre de treball principal"
+#: builtin/worktree.c
#, c-format
msgid "'%s' is already locked, reason: %s"
msgstr "«%s» ja està bloquejat, raó: «%s»"
+#: builtin/worktree.c
#, c-format
msgid "'%s' is already locked"
msgstr "«%s» ja està bloquejat"
+#: builtin/worktree.c
#, c-format
msgid "'%s' is not locked"
msgstr "«%s» no està bloquejat"
+#: builtin/worktree.c
msgid "working trees containing submodules cannot be moved or removed"
msgstr ""
"els arbres de treball que contenen submòduls no es poden moure ni eliminar"
+#: builtin/worktree.c
msgid "force move even if worktree is dirty or locked"
msgstr ""
"força el moviment encara que l'arbre de treball estigui brut o bloquejat"
+#: builtin/worktree.c
#, c-format
msgid "'%s' is a main working tree"
msgstr "«%s» és un arbre de treball principal"
+#: builtin/worktree.c
#, c-format
msgid "could not figure out destination name from '%s'"
msgstr "no s'ha pogut deduir el nom de destí des de «%s»"
+#: builtin/worktree.c
#, c-format
msgid ""
"cannot move a locked working tree, lock reason: %s\n"
@@ -13831,6 +17613,7 @@ msgstr ""
"no es pot moure un arbre de treball bloquejat, raó del bloqueig: %s\n"
"useu primer «move -f -f» per a sobreescriure'l o desbloquejar-lo primer"
+#: builtin/worktree.c
msgid ""
"cannot move a locked working tree;\n"
"use 'move -f -f' to override or unlock first"
@@ -13838,31 +17621,38 @@ msgstr ""
"no es pot moure un arbre de treball bloquejat;\n"
"useu primer «move -f -f» per a sobreescriure'l o desbloquejar-lo primer"
+#: builtin/worktree.c
#, c-format
msgid "validation failed, cannot move working tree: %s"
msgstr "la validació ha fallat, no es pot moure l'arbre de treball: %s"
+#: builtin/worktree.c
#, c-format
msgid "failed to move '%s' to '%s'"
msgstr "s'ha produït un error en moure «%s» a «%s»"
+#: builtin/worktree.c
#, c-format
msgid "failed to run 'git status' on '%s'"
msgstr "no s'ha pogut executar «git status» a «%s»"
+#: builtin/worktree.c
#, c-format
msgid "'%s' contains modified or untracked files, use --force to delete it"
msgstr ""
"«%s» conté fitxers modificats o no seguits, useu --force per a suprimir-los"
+#: builtin/worktree.c
#, c-format
msgid "failed to run 'git status' on '%s', code %d"
msgstr "no s'ha pogut executar «git status» a «%s», codi %d"
+#: builtin/worktree.c
msgid "force removal even if worktree is dirty or locked"
msgstr ""
"força l'eliminació encara que l'arbre de treball estigui brut o bloquejat"
+#: builtin/worktree.c
#, c-format
msgid ""
"cannot remove a locked working tree, lock reason: %s\n"
@@ -13871,6 +17661,7 @@ msgstr ""
"no es pot suprimir un arbre de treball bloquejat, raó del bloqueig: %s\n"
"useu primer «remove -f -f» per a sobreescriure'l o desbloquejar-lo"
+#: builtin/worktree.c
msgid ""
"cannot remove a locked working tree;\n"
"use 'remove -f -f' to override or unlock first"
@@ -13878,109 +17669,135 @@ msgstr ""
"no es pot suprimir un arbre de treball bloquejat;\n"
"useu primer «remove -f -f» per a sobreescriure'l o desbloquejar-lo"
+#: builtin/worktree.c
#, c-format
msgid "validation failed, cannot remove working tree: %s"
msgstr "la validació ha fallat, no es pot suprimir l'arbre de treball: %s"
+#: builtin/worktree.c
#, c-format
msgid "repair: %s: %s"
msgstr "repara: %s: %s"
+#: builtin/worktree.c
#, c-format
msgid "error: %s: %s"
msgstr "error: %s: %s"
+#: builtin/write-tree.c
msgid "git write-tree [--missing-ok] [--prefix=<prefix>/]"
msgstr "git write-tree [--missing-ok] [--prefix=<prefix>/]"
+#: builtin/write-tree.c
msgid "<prefix>/"
msgstr "<prefix>/"
+#: builtin/write-tree.c
msgid "write tree object for a subdirectory <prefix>"
msgstr "escriu l'objecte d'arbre per a un subdirectori <prefix>"
+#: builtin/write-tree.c
msgid "only useful for debugging"
msgstr "només útil per a la depuració"
+#: bulk-checkin.c
msgid "core.fsyncMethod = batch is unsupported on this platform"
msgstr "core.fsyncMethod = batch no és compatible amb aquesta plataforma"
+#: bundle-uri.c
#, c-format
msgid "could not parse bundle list key %s with value '%s'"
msgstr ""
"no s'ha pogut analitzar la clau de llista de paquets %s amb el valor «%s»"
+#: bundle-uri.c
#, c-format
msgid "bundle list at '%s' has no mode"
msgstr "la llista de farcells a «%s» no té mode"
+#: bundle-uri.c
msgid "failed to create temporary file"
msgstr "no s'ha pogut crear un fitxer temporal"
+#: bundle-uri.c
msgid "insufficient capabilities"
msgstr "capacitats insuficients"
+#: bundle-uri.c
#, c-format
msgid "file downloaded from '%s' is not a bundle"
msgstr "el fitxer baixat de «%s» no és un paquet"
+#: bundle-uri.c
msgid "failed to store maximum creation token"
msgstr "no s'ha pogut emmagatzemar el testimoni de creació màxim"
+#: bundle-uri.c
#, c-format
msgid "unrecognized bundle mode from URI '%s'"
msgstr "no s'ha reconegut el model del farcell de l'URI «%s»"
+#: bundle-uri.c
#, c-format
msgid "exceeded bundle URI recursion limit (%d)"
msgstr "s'ha excedit el límit de recursió URI del paquet (%d)"
+#: bundle-uri.c
#, c-format
msgid "failed to download bundle from URI '%s'"
msgstr "no s'ha pogut baixar el paquet de l'URI «%s»"
+#: bundle-uri.c
#, c-format
msgid "file at URI '%s' is not a bundle or bundle list"
msgstr "el fitxer a l'URI «%s» no és farcell o una llista de farcells"
+#: bundle-uri.c
#, c-format
msgid "bundle-uri: unexpected argument: '%s'"
msgstr "bundle-uri: argument inesperat: «%s»"
+#: bundle-uri.c
msgid "bundle-uri: expected flush after arguments"
msgstr "bundle-uri: s'esperava una neteja després dels arguments"
+#: bundle-uri.c
msgid "bundle-uri: got an empty line"
msgstr "bundle-uri: té una línia buida"
+#: bundle-uri.c
msgid "bundle-uri: line is not of the form 'key=value'"
msgstr "bundle-uri: la línia no és de la forma «key=value»"
+#: bundle-uri.c
msgid "bundle-uri: line has empty key or value"
msgstr "bundle-uri: la línia té una clau o un valor buit"
+#: bundle.c
#, c-format
msgid "unrecognized bundle hash algorithm: %s"
msgstr "algoritme de resum del farcell desconegut: %s"
+#: bundle.c
#, c-format
msgid "unknown capability '%s'"
msgstr "funcionalitat «%s» desconeguda"
+#: bundle.c
#, c-format
msgid "'%s' does not look like a v2 or v3 bundle file"
msgstr "«%s» no sembla un fitxer de farcell v2 o v3"
+#: bundle.c
#, c-format
msgid "unrecognized header: %s%s (%d)"
msgstr "capçalera no reconeguda: %s%s (%d)"
+#: bundle.c
msgid "Repository lacks these prerequisite commits:"
msgstr "Al repositori li manquen aquestes comissions prerequerides:"
-msgid "need a repository to verify a bundle"
-msgstr "cal un repositori per a verificar un farcell"
-
+#: bundle.c
msgid ""
"some prerequisite commits exist in the object store, but are not connected "
"to the repository's history"
@@ -13988,685 +17805,904 @@ msgstr ""
"hi ha algunes comissions requerides al magatzem d'objectes, però no estan "
"connectades a l'historial del repositori"
+#: bundle.c
#, c-format
msgid "The bundle contains this ref:"
msgid_plural "The bundle contains these %<PRIuMAX> refs:"
msgstr[0] "El farcell conté aquesta referència:"
msgstr[1] "El farcell conté aquestes %<PRIuMAX> referències:"
+#: bundle.c
msgid "The bundle records a complete history."
msgstr "El farcell registra una història completa."
+#: bundle.c
#, c-format
msgid "The bundle requires this ref:"
msgid_plural "The bundle requires these %<PRIuMAX> refs:"
msgstr[0] "El farcell requereix aquesta referència:"
msgstr[1] "El farcell requereix aquestes %<PRIuMAX> referències:"
+#: bundle.c
#, c-format
msgid "The bundle uses this hash algorithm: %s"
msgstr "El farcell utilitza aquest algoritme de resum: %s"
+#: bundle.c
#, c-format
msgid "The bundle uses this filter: %s"
msgstr "El farcell utilitza aquest filtre: %s"
+#: bundle.c
msgid "unable to dup bundle descriptor"
msgstr "no s'ha pogut duplicar el descriptor del farcell"
+#: bundle.c
msgid "Could not spawn pack-objects"
msgstr "No s'ha pogut engendrar el pack-objects"
+#: bundle.c
msgid "pack-objects died"
msgstr "el pack-objects s'ha mort"
+#: bundle.c
#, c-format
msgid "ref '%s' is excluded by the rev-list options"
msgstr "les opcions de la llista de revisions exclouen la referència «%s»"
+#: bundle.c
#, c-format
msgid "unsupported bundle version %d"
msgstr "versió del farcell no compatible %d"
+#: bundle.c
#, c-format
msgid "cannot write bundle version %d with algorithm %s"
msgstr "no es pot escriure la versió del farcell %d amb l'algorisme %s"
+#: bundle.c
msgid "Refusing to create empty bundle."
msgstr "S'està refusant crear un farcell buit."
+#: bundle.c
#, c-format
msgid "cannot create '%s'"
msgstr "no es pot crear «%s»"
+#: bundle.c
msgid "index-pack died"
msgstr "l'index-pack s'ha mort"
+#: chunk-format.c
msgid "terminating chunk id appears earlier than expected"
msgstr ""
"l'identificador de fragment de finalització apareix abans del que s'esperava"
+#: chunk-format.c
#, c-format
msgid "chunk id %<PRIx32> not %d-byte aligned"
-msgstr "ID del fragment %<PRIx32> no alineat %d-byte"
+msgstr "ID del fragment %<PRIx32> no alineat a %d-octets"
+#: chunk-format.c
#, c-format
msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
msgstr "desplaçament incorrecte del fragment %<PRIx64> i %<PRIx64>"
+#: chunk-format.c
#, c-format
msgid "duplicate chunk ID %<PRIx32> found"
msgstr "s'ha trobat un ID del fragment %<PRIx32> duplicat"
+#: chunk-format.c
#, c-format
msgid "final chunk has non-zero id %<PRIx32>"
msgstr "el fragment final té un id %<PRIx32> que no és zero"
+#: chunk-format.c
msgid "invalid hash version"
msgstr "especificació de resum no vàlida"
+#: color.c
#, c-format
msgid "invalid color value: %.*s"
msgstr "valor de color no vàlid: %.*s"
+#: command-list.h
msgid "Add file contents to the index"
msgstr "Afegeix els continguts dels fitxers a l'índex"
+#: command-list.h
msgid "Apply a series of patches from a mailbox"
msgstr "Aplica una sèrie de pedaços des d'una bústia de correu"
+#: command-list.h
msgid "Annotate file lines with commit information"
msgstr "Anota les línies del fitxer amb la informació de la comissió"
+#: command-list.h
msgid "Apply a patch to files and/or to the index"
msgstr "Aplica un pedaç a fitxer i/o a l'índex"
+#: command-list.h
msgid "Import a GNU Arch repository into Git"
msgstr "Importa un repositori GNU Arch a Git"
+#: command-list.h
msgid "Create an archive of files from a named tree"
msgstr "Crea un arxiu de fitxers des d'un arbre amb nom"
+#: command-list.h
msgid "Use binary search to find the commit that introduced a bug"
msgstr "Troba per cerca binària el canvi que hagi introduït un defecte"
+#: command-list.h
msgid "Show what revision and author last modified each line of a file"
msgstr ""
"Mostra quina revisió i autor ha modificat per últim cop cada línia d'un "
"fitxer"
+#: command-list.h
msgid "List, create, or delete branches"
msgstr "Llista, crea o suprimeix branques"
+#: command-list.h
msgid "Collect information for user to file a bug report"
msgstr "Recopila la informació per a l'usuari per a enviar un informe d'error"
+#: command-list.h
msgid "Move objects and refs by archive"
msgstr "Mou els objectes i les referències per arxiu"
+#: command-list.h
msgid "Provide contents or details of repository objects"
msgstr "Proporcioneu el contingut o els detalls dels objectes del repositori"
+#: command-list.h
msgid "Display gitattributes information"
msgstr "Mostra la informació de .gitattributes"
+#: command-list.h
msgid "Debug gitignore / exclude files"
msgstr "Depura gitignore / fitxers d'exclusió"
+#: command-list.h
msgid "Show canonical names and email addresses of contacts"
msgstr "Mostra els noms canònics i les adreces electròniques dels contactes"
+#: command-list.h
msgid "Ensures that a reference name is well formed"
msgstr "Assegura que un nom de referència està ben format"
+#: command-list.h
msgid "Switch branches or restore working tree files"
msgstr "Canvia de branca o restaura els fitxers de l'arbre de treball"
+#: command-list.h
msgid "Copy files from the index to the working tree"
msgstr "Copia fitxers des de l'índex a l'arbre de treball"
+#: command-list.h
msgid "Find commits yet to be applied to upstream"
msgstr "Troba les comissions que encara s'han d'aplicar a la font"
+#: command-list.h
msgid "Apply the changes introduced by some existing commits"
msgstr "Aplica els canvis introduïts per algunes comissions existents"
+#: command-list.h
msgid "Graphical alternative to git-commit"
msgstr "Alternativa gràfica a git-commit"
+#: command-list.h
msgid "Remove untracked files from the working tree"
msgstr "Elimina els fitxers no seguits de l'arbre de treball"
+#: command-list.h
msgid "Clone a repository into a new directory"
msgstr "Clona un repositori a un directori nou"
+#: command-list.h
msgid "Display data in columns"
msgstr "Mostra les dades en columnes"
+#: command-list.h
msgid "Record changes to the repository"
msgstr "Registra els canvis al repositori"
+#: command-list.h
msgid "Write and verify Git commit-graph files"
msgstr "Escriu i verifica els fitxers commit-graph de Git"
+#: command-list.h
msgid "Create a new commit object"
msgstr "Crea un objecte de comissió nou"
+#: command-list.h
msgid "Get and set repository or global options"
msgstr "Obté o estableix opcions de repositori o globals"
+#: command-list.h
msgid "Count unpacked number of objects and their disk consumption"
msgstr "Compta el nombre d'objectes desempaquetats i el seu consum de disc"
+#: command-list.h
msgid "Retrieve and store user credentials"
msgstr "Recupera i desa les credencials d'usuari"
+#: command-list.h
msgid "Helper to temporarily store passwords in memory"
msgstr "Ajudant per a emmagatzemar temporalment les contrasenyes en memòria"
+#: command-list.h
msgid "Helper to store credentials on disk"
msgstr "Ajudant per a emmagatzemar credencials a disc"
+#: command-list.h
msgid "Export a single commit to a CVS checkout"
msgstr "Exporta en una sola comissió a CVS checkout"
+#: command-list.h
msgid "Salvage your data out of another SCM people love to hate"
msgstr "Salveu les vostres dades d'un altre SMC al que la gent li agrada odiar"
+#: command-list.h
msgid "A CVS server emulator for Git"
msgstr "Un emulador de servidor CVS per al Git"
+#: command-list.h
msgid "A really simple server for Git repositories"
msgstr "Un servidor realment senzill per a repositoris Git"
+#: command-list.h
msgid "Give an object a human readable name based on an available ref"
msgstr ""
"Dona un nom llegible per a humans basant-se en les referències disponibles"
+#: command-list.h
msgid "Generate a zip archive of diagnostic information"
msgstr "Genera un arxiu zip d'informació de diagnòstic"
+#: command-list.h
msgid "Show changes between commits, commit and working tree, etc"
msgstr ""
"Mostra els canvis entre comissions, la comissió i l'arbre de treball, etc"
+#: command-list.h
msgid "Compares files in the working tree and the index"
msgstr "Compara fitxers en l'arbre de treball i l'índex"
+#: command-list.h
msgid "Compare a tree to the working tree or index"
msgstr "Compara un arbre amb l'arbre de treball o l'índex"
+#: command-list.h
msgid "Compares the content and mode of blobs found via two tree objects"
msgstr ""
"Compara el contingut i el mode dels blobs trobats a través de dos objectes "
"d'arbre"
+#: command-list.h
msgid "Show changes using common diff tools"
msgstr "Mostra els canvis usant eines diff comunes"
+#: command-list.h
msgid "Git data exporter"
msgstr "Exportador de dades del Git"
+#: command-list.h
msgid "Backend for fast Git data importers"
msgstr "Rerefons per a importadors ràpids de dades de Git"
+#: command-list.h
msgid "Download objects and refs from another repository"
msgstr "Baixa objectes i referències d'un altre repositori"
+#: command-list.h
msgid "Receive missing objects from another repository"
msgstr "Rep els objectes que manquen des d'un altre repositori"
+#: command-list.h
msgid "Rewrite branches"
msgstr "Torna a escriure les branques"
+#: command-list.h
msgid "Produce a merge commit message"
msgstr "Produeix un missatge de comissió de fusió"
+#: command-list.h
msgid "Output information on each ref"
msgstr "Mostra la informació en cada referència"
+#: command-list.h
msgid "Run a Git command on a list of repositories"
msgstr "Executa una ordre Git en una llista de repositoris"
+#: command-list.h
msgid "Prepare patches for e-mail submission"
msgstr "Prepara pedaços per a enviar-los per correu electrònic"
+#: command-list.h
msgid "Verifies the connectivity and validity of the objects in the database"
msgstr "Verifica la connectivitat i validesa dels objectes a la base de dades"
+#: command-list.h
msgid "Cleanup unnecessary files and optimize the local repository"
msgstr "Neteja els fitxers innecessaris i optimitza el repositori local"
+#: command-list.h
msgid "Extract commit ID from an archive created using git-archive"
msgstr "Extreu l'ID de la comissió d'un arxiu creat amb el git-archive"
+#: command-list.h
msgid "Print lines matching a pattern"
msgstr "Imprimeix les línies coincidents amb un patró"
+#: command-list.h
msgid "A portable graphical interface to Git"
msgstr "Una interfície gràfica portable per al Git"
+#: command-list.h
msgid "Compute object ID and optionally create an object from a file"
msgstr ""
"Calcula l'ID de l'objecte i opcionalment crea un objecte des del fitxer"
+#: command-list.h
msgid "Display help information about Git"
msgstr "Mostra informació d'ajuda del Git"
+#: command-list.h
msgid "Run git hooks"
msgstr "Executa els lligams del git"
+#: command-list.h
msgid "Server side implementation of Git over HTTP"
msgstr "Implementació al servidor del Git sobre HTTP"
+#: command-list.h
msgid "Download from a remote Git repository via HTTP"
msgstr "Baixa des d'un repositori Git remot via HTTP"
+#: command-list.h
msgid "Push objects over HTTP/DAV to another repository"
msgstr "Pujar objectes sobre HTTP/DAV a un altre repositori"
+#: command-list.h
msgid "Send a collection of patches from stdin to an IMAP folder"
msgstr ""
"Envia una col·lecció de pedaços des de l'entrada estàndard a una carpeta IMAP"
+#: command-list.h
msgid "Build pack index file for an existing packed archive"
msgstr ""
"Construeix el fitxer d'índex del paquet per a un arxiu empaquetat existent"
+#: command-list.h
msgid "Create an empty Git repository or reinitialize an existing one"
msgstr "Crea un repositori de Git buit o reinicialitza un existent"
+#: command-list.h
msgid "Instantly browse your working repository in gitweb"
msgstr "Navegueu instantàniament pel vostre repositori de treball a gitweb"
+#: command-list.h
msgid "Add or parse structured information in commit messages"
msgstr ""
"Afegeix o analitza la informació estructurada en els missatges de comissió"
+#: command-list.h
msgid "Show commit logs"
msgstr "Mostra els registres de comissió"
+#: command-list.h
msgid "Show information about files in the index and the working tree"
msgstr "Mostra informació sobre els fitxers a l'índex i a l'arbre de treball"
+#: command-list.h
msgid "List references in a remote repository"
msgstr "Mostra les referències d'un repositori remot"
+#: command-list.h
msgid "List the contents of a tree object"
msgstr "Mostra els continguts d'un objecte de l'arbre"
+#: command-list.h
msgid "Extracts patch and authorship from a single e-mail message"
msgstr "Extreu el pedaç i l'autoria d'un sol missatge de correu electrònic"
+#: command-list.h
msgid "Simple UNIX mbox splitter program"
msgstr "Programa de divisió mbox simple per a UNIX"
+#: command-list.h
msgid "Run tasks to optimize Git repository data"
msgstr "Executa tasques per a optimitzar les dades del repositori Git"
+#: command-list.h
msgid "Join two or more development histories together"
msgstr "Uneix dues o més històries de desenvolupament"
+#: command-list.h
msgid "Find as good common ancestors as possible for a merge"
msgstr "Troba els millors avantpassats comuns possibles per a una fusió"
+#: command-list.h
msgid "Run a three-way file merge"
msgstr "Executa una fusió de fitxers de tres vies"
+#: command-list.h
msgid "Run a merge for files needing merging"
msgstr "Executa una fusió per als fitxers que cal fusionar"
+#: command-list.h
msgid "The standard helper program to use with git-merge-index"
msgstr "El programa d'ajuda estàndard a utilitzar amb git-merge-index"
+#: command-list.h
msgid "Perform merge without touching index or working tree"
msgstr "Realitza la fusió sense tocar l'índex o l'arbre de treball"
+#: command-list.h
msgid "Run merge conflict resolution tools to resolve merge conflicts"
msgstr ""
"Executa eines de resolució de conflictes per a resoldre conflictes de fusió"
+#: command-list.h
msgid "Creates a tag object with extra validation"
msgstr "Crea un objecte etiqueta amb validació addicional"
+#: command-list.h
msgid "Build a tree-object from ls-tree formatted text"
msgstr "Construeix un objecte en arbre a partir de text formatat amb ls-tree"
+#: command-list.h
msgid "Write and verify multi-pack-indexes"
msgstr "Escriu i verifica els índexs multipaquet"
+#: command-list.h
msgid "Move or rename a file, a directory, or a symlink"
msgstr "Mou o canvia de nom a un fitxer, directori o enllaç simbòlic"
+#: command-list.h
msgid "Find symbolic names for given revs"
msgstr "Cerca noms simbòlics per a les revisions donades"
+#: command-list.h
msgid "Add or inspect object notes"
msgstr "Afegeix o inspecciona notes de l'objecte"
+#: command-list.h
msgid "Import from and submit to Perforce repositories"
msgstr "Importa des de i envia a repositoris Perforce"
+#: command-list.h
msgid "Create a packed archive of objects"
msgstr "Crea un arxiu empaquetat d'objectes"
+#: command-list.h
msgid "Find redundant pack files"
msgstr "Troba fitxers empaquetats redundants"
+#: command-list.h
msgid "Pack heads and tags for efficient repository access"
msgstr ""
"Empaqueta els caps i les etiquetes per a un accés eficient al repositori"
+#: command-list.h
msgid "Compute unique ID for a patch"
msgstr "Calcula un identificador únic per a cada pedaç"
+#: command-list.h
msgid "Prune all unreachable objects from the object database"
msgstr "Poda tots els objectes no accessibles de la base de dades d'objectes"
+#: command-list.h
msgid "Remove extra objects that are already in pack files"
msgstr "Elimina els objectes extres que ja estan en fitxers empaquetats"
+#: command-list.h
msgid "Fetch from and integrate with another repository or a local branch"
msgstr "Obtén i integra amb un altre repositori o una branca local"
+#: command-list.h
msgid "Update remote refs along with associated objects"
msgstr ""
"Actualitza les referències remotes juntament amb els objectes associats"
+#: command-list.h
msgid "Applies a quilt patchset onto the current branch"
msgstr "Aplica un conjunt de pedaços a la branca actual"
+#: command-list.h
msgid "Compare two commit ranges (e.g. two versions of a branch)"
msgstr "Compara dos rangs de comissions (p. ex. dues versions d'una branca)"
+#: command-list.h
msgid "Reads tree information into the index"
msgstr "Llegeix la informació de l'arbre a l'índex"
+#: command-list.h
msgid "Reapply commits on top of another base tip"
msgstr "Torna a aplicar les comissions sobre un altre punt de basament"
+#: command-list.h
msgid "Receive what is pushed into the repository"
msgstr "Rep el que s'envia al repositori"
+#: command-list.h
msgid "Manage reflog information"
msgstr "Gestiona la informació del registre de referències"
+# Baix nivell / nivell baix
+#: command-list.h
+msgid "Low-level access to refs"
+msgstr "Accés de baix nivell a referències"
+
+#: command-list.h
msgid "Manage set of tracked repositories"
msgstr "Gestiona el conjunt de repositoris seguits"
+#: command-list.h
msgid "Pack unpacked objects in a repository"
msgstr "Empaqueta els objectes desempaquetats en un repositori"
+#: command-list.h
msgid "Create, list, delete refs to replace objects"
msgstr "Crea, llista i esborra referències per a substituir objectes"
+#: command-list.h
msgid "EXPERIMENTAL: Replay commits on a new base, works with bare repos too"
msgstr ""
"EXPERIMENTAL: torna a reproduir comissions sobre una nova base, també "
"funciona amb repositoris nus"
+#: command-list.h
msgid "Generates a summary of pending changes"
msgstr "Genera un resum dels canvis pendents"
+#: command-list.h
msgid "Reuse recorded resolution of conflicted merges"
msgstr "Reutilitza la resolució registrada dels conflictes de fusió"
+#: command-list.h
msgid "Reset current HEAD to the specified state"
msgstr "Restableix la HEAD actual a l'estat especificat"
+#: command-list.h
msgid "Restore working tree files"
msgstr "Restaura els fitxers de l'arbre de treball"
+#: command-list.h
msgid "Lists commit objects in reverse chronological order"
msgstr "Mostra les comissions en ordre topològic invers"
+#: command-list.h
msgid "Pick out and massage parameters"
msgstr "Trieu i personalitzeu els paràmetres"
+#: command-list.h
msgid "Revert some existing commits"
msgstr "Reverteix comissions existents"
+#: command-list.h
msgid "Remove files from the working tree and from the index"
msgstr "Elimina fitxers de l'arbre de treball i de l'índex"
+#: command-list.h
msgid "Send a collection of patches as emails"
msgstr "Envia una col·lecció de pedaços com a correus electrònics"
+#: command-list.h
msgid "Push objects over Git protocol to another repository"
msgstr "Puja objectes sobre el protocol Git a un altre repositori"
+#: command-list.h
msgid "Git's i18n setup code for shell scripts"
msgstr ""
"Codi de configuració i18n del Git per als scripts de l'intèrpret d'ordres"
+#: command-list.h
msgid "Common Git shell script setup code"
msgstr "Codi de scripts de configuració comuns pel Git shell"
+#: command-list.h
msgid "Restricted login shell for Git-only SSH access"
msgstr "Intèrpret d'ordres d'entrada restringit només per a accés SSH al Git"
+#: command-list.h
msgid "Summarize 'git log' output"
msgstr "Resumeix la sortida «git log»"
+#: command-list.h
msgid "Show various types of objects"
msgstr "Mostra diversos tipus d'objectes"
+#: command-list.h
msgid "Show branches and their commits"
msgstr "Mostra les branques i les seves comissions"
+#: command-list.h
msgid "Show packed archive index"
msgstr "Mostra l'índex d'arxius empaquetat"
+#: command-list.h
msgid "List references in a local repository"
msgstr "Llista les referències en un repositori local"
+#: command-list.h
msgid "Reduce your working tree to a subset of tracked files"
msgstr "Redueix l'arbre de treball a un subconjunt de fitxers seguits"
+#: command-list.h
msgid "Add file contents to the staging area"
msgstr "Afegeix el contingut del fitxer a l'àrea de «staging»"
+#: command-list.h
msgid "Stash the changes in a dirty working directory away"
msgstr "Fes «stash» dels canvis en un directori de treball brut"
+#: command-list.h
msgid "Show the working tree status"
msgstr "Mostra l'estat de l'arbre de treball"
+#: command-list.h
msgid "Remove unnecessary whitespace"
msgstr "Elimina l'espai en blanc innecessari"
+#: command-list.h
msgid "Initialize, update or inspect submodules"
msgstr "Inicialitza, actualitza o inspecciona submòduls"
+#: command-list.h
msgid "Bidirectional operation between a Subversion repository and Git"
msgstr "Operació bidireccional entre un repositori a Subversion i Git"
+#: command-list.h
msgid "Switch branches"
msgstr "Commuta entre branques"
+#: command-list.h
msgid "Read, modify and delete symbolic refs"
msgstr "Llegeix, modifica i suprimeix referències simbòliques"
+#: command-list.h
msgid "Create, list, delete or verify a tag object signed with GPG"
msgstr ""
"Crea, llista, suprimeix o verifica un objecte d'etiqueta signat amb GPG"
+#: command-list.h
msgid "Creates a temporary file with a blob's contents"
msgstr "Crea un fitxer temporal amb els continguts dels blobs"
+#: command-list.h
msgid "Unpack objects from a packed archive"
msgstr "Desempaqueta objectes d'un arxiu empaquetat"
+#: command-list.h
msgid "Register file contents in the working tree to the index"
msgstr "Registra els continguts del fitxer en l'arbre de treball a l'índex"
+#: command-list.h
msgid "Update the object name stored in a ref safely"
msgstr ""
"Actualitza el nom de l'objecte emmagatzemat en una referència de forma segura"
+#: command-list.h
msgid "Update auxiliary info file to help dumb servers"
msgstr ""
"Actualitza el fitxer d'informació auxiliar per a ajudar als servidors ximples"
+#: command-list.h
msgid "Send archive back to git-archive"
msgstr "Envia l'arxiu de tornada al git-archive"
+#: command-list.h
msgid "Send objects packed back to git-fetch-pack"
msgstr "Envia els objectes empaquetats de tornada al git-fetch-pack"
+#: command-list.h
msgid "Show a Git logical variable"
msgstr "Mostra una variable lògica del Git"
+#: command-list.h
msgid "Check the GPG signature of commits"
msgstr "Verifica la signatura GPG de les comissions"
+#: command-list.h
msgid "Validate packed Git archive files"
msgstr "Valida els fitxers d'arxius Git empaquetats"
+#: command-list.h
msgid "Check the GPG signature of tags"
msgstr "Verifica la signatura GPG de les etiquetes"
+#: command-list.h
msgid "Display version information about Git"
msgstr "Mostra informació de la versió del Git"
+#: command-list.h
msgid "Show logs with differences each commit introduces"
msgstr "Mostra els registres amb les diferències que introdueix cada comissió"
+#: command-list.h
msgid "Manage multiple working trees"
msgstr "Gestiona múltiples arbres de treball"
+#: command-list.h
msgid "Create a tree object from the current index"
msgstr "Crea un objecte arbre des de l'índex actual"
+#: command-list.h
msgid "Defining attributes per path"
msgstr "La definició d'atributs per camí"
+#: command-list.h
msgid "Git command-line interface and conventions"
msgstr "Interfície i convencions de la línia d'ordres del Git"
+#: command-list.h
msgid "A Git core tutorial for developers"
msgstr "Un tutorial bàsic del Git per a desenvolupadors"
+#: command-list.h
msgid "Providing usernames and passwords to Git"
msgstr "Proporcionar noms d'usuari i contrasenyes a Git"
+#: command-list.h
msgid "Git for CVS users"
msgstr "Git per a usuaris del CVS"
+#: command-list.h
msgid "Tweaking diff output"
msgstr "Ajustament de la sortida de diferències"
+#: command-list.h
msgid "A useful minimum set of commands for Everyday Git"
msgstr "Un conjunt mínim útil d'ordres diàries del Git"
+#: command-list.h
msgid "Frequently asked questions about using Git"
msgstr "Preguntes freqüents sobre l'ús del Git"
+#: command-list.h
msgid "The bundle file format"
msgstr "El format del fitxer de farcell"
+#: command-list.h
msgid "Chunk-based file formats"
msgstr "Formats de fitxer basats en blocs"
+#: command-list.h
msgid "Git commit-graph format"
msgstr "Format de graf de comissions del Git"
+#: command-list.h
msgid "Git index format"
msgstr "Format de l'índex del Git"
+#: command-list.h
msgid "Git pack format"
msgstr "format de paquet del Git"
+#: command-list.h
msgid "Git cryptographic signature formats"
msgstr "Formats de signatura criptogràfica del Git"
+#: command-list.h
msgid "A Git Glossary"
msgstr "Un glossari de Git"
+#: command-list.h
msgid "Hooks used by Git"
msgstr "Lligams utilitzats pel Git"
+#: command-list.h
msgid "Specifies intentionally untracked files to ignore"
msgstr "Especifica els fitxers intencionalment no seguits a ignorar"
+#: command-list.h
msgid "The Git repository browser"
msgstr "El navegador de repositoris Git"
+#: command-list.h
msgid "Map author/committer names and/or E-Mail addresses"
msgstr "Assigna noms d'autor i comitent i/o adreces de correu electrònic"
+#: command-list.h
msgid "Defining submodule properties"
msgstr "La definició de les propietats de submòduls"
+#: command-list.h
msgid "Git namespaces"
msgstr "Espais de noms del Git"
+#: command-list.h
msgid "Protocol v0 and v1 capabilities"
msgstr "Capacitats de protocol v0 i v1"
+#: command-list.h
msgid "Things common to various protocols"
msgstr "Coses comunes en diversos protocols"
+#: command-list.h
msgid "Git HTTP-based protocols"
msgstr "Protocols basats en HTTP del Git"
+#: command-list.h
msgid "How packs are transferred over-the-wire"
msgstr "Com es transfereixen els paquets en la xarxa"
+#: command-list.h
msgid "Git Wire Protocol, Version 2"
msgstr "Protocol Git Wire, versió 2"
+#: command-list.h
msgid "Helper programs to interact with remote repositories"
msgstr "Programes d'ajuda per a interactuar amb repositoris remots"
+#: command-list.h
msgid "Git Repository Layout"
msgstr "Disposició del repositori del Git"
+#: command-list.h
msgid "Specifying revisions and ranges for Git"
msgstr "L'especificació de revisions i rangs per al Git"
+#: command-list.h
msgid "Mounting one repository inside another"
msgstr "Muntant un repositori dins un altre"
+#: command-list.h
msgid "A tutorial introduction to Git"
msgstr "Un tutorial d'introducció al Git"
+#: command-list.h
msgid "A tutorial introduction to Git: part two"
msgstr "Un tutorial d'introducció al Git: segona part"
+#: command-list.h
msgid "Git web interface (web frontend to Git repositories)"
msgstr "Interfície web del Git (interfície web pels repositoris Git)"
+#: command-list.h
msgid "An overview of recommended workflows with Git"
msgstr "Una visió de conjunt de fluxos de treball recomanats amb Git"
+#: command-list.h
msgid "A tool for managing large Git repositories"
msgstr "Una eina per a gestionar dipòsits Git grans"
+#: commit-graph.c
msgid "commit-graph file is too small"
msgstr "el fitxer del graf de comissions és massa petit"
+#: commit-graph.c
msgid "commit-graph oid fanout chunk is wrong size"
msgstr ""
"el fragment de «fanout» de l'oid del graf de comissions és de mida incorrecta"
+#: commit-graph.c
msgid "commit-graph fanout values out of order"
msgstr "valors de graf de comissions de «fanout» estan fora d'ordre"
+#: commit-graph.c
msgid "commit-graph OID lookup chunk is the wrong size"
msgstr "el fragment de cerca OID és de mida incorrecta"
+#: commit-graph.c
msgid "commit-graph commit data chunk is wrong size"
msgstr "el fragment de dades del graf de comissions és de mida incorrecta"
+#: commit-graph.c
msgid "commit-graph generations chunk is wrong size"
msgstr ""
"el fragment de les generacions del graf de comissions és de mida incorrecta"
+#: commit-graph.c
msgid "commit-graph changed-path index chunk is too small"
msgstr ""
"el fragment d'índex del canvi del camí del graf de comissions és massa petit"
+#: commit-graph.c
#, c-format
msgid ""
"ignoring too-small changed-path chunk (%<PRIuMAX> < %<PRIuMAX>) in commit-"
@@ -14675,107 +18711,144 @@ msgstr ""
"s'ignorarà un fragment massa petit de camí canviat (%<PRIuMAX> < %<PRIuMAX>) "
"al fitxer del graf de comissions"
+#: commit-graph.c
#, c-format
msgid "commit-graph signature %X does not match signature %X"
msgstr ""
"la signatura del graf de comissions %X no coincideix amb la signatura %X"
+#: commit-graph.c
#, c-format
msgid "commit-graph version %X does not match version %X"
msgstr "la versió del graf de comissions %X no coincideix amb la versió %X"
+#: commit-graph.c
#, c-format
msgid "commit-graph hash version %X does not match version %X"
msgstr ""
"la versió del resum del graf de comissions %X no coincideix amb la versió %X"
+#: commit-graph.c
#, c-format
msgid "commit-graph file is too small to hold %u chunks"
msgstr ""
"el fitxer del graf de comissions és massa petit per a guardar %u fragments"
+#: commit-graph.c
msgid "commit-graph required OID fanout chunk missing or corrupted"
msgstr ""
"manca o està malmès el fragment del «fanout» OID requerit al graf de "
"comissions"
+#: commit-graph.c
msgid "commit-graph required OID lookup chunk missing or corrupted"
msgstr ""
"manca o està malmès el fragment de cerca d'OID requerit al graf de comissions"
+#: commit-graph.c
msgid "commit-graph required commit data chunk missing or corrupted"
msgstr ""
"manca o està corromput el fragment de dades de publicació requerit al graf "
"de comissions"
+#: commit-graph.c
+#, c-format
+msgid ""
+"disabling Bloom filters for commit-graph layer '%s' due to incompatible "
+"settings"
+msgstr ""
+"s'han inhabilitat els filtres de Bloom per a la capa del graf de comissions "
+"«%s»\n"
+"perquè els paràmetres són incompatibles"
+
+#: commit-graph.c
msgid "commit-graph has no base graphs chunk"
msgstr "el fragment del graf de comissions no té grafs de base"
+#: commit-graph.c
msgid "commit-graph base graphs chunk is too small"
msgstr "el fragment de grafs base de la gràfica de comissió és massa petit"
+#: commit-graph.c
msgid "commit-graph chain does not match"
msgstr "la cadena del graf de comissions no coincideix"
+#: commit-graph.c
#, c-format
msgid "commit count in base graph too high: %<PRIuMAX>"
msgstr "el nombre de comissions en el graf base és massa alt: %<PRIuMAX>"
+#: commit-graph.c
msgid "commit-graph chain file too small"
msgstr "el fitxer de cadena del graf de comissions és massa petit"
+#: commit-graph.c
#, c-format
msgid "invalid commit-graph chain: line '%s' not a hash"
msgstr ""
"la cadena del graf de comissions no és vàlida: la línia «%s» no és un hash"
+#: commit-graph.c
msgid "unable to find all commit-graph files"
msgstr "no es poden trobar tots els fitxers del graf de comissions"
+#: commit-graph.c
msgid "invalid commit position. commit-graph is likely corrupt"
msgstr ""
"posició de la comissió no vàlida. Probablement el graf de comissions està "
"malmès"
+#: commit-graph.c
#, c-format
msgid "could not find commit %s"
msgstr "no s'ha pogut trobar la comissió %s"
+#: commit-graph.c
msgid "commit-graph requires overflow generation data but has none"
msgstr ""
"el graf de comissions requereix dades de generació de desbordaments però no "
"en té cap"
+#: commit-graph.c
msgid "commit-graph overflow generation data is too small"
msgstr ""
"les dades de generació de desbordament del graf de comissions són massa "
"petites"
+#: commit-graph.c
msgid "commit-graph extra-edges pointer out of bounds"
msgstr "punter de vores extra del graf de comissió està fora dels límits"
+#: commit-graph.c
msgid "Loading known commits in commit graph"
msgstr "S'estan carregant comissions conegudes al graf de comissions"
+#: commit-graph.c
msgid "Expanding reachable commits in commit graph"
msgstr "S'estan expandint les comissions abastables al graf de comissions"
+#: commit-graph.c
msgid "Clearing commit marks in commit graph"
msgstr "S'estan esborrant les marques de comissions al graf de comissions"
+#: commit-graph.c
msgid "Computing commit graph topological levels"
msgstr "S'estan calculant els nivells topològics del graf de comissions"
+#: commit-graph.c
msgid "Computing commit graph generation numbers"
msgstr "S'estan calculant els nombres de generació del graf de comissions"
+#: commit-graph.c
msgid "Computing commit changed paths Bloom filters"
msgstr ""
-"S'estan calculant els canvis les rutes de la comissió en els filtres Bloom"
+"S'estan calculant els canvis les rutes de la comissió en els filtres de Bloom"
+#: commit-graph.c
msgid "Collecting referenced commits"
msgstr "S'estan recollint els objectes referenciats"
+#: commit-graph.c
#, c-format
msgid "Finding commits for commit graph in %<PRIuMAX> pack"
msgid_plural "Finding commits for commit graph in %<PRIuMAX> packs"
@@ -14784,128 +18857,166 @@ msgstr[0] ""
msgstr[1] ""
"S'estan cercant les comissions pel graf de comissions en %<PRIuMAX> paquets"
+#: commit-graph.c
#, c-format
msgid "error adding pack %s"
msgstr "error en afegir paquet %s"
+#: commit-graph.c
#, c-format
msgid "error opening index for %s"
msgstr "s'ha produït un error en obrir l'índex per «%s»"
+#: commit-graph.c
msgid "Finding commits for commit graph among packed objects"
msgstr ""
"S'estan cercant les comissions pel graf de comissions entre els objectes "
"empaquetats"
+#: commit-graph.c
msgid "Finding extra edges in commit graph"
msgstr "S'estan cercant les vores addicionals al graf de comissions"
+#: commit-graph.c
msgid "failed to write correct number of base graph ids"
msgstr ""
"s'ha produït un error en escriure el nombre correcte d'ids base del graf"
+#: commit-graph.c
msgid "unable to create temporary graph layer"
msgstr "no s'ha pogut crear una capa de graf temporal"
+#: commit-graph.c midx-write.c
#, c-format
msgid "unable to adjust shared permissions for '%s'"
msgstr "no s'han pogut ajustar els permisos compartits per a «%s»"
+#: commit-graph.c
#, c-format
msgid "Writing out commit graph in %d pass"
msgid_plural "Writing out commit graph in %d passes"
msgstr[0] "S'està escrivint el graf de comissions en %d pas"
msgstr[1] "S'està escrivint el graf de comissions en %d passos"
+#: commit-graph.c
msgid "unable to open commit-graph chain file"
msgstr "no s'ha pogut obrir el fitxer d'encadenament del graf de comissions"
+#: commit-graph.c
msgid "failed to rename base commit-graph file"
msgstr "no s'ha pogut canviar el nom del fitxer base del graf de comissions"
+#: commit-graph.c
msgid "failed to rename temporary commit-graph file"
msgstr ""
"no s'ha pogut canviar el nom del fitxer temporal del graf de comissions"
+#: commit-graph.c
#, c-format
msgid "cannot merge graphs with %<PRIuMAX>, %<PRIuMAX> commits"
msgstr "no es poden fusionar els gràfics amb %<PRIuMAX>, %<PRIuMAX>entregues"
+#: commit-graph.c
#, c-format
msgid "cannot merge graph %s, too many commits: %<PRIuMAX>"
msgstr "no es pot fusionar el graf %s, hi ha massa comissions: %<PRIuMAX>"
+#: commit-graph.c
msgid "Scanning merged commits"
msgstr "S'estan escanejant les comissions fusionades"
+#: commit-graph.c
msgid "Merging commit-graph"
msgstr "S'està fusionant el graf de comissions"
+#: commit-graph.c
msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
msgstr ""
"s'està intentant escriure un graf de comissions, però «core.commitGraph» "
"està desactivat"
+#: commit-graph.c
+#, c-format
+msgid ""
+"attempting to write a commit-graph, but 'commitGraph."
+"changedPathsVersion' (%d) is not supported"
+msgstr ""
+"s'ha intentat escriure un graf de comissió, però no s'admet 'commitGraph."
+"changedPathsVersion' (%d)"
+
+#: commit-graph.c
msgid "too many commits to write graph"
msgstr "massa comissions per a escriure un graf"
+#: commit-graph.c
msgid "the commit-graph file has incorrect checksum and is likely corrupt"
msgstr ""
"el fitxer commit-graph (graf de comissions) té una suma de verificació "
"incorrecta i probablement és corrupte"
+#: commit-graph.c
#, c-format
msgid "commit-graph has incorrect OID order: %s then %s"
msgstr "el graf de comissions té una ordre OID incorrecta; %s llavors %s"
+#: commit-graph.c
#, c-format
msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
msgstr ""
"el graf de comissions té un valor de «fanout» incorrecte: fanout[%d] = %u != "
"%u"
+#: commit-graph.c
#, c-format
msgid "failed to parse commit %s from commit-graph"
msgstr ""
"s'ha produït un error en analitzar la comissió %s del graf de comissions"
+#: commit-graph.c
#, c-format
msgid "failed to parse commit %s from object database for commit-graph"
msgstr ""
"no s'han pogut analitzar la comissió %s de la base de dades d'objectes per "
"al graf de comissions"
+#: commit-graph.c
#, c-format
msgid "root tree OID for commit %s in commit-graph is %s != %s"
msgstr ""
"OID de l'arbre arrel per a comissions %s en el graf de comissions és %s != %s"
+#: commit-graph.c
#, c-format
msgid "commit-graph parent list for commit %s is too long"
msgstr ""
"la llista de pares del graf de comissions per a la comissió %s és massa "
"llarga"
+#: commit-graph.c
#, c-format
msgid "commit-graph parent for %s is %s != %s"
msgstr "el pare pel graf de comissions %s és %s != %s"
+#: commit-graph.c
#, c-format
msgid "commit-graph parent list for commit %s terminates early"
msgstr "la llista pare del graf de comissions per %s acaba aviat"
+#: commit-graph.c
#, c-format
msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
msgstr ""
"generació del graf de comissions per a la comissió %s és %<PRIuMAX> < "
"%<PRIuMAX>"
+#: commit-graph.c
#, c-format
msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
msgstr ""
"la data d'enviament per a la comissió %s en el graf de comissions és "
"%<PRIuMAX> != %<PRIuMAX>"
+#: commit-graph.c
#, c-format
msgid ""
"commit-graph has both zero and non-zero generations (e.g., commits '%s' and "
@@ -14914,13 +19025,21 @@ msgstr ""
"El graf de comissió té tant generacions zero com no nul·les (p. ex., "
"comissions «%s» i «%s»)"
+#: commit-graph.c
msgid "Verifying commits in commit graph"
msgstr "S'estan verificant les comissions al graf de comissions"
+#: commit-reach.c sequencer.c
+#, c-format
+msgid "could not parse commit %s"
+msgstr "no s'ha pogut analitzar la comissió %s"
+
+#: commit.c
#, c-format
msgid "%s %s is not a commit!"
msgstr "%s %s no és una comissió!"
+#: commit.c
msgid ""
"Support for <GIT_DIR>/info/grafts is deprecated\n"
"and will be removed in a future Git version.\n"
@@ -14940,28 +19059,34 @@ msgstr ""
"Desactiveu aquest missatge executant\n"
"«git config advice.graftFileDeprecated false»"
+#: commit.c
#, c-format
msgid "commit %s exists in commit-graph but not in the object database"
msgstr ""
"la comissió %s existeix al graf de comissions però no a la base de dades "
"d'objectes"
+#: commit.c
#, c-format
msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
msgstr "La comissió %s té una signatura GPG no fiable, suposadament de %s."
+#: commit.c
#, c-format
msgid "Commit %s has a bad GPG signature allegedly by %s."
msgstr "La comissió %s té una signatura GPG incorrecta suposadament de %s."
+#: commit.c
#, c-format
msgid "Commit %s does not have a GPG signature."
msgstr "La comissió %s no té signatura GPG."
+#: commit.c
#, c-format
msgid "Commit %s has a good GPG signature by %s\n"
msgstr "La comissió %s té una signatura GPG bona de %s\n"
+#: commit.c
msgid ""
"Warning: commit message did not conform to UTF-8.\n"
"You may want to amend it after fixing the message, or set the config\n"
@@ -14972,203 +19097,260 @@ msgstr ""
"la variable de configuració i18n.commitencoding a la codificació que\n"
"usi el vostre projecte.\n"
+#: compat/compiler.h
msgid "no compiler information available\n"
msgstr "no hi ha informació disponible del compilador\n"
+#: compat/compiler.h
msgid "no libc information available\n"
msgstr "no hi ha informació disponible de libc\n"
+#: compat/disk.h
#, c-format
msgid "could not determine free disk size for '%s'"
msgstr "no s'ha pogut determinar l'espai de disc lliure per a «%s»"
+#: compat/disk.h
#, c-format
msgid "could not get info for '%s'"
msgstr "no s'ha pogut obtenir la informació per a «%s»"
+#: compat/fsmonitor/fsm-health-win32.c
#, c-format
msgid "[GLE %ld] health thread could not open '%ls'"
msgstr "[GLE %ld] el fil de salut no ha pogut obrir «%ls»"
+#: compat/fsmonitor/fsm-health-win32.c
#, c-format
msgid "[GLE %ld] health thread getting BHFI for '%ls'"
msgstr "[GLE %ld] s'està obtenint BHFI del fil de salut per a «%ls»"
+#: compat/fsmonitor/fsm-health-win32.c compat/fsmonitor/fsm-listen-win32.c
#, c-format
msgid "could not convert to wide characters: '%s'"
msgstr "no s'ha pogut convertir a caràcters amples: «%s»"
+#: compat/fsmonitor/fsm-health-win32.c
#, c-format
msgid "BHFI changed '%ls'"
msgstr "S'ha canviat BHFI «%ls»"
+#: compat/fsmonitor/fsm-health-win32.c
#, c-format
msgid "unhandled case in 'has_worktree_moved': %d"
msgstr "cas no gestionat a «has_worktree_moved»: %d"
+#: compat/fsmonitor/fsm-health-win32.c
#, c-format
msgid "health thread wait failed [GLE %ld]"
msgstr "ha fallat l'espera del fil de salut [GLE %ld]"
+#: compat/fsmonitor/fsm-ipc-darwin.c
#, c-format
msgid "Invalid path: %s"
msgstr "Camí no vàlid: «%s»"
+#: compat/fsmonitor/fsm-listen-darwin.c
msgid "Unable to create FSEventStream."
msgstr "No s'ha pogut crear el FSEventStream."
+#: compat/fsmonitor/fsm-listen-darwin.c
msgid "Failed to start the FSEventStream"
msgstr "No s'ha pogut iniciar el FSEventStream"
+#: compat/fsmonitor/fsm-listen-win32.c
#, c-format
msgid "[GLE %ld] could not convert path to UTF-8: '%.*ls'"
msgstr "[GLE %ld] no s'ha pogut convertir el camí a UTF-8: «%.*ls»"
+#: compat/fsmonitor/fsm-listen-win32.c
#, c-format
msgid "[GLE %ld] could not watch '%s'"
msgstr "[GLE %ld] no s'ha pogut vigilar «%s»"
+#: compat/fsmonitor/fsm-listen-win32.c
#, c-format
msgid "[GLE %ld] could not get longname of '%s'"
msgstr "[GLE %ld] no s'ha pogut obtenir el nom llarg de «%s»"
+#: compat/fsmonitor/fsm-listen-win32.c
#, c-format
msgid "ReadDirectoryChangedW failed on '%s' [GLE %ld]"
msgstr "Ha fallat ReadDirectoryChangedW a «%s» [GLE %ld]"
+#: compat/fsmonitor/fsm-listen-win32.c
#, c-format
msgid "GetOverlappedResult failed on '%s' [GLE %ld]"
msgstr "Ha fallat GetOverlappedResult a «%s» [GLE %ld]"
+#: compat/fsmonitor/fsm-listen-win32.c
#, c-format
msgid "could not read directory changes [GLE %ld]"
msgstr "no s'han pogut llegir els canvis de directori [GLE %ld]"
+#: compat/fsmonitor/fsm-path-utils-darwin.c
#, c-format
msgid "opendir('%s') failed"
msgstr "ha fallat opendir(«%s»)"
+#: compat/fsmonitor/fsm-path-utils-darwin.c
#, c-format
msgid "lstat('%s') failed"
msgstr "ha fallat lstat(«%s»)"
+#: compat/fsmonitor/fsm-path-utils-darwin.c
#, c-format
msgid "strbuf_readlink('%s') failed"
msgstr "ha fallat strbuf_readlink(«%s»)"
+#: compat/fsmonitor/fsm-path-utils-darwin.c
#, c-format
msgid "closedir('%s') failed"
msgstr "ha fallat closedir(«%s»)"
+#: compat/fsmonitor/fsm-path-utils-win32.c
#, c-format
msgid "[GLE %ld] unable to open for read '%ls'"
msgstr "[GLE %ld] no s'ha pogut obrir per a llegir «%ls»"
+#: compat/fsmonitor/fsm-path-utils-win32.c
#, c-format
msgid "[GLE %ld] unable to get protocol information for '%ls'"
msgstr "[GLE %ld] no s'ha pogut obtenir la informació del protocol per a «%ls»"
+#: compat/mingw.c
#, c-format
msgid "failed to copy SID (%ld)"
msgstr "no s'ha pogut copiar el SID (%ld)"
+#: compat/mingw.c
#, c-format
msgid "failed to get owner for '%s' (%ld)"
msgstr "no s'ha pogut obtenir el propietari de «%s» (%ld)"
+#: compat/obstack.c
msgid "memory exhausted"
msgstr "memòria esgotada"
+#: compat/regex/regcomp.c
msgid "Success"
msgstr "Èxit"
+#: compat/regex/regcomp.c
msgid "No match"
msgstr "Cap coincidència"
+#: compat/regex/regcomp.c
msgid "Invalid regular expression"
msgstr "Expressió regular no vàlida"
+#: compat/regex/regcomp.c
msgid "Invalid collation character"
msgstr "El caràcter de col·lació no és vàlid"
+#: compat/regex/regcomp.c
msgid "Invalid character class name"
msgstr "Nom de la classe del caràcter no vàlid"
+#: compat/regex/regcomp.c
msgid "Trailing backslash"
msgstr "Barra inversa del final"
+#: compat/regex/regcomp.c
msgid "Invalid back reference"
msgstr "Referència anterior no vàlida"
+#: compat/regex/regcomp.c
msgid "Unmatched [ or [^"
msgstr "[ o [^ no emparellat"
+#: compat/regex/regcomp.c
msgid "Unmatched ( or \\("
msgstr "( o \\( no emparellat"
+#: compat/regex/regcomp.c
msgid "Unmatched \\{"
msgstr "\\{ no emparellat"
+#: compat/regex/regcomp.c
msgid "Invalid content of \\{\\}"
msgstr "Contingut no vàlid de \\{\\}"
+#: compat/regex/regcomp.c
msgid "Invalid range end"
msgstr "Fi d'interval no vàlid"
+#: compat/regex/regcomp.c
msgid "Memory exhausted"
msgstr "Memòria esgotada"
+#: compat/regex/regcomp.c
msgid "Invalid preceding regular expression"
msgstr "Expressió regular anterior no vàlida"
+#: compat/regex/regcomp.c
msgid "Premature end of regular expression"
msgstr "Fi prematur d'expressió regular"
+#: compat/regex/regcomp.c
msgid "Regular expression too big"
msgstr "Expressió regular és massa gran"
+#: compat/regex/regcomp.c
msgid "Unmatched ) or \\)"
msgstr ") o \\) no emparellat"
+#: compat/regex/regcomp.c
msgid "No previous regular expression"
msgstr "No hi ha expressió regular anterior"
+#: compat/simple-ipc/ipc-unix-socket.c compat/simple-ipc/ipc-win32.c
msgid "could not send IPC command"
msgstr "no s'ha pogut enviar l'ordre IPC"
+#: compat/simple-ipc/ipc-unix-socket.c compat/simple-ipc/ipc-win32.c
msgid "could not read IPC response"
msgstr "no s'ha pogut llegir la resposta IPC"
+#: compat/simple-ipc/ipc-unix-socket.c
#, c-format
msgid "could not start accept_thread '%s'"
msgstr "no s'ha pogut començar un fil «accept_thread» «%s»"
+#: compat/simple-ipc/ipc-unix-socket.c
#, c-format
msgid "could not start worker[0] for '%s'"
msgstr "no s'ha pogut iniciar el fil[0] per a «%s»"
+#: compat/simple-ipc/ipc-win32.c
#, c-format
msgid "ConnectNamedPipe failed for '%s' (%lu)"
msgstr "Ha fallat ConnectNamedPipe per a «%s» (%lu)"
+#: compat/simple-ipc/ipc-win32.c
#, c-format
msgid "could not create fd from pipe for '%s'"
msgstr "no s'ha pogut crear un fd a partir de la canonada per a «%s»"
+#: compat/simple-ipc/ipc-win32.c
#, c-format
msgid "could not start thread[0] for '%s'"
msgstr "no s'ha pogut iniciar el fil[0] per a «%s»"
+#: compat/simple-ipc/ipc-win32.c
#, c-format
msgid "wait for hEvent failed for '%s'"
msgstr "ha fallat l'espera de hEvent per a «%s»"
+#: compat/terminal.c
msgid "cannot resume in the background, please use 'fg' to resume"
msgstr "no es pot reprendre en segon pla, si us plau useu «fg» per a reprendre"
+#: compat/terminal.c
msgid "cannot restore terminal settings"
msgstr "no es poden restaurar els paràmetres del terminal"
+#: config.c
#, c-format
msgid ""
"exceeded maximum include depth (%d) while including\n"
@@ -15183,17 +19365,21 @@ msgstr ""
"\t%s\n"
"Això pot ser degut a inclusions circulars."
+#: config.c
#, c-format
msgid "could not expand include path '%s'"
msgstr "no s'ha pogut expandir el camí d'inclusió «%s»"
+#: config.c
msgid "relative config includes must come from files"
msgstr "les inclusions de configuració relatives han de venir de fitxers"
+#: config.c
msgid "relative config include conditionals must come from files"
msgstr ""
"els condicionals d'inclusió de configuració relatius han de venir de fitxers"
+#: config.c
msgid ""
"remote URLs cannot be configured in file directly or indirectly included by "
"includeIf.hasconfig:remote.*.url"
@@ -15201,273 +19387,353 @@ msgstr ""
"URL remots no es poden configurar en un fitxer directament o indirectament "
"inclòs per «includeIf.hasconfig:remote.*.url»"
+#: config.c
#, c-format
msgid "invalid config format: %s"
msgstr "format de configuració no vàlid: %s"
+#: config.c
#, c-format
msgid "missing environment variable name for configuration '%.*s'"
msgstr "falta el nom de la variable d'entorn per a la configuració «%.*s»"
+#: config.c
#, c-format
msgid "missing environment variable '%s' for configuration '%.*s'"
msgstr "falta la variable d'entorn «%s» per a la configuració «%.*s»"
+#: config.c
#, c-format
msgid "key does not contain a section: %s"
msgstr "la clau no conté una secció: «%s»"
+#: config.c
#, c-format
msgid "key does not contain variable name: %s"
msgstr "la clau no conté un nom de variable: «%s»"
+#: config.c sequencer.c
#, c-format
msgid "invalid key: %s"
msgstr "clau no vàlida: %s"
+#: config.c
#, c-format
msgid "invalid key (newline): %s"
msgstr "clau no vàlida (línia nova): %s"
+#: config.c
msgid "empty config key"
msgstr "clau de configuració buida"
+#: config.c
#, c-format
msgid "bogus config parameter: %s"
msgstr "paràmetre de configuració erroni: %s"
+#: config.c
#, c-format
msgid "bogus format in %s"
msgstr "format erroni a %s"
+#: config.c
#, c-format
msgid "bogus count in %s"
msgstr "comptatge erroni a %s"
+#: config.c
#, c-format
msgid "too many entries in %s"
msgstr "hi ha massa arguments a %s"
+#: config.c
#, c-format
msgid "missing config key %s"
msgstr "falta la clau de configuració %s"
+#: config.c
#, c-format
msgid "missing config value %s"
msgstr "falta el valor de configuració %s"
+#: config.c
#, c-format
msgid "bad config line %d in blob %s"
msgstr "línia de configuració %d errònia en el blob %s"
+#: config.c
#, c-format
msgid "bad config line %d in file %s"
msgstr "línia de configuració %d errònia en el fitxer %s"
+#: config.c
#, c-format
msgid "bad config line %d in standard input"
msgstr "línia de configuració %d errònia en l'entrada estàndard"
+#: config.c
#, c-format
msgid "bad config line %d in submodule-blob %s"
msgstr "línia de configuració %d errònia en el blob de submòdul %s"
+#: config.c
#, c-format
msgid "bad config line %d in command line %s"
msgstr "línia de configuració %d errònia en la línia d'ordres %s"
+#: config.c
#, c-format
msgid "bad config line %d in %s"
msgstr "línia de configuració %d errònia en %s"
+#: config.c
msgid "out of range"
msgstr "fora de rang"
+#: config.c
msgid "invalid unit"
msgstr "unitat no vàlida"
+#: config.c
#, c-format
msgid "bad numeric config value '%s' for '%s': %s"
msgstr "valor de configuració numèric erroni «%s» per «%s»: %s"
+#: config.c
#, c-format
msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
msgstr "valor de configuració numèric erroni «%s» per «%s» en el blob %s: %s"
+#: config.c
#, c-format
msgid "bad numeric config value '%s' for '%s' in file %s: %s"
msgstr "valor de configuració numèric «%s» erroni per «%s» en el fitxer %s: %s"
+#: config.c
#, c-format
msgid "bad numeric config value '%s' for '%s' in standard input: %s"
msgstr ""
"valor de configuració numèric «%s» erroni per «%s» en l'entrada estàndard: %s"
+#: config.c
#, c-format
msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
msgstr ""
"valor de configuració numèric «%s» erroni per «%s» en el blob de submòdul "
"%s: %s"
+#: config.c
#, c-format
msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
msgstr ""
"valor de configuració numèric «%s» erroni per «%s» en la línia d'ordres %s: "
"%s"
+#: config.c
#, c-format
msgid "bad numeric config value '%s' for '%s' in %s: %s"
msgstr "valor de configuració numèric incorrecte «%s» per «%s» en %s: %s"
+#: config.c
#, c-format
msgid "invalid value for variable %s"
msgstr "valor no vàlid per a la variable %s"
+#: config.c
#, c-format
msgid "ignoring unknown core.fsync component '%s'"
msgstr "s'ignora el component core.fsync «%s» desconegut"
+#: config.c
#, c-format
msgid "bad boolean config value '%s' for '%s'"
msgstr "valor de configuració booleà erroni «%s» per a «%s»"
+#: config.c
#, c-format
msgid "failed to expand user dir in: '%s'"
msgstr "s'ha produït un error en expandir el directori d'usuari en: «%s»"
+#: config.c
#, c-format
msgid "'%s' for '%s' is not a valid timestamp"
msgstr "«%s» per a «%s» no és una marca de temps vàlida"
+#: config.c
#, c-format
msgid "abbrev length out of range: %d"
msgstr "la longitud d'«abbrev» està fora de rang: %d"
+#: config.c
#, c-format
msgid "bad zlib compression level %d"
msgstr "nivell de compressió de zlib incorrecte %d"
-msgid "core.commentChar should only be one ASCII character"
-msgstr "core.commentChar només hauria de ser un caràcter ASCII"
+# newline → línia nova o salt de línia?
+#: config.c
+#, c-format
+msgid "%s cannot contain newline"
+msgstr "%s no pot contenir una nova línia"
+
+#: config.c
+#, c-format
+msgid "%s must have at least one character"
+msgstr "%s ha de tenir almenys un caràcter"
+#: config.c
#, c-format
msgid "ignoring unknown core.fsyncMethod value '%s'"
msgstr "s'ignora el valor desconegut «%s» de core.fsyncMethod"
+#: config.c
msgid "core.fsyncObjectFiles is deprecated; use core.fsync instead"
msgstr "core.fsyncObjectFiles és obsolet; useu core.fsync"
+#: config.c
#, c-format
msgid "invalid mode for object creation: %s"
msgstr "mode de creació d'objecte no vàlid: %s"
+#: config.c
#, c-format
msgid "malformed value for %s"
msgstr "valor no vàlid per a %s"
+#: config.c
#, c-format
msgid "malformed value for %s: %s"
msgstr "valor no vàlid per a %s: %s"
+#: config.c
msgid "must be one of nothing, matching, simple, upstream or current"
msgstr ""
"ha de ser un dels elements següents: nothing, matching, simple, upstream o "
"current"
+#: config.c
#, c-format
msgid "unable to load config blob object '%s'"
msgstr "no s'ha pogut carregar l'objecte blob de configuració «%s»"
+#: config.c
#, c-format
msgid "reference '%s' does not point to a blob"
msgstr "la referència «%s» no assenyala a un blob"
+#: config.c
#, c-format
msgid "unable to resolve config blob '%s'"
msgstr "no s'ha pogut resoldre el blob de configuració: «%s»"
+#: config.c
msgid "unable to parse command-line config"
msgstr "no s'ha pogut analitzar la configuració de la línia d'ordres"
+#: config.c
msgid "unknown error occurred while reading the configuration files"
msgstr "un error desconegut ha ocorregut en llegir els fitxers de configuració"
+#: config.c
#, c-format
msgid "Invalid %s: '%s'"
msgstr "%s no vàlid: «%s»"
+#: config.c
#, c-format
msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
msgstr "valor «%d» a splitIndex.maxPercentChange ha d'estar entre 0 i 100"
+#: config.c
#, c-format
msgid "unable to parse '%s' from command-line config"
msgstr "no s'ha pogut analitzar «%s» de la configuració de la línia d'ordres"
+#: config.c
#, c-format
msgid "bad config variable '%s' in file '%s' at line %d"
msgstr "variable de configuració «%s» errònia en el fitxer «%s» a la línia %d"
+#: config.c
#, c-format
msgid "invalid section name '%s'"
msgstr "nom de secció no vàlid «%s»"
+#: config.c
#, c-format
msgid "%s has multiple values"
msgstr "%s té múltiples valors"
+#: config.c
#, c-format
msgid "failed to write new configuration file %s"
msgstr "no es pot escriure un nou fitxer de configuració %s"
+#: config.c
+#, c-format
+msgid "no multi-line comment allowed: '%s'"
+msgstr "no es permet el comentari multi-línia: «%s»"
+
+#: config.c
#, c-format
msgid "could not lock config file %s"
msgstr "no s'ha pogut blocar el fitxer de configuració %s"
+#: config.c
#, c-format
msgid "opening %s"
msgstr "s'està obrint %s"
+#: config.c
#, c-format
msgid "invalid config file %s"
msgstr "fitxer de configuració no vàlid %s"
+#: config.c
#, c-format
msgid "fstat on %s failed"
msgstr "ha fallat «fstat» a %s"
+#: config.c
#, c-format
msgid "unable to mmap '%s'%s"
msgstr "no s'ha pogut fer «mmap» «%s»%s"
+#: config.c
#, c-format
msgid "chmod on %s failed"
msgstr "ha fallat chmod a %s"
+#: config.c
#, c-format
msgid "could not write config file %s"
msgstr "no s'ha pogut escriure el fitxer de configuració «%s»"
+#: config.c
#, c-format
msgid "could not set '%s' to '%s'"
msgstr "no s'ha pogut establir «%s» a «%s»"
+#: config.c
#, c-format
msgid "invalid section name: %s"
msgstr "nom de secció no vàlida: %s"
+#: config.c
#, c-format
msgid "refusing to work with overly long line in '%s' on line %<PRIuMAX>"
msgstr ""
"es rebutja treballar amb una línia massa llarga a «%s» a la línia %<PRIuMAX>"
+#: config.c
#, c-format
msgid "missing value for '%s'"
msgstr "falta el valor per «%s»"
+#: connect.c
msgid "the remote end hung up upon initial contact"
msgstr "el costat remot ha penjat en el moment de contacte inicial"
+#: connect.c
msgid ""
"Could not read from remote repository.\n"
"\n"
@@ -15479,77 +19745,97 @@ msgstr ""
"Assegureu-vos que tingueu els permisos\n"
"d'accés correctes i que el repositori existeixi."
+#: connect.c
#, c-format
msgid "server doesn't support '%s'"
msgstr "el servidor no és compatible amb «%s»"
+#: connect.c
#, c-format
msgid "server doesn't support feature '%s'"
msgstr "el servidor no és compatible amb la característica «%s»"
+#: connect.c
msgid "expected flush after capabilities"
msgstr "s'esperava un buidatge després de les capacitats"
+#: connect.c
#, c-format
msgid "ignoring capabilities after first line '%s'"
msgstr "ignora les capacitats després de la primera línia «%s»"
+#: connect.c
msgid "protocol error: unexpected capabilities^{}"
msgstr "error de protocol: unexpected capabilities^{}"
+#: connect.c
#, c-format
msgid "protocol error: expected shallow sha-1, got '%s'"
msgstr ""
"s'ha produït un error de protocol: s'esperava shallow sha-1, s'ha rebut «%s»"
+#: connect.c
msgid "repository on the other end cannot be shallow"
msgstr "el repositori de l'altre extrem no pot ser shallow"
+#: connect.c
msgid "invalid packet"
msgstr "paquet no vàlid"
+#: connect.c
#, c-format
msgid "protocol error: unexpected '%s'"
msgstr "s'ha produït un error de protocol: no s'esperava «%s»"
+#: connect.c
#, c-format
msgid "unknown object format '%s' specified by server"
msgstr "format d'objecte «%s» especificat pel servidor desconegut"
+#: connect.c
#, c-format
msgid "error on bundle-uri response line %d: %s"
msgstr "error a la línia de resposta de bundle-uri %d: %s"
+#: connect.c
msgid "expected flush after bundle-uri listing"
msgstr "s'esperava un buidatge després del llistat de bundle-uri"
+#: connect.c
msgid "expected response end packet after ref listing"
msgstr ""
"s'esperava un paquet de final de resposta després del llistat de referències"
+#: connect.c
#, c-format
msgid "invalid ls-refs response: %s"
msgstr "resposta de ls-refs no vàlida: %s"
+#: connect.c
msgid "expected flush after ref listing"
msgstr "s'esperava una neteja després del llistat de referències"
+#: connect.c
#, c-format
msgid "protocol '%s' is not supported"
msgstr "el protocol «%s» no és compatible"
+#: connect.c
msgid "unable to set SO_KEEPALIVE on socket"
msgstr "no s'ha pogut establir SO_KEEPALIVE al sòcol"
+#: connect.c
#, c-format
msgid "Looking up %s ... "
msgstr "S'està cercant %s..."
+#: connect.c
#, c-format
msgid "unable to look up %s (port %s) (%s)"
msgstr "no s'ha pogut trobar %s (port %s) (%s)"
#. TRANSLATORS: this is the end of "Looking up %s ... "
+#: connect.c
#, c-format
msgid ""
"done.\n"
@@ -15558,6 +19844,7 @@ msgstr ""
"fet.\n"
"S'està connectant a %s (port %s) ... "
+#: connect.c
#, c-format
msgid ""
"unable to connect to %s:\n"
@@ -15567,72 +19854,91 @@ msgstr ""
"%s"
#. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
+#: connect.c
msgid "done."
msgstr "fet."
+#: connect.c
#, c-format
msgid "unable to look up %s (%s)"
msgstr "no s'ha pogut trobar %s (%s)"
+#: connect.c
#, c-format
msgid "unknown port %s"
msgstr "port desconegut %s"
+#: connect.c
#, c-format
msgid "strange hostname '%s' blocked"
msgstr "s'ha bloquejat el nom estrany d'amfitrió «%s»"
+#: connect.c
#, c-format
msgid "strange port '%s' blocked"
msgstr "s'ha bloquejat el port estrany «%s»"
+#: connect.c
#, c-format
msgid "cannot start proxy %s"
msgstr "no s'ha pogut iniciar servidor intermediari «%s»"
+#: connect.c
msgid "no path specified; see 'git help pull' for valid url syntax"
msgstr ""
"no s'ha especificat un camí; vegeu «git help pull» per la sintaxi vàlida per "
"URL"
+#: connect.c
msgid "newline is forbidden in git:// hosts and repo paths"
msgstr ""
"la línia nova està prohibida en els servidors git:// i els camins de "
"repositori"
+#: connect.c
msgid "ssh variant 'simple' does not support -4"
msgstr "la variant «simple» de ssh no és compatible amb -4"
+#: connect.c
msgid "ssh variant 'simple' does not support -6"
msgstr "la variant «simple» de ssh no és compatible amb -6"
+#: connect.c
msgid "ssh variant 'simple' does not support setting port"
msgstr "la variant «simple» de ssh no permet definir el port"
+#: connect.c
#, c-format
msgid "strange pathname '%s' blocked"
msgstr "s'ha bloquejat el nom de fitxer estrany «%s»"
+#: connect.c
msgid "unable to fork"
msgstr "no s'ha pogut bifurcar"
+#: connected.c
msgid "Could not run 'git rev-list'"
msgstr "No s'ha pogut executar «git rev-list»"
+#: connected.c
msgid "failed write to rev-list"
msgstr "escriptura fallada al rev-list"
+#: connected.c
msgid "failed to close rev-list's stdin"
msgstr "s'ha produït un error en tancar l'stdin del rev-list"
+#: convert.c
#, c-format
msgid "illegal crlf_action %d"
msgstr "crlf_action %d il·legal"
+#: convert.c
#, c-format
msgid "CRLF would be replaced by LF in %s"
msgstr "CRLF es reemplaçà per LF en %s"
+#: convert.c
#, c-format
msgid ""
"in the working copy of '%s', CRLF will be replaced by LF the next time Git "
@@ -15641,10 +19947,12 @@ msgstr ""
"a la còpia de treball de «%s», CRLF serà substituït per LF, la propera "
"vegada que el Git ho modifiqui"
+#: convert.c
#, c-format
msgid "LF would be replaced by CRLF in %s"
msgstr "LF es reemplaçà per CRLF en %s"
+#: convert.c
#, c-format
msgid ""
"in the working copy of '%s', LF will be replaced by CRLF the next time Git "
@@ -15653,64 +19961,79 @@ msgstr ""
"a la còpia de treball de «%s», LF serà substituït per CRLF la propera vegada "
"que Git ho modifiqui"
+#: convert.c
#, c-format
msgid "BOM is prohibited in '%s' if encoded as %s"
msgstr "BOM està prohibida a «%s» si està codificada com a %s"
+#: convert.c
#, c-format
msgid ""
"The file '%s' contains a byte order mark (BOM). Please use UTF-%.*s as "
"working-tree-encoding."
msgstr ""
-"El fitxer «%s» conté una marca d'ordre de byte (BOM). Utilitzeu UTF-%.*s com "
-"a codificacions d'arbre de treball."
+"El fitxer «%s» conté una marca d'ordre de octets (BOM). Utilitzeu UTF-%.*s "
+"com a codificacions d'arbre de treball."
+#: convert.c
#, c-format
msgid "BOM is required in '%s' if encoded as %s"
msgstr "La BOM és necessària en «%s» si està codificada com a %s"
+#: convert.c
#, c-format
msgid ""
"The file '%s' is missing a byte order mark (BOM). Please use UTF-%sBE or UTF-"
"%sLE (depending on the byte order) as working-tree-encoding."
msgstr ""
-"Falta una marca d'ordre de byte (BOM) al fitxer «%s». Useu UTF-%sBE o UTF-"
-"%sLE (depenent de l'ordre de byte) com a codificacions d'arbre de treball."
+"Falta una marca d'ordre d'octets (BOM) al fitxer «%s». Useu UTF-%sBE o UTF-"
+"%sLE (depenent de l'ordre dels octets) com a codificacions d'arbre de "
+"treball."
+#: convert.c
#, c-format
msgid "failed to encode '%s' from %s to %s"
msgstr "s'ha produït un error en codificar «%s» des de %s a %s"
+#: convert.c
#, c-format
msgid "encoding '%s' from %s to %s and back is not the same"
msgstr "codificar «%s» des de %s a %s i cap enrere no és el mateix"
+#: convert.c
#, c-format
msgid "cannot fork to run external filter '%s'"
msgstr "no es pot bifurcar per a executar el filtre extern «%s»"
+#: convert.c
#, c-format
msgid "cannot feed the input to external filter '%s'"
msgstr "no es pot alimentar l'entrada al filtre extern «%s»"
+#: convert.c
#, c-format
msgid "external filter '%s' failed %d"
msgstr "el filtre extern «%s» ha fallat %d"
+#: convert.c
#, c-format
msgid "read from external filter '%s' failed"
msgstr "la lectura del filtre extern «%s» ha fallat"
+#: convert.c
#, c-format
msgid "external filter '%s' failed"
msgstr "el filtre extern «%s» ha fallat"
+#: convert.c
msgid "unexpected filter type"
msgstr "tipus de filtre inesperat"
+#: convert.c
msgid "path name too long for external filter"
msgstr "el nom del camí és massa gran per al filtre extern"
+#: convert.c
#, c-format
msgid ""
"external filter '%s' is not available anymore although not all paths have "
@@ -15719,80 +20042,97 @@ msgstr ""
"el filtre extern «%s» ja no està disponible encara que no s'han filtrat tots "
"els camins"
+#: convert.c
msgid "true/false are no valid working-tree-encodings"
msgstr "cert/fals no són codificacions d'arbre de treball vàlides"
+#: convert.c
#, c-format
msgid "%s: clean filter '%s' failed"
msgstr "%s: el filtre de netejat «%s» ha fallat"
+#: convert.c
#, c-format
msgid "%s: smudge filter %s failed"
msgstr "%s: ha fallat el filtre smudge %s"
+#: credential.c
#, c-format
msgid "skipping credential lookup for key: credential.%s"
msgstr "s'està ometent la cerca de credencials per una clau: credential.%s"
+#: credential.c
msgid "refusing to work with credential missing host field"
msgstr ""
"s'ha rebutjat treballar amb credencials que no tenen el camp d'amfitrió"
+#: credential.c
msgid "refusing to work with credential missing protocol field"
msgstr ""
"s'ha rebutjat treballar amb credencials que no tenen el camp de protocol"
+#: credential.c
#, c-format
msgid "url contains a newline in its %s component: %s"
msgstr "url conté una línia nova en %s component: %s"
+#: credential.c
#, c-format
msgid "url has no scheme: %s"
msgstr "l'url no té esquema: %s"
+#: credential.c
#, c-format
msgid "credential url cannot be parsed: %s"
msgstr "no s'ha pogut analitzar l'URL de credencials: %s"
+#: date.c
msgid "in the future"
msgstr "en el futur"
+#: date.c
#, c-format
msgid "%<PRIuMAX> second ago"
msgid_plural "%<PRIuMAX> seconds ago"
msgstr[0] "fa %<PRIuMAX> segon"
msgstr[1] "fa %<PRIuMAX> segons"
+#: date.c
#, c-format
msgid "%<PRIuMAX> minute ago"
msgid_plural "%<PRIuMAX> minutes ago"
msgstr[0] "fa %<PRIuMAX> minut"
msgstr[1] "fa %<PRIuMAX> minuts"
+#: date.c
#, c-format
msgid "%<PRIuMAX> hour ago"
msgid_plural "%<PRIuMAX> hours ago"
msgstr[0] "fa %<PRIuMAX> hora"
msgstr[1] "fa %<PRIuMAX> hores"
+#: date.c
#, c-format
msgid "%<PRIuMAX> day ago"
msgid_plural "%<PRIuMAX> days ago"
msgstr[0] "fa %<PRIuMAX> dia"
msgstr[1] "fa %<PRIuMAX> dies"
+#: date.c
#, c-format
msgid "%<PRIuMAX> week ago"
msgid_plural "%<PRIuMAX> weeks ago"
msgstr[0] "fa %<PRIuMAX> setmana"
msgstr[1] "fa %<PRIuMAX> setmanes"
+#: date.c
#, c-format
msgid "%<PRIuMAX> month ago"
msgid_plural "%<PRIuMAX> months ago"
msgstr[0] "fa %<PRIuMAX> mes"
msgstr[1] "fa %<PRIuMAX> mesos"
+#: date.c
#, c-format
msgid "%<PRIuMAX> year"
msgid_plural "%<PRIuMAX> years"
@@ -15800,87 +20140,109 @@ msgstr[0] "%<PRIuMAX> any"
msgstr[1] "%<PRIuMAX> anys"
#. TRANSLATORS: "%s" is "<n> years"
+#: date.c
#, c-format
msgid "%s, %<PRIuMAX> month ago"
msgid_plural "%s, %<PRIuMAX> months ago"
msgstr[0] "fa %s i %<PRIuMAX> mes"
msgstr[1] "fa %s i %<PRIuMAX> mesos"
+#: date.c
#, c-format
msgid "%<PRIuMAX> year ago"
msgid_plural "%<PRIuMAX> years ago"
msgstr[0] "fa %<PRIuMAX> any"
msgstr[1] "fa %<PRIuMAX> anys"
+#: delta-islands.c
msgid "Propagating island marks"
msgstr "S'estan propagant les marques d'illa"
+#: delta-islands.c
#, c-format
msgid "bad tree object %s"
msgstr "objecte d'arbre malmès %s"
+#: delta-islands.c
#, c-format
msgid "failed to load island regex for '%s': %s"
msgstr ""
"s'ha produït un error en carregar l'expressió regular de l'illa per «%s»: %s"
+#: delta-islands.c
#, c-format
msgid "island regex from config has too many capture groups (max=%d)"
msgstr ""
"l'expressió regular de l'illa des de la configuració té massa grups de "
"captura (màx=%d)"
+#: delta-islands.c
#, c-format
msgid "Marked %d islands, done.\n"
msgstr "Marcades %d illes, fet.\n"
+#: diagnose.c
#, c-format
msgid "invalid --%s value '%s'"
msgstr "no és vàlid --%s amb valor «%s»"
+#: diagnose.c
#, c-format
msgid "could not archive missing directory '%s'"
msgstr "no s'ha pogut arxivar el directori que falta «%s»"
+#: diagnose.c dir.c
#, c-format
msgid "could not open directory '%s'"
msgstr "no s'ha pogut obrir el directori «%s»"
+#: diagnose.c
#, c-format
msgid "skipping '%s', which is neither file nor directory"
msgstr "s'omet «%s», que no és ni fitxer ni directori"
+#: diagnose.c
msgid "could not duplicate stdout"
msgstr "no s'ha pogut duplicar stdout"
+#: diagnose.c
#, c-format
msgid "could not add directory '%s' to archiver"
msgstr "no s'ha pogut afegir el directori «%s» a l'arxivador"
+#: diagnose.c
msgid "failed to write archive"
msgstr "s'ha produït un error en escriure arxiu"
+#: diff-lib.c
msgid "--merge-base does not work with ranges"
msgstr "--merge-base no funciona amb intervals"
+#: diff-lib.c
msgid "unable to get HEAD"
msgstr "no s'ha pogut obtenir HEAD"
+#: diff-lib.c
msgid "no merge base found"
msgstr "no s'ha trobat una base de fusió"
+#: diff-lib.c
msgid "multiple merge bases found"
msgstr "s'han trobat múltiples bases de fusió"
+#: diff-no-index.c
msgid "cannot compare stdin to a directory"
msgstr "no es pot comparar stdin amb un directori"
+#: diff-no-index.c
msgid "cannot compare a named pipe to a directory"
msgstr "no es pot comparar una canonada amb nom amb un directori"
+#: diff-no-index.c
msgid "git diff --no-index [<options>] <path> <path>"
msgstr "git diff --no-index [<opcions>] <camí> <camí>"
+#: diff-no-index.c
msgid ""
"Not a git repository. Use --no-index to compare two paths outside a working "
"tree"
@@ -15888,16 +20250,19 @@ msgstr ""
"No és un repositori Git. Useu --no-index per a comparar dos camins fora del "
"directori de treball"
+#: diff.c
#, c-format
msgid " Failed to parse dirstat cut-off percentage '%s'\n"
msgstr ""
" S'ha produït un error en analitzar el percentatge limitant de dirstat "
"«%s»\n"
+#: diff.c
#, c-format
msgid " Unknown dirstat parameter '%s'\n"
msgstr " Paràmetre de dirstat desconegut «%s»\n"
+#: diff.c
msgid ""
"color moved setting must be one of 'no', 'default', 'blocks', 'zebra', "
"'dimmed-zebra', 'plain'"
@@ -15905,6 +20270,7 @@ msgstr ""
"el paràmetre de color en moviment ha de ser «no», «default», «blocks», "
"«zebra», «dimmed-zebra» o «plain»"
+#: diff.c
#, c-format
msgid ""
"unknown color-moved-ws mode '%s', possible values are 'ignore-space-change', "
@@ -15914,6 +20280,7 @@ msgstr ""
"«ignore-space-change», «ignore-space-at-eol», «ignore-all-space», «allow-"
"indentation-change»"
+#: diff.c
msgid ""
"color-moved-ws: allow-indentation-change cannot be combined with other "
"whitespace modes"
@@ -15921,15 +20288,18 @@ msgstr ""
"color-moved-ws: allow-indentation-change no es pot combinar amb altres modes "
"d'espai en blanc"
+#: diff.c
#, c-format
msgid "Unknown value for 'diff.submodule' config variable: '%s'"
msgstr ""
"Valor desconegut de la variable de configuració de «diff.submodule»: «%s»"
+#: diff.c merge-recursive.c transport.c
#, c-format
msgid "unknown value for config '%s': %s"
msgstr "valor desconegut per al config «%s»': %s"
+#: diff.c
#, c-format
msgid ""
"Found errors in 'diff.dirstat' config variable:\n"
@@ -15938,39 +20308,48 @@ msgstr ""
"S'han trobat errors en la variable de configuració «diff.dirstat»:\n"
"%s"
+#: diff.c
#, c-format
msgid "external diff died, stopping at %s"
msgstr "el diff external s'ha mort, s'està aturant a %s"
+#: diff.c
msgid "--follow requires exactly one pathspec"
msgstr "--follow requereix exactament una especificació de camí"
+#: diff.c
#, c-format
msgid "pathspec magic not supported by --follow: %s"
msgstr "el «pathspec» màgic no està suportat per --follow: %s"
+#: diff.c parse-options.c
#, c-format
msgid "options '%s', '%s', '%s', and '%s' cannot be used together"
msgstr "les opcions «%s», «%s», «%s», i «%s» no es poden usar juntes"
+#: diff.c
#, c-format
msgid "options '%s' and '%s' cannot be used together, use '%s' with '%s'"
msgstr "les opcions «%s» i «%s» no es poden usar juntes, useu «%s» amb «%s»"
+#: diff.c
#, c-format
msgid ""
"options '%s' and '%s' cannot be used together, use '%s' with '%s' and '%s'"
msgstr ""
"les opcions «%s» i «%s» no es poden usar juntes, useu «%s» amb «%s» i «%s»"
+#: diff.c
#, c-format
msgid "invalid --stat value: %s"
msgstr "valor --stat no vàlid: %s"
+#: diff.c parse-options.c
#, c-format
msgid "%s expects a numerical value"
msgstr "%s espera un valor numèric"
+#: diff.c
#, c-format
msgid ""
"Failed to parse --dirstat/-X option parameter:\n"
@@ -15979,147 +20358,189 @@ msgstr ""
"S'ha produït un error en analitzar el paràmetre d'opció de --dirstat/-X:\n"
"%s"
+#: diff.c
#, c-format
msgid "unknown change class '%c' in --diff-filter=%s"
msgstr "classe de canvi «%c» desconeguda a --diff-filter=%s"
+#: diff.c
#, c-format
msgid "unknown value after ws-error-highlight=%.*s"
msgstr "valor desconegut després de ws-error-highlight=%.*s"
+#: diff.c
#, c-format
msgid "unable to resolve '%s'"
msgstr "no s'ha pogut resoldre «%s»"
+#: diff.c
#, c-format
msgid "%s expects <n>/<m> form"
msgstr "%s espera una forma <n>/<m>"
+#: diff.c
#, c-format
msgid "%s expects a character, got '%s'"
msgstr "%s esperava un caràcter, s'ha rebut «%s»"
+#: diff.c
#, c-format
msgid "bad --color-moved argument: %s"
msgstr "argument --color-moved incorrecte: %s"
+#: diff.c
#, c-format
msgid "invalid mode '%s' in --color-moved-ws"
msgstr "mode «%s» no vàlid en --color-moved-ws"
+#: diff.c
#, c-format
msgid "invalid argument to %s"
msgstr "argument no vàlid a %s"
+#: diff.c
#, c-format
msgid "invalid regex given to -I: '%s'"
msgstr "expressió regular donada a -I: no vàlida: «%s»"
+#: diff.c
#, c-format
msgid "failed to parse --submodule option parameter: '%s'"
msgstr ""
"s'ha produït un error en analitzar el paràmetre d'opció de --submodule: «%s»"
+#: diff.c
#, c-format
msgid "bad --word-diff argument: %s"
msgstr "argument --word-diff incorrecte: %s"
+#: diff.c
msgid "Diff output format options"
msgstr "Opcions del format de sortida del diff"
+#: diff.c
msgid "generate patch"
msgstr "genera el pedaç"
+#: diff.c
msgid "<n>"
msgstr "<n>"
+#: diff.c
msgid "generate diffs with <n> lines context"
msgstr "genera diffs amb <n> línies de context"
+#: diff.c
msgid "generate the diff in raw format"
msgstr "genera el diff en format cru"
+#: diff.c
msgid "synonym for '-p --raw'"
msgstr "sinònim de «-p --raw»"
+#: diff.c
msgid "synonym for '-p --stat'"
msgstr "sinònim de «-p --stat»"
+#: diff.c
msgid "machine friendly --stat"
msgstr "llegible per una màquina --stat"
+#: diff.c
msgid "output only the last line of --stat"
msgstr "mostra només l'última línia de --stat"
+#: diff.c
msgid "<param1>,<param2>..."
msgstr "<param1>,<param2>..."
+#: diff.c
msgid ""
"output the distribution of relative amount of changes for each sub-directory"
msgstr ""
"genera la distribució de la quantitat relativa de canvis per a cada "
"subdirectori"
+#: diff.c
msgid "synonym for --dirstat=cumulative"
msgstr "sinònim de --dirstat=cumulative"
+#: diff.c
msgid "synonym for --dirstat=files,<param1>,<param2>..."
msgstr "sinònim de --dirstat=files,<param1>,<param2>..."
+#: diff.c
msgid "warn if changes introduce conflict markers or whitespace errors"
msgstr ""
"avisa si els canvis introdueixen marcadors en conflicte o errors d'espai en "
"blanc"
+#: diff.c
msgid "condensed summary such as creations, renames and mode changes"
msgstr "resum condensat com ara creacions, canvis de nom i mode"
+#: diff.c
msgid "show only names of changed files"
msgstr "mostra només els noms de fitxers canviats"
+#: diff.c
msgid "show only names and status of changed files"
msgstr "mostra només els noms i l'estat dels fitxers canviats"
+#: diff.c
msgid "<width>[,<name-width>[,<count>]]"
msgstr "<amplada>[<amplada-nom>[,<recompte>]]"
+#: diff.c
msgid "generate diffstat"
msgstr "genera diffstat"
+#: diff.c
msgid "<width>"
msgstr "<amplada>"
+#: diff.c
msgid "generate diffstat with a given width"
msgstr "genera diffstat amb una amplada donada"
+#: diff.c
msgid "generate diffstat with a given name width"
msgstr "genera diffstat amb un nom d'amplada donat"
+#: diff.c
msgid "generate diffstat with a given graph width"
msgstr "genera diffstat amb una amplada de graf donada"
+#: diff.c
msgid "<count>"
msgstr "<comptador>"
+#: diff.c
msgid "generate diffstat with limited lines"
msgstr "genera diffstat amb línies limitades"
+#: diff.c
msgid "generate compact summary in diffstat"
msgstr "genera un resum compacte a diffstat"
+#: diff.c
msgid "output a binary diff that can be applied"
msgstr "diff amb sortida binària que pot ser aplicada"
+#: diff.c
msgid "show full pre- and post-image object names on the \"index\" lines"
msgstr ""
"mostra els noms complets dels objectes pre i post-imatge a les línies «index»"
+#: diff.c
msgid "show colored diff"
msgstr "mostra un diff amb colors"
+#: diff.c
msgid "<kind>"
msgstr "<kind>"
+#: diff.c
msgid ""
"highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
"diff"
@@ -16127,6 +20548,7 @@ msgstr ""
"ressalta els errors d'espai en blanc a les línies «context», «old» o «new» "
"al diff"
+#: diff.c
msgid ""
"do not munge pathnames and use NULs as output field terminators in --raw or "
"--numstat"
@@ -16134,74 +20556,96 @@ msgstr ""
"no consolidis els noms de camí i utilitza NULs com a terminadors de camp de "
"sortida en --raw o --numstat"
+#: diff.c
msgid "<prefix>"
msgstr "<prefix>"
+#: diff.c
msgid "show the given source prefix instead of \"a/\""
msgstr "mostra el prefix d'origen donat en lloc de «a/»"
+#: diff.c
msgid "show the given destination prefix instead of \"b/\""
msgstr "mostra el prefix de destinació indicat en lloc de «b/»"
+#: diff.c
msgid "prepend an additional prefix to every line of output"
msgstr "afegir un prefix addicional per a cada línia de sortida"
+#: diff.c
msgid "do not show any source or destination prefix"
msgstr "no mostris cap prefix d'origen o destí"
+#: diff.c
msgid "use default prefixes a/ and b/"
msgstr "utilitza els prefixos per defecte a/ i b/"
+#: diff.c
msgid "show context between diff hunks up to the specified number of lines"
msgstr ""
"mostra el context entre trossos de diferència fins al nombre especificat de "
"línies"
+#: diff.c
msgid "<char>"
-msgstr "<char>"
+msgstr "<caràcter>"
+#: diff.c
msgid "specify the character to indicate a new line instead of '+'"
msgstr ""
"especifiqueu el caràcter per a indicar una línia nova en comptes de «+»"
+#: diff.c
msgid "specify the character to indicate an old line instead of '-'"
msgstr ""
"especifiqueu el caràcter per a indicar una línia antiga en comptes de «-»"
+#: diff.c
msgid "specify the character to indicate a context instead of ' '"
msgstr "especifiqueu el caràcter per a indicar context en comptes de « »"
+#: diff.c
msgid "Diff rename options"
msgstr "Opcions de canvi de nom del diff"
+#: diff.c
msgid "<n>[/<m>]"
msgstr "<n>[/<m>]"
+#: diff.c
msgid "break complete rewrite changes into pairs of delete and create"
msgstr ""
"divideix els canvis de reescriptura completa en parells de suprimir i crear"
+#: diff.c
msgid "detect renames"
msgstr "detecta els canvis de noms"
+#: diff.c
msgid "omit the preimage for deletes"
msgstr "omet les preimatges per les supressions"
+#: diff.c
msgid "detect copies"
msgstr "detecta còpies"
+#: diff.c
msgid "use unmodified files as source to find copies"
msgstr "usa els fitxers no modificats com a font per a trobar còpies"
+#: diff.c
msgid "disable rename detection"
msgstr "inhabilita la detecció de canvis de nom"
+#: diff.c
msgid "use empty blobs as rename source"
msgstr "usa els blobs buits com a font de canvi de nom"
+#: diff.c
msgid "continue listing the history of a file beyond renames"
msgstr "continua llistant l'històric d'un fitxer més enllà dels canvis de nom"
+#: diff.c
msgid ""
"prevent rename/copy detection if the number of rename/copy targets exceeds "
"given limit"
@@ -16209,118 +20653,154 @@ msgstr ""
"evita la detecció de canvi de nom/còpia si el nombre d'objectius de canvi de "
"nom/còpia supera el límit indicat"
+#: diff.c
msgid "Diff algorithm options"
msgstr "Opcions de l'algorisme Diff"
+#: diff.c
msgid "produce the smallest possible diff"
msgstr "produeix el diff més petit possible"
+#: diff.c
msgid "ignore whitespace when comparing lines"
msgstr "ignora els espais en blanc en comparar línies"
+#: diff.c
msgid "ignore changes in amount of whitespace"
msgstr "ignora els canvis en la quantitat d'espai en blanc"
+#: diff.c
msgid "ignore changes in whitespace at EOL"
msgstr "ignora els canvis d'espai en blanc al final de la línia"
+#: diff.c
msgid "ignore carrier-return at the end of line"
msgstr "ignora els retorns de línia al final de la línia"
+#: diff.c
msgid "ignore changes whose lines are all blank"
msgstr "ignora els canvis en línies que estan en blanc"
+#: diff.c
msgid "<regex>"
-msgstr "<regex>"
+msgstr "<expr-reg>"
+#: diff.c
msgid "ignore changes whose all lines match <regex>"
-msgstr "ignora els canvis en les línies que coincideixen amb <regex>"
+msgstr "ignora els canvis en les línies que coincideixen amb <expr-reg>"
+#: diff.c
msgid "heuristic to shift diff hunk boundaries for easy reading"
msgstr ""
"heurística per a desplaçar els límits del tros de diferència per a una "
"lectura fàcil"
+#: diff.c
msgid "generate diff using the \"patience diff\" algorithm"
msgstr "genera diff usant l'algorisme «patience diff»"
+#: diff.c
msgid "generate diff using the \"histogram diff\" algorithm"
msgstr "genera diff usant l'algorisme «histogram diff»"
+#: diff.c
msgid "<text>"
msgstr "<text>"
+#: diff.c
msgid "generate diff using the \"anchored diff\" algorithm"
msgstr "genera diff usant l'algorisme «anchored diff»"
+#: diff.c
msgid "<mode>"
msgstr "<mode>"
+#: diff.c
msgid "show word diff, using <mode> to delimit changed words"
msgstr ""
"mostra el diff de paraules usant <mode> per a delimitar les paraules "
"modificades"
+#: diff.c
msgid "use <regex> to decide what a word is"
-msgstr "utilitza <regex> per a decidir què és una paraula"
+msgstr "utilitza <expr-reg> per a decidir què és una paraula"
+#: diff.c
msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
-msgstr "equivalent a --word-diff=color --word-diff-regex=<regex>"
+msgstr "equivalent a --word-diff=color --word-diff-regex=<expr-reg>"
+#: diff.c
msgid "moved lines of code are colored differently"
msgstr "les línies de codi que s'han mogut s'acoloreixen diferent"
+#: diff.c
msgid "how white spaces are ignored in --color-moved"
msgstr "com s'ignoren els espais en blanc a --color-moved"
+#: diff.c
msgid "Other diff options"
msgstr "Altres opcions diff"
+#: diff.c
msgid "when run from subdir, exclude changes outside and show relative paths"
msgstr ""
"quan s'executa des d'un subdirectori, exclou els canvis de fora i mostra els "
"camins relatius"
+#: diff.c
msgid "treat all files as text"
msgstr "tracta tots els fitxers com a text"
+#: diff.c
msgid "swap two inputs, reverse the diff"
msgstr "intercanvia les dues entrades, inverteix el diff"
+#: diff.c
msgid "exit with 1 if there were differences, 0 otherwise"
msgstr "surt amb 1 si hi ha diferències, 0 en cas contrari"
+#: diff.c
msgid "disable all output of the program"
msgstr "inhabilita totes les sortides del programa"
+#: diff.c
msgid "allow an external diff helper to be executed"
msgstr "permet executar un ajudant de diff extern"
+#: diff.c
msgid "run external text conversion filters when comparing binary files"
msgstr ""
"executa els filtres externs de conversió de text en comparar fitxers binaris"
+#: diff.c
msgid "<when>"
msgstr "<quan>"
+#: diff.c
msgid "ignore changes to submodules in the diff generation"
msgstr "ignora els canvis als submòduls en la generació del diff"
+#: diff.c
msgid "<format>"
msgstr "<format>"
+#: diff.c
msgid "specify how differences in submodules are shown"
msgstr "especifiqueu com es mostren els canvis als submòduls"
+#: diff.c
msgid "hide 'git add -N' entries from the index"
msgstr "amaga les entrades «git add -N» de l'índex"
+#: diff.c
msgid "treat 'git add -N' entries as real in the index"
msgstr "tracta les entrades «git add -N» com a reals a l'índex"
+#: diff.c
msgid "<string>"
msgstr "<cadena>"
+#: diff.c
msgid ""
"look for differences that change the number of occurrences of the specified "
"string"
@@ -16328,6 +20808,7 @@ msgstr ""
"cerca les diferències que canvien el nombre d'ocurrències de la cadena "
"especificada"
+#: diff.c
msgid ""
"look for differences that change the number of occurrences of the specified "
"regex"
@@ -16335,27 +20816,35 @@ msgstr ""
"cerca les diferències que canvien el nombre d'ocurrències de l'expressió "
"regular especificada"
+#: diff.c
msgid "show all changes in the changeset with -S or -G"
msgstr "mostra tots els canvis amb el conjunt de canvis amb -S o -G"
+#: diff.c
msgid "treat <string> in -S as extended POSIX regular expression"
msgstr "tracta <cadena> a -S com a expressió regular POSIX ampliada"
+#: diff.c
msgid "control the order in which files appear in the output"
msgstr "controla l'ordre amb el qual els fitxers apareixen en la sortida"
+#: diff.c
msgid "<path>"
msgstr "<camí>"
+#: diff.c
msgid "show the change in the specified path first"
msgstr "mostra el canvi primer al camí especificat"
+#: diff.c
msgid "skip the output to the specified path"
msgstr "omet la sortida al camí especificat"
+#: diff.c
msgid "<object-id>"
msgstr "<id de l'objecte>"
+#: diff.c
msgid ""
"look for differences that change the number of occurrences of the specified "
"object"
@@ -16363,26 +20852,33 @@ msgstr ""
"cerca les diferències que canvien el nombre d'ocurrències de l'objecte "
"especificat"
+#: diff.c
msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
+#: diff.c
msgid "select files by diff type"
msgstr "seleccioneu els fitxers per tipus de diff"
+#: diff.c
msgid "<file>"
msgstr "<fitxer>"
+#: diff.c
msgid "output to a specific file"
msgstr "sortida a un fitxer específic"
+#: diff.c
msgid "exhaustive rename detection was skipped due to too many files."
msgstr ""
"s'ha omès la detecció de canvi de nom exhaustiva perquè hi ha massa fitxers."
+#: diff.c
msgid "only found copies from modified paths due to too many files."
msgstr ""
"només s'han trobat còpies des de camins modificats perquè de massa fitxers."
+#: diff.c
#, c-format
msgid ""
"you may want to set your %s variable to at least %d and retry the command."
@@ -16390,50 +20886,62 @@ msgstr ""
"potser voleu establir la vostra variable %s a almenys %d i tornar a intentar "
"l'ordre."
+#: diffcore-order.c
#, c-format
msgid "failed to read orderfile '%s'"
msgstr "s'ha produït un error en llegir el fitxer d'ordres «%s»"
+#: diffcore-rename.c
msgid "Performing inexact rename detection"
msgstr "S'està realitzant una detecció inexacta de canvis de nom"
+#: diffcore-rotate.c
#, c-format
msgid "No such path '%s' in the diff"
msgstr "No existeix el camí «%s» al diff"
+#: dir.c
#, c-format
msgid "pathspec '%s' did not match any file(s) known to git"
msgstr ""
"l'especificació de camí «%s» no ha coincidit amb cap fitxer que git conegui"
+#: dir.c
#, c-format
msgid "unrecognized pattern: '%s'"
msgstr "patró no reconegut: «%s»"
+#: dir.c
#, c-format
msgid "unrecognized negative pattern: '%s'"
msgstr "patró negatiu no reconegut: «%s»"
+#: dir.c
#, c-format
msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
msgstr ""
"el vostre fitxer «sparse-checkout» pot tenir problemes el patró «%s» es "
"repeteix"
+#: dir.c
msgid "disabling cone pattern matching"
msgstr "inhabilita la coincidència de patrons «cone»"
+#: dir.c
#, c-format
msgid "cannot use %s as an exclude file"
msgstr "no es pot usar %s com a fitxer d'exclusió"
+#: dir.c
msgid "failed to get kernel name and information"
msgstr "s'ha produït un error en obtenir el nombre i la informació del nucli"
+#: dir.c
msgid "untracked cache is disabled on this system or location"
msgstr ""
"la memòria cau no seguida està inhabilitada en aquest sistema o ubicació"
+#: dir.c
msgid ""
"No directory name could be guessed.\n"
"Please specify a directory on the command line"
@@ -16441,191 +20949,243 @@ msgstr ""
"No s'ha pogut deduir cap nom de directori.\n"
"Especifiqueu un directori en la línia d'ordres"
+#: dir.c
#, c-format
msgid "index file corrupt in repo %s"
msgstr "el fitxer d'índex al repositori %s és malmès"
+#: dir.c
#, c-format
msgid "could not create directories for %s"
msgstr "no s'han pogut crear directoris per %s"
+#: dir.c
#, c-format
msgid "could not migrate git directory from '%s' to '%s'"
msgstr "no s'ha pogut migrar el directori de «%s» a «%s»"
+#: editor.c
#, c-format
msgid "hint: Waiting for your editor to close the file...%c"
msgstr "consell: s'està esperant que el vostre editor tanqui el fitxer...%c"
+#: editor.c sequencer.c wrapper.c
#, c-format
msgid "could not write to '%s'"
msgstr "no s'ha pogut escriure a «%s»"
+#: editor.c
#, c-format
msgid "could not edit '%s'"
msgstr "no s'ha pogut editar «%s»"
+#: entry.c
msgid "Filtering content"
msgstr "S'està filtrant el contingut"
+#: entry.c
#, c-format
msgid "could not stat file '%s'"
msgstr "no s'ha pogut fer «stat» sobre el fitxer «%s»"
+#: environment.c
#, c-format
msgid "bad git namespace path \"%s\""
msgstr "camí d'espai de noms git incorrecte «%s»"
+#: exec-cmd.c
#, c-format
msgid "too many args to run %s"
msgstr "hi ha massa arguments per a executar %s"
+#: fetch-pack.c
msgid "git fetch-pack: expected shallow list"
msgstr "git fetch-pack: llista shallow esperada"
+#: fetch-pack.c
msgid "git fetch-pack: expected a flush packet after shallow list"
msgstr ""
"git fetch-pack: s'esperava un paquet de buidatge després d'una llista shallow"
+#: fetch-pack.c
msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
msgstr "git fetch-pack: s'esperava ACK/NAK, s'ha rebut un paquet de buidatge"
+#: fetch-pack.c
#, c-format
msgid "git fetch-pack: expected ACK/NAK, got '%s'"
msgstr "git fetch-pack: s'esperava ACK/NAK, s'ha rebut «%s»"
+#: fetch-pack.c
msgid "unable to write to remote"
msgstr "no s'ha pogut escriure al remot"
+#: fetch-pack.c
msgid "Server supports filter"
msgstr "El servidor accepta filtratge"
+#: fetch-pack.c
#, c-format
msgid "invalid shallow line: %s"
msgstr "línia de shallow no vàlida: %s"
+#: fetch-pack.c
#, c-format
msgid "invalid unshallow line: %s"
msgstr "línia d'unshallow no vàlida: %s"
+#: fetch-pack.c
#, c-format
msgid "object not found: %s"
msgstr "objecte no trobat: %s"
+#: fetch-pack.c
#, c-format
msgid "error in object: %s"
msgstr "error en objecte: %s"
+#: fetch-pack.c
#, c-format
msgid "no shallow found: %s"
msgstr "no s'ha trobat cap shallow: %s"
+#: fetch-pack.c
#, c-format
msgid "expected shallow/unshallow, got %s"
msgstr "s'esperava shallow/unshallow, s'ha rebut %s"
+#: fetch-pack.c
#, c-format
msgid "got %s %d %s"
msgstr "s'ha rebut %s %d %s"
+#: fetch-pack.c
#, c-format
msgid "invalid commit %s"
msgstr "comissió no vàlida %s"
+#: fetch-pack.c
msgid "giving up"
msgstr "s'abandona"
+#: fetch-pack.c progress.h
msgid "done"
msgstr "fet"
+#: fetch-pack.c
#, c-format
msgid "got %s (%d) %s"
msgstr "s'ha rebut %s (%d) %s"
+#: fetch-pack.c
#, c-format
msgid "Marking %s as complete"
msgstr "S'està marcant %s com a complet"
+#: fetch-pack.c
#, c-format
msgid "already have %s (%s)"
msgstr "ja es té %s (%s)"
+#: fetch-pack.c
msgid "fetch-pack: unable to fork off sideband demultiplexer"
msgstr "fetch-pack: no s'ha pogut bifurcar del desmultiplexor de banda lateral"
+#: fetch-pack.c
msgid "protocol error: bad pack header"
msgstr "error de protocol: capçalera de paquet errònia"
+#: fetch-pack.c
#, c-format
msgid "fetch-pack: unable to fork off %s"
msgstr "fetch-pack: no es pot bifurcar de %s"
+#: fetch-pack.c
msgid "fetch-pack: invalid index-pack output"
msgstr "fetch-pack: sortida d'index-pack no vàlida"
+#: fetch-pack.c
#, c-format
msgid "%s failed"
msgstr "%s ha fallat"
+#: fetch-pack.c
msgid "error in sideband demultiplexer"
msgstr "error en desmultiplexor de banda lateral"
+#: fetch-pack.c
#, c-format
msgid "Server version is %.*s"
msgstr "La versió del servidor és %.*s"
+#: fetch-pack.c
#, c-format
msgid "Server supports %s"
msgstr "El servidor accepta %s"
+#: fetch-pack.c
msgid "Server does not support shallow clients"
msgstr "El servidor no permet clients superficials"
+#: fetch-pack.c
msgid "Server does not support --shallow-since"
msgstr "El servidor no admet --shallow-since"
+#: fetch-pack.c
msgid "Server does not support --shallow-exclude"
msgstr "El servidor no admet --shallow-exclude"
+#: fetch-pack.c
msgid "Server does not support --deepen"
msgstr "El servidor no admet --deepen"
+#: fetch-pack.c
msgid "Server does not support this repository's object format"
msgstr ""
"El servidor no és compatible amb el format d'objecte d'aquest repositori"
+#: fetch-pack.c
msgid "no common commits"
msgstr "cap comissió en comú"
+#: fetch-pack.c
msgid "git fetch-pack: fetch failed."
msgstr "git fetch-pack: l'obtenció ha fallat."
+#: fetch-pack.c
#, c-format
msgid "mismatched algorithms: client %s; server %s"
msgstr "algoritmes no coincidents: client %s; servidor %s"
+#: fetch-pack.c
#, c-format
msgid "the server does not support algorithm '%s'"
msgstr "el servidor no és compatible amb l'algorisme «%s»"
+#: fetch-pack.c
msgid "Server does not support shallow requests"
msgstr "El servidor no permet sol·licituds superficials"
+#: fetch-pack.c
msgid "unable to write request to remote"
msgstr "no s'ha pogut escriure la sol·licitud al remot"
+#: fetch-pack.c
#, c-format
msgid "expected '%s', received '%s'"
msgstr "s'esperava «%s», s'ha rebut «%s»"
+#: fetch-pack.c
#, c-format
msgid "expected '%s'"
msgstr "s'esperava «%s»"
+#: fetch-pack.c
#, c-format
msgid "unexpected acknowledgment line: '%s'"
msgstr "línia de confirmació inesperada: «%s»"
+#: fetch-pack.c
#, c-format
msgid "error processing acks: %d"
msgstr "s'ha produït un error en processar els acks: %d"
@@ -16633,6 +21193,7 @@ msgstr "s'ha produït un error en processar els acks: %d"
#. TRANSLATORS: The parameter will be 'ready', a protocol
#. keyword.
#.
+#: fetch-pack.c
#, c-format
msgid "expected packfile to be sent after '%s'"
msgstr "s'esperava que el fitxer de paquet s'enviés després de «%s»"
@@ -16640,74 +21201,93 @@ msgstr "s'esperava que el fitxer de paquet s'enviés després de «%s»"
#. TRANSLATORS: The parameter will be 'ready', a protocol
#. keyword.
#.
+#: fetch-pack.c
#, c-format
msgid "expected no other sections to be sent after no '%s'"
msgstr "no s'esperava que cap altra secció s'enviés després de «%s»"
+#: fetch-pack.c
#, c-format
msgid "error processing shallow info: %d"
msgstr "s'ha produït un error en processar la informació superficial: %d"
+#: fetch-pack.c
#, c-format
msgid "expected wanted-ref, got '%s'"
msgstr "s'esperava wanted-ref, s'ha rebut «%s»"
+#: fetch-pack.c
#, c-format
msgid "unexpected wanted-ref: '%s'"
msgstr "wanted-ref inesperat: «%s»"
+#: fetch-pack.c
#, c-format
msgid "error processing wanted refs: %d"
msgstr "s'ha produït un error en processar les referències desitjades: %d"
+#: fetch-pack.c
msgid "git fetch-pack: expected response end packet"
msgstr "git fetch-pack: s'esperava un paquet de final de resposta"
+#: fetch-pack.c
msgid "no matching remote head"
msgstr "no hi ha cap HEAD remot coincident"
+#: fetch-pack.c
msgid "unexpected 'ready' from remote"
msgstr "«ready» no esperat des del remot"
+#: fetch-pack.c
#, c-format
msgid "no such remote ref %s"
msgstr "no existeix la referència remota %s"
+#: fetch-pack.c
#, c-format
msgid "Server does not allow request for unadvertised object %s"
msgstr "El servidor no permet sol·licitar objectes no anunciats %s"
+#: fsmonitor-ipc.c
#, c-format
msgid "fsmonitor_ipc__send_query: invalid path '%s'"
msgstr "fsmonitor_ipc__send_query: camí no vàlid «%s»"
+#: fsmonitor-ipc.c
#, c-format
msgid "fsmonitor_ipc__send_query: unspecified error on '%s'"
msgstr "fsmonitor_ipc__send_query: error no especificat en «%s»"
+#: fsmonitor-ipc.c
msgid "fsmonitor--daemon is not running"
msgstr "fsmonitor--daemon no s'està executant"
+#: fsmonitor-ipc.c
#, c-format
msgid "could not send '%s' command to fsmonitor--daemon"
msgstr "no s'ha pogut enviar l'ordre «%s» a fsmonitor--daemon"
+#: fsmonitor-settings.c
#, c-format
msgid "bare repository '%s' is incompatible with fsmonitor"
msgstr "el repositori nu «%s» és incompatible amb fsmonitor"
+#: fsmonitor-settings.c
#, c-format
msgid "repository '%s' is incompatible with fsmonitor due to errors"
msgstr "el repositori «%s» és incompatible amb fsmonitor a causa d'errors"
+#: fsmonitor-settings.c
#, c-format
msgid "remote repository '%s' is incompatible with fsmonitor"
msgstr "el repositori remot «%s» no és compatible amb fsmonitor"
+#: fsmonitor-settings.c
#, c-format
msgid "virtual repository '%s' is incompatible with fsmonitor"
msgstr "el repositori virtual «%s» és incompatible amb fsmonitor"
+#: fsmonitor-settings.c
#, c-format
msgid ""
"socket directory '%s' is incompatible with fsmonitor due to lack of Unix "
@@ -16716,21 +21296,27 @@ msgstr ""
"el directori del sòcol «%s» és incompatible amb fsmonitor a causa de la "
"manca de compatibilitat amb els sòcols Unix"
+#: git.c
msgid ""
"git [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>]\n"
" [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
-" [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
-"bare]\n"
-" [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
-" [--config-env=<name>=<envvar>] <command> [<args>]"
-msgstr ""
-"git [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>]\n"
-" [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
-" [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
-"bare]\n"
-" [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
-" [--config-env=<name>=<envvar>] <command> [<args>]"
-
+" [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--no-"
+"lazy-fetch]\n"
+" [--no-optional-locks] [--no-advice] [--bare] [--git-dir=<path>]\n"
+" [--work-tree=<path>] [--namespace=<name>] [--config-"
+"env=<name>=<envvar>]\n"
+" <command> [<args>]"
+msgstr ""
+"git [-v | --version] [-h | --help] [-C <camí>] [-c <nom>=<valor>]\n"
+" [--exec-path[=<camí>]] [--html-path] [--man-path] [--info-path]\n"
+" [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--no-"
+"lazy-fetch]\n"
+" [--no-optional-locks] [--no-advice] [--bare] [--git-dir=<camí>]\n"
+" [--work-tree=<camí>] [--namespace=<nom>] [--config-"
+"env=<nom>=<variable-d-entorn>]\n"
+" <ordre> [<arguments>]"
+
+#: git.c
msgid ""
"'git help -a' and 'git help -g' list available subcommands and some\n"
"concept guides. See 'git help <command>' or 'git help <concept>'\n"
@@ -16742,38 +21328,47 @@ msgstr ""
"«git help <concepte>» per a llegir sobre una subordre o concepte\n"
"específic. Vegeu «git help git» per a una visió general del sistema."
+#: git.c help.c
#, c-format
msgid "unsupported command listing type '%s'"
msgstr "tipus de llistat de l'ordre no compatible «%s»"
+#: git.c
#, c-format
msgid "no directory given for '%s' option\n"
msgstr "no s'ha especificat un directori per a l'opció «%s»\n"
+#: git.c
#, c-format
msgid "no namespace given for --namespace\n"
msgstr "no s'ha especificat un nom d'espai per --namespace\n"
+#: git.c
#, c-format
msgid "-c expects a configuration string\n"
msgstr "-c espera una cadena de configuració\n"
+#: git.c
#, c-format
msgid "no config key given for --config-env\n"
msgstr "no s'ha indicat cap clau de configuració per a --config-env\n"
+#: git.c
#, c-format
msgid "no attribute source given for --attr-source\n"
msgstr "no s'ha donat d'atribut font per a --attr-source\n"
+#: git.c
#, c-format
msgid "unknown option: %s\n"
msgstr "opció desconeguda: %s\n"
+#: git.c
#, c-format
msgid "while expanding alias '%s': '%s'"
msgstr "en expandir l'àlies «%s»: «%s»"
+#: git.c
#, c-format
msgid ""
"alias '%s' changes environment variables.\n"
@@ -16782,31 +21377,39 @@ msgstr ""
"l'àlies «%s» canvia variables d'entorn.\n"
"Podeu utilitzar «!git» a l'àlies per a fer-ho"
+#: git.c
#, c-format
msgid "empty alias for %s"
msgstr "àlies buit per a %s"
+#: git.c
#, c-format
msgid "recursive alias: %s"
msgstr "àlies recursiu: %s"
+#: git.c
msgid "write failure on standard output"
msgstr "fallada d'escriptura en la sortida estàndard"
+#: git.c
msgid "unknown write failure on standard output"
msgstr "fallada d'escriptura desconeguda en la sortida estàndard"
+#: git.c
msgid "close failed on standard output"
msgstr "ha fallat el tancament en la sortida estàndard"
+#: git.c
#, c-format
msgid "alias loop detected: expansion of '%s' does not terminate:%s"
msgstr "bucle d'àlies detectat expansió de «%s» no acaba:%s"
+#: git.c
#, c-format
msgid "cannot handle %s as a builtin"
msgstr "no es pot gestionar %s com a integrat"
+#: git.c
#, c-format
msgid ""
"usage: %s\n"
@@ -16815,21 +21418,26 @@ msgstr ""
"ús: %s\n"
"\n"
+#: git.c
#, c-format
msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
msgstr "ha fallat l'expansió de l'àlies «%s»; «%s» no és una ordre git\n"
+#: git.c
#, c-format
msgid "failed to run command '%s': %s\n"
msgstr "s'ha produït un error en executar l'ordre «%s»: %s\n"
+#: gpg-interface.c
msgid "could not create temporary file"
msgstr "no s'ha pogut crear el fitxer temporal"
+#: gpg-interface.c
#, c-format
msgid "failed writing detached signature to '%s'"
msgstr "s'ha produït un error en escriure la clau de signatura separada a «%s»"
+#: gpg-interface.c
msgid ""
"gpg.ssh.allowedSignersFile needs to be configured and exist for ssh "
"signature verification"
@@ -16837,6 +21445,7 @@ msgstr ""
"gpg.ssh.allowedSignersFile s'ha de configurar i existeix per a la "
"verificació de la signatura ssh"
+#: gpg-interface.c
msgid ""
"ssh-keygen -Y find-principals/verify is needed for ssh signature "
"verification (available in openssh version 8.2p1+)"
@@ -16844,32 +21453,39 @@ msgstr ""
"ssh-keygen -Y find-principals/verify és necessari per a la verificació de la "
"signatura ssh (disponible a opensh versió 8.2p1+)"
+#: gpg-interface.c
#, c-format
msgid "ssh signing revocation file configured but not found: %s"
msgstr "fitxer de revocació de la signatura ssh configurat però no trobat: %s"
+#: gpg-interface.c
#, c-format
msgid "bad/incompatible signature '%s'"
msgstr "la signatura «%s» és incompatible o està malmesa"
+#: gpg-interface.c
#, c-format
msgid "failed to get the ssh fingerprint for key '%s'"
msgstr "no s'ha pogut obtenir l'empremta ssh de la clau «%s»"
+#: gpg-interface.c
msgid ""
"either user.signingkey or gpg.ssh.defaultKeyCommand needs to be configured"
msgstr ""
"o bé user.signingkey o gpg.ssh.defaultKeyCommand han de ser configurats"
+#: gpg-interface.c
#, c-format
msgid "gpg.ssh.defaultKeyCommand succeeded but returned no keys: %s %s"
msgstr ""
"gpg.ssh.defaultKeyCommand ha tingut èxit però no ha retornat cap clau: %s %s"
+#: gpg-interface.c
#, c-format
msgid "gpg.ssh.defaultKeyCommand failed: %s %s"
msgstr "gpg.ssh.defaultKeyCommand ha fallat: %s %s"
+#: gpg-interface.c
#, c-format
msgid ""
"gpg failed to sign the data:\n"
@@ -16878,17 +21494,21 @@ msgstr ""
"gpg ha fallat en signar les dades:\n"
"%s"
+#: gpg-interface.c
msgid "user.signingKey needs to be set for ssh signing"
msgstr "user.signingKey s'ha d'establir per a signar amb ssh"
+#: gpg-interface.c
#, c-format
msgid "failed writing ssh signing key to '%s'"
msgstr "s'ha produït un error en escriure la clau de signatura ssh a «%s»"
+#: gpg-interface.c
#, c-format
msgid "failed writing ssh signing key buffer to '%s'"
msgstr "s'ha produït un error en escriure la clau de signatura ssh a «%s»"
+#: gpg-interface.c
msgid ""
"ssh-keygen -Y sign is needed for ssh signing (available in openssh version "
"8.2p1+)"
@@ -16896,102 +21516,132 @@ msgstr ""
"ssh-keygen -Y sign és necessari per a signar amb ssh (disponible a openssh "
"versió 8.2p1+)"
+#: gpg-interface.c
#, c-format
msgid "failed reading ssh signing data buffer from '%s'"
msgstr "s'ha produït un error en llegir la signatura ssh des de «%s»"
+#: graph.c
#, c-format
msgid "ignored invalid color '%.*s' in log.graphColors"
msgstr "ignora el color no vàlid «%.*s» a log.graphColors"
+#: grep.c
msgid ""
"given pattern contains NULL byte (via -f <file>). This is only supported "
"with -P under PCRE v2"
msgstr ""
-"el patró indicat conté byte NULL (via -f <fitxer>). Això només és compatible "
-"amb -P sota PCRE v2"
+"el patró indicat conté l'octet NULL (via -f <fitxer>). Això només és "
+"compatible amb -P sota PCRE v2"
+#: grep.c
#, c-format
msgid "'%s': unable to read %s"
msgstr "«%s»: no s'ha pogut llegir %s"
+#: grep.c
#, c-format
msgid "'%s': short read"
msgstr "«%s»: lectura curta"
+#: help.c
msgid "start a working area (see also: git help tutorial)"
msgstr "començar una àrea de treball (vegeu també: git help tutorial)"
+#: help.c
msgid "work on the current change (see also: git help everyday)"
msgstr "treballar en el canvi actual (vegeu també: git help everyday)"
+#: help.c
msgid "examine the history and state (see also: git help revisions)"
msgstr "examinar la història i l'estat (vegeu també: git help revisions)"
+#: help.c
msgid "grow, mark and tweak your common history"
msgstr "fer créixer, marcar i ajustar la vostra història comuna"
+#: help.c
msgid "collaborate (see also: git help workflows)"
msgstr "col·laborar (vegeu també: git help workflow)"
+#: help.c
msgid "Main Porcelain Commands"
msgstr "Ordres principals de porcellana"
+#: help.c
msgid "Ancillary Commands / Manipulators"
msgstr "Ordres auxiliars / manipuladors"
+#: help.c
msgid "Ancillary Commands / Interrogators"
msgstr "Ordres auxiliars / interrogadors"
+#: help.c
msgid "Interacting with Others"
msgstr "Interaccionar amb altres"
+#: help.c
msgid "Low-level Commands / Manipulators"
msgstr "Ordres de baix nivell / Manipuladors"
+#: help.c
msgid "Low-level Commands / Interrogators"
msgstr "Ordres de baix nivell / Interrogadors"
+#: help.c
msgid "Low-level Commands / Syncing Repositories"
msgstr "Ordres de baix nivell / Sincronització de repositoris"
+#: help.c
msgid "Low-level Commands / Internal Helpers"
msgstr "Ordres de baix nivell / Ajudants interns"
+#: help.c
msgid "User-facing repository, command and file interfaces"
msgstr "Repositori, ordre i interfície de fitxers que veu l'usuari"
+#: help.c
msgid "Developer-facing file formats, protocols and other interfaces"
-msgstr "Formats de fitxers, protocols i interfícies que veu el desenvolupador"
+msgstr "Formats de fitxer, protocols i interfícies que veu el desenvolupador"
+#: help.c
#, c-format
msgid "available git commands in '%s'"
msgstr "ordres de git disponibles en «%s»"
+#: help.c
msgid "git commands available from elsewhere on your $PATH"
msgstr "ordres de git disponibles d'altres llocs en el vostre $PATH"
+#: help.c
msgid "These are common Git commands used in various situations:"
msgstr "Aquestes són ordres habituals del Git usades en diverses situacions:"
+#: help.c
msgid "The Git concept guides are:"
msgstr "Les guies de Git de conceptes són:"
+#: help.c
msgid "User-facing repository, command and file interfaces:"
msgstr "Repositori, ordre i interfície de fitxers que veu l'usuari:"
+#: help.c
msgid "File formats, protocols and other developer interfaces:"
msgstr "Formats de fitxer, protocols i altres interfícies de desenvolupador:"
+#: help.c
msgid "External commands"
msgstr "Ordres externes"
+#: help.c
msgid "Command aliases"
msgstr "Àlies d'ordres"
+#: help.c
msgid "See 'git help <command>' to read about a specific subcommand"
msgstr "Vegeu «git help <ordre>» per a llegir sobre una subordre específica"
+#: help.c
#, c-format
msgid ""
"'%s' appears to be a git command, but we were not\n"
@@ -17000,31 +21650,38 @@ msgstr ""
"«%s» sembla una ordre de git, però no hem pogut\n"
"executar-la. Pot ser que git-%s estigui malmès?"
+#: help.c
#, c-format
msgid "git: '%s' is not a git command. See 'git --help'."
msgstr "git: «%s» no és una ordre de git. Vegeu «git --help»."
+#: help.c
msgid "Uh oh. Your system reports no Git commands at all."
msgstr "Ai. El vostre sistema no informa de cap ordre de Git."
+#: help.c
#, c-format
msgid "WARNING: You called a Git command named '%s', which does not exist."
msgstr ""
"ADVERTÈNCIA: Heu invocat una ordre de Git amb nom «%s», la qual no existeix."
+#: help.c
#, c-format
msgid "Continuing under the assumption that you meant '%s'."
msgstr "El procés continuarà, pressuposant que volíeu dir «%s»."
+#: help.c
#, c-format
msgid "Run '%s' instead [y/N]? "
msgstr "Voleu executar «%s» en el seu lloc? [y/N]? "
+#: help.c
#, c-format
msgid "Continuing in %0.1f seconds, assuming that you meant '%s'."
msgstr ""
"El procés continuarà en %0.1f segons, pressuposant que volíeu dir «%s»."
+#: help.c
msgid ""
"\n"
"The most similar command is"
@@ -17038,13 +21695,16 @@ msgstr[1] ""
"\n"
"Les ordres més similars són"
+#: help.c
msgid "git version [--build-options]"
msgstr "git version [--build-options]"
+#: help.c
#, c-format
msgid "%s: %s - %s"
msgstr "%s: %s - %s"
+#: help.c
msgid ""
"\n"
"Did you mean this?"
@@ -17058,6 +21718,7 @@ msgstr[1] ""
"\n"
"Volíeu dir un d'aquests?"
+#: hook.c
#, c-format
msgid ""
"The '%s' hook was ignored because it's not set as executable.\n"
@@ -17066,40 +21727,62 @@ msgstr ""
"El lligam «%s» s'ha ignorat perquè no s'ha establert com a executable.\n"
"Podeu desactivar aquest avís amb «git config advice.ignoredHook false»."
+#: http-fetch.c
+msgid "not a git repository"
+msgstr "no és un repositori de git"
+
+#: http-fetch.c
#, c-format
msgid "argument to --packfile must be a valid hash (got '%s')"
msgstr "l'argument a --packfile ha de ser un resum vàlid (s'ha obtingut «%s»)"
-msgid "not a git repository"
-msgstr "no és un repositori de git"
-
+#: http.c
#, c-format
msgid "negative value for http.postBuffer; defaulting to %d"
msgstr "valor negatiu per http.postBuffer; utilitzant el valor %d"
+#: http.c
msgid "Delegation control is not supported with cURL < 7.22.0"
msgstr "No s'admet el control de delegació amb el cURL < 7.22.0"
+#: http.c
msgid "Public key pinning not supported with cURL < 7.39.0"
msgstr "No s'admet la fixació de clau pública amb cURL < 7.39.0"
+#: http.c
+msgid "Unknown value for http.proactiveauth"
+msgstr "Valor desconegut de http.proactiveauth"
+
+#: http.c
msgid "CURLSSLOPT_NO_REVOKE not supported with cURL < 7.44.0"
msgstr "CURLSSLOPT_NO_REVOKE no està admès amb cURL < 7.44.0"
+#: http.c
#, c-format
msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
msgstr "El rerefons SSL «%s» no està admès. Els rerefons SSL admesos:"
+#: http.c
#, c-format
msgid "Could not set SSL backend to '%s': cURL was built without SSL backends"
msgstr ""
"No s'ha pogut establir el rerefons SSL a «%s»: cURL es va construir sense "
"rerefons SSL"
+#: http.c
#, c-format
msgid "Could not set SSL backend to '%s': already set"
msgstr "No s'ha pogut establir el rerefons SSL a «%s»: ja establert"
+#: http.c
+msgid "refusing to read cookies from http.cookiefile '-'"
+msgstr "res'ha rebutjat llegir galetes del http.cookiefile «-»"
+
+#: http.c
+msgid "ignoring http.savecookies for empty http.cookiefile"
+msgstr "s'està ignorant http.savecookies per al http.cookiefile buit"
+
+#: http.c
#, c-format
msgid ""
"unable to update url base from redirection:\n"
@@ -17110,12 +21793,15 @@ msgstr ""
" petició: %s\n"
" redirecció: %s"
+#: ident.c
msgid "Author identity unknown\n"
msgstr "Identitat de l'autor desconeguda\n"
+#: ident.c
msgid "Committer identity unknown\n"
msgstr "Es desconeix la identitat del comitent\n"
+#: ident.c
msgid ""
"\n"
"*** Please tell me who you are.\n"
@@ -17140,88 +21826,110 @@ msgstr ""
"per a establir la identitat predeterminada del vostre compte.\n"
"Ometeu --global per a establir la identitat només en aquest repositori.\n"
+#: ident.c
msgid "no email was given and auto-detection is disabled"
msgstr ""
"no s'ha proporcionat cap adreça electrònica i la detecció automàtica està "
"inhabilitada"
+#: ident.c
#, c-format
msgid "unable to auto-detect email address (got '%s')"
msgstr ""
"no s'ha pogut detectar automàticament una adreça electrònica vàlida (s'ha "
"rebut «%s»)"
+#: ident.c
msgid "no name was given and auto-detection is disabled"
msgstr ""
"no s'ha proporcionat cap nom i la detecció automàtica està inhabilitada"
+#: ident.c
#, c-format
msgid "unable to auto-detect name (got '%s')"
msgstr "no s'ha pogut detectar automàticament el nom (s'ha rebut «%s»)"
+#: ident.c
#, c-format
msgid "empty ident name (for <%s>) not allowed"
msgstr "nom d'identitat buit (per <%s>) no és permès"
+#: ident.c
#, c-format
msgid "name consists only of disallowed characters: %s"
msgstr "el nom conté només caràcters no permesos: %s"
+#: list-objects-filter-options.c
msgid "expected 'tree:<depth>'"
msgstr "s'esperava «tree:<profunditat>»"
+#: list-objects-filter-options.c
msgid "sparse:path filters support has been dropped"
msgstr "sparse: s'ha eliminat la implementació de filtres de camí sparse"
+#: list-objects-filter-options.c
#, c-format
msgid "'%s' for 'object:type=<type>' is not a valid object type"
msgstr "«%s» per a «object:type=<tipus>» no és un tipus d'objecte vàlid"
+#: list-objects-filter-options.c
#, c-format
msgid "invalid filter-spec '%s'"
msgstr "filtre d'especificació no vàlid: «%s»"
+#: list-objects-filter-options.c
#, c-format
msgid "must escape char in sub-filter-spec: '%c'"
msgstr "cal escapar el caràcter en el sub-filter-spec «%c»"
+#: list-objects-filter-options.c
msgid "expected something after combine:"
msgstr "s'esperava alguna cosa després de combinar:"
+#: list-objects-filter-options.c
msgid "multiple filter-specs cannot be combined"
msgstr "no es poden combinar múltiples especificacions de filtratge"
+#: list-objects-filter-options.c
msgid "unable to upgrade repository format to support partial clone"
msgstr ""
"no s'ha pogut actualitzar el format del repositori perquè sigui compatible "
"amb un clonatge parcial"
+#: list-objects-filter-options.h
msgid "args"
msgstr "arguments"
+#: list-objects-filter-options.h
msgid "object filtering"
msgstr "filtratge d'objecte"
+#: list-objects-filter.c
#, c-format
msgid "unable to access sparse blob in '%s'"
msgstr "no s'ha pogut accedir a un blob dispers en «%s»"
+#: list-objects-filter.c
#, c-format
msgid "unable to parse sparse filter data in %s"
msgstr "no s'han pogut analitzar les dades disperses filtrades %s"
+#: list-objects.c
#, c-format
msgid "entry '%s' in tree %s has tree mode, but is not a tree"
msgstr "l'entrada «%s» a l'arbre %s té mode d'arbre, però no és un arbre"
+#: list-objects.c
#, c-format
msgid "entry '%s' in tree %s has blob mode, but is not a blob"
msgstr "l'entrada «%s» a l'arbre %s té mode blob, però no és un blob"
+#: list-objects.c
#, c-format
msgid "unable to load root tree for commit %s"
msgstr "no s'ha pogut carregar l'arrel de l'arbre per la comissió %s"
+#: lockfile.c
#, c-format
msgid ""
"Unable to create '%s.lock': %s.\n"
@@ -17241,46 +21949,82 @@ msgstr ""
"ha fallat en aquest repositori abans:\n"
"elimineu el fitxer manualment per a continuar."
+#: lockfile.c
#, c-format
msgid "Unable to create '%s.lock': %s"
msgstr "No s'ha pogut crear «%s.lock»: %s"
+#: log-tree.c
+msgid "unable to create temporary object directory"
+msgstr "no s'ha pogut crear el directori temporal de l'objecte"
+
+#: loose.c
+#, c-format
+msgid "could not write loose object index %s"
+msgstr "no s'ha pogut escriure l'índex d'objecte solt %s"
+
+#: loose.c
+#, c-format
+msgid "failed to write loose object index %s"
+msgstr "no s'ha pogut escriure l'índex d'objectes solts %s"
+
+#: ls-refs.c
#, c-format
msgid "unexpected line: '%s'"
msgstr "línia inesperada: «%s»"
+#: ls-refs.c
msgid "expected flush after ls-refs arguments"
msgstr "s'esperava una neteja després dels arguments ls-refs"
+#: mailinfo.c
msgid "quoted CRLF detected"
msgstr "CRLF entre cometes detectat"
+#: mem-pool.c strbuf.c wrapper.c
+#, c-format
+msgid "unable to format message: %s"
+msgstr "no es pot formatar el missatge: %s"
+
+#: merge-ort.c merge-recursive.c
#, c-format
msgid "Failed to merge submodule %s (not checked out)"
msgstr "S'ha produït un error en fusionar el submòdul %s (no està agafat)"
+#: merge-ort.c
#, c-format
msgid "Failed to merge submodule %s (no merge base)"
msgstr "S'ha produït un error en fusionar el submòdul %s (no hi ha fusió base)"
+#: merge-ort.c merge-recursive.c
#, c-format
msgid "Failed to merge submodule %s (commits not present)"
msgstr "S'ha produït un error en fusionar el submòdul %s (no hi ha comissions)"
+# corrupt → malmès OK per a repositori?
+#: merge-ort.c
+#, c-format
+msgid "error: failed to merge submodule %s (repository corrupt)"
+msgstr "error: no s'ha pogut fusionar el submòdul %s (repositori malmès)"
+
+#: merge-ort.c merge-recursive.c
#, c-format
msgid "Failed to merge submodule %s (commits don't follow merge-base)"
msgstr ""
"S'ha produït un error en fusionar el submòdul %s (les comissions no "
"segueixen merge-base)"
+#: merge-ort.c
#, c-format
msgid "Note: Fast-forwarding submodule %s to %s"
msgstr "Nota: avançament ràpid del submòdul %s a %s"
+#: merge-ort.c
#, c-format
msgid "Failed to merge submodule %s"
msgstr "S'ha produït un error en fusionar el submòdul «%s»"
+#: merge-ort.c
#, c-format
msgid ""
"Failed to merge submodule %s, but a possible merge resolution exists: %s"
@@ -17288,6 +22032,7 @@ msgstr ""
"S'ha produït un error en fusionar el submòdul %s, però existeix una solució "
"possible: %s"
+#: merge-ort.c
#, c-format
msgid ""
"Failed to merge submodule %s, but multiple possible merges exist:\n"
@@ -17297,17 +22042,22 @@ msgstr ""
"solucions possibles:\n"
"%s"
-msgid "failed to execute internal merge"
-msgstr "no s'ha pogut executar la fusió interna"
+#: merge-ort.c
+#, c-format
+msgid "error: failed to execute internal merge for %s"
+msgstr "no s'ha pogut executar la fusió interna per a %s"
+#: merge-ort.c
#, c-format
-msgid "unable to add %s to database"
-msgstr "no s'ha pogut afegir %s a la base de dades"
+msgid "error: unable to add %s to database"
+msgstr "error: no es pot afegir %s a la base de dades"
+#: merge-ort.c merge-recursive.c
#, c-format
msgid "Auto-merging %s"
msgstr "S'està autofusionant %s"
+#: merge-ort.c merge-recursive.c
#, c-format
msgid ""
"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
@@ -17317,6 +22067,7 @@ msgstr ""
"existent a %s en forma de canvi del nom del directori implícit, posant-hi "
"els camins següents a: %s."
+#: merge-ort.c merge-recursive.c
#, c-format
msgid ""
"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
@@ -17326,6 +22077,7 @@ msgstr ""
"camí a %s; els canvis del nom del directori implícits han intentat posar "
"aquests camins a: %s segons"
+#: merge-ort.c
#, c-format
msgid ""
"CONFLICT (directory rename split): Unclear where to rename %s to; it was "
@@ -17336,6 +22088,7 @@ msgstr ""
"%s; s'han canviat de nom a múltiples altres directoris, sense una destinació "
"per a la majoria dels fitxers."
+#: merge-ort.c merge-recursive.c
#, c-format
msgid ""
"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
@@ -17344,6 +22097,7 @@ msgstr ""
"AVÃS: S'està evitant aplicar el canvi de nom %s -> %s a %s, perquè %s ell "
"mateix ja havia canviat de nom."
+#: merge-ort.c merge-recursive.c
#, c-format
msgid ""
"Path updated: %s added in %s inside a directory that was renamed in %s; "
@@ -17352,6 +22106,7 @@ msgstr ""
"Pedaç actualitzat: %s afegit a %s dins d'un directori que va canviar de nom "
"a %s; movent-lo a %s."
+#: merge-ort.c merge-recursive.c
#, c-format
msgid ""
"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
@@ -17360,6 +22115,7 @@ msgstr ""
"Pedaç actualitzat: %s canviat al nom %s a %s, dins d'un directori que va "
"canviar de nom a %s; movent-lo a %s."
+#: merge-ort.c merge-recursive.c
#, c-format
msgid ""
"CONFLICT (file location): %s added in %s inside a directory that was renamed "
@@ -17368,6 +22124,7 @@ msgstr ""
"CONFLICTE (ubicació del fitxer): %s afegit a %s dins d'un directori que va "
"canviar de nom a %s suggerint que potser hauria de moure's a %s."
+#: merge-ort.c merge-recursive.c
#, c-format
msgid ""
"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
@@ -17377,11 +22134,13 @@ msgstr ""
"directori que va canviar de nom a %s, suggerint que potser hauria de moure's "
"a %s."
+#: merge-ort.c
#, c-format
msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
msgstr ""
"CONFLICTE (canvi de nom/canvi de nom): %s ara té el nom %s a %s i %s a %s."
+#: merge-ort.c
#, c-format
msgid ""
"CONFLICT (rename involved in collision): rename of %s -> %s has content "
@@ -17392,20 +22151,24 @@ msgstr ""
"%s té conflictes de contingut i col·lisiona amb un altre camí; això pot "
"donar lloc a marcadors de conflicte imbricats."
+#: merge-ort.c
#, c-format
msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
msgstr ""
"CONFLICTE (canvi de nom/supressió): %s ara té el nom %s a %s, però s'ha "
"suprimit a %s."
+#: merge-ort.c
#, c-format
-msgid "cannot read object %s"
-msgstr "no es pot llegir l'objecte %s"
+msgid "error: cannot read object %s"
+msgstr "error: no es pot llegir l'objecte %s"
+#: merge-ort.c
#, c-format
-msgid "object %s is not a blob"
-msgstr "l'objecte %s no és un blob"
+msgid "error: object %s is not a blob"
+msgstr "error: l'objecte %s no és un blob"
+#: merge-ort.c
#, c-format
msgid ""
"CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
@@ -17414,6 +22177,7 @@ msgstr ""
"CONFLICTE (fitxer/directori): directori en el camí de %s des de %s; en "
"comptes es mou a %s."
+#: merge-ort.c
#, c-format
msgid ""
"CONFLICT (distinct types): %s had different types on each side; renamed both "
@@ -17422,6 +22186,7 @@ msgstr ""
"CONFLICTE (tipus diferents): %s tenia diferents tipus a cada costat; se'ls "
"ha canviat el nom per tal que cadascun pugui ser registrat en algun lloc."
+#: merge-ort.c
#, c-format
msgid ""
"CONFLICT (distinct types): %s had different types on each side; renamed one "
@@ -17431,19 +22196,24 @@ msgstr ""
"canviat el nom d'un d'ells per tal que cadascun pugui ser registrat en algun "
"lloc."
+#: merge-ort.c merge-recursive.c
msgid "content"
msgstr "contingut"
+#: merge-ort.c merge-recursive.c
msgid "add/add"
msgstr "afegiment/afegiment"
+#: merge-ort.c merge-recursive.c
msgid "submodule"
msgstr "submòdul"
+#: merge-ort.c merge-recursive.c
#, c-format
msgid "CONFLICT (%s): Merge conflict in %s"
msgstr "CONFLICTE (%s): Conflicte de fusió en %s"
+#: merge-ort.c
#, c-format
msgid ""
"CONFLICT (modify/delete): %s deleted in %s and modified in %s. Version %s "
@@ -17458,6 +22228,7 @@ msgstr ""
#. commit that needs to be merged. For example:
#. - go to submodule (mysubmodule), and either merge commit abc1234"
#.
+#: merge-ort.c
#, c-format
msgid ""
" - go to submodule (%s), and either merge commit %s\n"
@@ -17466,6 +22237,7 @@ msgstr ""
" - aneu al submòdul (%s), i fusioneu la comissió %s\n"
" o actualitzeu-la a una comissió existent que ha fusionat aquests canvis\n"
+#: merge-ort.c
#, c-format
msgid ""
"Recursive merging with submodules currently only supports trivial cases.\n"
@@ -17493,75 +22265,98 @@ msgstr ""
#. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
#. base, and 2-3) the trees for the two trees we're merging.
#.
+#: merge-ort.c
#, c-format
msgid "collecting merge info failed for trees %s, %s, %s"
msgstr ""
"ha fallat la recollida de la informació de fusió per als arbres %s, %s, %s"
+#: merge-recursive.c
msgid "(bad commit)\n"
msgstr "(comissió errònia)\n"
+#: merge-recursive.c
#, c-format
msgid "add_cacheinfo failed for path '%s'; merge aborting."
msgstr "add_cacheinfo ha fallat per al camí «%s»; interrompent la fusió."
+#: merge-recursive.c
#, c-format
msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
msgstr ""
"add_cacheinfo ha fallat al refrescar el camí «%s»; interrompent la fusió."
+#: merge-recursive.c
#, c-format
msgid "failed to create path '%s'%s"
msgstr "s'ha produït un error en crear el camí «%s»%s"
+#: merge-recursive.c
#, c-format
msgid "Removing %s to make room for subdirectory\n"
msgstr "S'està eliminant %s per a fer espai per al subdirectori\n"
+#: merge-recursive.c
msgid ": perhaps a D/F conflict?"
msgstr ": potser un conflicte D/F?"
+#: merge-recursive.c
#, c-format
msgid "refusing to lose untracked file at '%s'"
msgstr "s'està refusant perdre el fitxer no seguit a «%s»"
+#: merge-recursive.c
#, c-format
msgid "blob expected for %s '%s'"
msgstr "blob esperat per a %s «%s»"
+#: merge-recursive.c
#, c-format
msgid "failed to open '%s': %s"
msgstr "s'ha produït un error en obrir «%s»: %s"
+#: merge-recursive.c
#, c-format
msgid "failed to symlink '%s': %s"
msgstr "s'ha produït un error en fer l'enllaç simbòlic «%s»: %s"
+#: merge-recursive.c
#, c-format
msgid "do not know what to do with %06o %s '%s'"
msgstr "no se sap què fer amb %06o %s «%s»"
+#: merge-recursive.c
+#, c-format
+msgid "Failed to merge submodule %s (repository corrupt)"
+msgstr "No s'ha pogut fusionar el submòdul %s (repositori malmès)"
+
+#: merge-recursive.c
#, c-format
msgid "Fast-forwarding submodule %s to the following commit:"
msgstr "Avançament ràpid del submòdul %s a la següent comissió:"
+#: merge-recursive.c
#, c-format
msgid "Fast-forwarding submodule %s"
msgstr "Avançament ràpid al submòdul %s"
+#: merge-recursive.c
#, c-format
msgid "Failed to merge submodule %s (merge following commits not found)"
msgstr ""
"Ha fallat en fusionar el submòdul %s (no s'ha trobat les comissions següents)"
+#: merge-recursive.c
#, c-format
msgid "Failed to merge submodule %s (not fast-forward)"
msgstr ""
"S'ha produït un error en fusionar el submòdul %s (sense avançament ràpid)"
+#: merge-recursive.c
msgid "Found a possible merge resolution for the submodule:\n"
msgstr "S'ha trobat una possible resolució de fusió pel submòdul:\n"
+#: merge-recursive.c
#, c-format
msgid ""
"If this is correct simply add it to the index for example\n"
@@ -17578,18 +22373,30 @@ msgstr ""
"\n"
"que acceptarà aquest suggeriment.\n"
+#: merge-recursive.c
#, c-format
msgid "Failed to merge submodule %s (multiple merges found)"
msgstr ""
"S'ha produït un error en fusionar el submòdul %s (s'han trobat múltiples "
"fusions)"
+#: merge-recursive.c
+msgid "failed to execute internal merge"
+msgstr "no s'ha pogut executar la fusió interna"
+
+#: merge-recursive.c
+#, c-format
+msgid "unable to add %s to database"
+msgstr "no s'ha pogut afegir %s a la base de dades"
+
+#: merge-recursive.c
#, c-format
msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
msgstr ""
"Error: s'està refusant perdre el fitxer no seguit a %s; en comptes s'ha "
"escrit a %s."
+#: merge-recursive.c
#, c-format
msgid ""
"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -17598,6 +22405,7 @@ msgstr ""
"CONFLICTE: (%s/supressió): %s suprimit en %s i %s en %s. La versió %s de %s "
"s'ha deixat en l'arbre."
+#: merge-recursive.c
#, c-format
msgid ""
"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -17606,6 +22414,7 @@ msgstr ""
"CONFLICTE: (%s/supressió): %s suprimit en %s i %s a %s en %s. La versió %s "
"de %s s'ha deixat en l'arbre."
+#: merge-recursive.c
#, c-format
msgid ""
"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -17614,6 +22423,7 @@ msgstr ""
"CONFLICTE: (%s/supressió): %s suprimit en %s i %s en %s. La versió %s de %s "
"s'ha deixat en l'arbre a %s."
+#: merge-recursive.c
#, c-format
msgid ""
"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -17622,38 +22432,46 @@ msgstr ""
"CONFLICTE: (%s/supressió): %s suprimit en %s i %s a %s en %s. La versió %s "
"de %s s'ha deixat en l'arbre a %s."
+#: merge-recursive.c
msgid "rename"
msgstr "canvi de nom"
+#: merge-recursive.c
msgid "renamed"
msgstr "canviat de nom"
+#: merge-recursive.c
#, c-format
msgid "Refusing to lose dirty file at %s"
msgstr "S'està refusant a perdre el fitxer brut a %s"
+#: merge-recursive.c
#, c-format
msgid "Refusing to lose untracked file at %s, even though it's in the way."
msgstr ""
"S'està refusant perdre el fitxer no seguit a «%s», malgrat que està en mig "
"de l'operació."
+#: merge-recursive.c
#, c-format
msgid "CONFLICT (rename/add): Rename %s->%s in %s. Added %s in %s"
msgstr ""
"CONFLICTE (canvi de nom/afegiment): Canvi de nom %s->%s a %s. S'ha afegit "
"%s a %s"
+#: merge-recursive.c
#, c-format
msgid "%s is a directory in %s adding as %s instead"
msgstr "%s és un directori en %s; s'està afegint com a %s en lloc d'això"
+#: merge-recursive.c
#, c-format
msgid "Refusing to lose untracked file at %s; adding as %s instead"
msgstr ""
"S'està refusant perdre el fitxer no seguit a %s; en comptes, s'està afegint "
"com a %s"
+#: merge-recursive.c
#, c-format
msgid ""
"CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename "
@@ -17662,15 +22480,18 @@ msgstr ""
"CONFLICTE (canvi de nom/canvi de nom): Canvi de nom «%s»->«%s» en la branca "
"«%s» canvi de nom «%s»->«%s» en «%s»%s"
+#: merge-recursive.c
msgid " (left unresolved)"
msgstr " (deixat sense resolució)"
+#: merge-recursive.c
#, c-format
msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
msgstr ""
"CONFLICTE (canvi de nom/canvi de nom): Canvi de nom %s->%s en %s. Canvi de "
"nom %s->%s en %s"
+#: merge-recursive.c
#, c-format
msgid ""
"CONFLICT (directory rename split): Unclear where to place %s because "
@@ -17681,6 +22502,7 @@ msgstr ""
"%s perquè el directori %s s'han canviat de nom a múltiples altres "
"directoris, sense una destinació per a la majoria dels fitxers."
+#: merge-recursive.c
#, c-format
msgid ""
"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
@@ -17689,285 +22511,426 @@ msgstr ""
"CONFLICTE (canvi de nom/canvi de nom): canvi de nom %s->%s en %s. Canvi de "
"nom de directori %s->%s en %s"
+#: merge-recursive.c
+#, c-format
+msgid "cannot read object %s"
+msgstr "no es pot llegir l'objecte %s"
+
+#: merge-recursive.c
+#, c-format
+msgid "object %s is not a blob"
+msgstr "l'objecte %s no és un blob"
+
+#: merge-recursive.c
msgid "modify"
msgstr "modificació"
+#: merge-recursive.c
msgid "modified"
msgstr "modificat"
+#: merge-recursive.c
#, c-format
msgid "Skipped %s (merged same as existing)"
msgstr "S'ha omès %s (el fusionat és igual a l'existent)"
+#: merge-recursive.c
#, c-format
msgid "Adding as %s instead"
msgstr "S'està afegint com a %s en lloc d'això"
+#: merge-recursive.c
#, c-format
msgid "Removing %s"
msgstr "S'està eliminant %s"
+#: merge-recursive.c
msgid "file/directory"
msgstr "fitxer/directori"
+#: merge-recursive.c
msgid "directory/file"
msgstr "directori/fitxer"
+#: merge-recursive.c
#, c-format
msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
msgstr ""
"CONFLICTE (%s): Hi ha un directori amb nom %s en %s. S'està afegint %s com a "
"%s"
+#: merge-recursive.c
#, c-format
msgid "Adding %s"
msgstr "S'està afegint %s"
+#: merge-recursive.c
#, c-format
msgid "CONFLICT (add/add): Merge conflict in %s"
msgstr "CONFLICTE (afegiment/afegiment): Conflicte de fusió en %s"
+#: merge-recursive.c
#, c-format
msgid "merging of trees %s and %s failed"
msgstr "la fusió dels arbres %s i %s ha fallat"
+#: merge-recursive.c
msgid "Merging:"
msgstr "S'està fusionant:"
+#: merge-recursive.c
#, c-format
msgid "found %u common ancestor:"
msgid_plural "found %u common ancestors:"
msgstr[0] "s'ha trobat %u avantpassat en comú:"
msgstr[1] "s'han trobat %u avantpassats en comú:"
+#: merge-recursive.c
msgid "merge returned no commit"
msgstr "la fusió no ha retornat cap comissió"
+#: merge-recursive.c
#, c-format
msgid "Could not parse object '%s'"
msgstr "No s'ha pogut analitzar l'objecte «%s»"
+#: merge.c
msgid "failed to read the cache"
msgstr "s'ha produït un error en llegir la memòria cau"
+#: midx-write.c
+#, c-format
+msgid "failed to add packfile '%s'"
+msgstr "no s'ha pogut afegir el fitxer de paquet «%s»"
+
+#: midx-write.c
+#, c-format
+msgid "failed to open pack-index '%s'"
+msgstr "no s'ha pogut obrir l'índex del paquet «%s»"
+
+#: midx-write.c
+#, c-format
+msgid "failed to locate object %d in packfile"
+msgstr "no s'ha pogut localitzar l'objecte %d en el fitxer de paquet"
+
+#: midx-write.c
+msgid "cannot store reverse index file"
+msgstr "no es pot emmagatzemar el fitxer d'índex invers"
+
+#: midx-write.c
+#, c-format
+msgid "could not parse line: %s"
+msgstr "no s'ha pogut analitzar la línia: %s"
+
+#: midx-write.c
+#, c-format
+msgid "malformed line: %s"
+msgstr "línia mal formada: %s"
+
+#: midx-write.c
+msgid "could not load pack"
+msgstr "no s'ha pogut carregar el paquet"
+
+#: midx-write.c
+#, c-format
+msgid "could not open index for %s"
+msgstr "s'ha produït un error en obrir l'índex per «%s»"
+
+#: midx-write.c
+#, c-format
+msgid "unable to link '%s' to '%s'"
+msgstr "no s'ha pogut enllaçar «%s» a «%s»"
+
+#: midx-write.c midx.c
+#, c-format
+msgid "failed to clear multi-pack-index at %s"
+msgstr "no s'ha pogut netejar l'índex multipaquet a %s"
+
+#: midx-write.c
+msgid "cannot write incremental MIDX with bitmap"
+msgstr "no es pot escriure un MIDX incremental amb mapa de bits"
+
+#: midx-write.c
+msgid "ignoring existing multi-pack-index; checksum mismatch"
+msgstr ""
+"s'està ignorant l'índex multipaquet existent; la suma de verificació no "
+"coincideix"
+
+#: midx-write.c
+msgid "Adding packfiles to multi-pack-index"
+msgstr "S'estan afegint fitxers empaquetats a l'índex multipaquet"
+
+#: midx-write.c
+#, c-format
+msgid "unknown preferred pack: '%s'"
+msgstr "paquet preferit desconegut: «%s»"
+
+#: midx-write.c
+#, c-format
+msgid "cannot select preferred pack %s with no objects"
+msgstr "no es pot seleccionar un paquet preferit %s sense objectes"
+
+#: midx-write.c
+#, c-format
+msgid "did not see pack-file %s to drop"
+msgstr "no s'ha vist caure el fitxer empaquetat %s"
+
+#: midx-write.c
+#, c-format
+msgid "preferred pack '%s' is expired"
+msgstr "el paquet preferit «%s» ha caducat"
+
+#: midx-write.c
+msgid "no pack files to index."
+msgstr "no hi ha fitxers empaquetats a indexar."
+
+#: midx-write.c
+msgid "refusing to write multi-pack .bitmap without any objects"
+msgstr "s'està refusant a escriure el .bitmap multipaquet sense cap objecte"
+
+#: midx-write.c
+msgid "unable to create temporary MIDX layer"
+msgstr "no s'ha pogut crear una capa MIDX temporal"
+
+#: midx-write.c
+msgid "could not write multi-pack bitmap"
+msgstr "no s'han pogut escriure els mapes de bits dels multipaquets"
+
+#: midx-write.c
+msgid "unable to open multi-pack-index chain file"
+msgstr "no s'ha pogut obrir el fitxer de cadenes multi-path-index"
+
+#: midx-write.c
+msgid "unable to rename new multi-pack-index layer"
+msgstr "no s'ha pogut canviar el nom de la capa multi-pack-index"
+
+#: midx-write.c
+msgid "could not write multi-pack-index"
+msgstr "no s'ha pogut escriure l'índex multipaquet"
+
+#: midx-write.c
+msgid "cannot expire packs from an incremental multi-pack-index"
+msgstr "no es pot fer caducar paquets d'un multi-pack-index incremental"
+
+#: midx-write.c
+msgid "Counting referenced objects"
+msgstr "S'estan comptant els objectes referenciats"
+
+#: midx-write.c
+msgid "Finding and deleting unreferenced packfiles"
+msgstr "S'estan cercant i suprimint els fitxers de paquets no referenciats"
+
+#: midx-write.c
+msgid "cannot repack an incremental multi-pack-index"
+msgstr "no es pot reempaquetar un multi-pack-index incremental"
+
+#: midx-write.c
+msgid "could not start pack-objects"
+msgstr "no s'ha pogut iniciar el pack-objects"
+
+#: midx-write.c
+msgid "could not finish pack-objects"
+msgstr "no s'ha pogut finalitzar el pack-objects"
+
+#: midx.c
msgid "multi-pack-index OID fanout is of the wrong size"
msgstr "l'OID «fanout» de l'índex multipaquet és d'una mida incorrecta"
+#: midx.c
#, c-format
msgid ""
"oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
msgstr ""
"oid «fanout» desordenat: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
+#: midx.c
msgid "multi-pack-index OID lookup chunk is the wrong size"
msgstr "El fragment de cerca OID índex multipaquet és de mida incorrecta"
+#: midx.c
msgid "multi-pack-index object offset chunk is the wrong size"
msgstr ""
"el fragment de desplaçament de l'objecte índex multipaquet és d'una mida "
"incorrecta"
+#: midx.c
#, c-format
msgid "multi-pack-index file %s is too small"
msgstr "el fitxer de l'índex multipaquet %s és massa petit"
+#: midx.c
#, c-format
msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
msgstr ""
"la signatura de l'índex multipaquet 0x%08x no coincideix amb la signatura "
"0x%08x"
+#: midx.c
#, c-format
msgid "multi-pack-index version %d not recognized"
msgstr "no es reconeix la versió %d de l'índex multipaquet"
+#: midx.c
#, c-format
msgid "multi-pack-index hash version %u does not match version %u"
msgstr ""
"la versió del resum índex multipaquet %u no coincideix amb la versió %u"
+#: midx.c
msgid "multi-pack-index required pack-name chunk missing or corrupted"
msgstr ""
"manca o està malmès el fragment del nom de paquet requerit de l'índex "
"multipaquet"
+#: midx.c
msgid "multi-pack-index required OID fanout chunk missing or corrupted"
msgstr ""
"manca o està malmès el fragment del «fanout» OID requerit a l'índex "
"multipaquet"
+#: midx.c
msgid "multi-pack-index required OID lookup chunk missing or corrupted"
msgstr ""
"manca o està malmès el fragment de cerca d'OID necessari a l'índex "
"multipaquet"
+#: midx.c
msgid "multi-pack-index required object offsets chunk missing or corrupted"
msgstr ""
"manca o està malmès el fragment de l'índex multipaquet dels objectes "
"requerits"
+#: midx.c
msgid "multi-pack-index pack-name chunk is too short"
msgstr "el fragment de nom de l'índex multipaquet és massa curt"
+#: midx.c
#, c-format
msgid "multi-pack-index pack names out of order: '%s' before '%s'"
msgstr ""
"els noms de paquet de l'índex multipaquet estan desordenats «%s» abans de "
"«%s»"
+#: midx.c
+msgid "multi-pack-index chain file too small"
+msgstr "el fitxer de cadena multi-pack-index és massa petit"
+
+#: midx.c
+#, c-format
+msgid "pack count in base MIDX too high: %<PRIuMAX>"
+msgstr "el recompte de paquets en el MIDX de base és massa alt: %<PRIuMAX>"
+
+#: midx.c
+#, c-format
+msgid "object count in base MIDX too high: %<PRIuMAX>"
+msgstr "el recompte de objectes en el MIDX de base és massa alt: %<PRIuMAX>"
+
+#: midx.c
+#, c-format
+msgid "invalid multi-pack-index chain: line '%s' not a hash"
+msgstr "cadena multi-pack-index invàlida: la línia «%s» no és un hash"
+
+# tots els fitxers multi-pack-index ?
+#: midx.c
+msgid "unable to find all multi-pack index files"
+msgstr "no s'han pogut trobar tots els fitxers d'índex multi-pack"
+
+#: midx.c
+msgid "invalid MIDX object position, MIDX is likely corrupt"
+msgstr ""
+"posició invàlida de l'objecte MIDX; probablement el MIDX s'ha corromput"
+
+#: midx.c
#, c-format
msgid "bad pack-int-id: %u (%u total packs)"
msgstr "pack-int-id: %u incorrecte (%u paquets en total)"
+#: midx.c
msgid "MIDX does not contain the BTMP chunk"
msgstr "MIDX no conté el fragment BTMP"
+#: midx.c
#, c-format
msgid "could not load bitmapped pack %<PRIu32>"
msgstr "no s'ha pogut carregar el paquet amb bits %<PRIu32>"
+#: midx.c
msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
msgstr ""
"l'índex multipaquet emmagatzema un desplaçament de 64 bits, però off_t és "
"massa petit"
+#: midx.c
msgid "multi-pack-index large offset out of bounds"
msgstr "desplaçament gran de l'índex multipaquet està fora dels límits"
-#, c-format
-msgid "failed to add packfile '%s'"
-msgstr "no s'ha pogut afegir el fitxer de paquet «%s»"
-
-#, c-format
-msgid "failed to open pack-index '%s'"
-msgstr "no s'ha pogut obrir l'índex del paquet «%s»"
-
-#, c-format
-msgid "failed to locate object %d in packfile"
-msgstr "no s'ha pogut localitzar l'objecte %d en el fitxer de paquet"
-
-msgid "cannot store reverse index file"
-msgstr "no es pot emmagatzemar el fitxer d'índex invers"
-
-#, c-format
-msgid "could not parse line: %s"
-msgstr "no s'ha pogut analitzar la línia: %s"
-
-#, c-format
-msgid "malformed line: %s"
-msgstr "línia mal formada: %s"
-
-msgid "ignoring existing multi-pack-index; checksum mismatch"
-msgstr ""
-"s'està ignorant l'índex multipaquet existent; la suma de verificació no "
-"coincideix"
-
-msgid "could not load pack"
-msgstr "no s'ha pogut carregar el paquet"
-
-#, c-format
-msgid "could not open index for %s"
-msgstr "s'ha produït un error en obrir l'índex per «%s»"
-
-msgid "Adding packfiles to multi-pack-index"
-msgstr "S'estan afegint fitxers empaquetats a l'índex multipaquet"
-
-#, c-format
-msgid "unknown preferred pack: '%s'"
-msgstr "paquet preferit desconegut: «%s»"
-
-#, c-format
-msgid "cannot select preferred pack %s with no objects"
-msgstr "no es pot seleccionar un paquet preferit %s sense objectes"
-
-#, c-format
-msgid "did not see pack-file %s to drop"
-msgstr "no s'ha vist caure el fitxer empaquetat %s"
-
-#, c-format
-msgid "preferred pack '%s' is expired"
-msgstr "el paquet preferit «%s» ha caducat"
-
-msgid "no pack files to index."
-msgstr "no hi ha fitxers empaquetats a indexar."
-
-msgid "refusing to write multi-pack .bitmap without any objects"
-msgstr "s'està refusant a escriure el .bitmap multipaquet sense cap objecte"
-
-msgid "could not write multi-pack bitmap"
-msgstr "no s'han pogut escriure els mapes de bits dels multipaquets"
-
-msgid "could not write multi-pack-index"
-msgstr "no s'ha pogut escriure l'índex multipaquet"
-
-#, c-format
-msgid "failed to clear multi-pack-index at %s"
-msgstr "no s'ha pogut netejar l'índex multipaquet a %s"
-
+#: midx.c
msgid "multi-pack-index file exists, but failed to parse"
msgstr ""
"el fitxer de l'índex multipaquet existeix, però no s'ha pogut analitzar"
+#: midx.c
msgid "incorrect checksum"
msgstr "suma de verificació incorrecta"
+#: midx.c
msgid "Looking for referenced packfiles"
msgstr "S'estan cercant fitxers empaquetats referenciats"
+#: midx.c
msgid "the midx contains no oid"
msgstr "el midx no conté cap oid"
+#: midx.c
msgid "Verifying OID order in multi-pack-index"
msgstr "S'està verificant l'ordre OID a l'índex multipaquet"
+#: midx.c
#, c-format
msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
msgstr "oid lookup desordenat: oid[%d] = %s >= %s = oid[%d]"
+#: midx.c
msgid "Sorting objects by packfile"
msgstr "S'estan ordenant els objectes per fitxer empaquetats"
+#: midx.c
msgid "Verifying object offsets"
msgstr "S'estan verificant els desplaçaments dels objectes"
+#: midx.c
#, c-format
msgid "failed to load pack entry for oid[%d] = %s"
msgstr "no s'ha pogut carregar l'entrada del paquet per a oid[%d] = %s"
+#: midx.c
#, c-format
msgid "failed to load pack-index for packfile %s"
msgstr "no s'ha pogut carregar l'índex del paquet per al fitxer empaquetat %s"
+#: midx.c
#, c-format
msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
msgstr ""
"desplaçament incorrecte de l'objecte per a oid[%d] = %s: %<PRIx64> != "
"%<PRIx64>"
-msgid "Counting referenced objects"
-msgstr "S'estan comptant els objectes referenciats"
-
-msgid "Finding and deleting unreferenced packfiles"
-msgstr "S'estan cercant i suprimint els fitxers de paquets no referenciats"
-
-msgid "could not start pack-objects"
-msgstr "no s'ha pogut iniciar el pack-objects"
-
-msgid "could not finish pack-objects"
-msgstr "no s'ha pogut finalitzar el pack-objects"
-
+#: name-hash.c
#, c-format
msgid "unable to create lazy_dir thread: %s"
msgstr "no s'ha pogut crear el fil «lazy_dir» :%s"
+#: name-hash.c
#, c-format
msgid "unable to create lazy_name thread: %s"
msgstr "no s'ha pogut crear un fil «lazy_name»: %s"
+#: name-hash.c
#, c-format
msgid "unable to join lazy_name thread: %s"
msgstr "no s'ha pogut unir el fil «lazy_name»: %s"
+#: notes-merge.c
#, c-format
msgid ""
"You have not concluded your previous notes merge (%s exists).\n"
@@ -17978,17 +22941,21 @@ msgstr ""
"Useu «git notes merge --commit» o «git notes merge --abort» per a cometre/"
"avortar la fusió prèvia abans de començar una fusió de notes nova."
+#: notes-merge.c
#, c-format
msgid "You have not concluded your notes merge (%s exists)."
msgstr "No heu conclòs la vostra fusió de notes (%s existeix)."
+#: notes-utils.c
msgid "Cannot commit uninitialized/unreferenced notes tree"
msgstr "No es pot cometre un arbre de notes no inicialitzat / no referenciat"
+#: notes-utils.c
#, c-format
msgid "Bad notes.rewriteMode value: '%s'"
msgstr "Valor de notes.rewriteMode erroni: «%s»"
+#: notes-utils.c
#, c-format
msgid "Refusing to rewrite notes in %s (outside of refs/notes/)"
msgstr "S'està refusant reescriure les notes en %s (fora de refs/notes/)"
@@ -17997,217 +22964,310 @@ msgstr "S'està refusant reescriure les notes en %s (fora de refs/notes/)"
#. the environment variable, the second %s is
#. its value.
#.
+#: notes-utils.c
#, c-format
msgid "Bad %s value: '%s'"
msgstr "Valor erroni de %s: «%s»"
+#: object-file-convert.c
+msgid "failed to decode tree entry"
+msgstr "no s'ha pogut descodificar una entrada d'arbre"
+
+#: object-file-convert.c
+#, c-format
+msgid "failed to map tree entry for %s"
+msgstr "no s'ha pogut mapar l'entrada d'arbre per a %s"
+
+#: object-file-convert.c
+#, c-format
+msgid "bad %s in commit"
+msgstr "%s és incorrecte en la comissió"
+
+#: object-file-convert.c
+#, c-format
+msgid "unable to map %s %s in commit object"
+msgstr "no es pot mapar %s %s en l'objecte de comissió"
+
+#: object-file-convert.c
+#, c-format
+msgid "Failed to convert object from %s to %s"
+msgstr "No s'ha pogut convertir l'objecte de %s a %s"
+
+#: object-file.c
#, c-format
msgid "object directory %s does not exist; check .git/objects/info/alternates"
msgstr ""
"no existeix el directori d'objecte %s; comproveu .git/objects/info/alternates"
+#: object-file.c
#, c-format
msgid "unable to normalize alternate object path: %s"
msgstr "no s'ha pogut normalitzar el camí a l'objecte alternatiu: %s"
+#: object-file.c
#, c-format
msgid "%s: ignoring alternate object stores, nesting too deep"
msgstr ""
"%s: s'estan ignorant els emmagatzematges alternatius d'objectes, imbricació "
"massa profunda"
+#: object-file.c
msgid "unable to fdopen alternates lockfile"
msgstr "no s'ha pogut fer «fdopen» al fitxer de bloqueig alternatiu"
+#: object-file.c
msgid "unable to read alternates file"
msgstr "no es pot llegir el fitxer «alternates»"
+#: object-file.c
msgid "unable to move new alternates file into place"
msgstr "no s'ha pogut moure el nou fitxer «alternates» al lloc"
+#: object-file.c
#, c-format
msgid "path '%s' does not exist"
msgstr "el camí «%s» no existeix"
+#: object-file.c
#, c-format
msgid "reference repository '%s' as a linked checkout is not supported yet."
msgstr ""
"encara no s'admet el repositori de referència «%s» com a agafament enllaçat."
+#: object-file.c
#, c-format
msgid "reference repository '%s' is not a local repository."
msgstr "el repositori de referència «%s» no és un repositori local."
+#: object-file.c
#, c-format
msgid "reference repository '%s' is shallow"
msgstr "el repositori de referència «%s» és superficial"
+#: object-file.c
#, c-format
msgid "reference repository '%s' is grafted"
msgstr "el repositori de referència «%s» és empeltat"
+#: object-file.c
#, c-format
msgid "could not find object directory matching %s"
msgstr "no s'ha pogut trobar el directori de l'objecte que coincideixi amb %s"
+#: object-file.c
#, c-format
msgid "invalid line while parsing alternate refs: %s"
msgstr ""
"línia no vàlida quan s'analitzaven les referències de l'«alternate»: %s"
+#: object-file.c
#, c-format
msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
msgstr "s'està intentant fer mmap %<PRIuMAX> per sobre del límit %<PRIuMAX>"
+#: object-file.c
#, c-format
msgid "mmap failed%s"
msgstr "mmap ha fallat%s"
+#: object-file.c
#, c-format
msgid "object file %s is empty"
msgstr "el tipus d'objecte %s és buit"
+#: object-file.c
#, c-format
msgid "corrupt loose object '%s'"
msgstr "objecte solt corrupte «%s»"
+#: object-file.c
#, c-format
msgid "garbage at end of loose object '%s'"
msgstr "brossa al final de l'objecte solt «%s»"
+#: object-file.c
#, c-format
msgid "unable to open loose object %s"
msgstr "no s'ha pogut obrir l'objecte solt %s"
+#: object-file.c
#, c-format
msgid "unable to parse %s header"
msgstr "no s'ha pogut analitzar la capçalera %s"
+#: object-file.c
msgid "invalid object type"
msgstr "tipus d'objecte és incorrecte"
+#: object-file.c
#, c-format
msgid "unable to unpack %s header"
msgstr "no s'ha pogut desempaquetar la capçalera %s"
+#: object-file.c
#, c-format
msgid "header for %s too long, exceeds %d bytes"
-msgstr "la capçalera per a %s és massa llarga, supera els %d bytes"
+msgstr "la capçalera per a %s és massa llarga, supera els %d octets"
+#: object-file.c
#, c-format
msgid "loose object %s (stored in %s) is corrupt"
msgstr "l'objecte solt %s (emmagatzemat a %s) és corrupte"
+#: object-file.c
#, c-format
msgid "replacement %s not found for %s"
msgstr "no s'ha trobat el reemplaçament %s per a %s"
+#: object-file.c
#, c-format
msgid "packed object %s (stored in %s) is corrupt"
msgstr "l'objecte empaquetat %s (emmagatzemat a %s) és corrupte"
+#: object-file.c
+#, c-format
+msgid "missing mapping of %s to %s"
+msgstr "manca el mapatge de %s a %s"
+
+#: object-file.c
+#, c-format
+msgid "unable to open %s"
+msgstr "no s'ha pogut obrir %s"
+
+#: object-file.c
+#, c-format
+msgid "files '%s' and '%s' differ in contents"
+msgstr "els fitxers «%s» i «%s» difereixen en el contingut"
+
+#: object-file.c
#, c-format
msgid "unable to write file %s"
msgstr "no s'ha pogut escriure al fitxer %s"
+#: object-file.c
#, c-format
msgid "unable to set permission to '%s'"
msgstr "no s'ha pogut establir el permís a «%s»"
+#: object-file.c
msgid "error when closing loose object file"
msgstr "error en tancar el fitxer d'objecte solt"
+#: object-file.c
#, c-format
msgid "insufficient permission for adding an object to repository database %s"
msgstr ""
"permisos insuficients per a afegir un objecte a la base de dades del "
"repositori %s"
+#: object-file.c
msgid "unable to create temporary file"
msgstr "no s'ha pogut crear un fitxer temporal"
+#: object-file.c
msgid "unable to write loose object file"
msgstr "no s'ha pogut escriure el fitxer d'objecte solt"
+#: object-file.c
#, c-format
msgid "unable to deflate new object %s (%d)"
msgstr "no s'ha pogut desinflar l'object nou %s (%d)"
+#: object-file.c
#, c-format
msgid "deflateEnd on object %s failed (%d)"
msgstr "ha fallat deflateEnd a l'objecte %s(%d)"
+#: object-file.c
#, c-format
msgid "confused by unstable object source data for %s"
msgstr "confós per la font de dades inestable de l'objecte per a %s"
+#: object-file.c
#, c-format
msgid "write stream object %ld != %<PRIuMAX>"
msgstr "escriu l'objecte de flux %ld != %<PRIuMAX>"
+#: object-file.c
#, c-format
msgid "unable to stream deflate new object (%d)"
msgstr "no s'ha pogut desinflar l'object nou (%d)"
+#: object-file.c
#, c-format
msgid "deflateEnd on stream object failed (%d)"
msgstr "ha fallat deflateEnd a l'objecte del flux (%d)"
+#: object-file.c
#, c-format
msgid "unable to create directory %s"
msgstr "s'ha produït un error en crear el directori %s"
+#: object-file.c
#, c-format
msgid "cannot read object for %s"
msgstr "no es pot llegir l'objecte per a %s"
+#: object-file.c
+#, c-format
+msgid "cannot map object %s to %s"
+msgstr "no és possible mapar l'objecte %s a %s"
+
+#: object-file.c
#, c-format
msgid "object fails fsck: %s"
msgstr "l'objecte ha fallat fsck: %s"
+#: object-file.c
msgid "refusing to create malformed object"
msgstr "es rebutja crear un objecte mal format"
+#: object-file.c
#, c-format
msgid "read error while indexing %s"
msgstr "error de lectura mentre s'indexava %s"
+#: object-file.c
#, c-format
msgid "short read while indexing %s"
msgstr "lectura curta mentre s'indexa %s"
+#: object-file.c
#, c-format
msgid "%s: failed to insert into database"
msgstr "%s: no s'han pogut inserir a la base de dades"
+#: object-file.c
#, c-format
msgid "%s: unsupported file type"
msgstr "%s: tipus de fitxer no suportat"
+#: object-file.c
#, c-format
msgid "%s is not a valid '%s' object"
msgstr "%s no és un objecte de «%s» vàlid"
-#, c-format
-msgid "unable to open %s"
-msgstr "no s'ha pogut obrir %s"
-
+#: object-file.c
#, c-format
msgid "hash mismatch for %s (expected %s)"
msgstr "no coincideix el resum per a %s (s'esperava %s)"
+#: object-file.c
#, c-format
msgid "unable to mmap %s"
msgstr "no s'ha pogut fer «mmap» %s"
+#: object-file.c
#, c-format
msgid "unable to unpack header of %s"
msgstr "no s'ha pogut desempaquetar la capçalera de %s"
+#: object-file.c
#, c-format
msgid "unable to parse header of %s"
msgstr "no s'ha pogut analitzar la capçalera de %s"
+#: object-file.c
#, c-format
msgid "unable to unpack contents of %s"
msgstr "no s'han pogut desempaquetar els continguts de %s"
@@ -18216,6 +23276,7 @@ msgstr "no s'han pogut desempaquetar els continguts de %s"
#. output shown when we cannot look up or parse the
#. object in question. E.g. "deadbeef [bad object]".
#.
+#: object-name.c
#, c-format
msgid "%s [bad object]"
msgstr "%s [objecte incorrecte]"
@@ -18225,6 +23286,7 @@ msgstr "%s [objecte incorrecte]"
#. *
#. "deadbeef commit 2021-01-01 - Some Commit Message"
#.
+#: object-name.c
#, c-format
msgid "%s commit %s - %s"
msgstr "%s comissió %s - %s"
@@ -18240,6 +23302,7 @@ msgstr "%s comissió %s - %s"
#. The third argument is the "tag" string
#. from object.c.
#.
+#: object-name.c
#, c-format
msgid "%s tag %s - %s"
msgstr "%s etiqueta %s - %s"
@@ -18250,6 +23313,7 @@ msgstr "%s etiqueta %s - %s"
#. *
#. "deadbeef [bad tag, could not parse it]"
#.
+#: object-name.c
#, c-format
msgid "%s [bad tag, could not parse it]"
msgstr "%s [etiqueta malmesa, no s'ha pogut analitzar]"
@@ -18257,6 +23321,7 @@ msgstr "%s [etiqueta malmesa, no s'ha pogut analitzar]"
#. TRANSLATORS: This is a line of ambiguous <type>
#. object output. E.g. "deadbeef tree".
#.
+#: object-name.c
#, c-format
msgid "%s tree"
msgstr "arbre %s"
@@ -18264,10 +23329,12 @@ msgstr "arbre %s"
#. TRANSLATORS: This is a line of ambiguous <type>
#. object output. E.g. "deadbeef blob".
#.
+#: object-name.c
#, c-format
msgid "%s blob"
msgstr "blob %s"
+#: object-name.c
#, c-format
msgid "short object ID %s is ambiguous"
msgstr "l'id d'objecte curt %s és ambigu"
@@ -18276,6 +23343,7 @@ msgstr "l'id d'objecte curt %s és ambigu"
#. objects composed in show_ambiguous_object(). See
#. its "TRANSLATORS" comments for details.
#.
+#: object-name.c
#, c-format
msgid ""
"The candidates are:\n"
@@ -18284,6 +23352,7 @@ msgstr ""
"Els candidats són:\n"
"%s"
+#: object-name.c
msgid ""
"Git normally never creates a ref that ends with 40 hex characters\n"
"because it will be ignored when you just specify 40-hex. These refs\n"
@@ -18307,18 +23376,22 @@ msgstr ""
"suprimiu-les. Desactiveu aquest missatge executant\n"
"«git config advice.objectNameWarning false»"
+#: object-name.c
#, c-format
msgid "log for '%.*s' only goes back to %s"
msgstr "registre per a «%.*s» només retorna a %s"
+#: object-name.c
#, c-format
msgid "log for '%.*s' only has %d entries"
msgstr "registre per a «%.*s» només té %d entrades"
+#: object-name.c
#, c-format
msgid "path '%s' exists on disk, but not in '%.*s'"
msgstr "el camí «%s» existeix al disc, però no a «%.*s»"
+#: object-name.c
#, c-format
msgid ""
"path '%s' exists, but not '%s'\n"
@@ -18327,10 +23400,12 @@ msgstr ""
"el camí «%s» existeix, però no «%s»\n"
"consell: volíeu dir «%.*s:%s» conegut com a «%.*s:./%s»?"
+#: object-name.c
#, c-format
msgid "path '%s' does not exist in '%.*s'"
msgstr "el camí «%s» no existeix en «%.*s»"
+#: object-name.c
#, c-format
msgid ""
"path '%s' is in the index, but not at stage %d\n"
@@ -18339,6 +23414,7 @@ msgstr ""
"el camí «%s» està a l'índex, però no a «stage» %d\n"
".consell: volíeu dir «:%d:%s»?"
+#: object-name.c
#, c-format
msgid ""
"path '%s' is in the index, but not '%s'\n"
@@ -18347,328 +23423,455 @@ msgstr ""
"el camí «%s» està a l'índex, però no a «%s»\n"
".consell: volíeu dir «:%d:%s» conegut com a «:%d:./%s»?"
+#: object-name.c
#, c-format
msgid "path '%s' exists on disk, but not in the index"
msgstr "el camí «%s» existeix al disc, però no a l'índex"
+#: object-name.c
#, c-format
msgid "path '%s' does not exist (neither on disk nor in the index)"
msgstr "el camí «%s» no existeix (ni al disc ni a l'índex)"
+#: object-name.c
msgid "relative path syntax can't be used outside working tree"
msgstr ""
"la sintaxi de camí relatiu no es pot utilitzar fora de l'arbre de treball"
+#: object-name.c
#, c-format
msgid "<object>:<path> required, only <object> '%s' given"
msgstr "<objecte>:<camí> requerit, només s'ha donat <objecte> «%s»"
+#: object-name.c
#, c-format
msgid "invalid object name '%.*s'."
msgstr "nom d'objecte no vàlid «%.*s»."
+#: object.c
#, c-format
msgid "invalid object type \"%s\""
msgstr "tipus d'objecte «%s» no vàlid"
+#: object.c
#, c-format
msgid "object %s is a %s, not a %s"
msgstr "l'objecte %s és %s, no pas %s"
+#: object.c
#, c-format
msgid "object %s has unknown type id %d"
msgstr "l'objecte %s té un identificador de tipus %d desconegut"
+#: object.c
#, c-format
msgid "unable to parse object: %s"
msgstr "no s'ha pogut analitzar l'objecte: %s"
+#: object.c
#, c-format
msgid "hash mismatch %s"
msgstr "el resum no coincideix %s"
+#: pack-bitmap-write.c
+#, c-format
+msgid "duplicate entry when writing bitmap index: %s"
+msgstr "entrada duplicada en escriure l'índex de mapa de bits: %s"
+
+#: pack-bitmap-write.c
+#, c-format
+msgid "attempted to store non-selected commit: '%s'"
+msgstr "s'ha intentat emmagatzemar una comissió no seleccionada: «%s»"
+
+#: pack-bitmap-write.c
+msgid "too many pseudo-merges"
+msgstr "massa pseudo-fusions"
+
+#: pack-bitmap-write.c
msgid "trying to write commit not in index"
msgstr "s'està intentant no escriure la comissió a l'índex"
+#: pack-bitmap.c
msgid "failed to load bitmap index (corrupted?)"
msgstr ""
"s'ha produït un error en carregar l'índex de mapa de bits (està malmès?)"
+#: pack-bitmap.c
msgid "corrupted bitmap index (too small)"
msgstr "índex de mapa de bits malmès (massa petit)"
+#: pack-bitmap.c
msgid "corrupted bitmap index file (wrong header)"
msgstr "fitxer d'índex de mapa de bits malmès (capçalera incorrecta)"
+#: pack-bitmap.c
#, c-format
msgid "unsupported version '%d' for bitmap index file"
msgstr "versió «%d» no admesa per al fitxer d'índex de mapa de bits"
+#: pack-bitmap.c
msgid "corrupted bitmap index file (too short to fit hash cache)"
msgstr ""
"fitxer d'índex de mapa de bits malmès (massa curt per a ajustar-se a la "
"memòria cau de hash)"
+#: pack-bitmap.c
msgid "corrupted bitmap index file (too short to fit lookup table)"
msgstr ""
"fitxer d'índex de mapa de bits malmès (massa curt per a ajustar-se a la "
"taula de cerca)"
+# 2 línies OK?
+#: pack-bitmap.c
+msgid ""
+"corrupted bitmap index file (too short to fit pseudo-merge table header)"
+msgstr ""
+"fitxer d'índex de mapes de bits malmès (massa curt per a ajustar-se\n"
+"a la capçalera de la taula de pseudo-fusions)"
+
+# 2 línies OK?
+#: pack-bitmap.c
+msgid "corrupted bitmap index file (too short to fit pseudo-merge table)"
+msgstr ""
+"fitxer d'índex de mapa de bits malmès (massa curt per a ajustar-se\n"
+"a la taula de pseudo-fusions)"
+
+#: pack-bitmap.c
+msgid "corrupted bitmap index file, pseudo-merge table too short"
+msgstr ""
+"fitxer d'índex de mapa de bits malmès, taula de pseudo-fusions massa curta"
+
+#: pack-bitmap.c
#, c-format
msgid "duplicate entry in bitmap index: '%s'"
msgstr "entrada duplicada a l'índex del mapa de bits: «%s»"
+#: pack-bitmap.c
#, c-format
msgid "corrupt ewah bitmap: truncated header for entry %d"
msgstr "mapa de bits ewah malmès: capçalera truncada per a l'entrada %d"
+#: pack-bitmap.c
#, c-format
msgid "corrupt ewah bitmap: commit index %u out of range"
msgstr "mapa de bits ewah malmès: l'índex de comissió %u està fora de rang"
+#: pack-bitmap.c
msgid "corrupted bitmap pack index"
msgstr "índex de paquets de mapa de bits malmès"
+#: pack-bitmap.c
msgid "invalid XOR offset in bitmap pack index"
msgstr "el desplaçament XOR a l'índex de mapa de bits no és vàlid"
+#: pack-bitmap.c
msgid "cannot fstat bitmap file"
msgstr "no es pot fer fstat en el fitxer de mapa de bits"
+#: pack-bitmap.c
msgid "checksum doesn't match in MIDX and bitmap"
msgstr "la suma de verificació no coincideix amb el MIDX i el mapa de bits"
+#: pack-bitmap.c
msgid "multi-pack bitmap is missing required reverse index"
msgstr "falta l'índex invers necessari al mapa de bits multipaquet"
+#: pack-bitmap.c
#, c-format
msgid "could not open pack %s"
msgstr "no s'ha pogut obrir el paquet %s"
+#: pack-bitmap.c t/helper/test-read-midx.c
msgid "could not determine MIDX preferred pack"
msgstr "no s'ha pogut determinar el paquet preferit MIDX"
+#: pack-bitmap.c
#, c-format
msgid "preferred pack (%s) is invalid"
msgstr "el paquet preferit (%s) no és vàlid"
+#: pack-bitmap.c
msgid "corrupt bitmap lookup table: triplet position out of index"
msgstr ""
"taula de cerca de mapa de bits malmesa: posició la tripleta fora de l'índex"
+#: pack-bitmap.c
msgid "corrupt bitmap lookup table: xor chain exceeds entry count"
msgstr ""
"taula de cerca de mapa de bits malmesa: la cadena xor excedeix el nombre "
"d'entrades"
+#: pack-bitmap.c
#, c-format
msgid "corrupt bitmap lookup table: commit index %u out of range"
msgstr ""
"taula de cerca de mapa de bits malmesa: l'índex de comissió %u està fora de "
"rang"
+#: pack-bitmap.c
#, c-format
msgid "corrupt ewah bitmap: truncated header for bitmap of commit \"%s\""
msgstr ""
"mapa de bits ewah malmès: capçalera truncada per al mapa de bits de la "
"comissió «%s»"
+#: pack-bitmap.c
#, c-format
msgid "unable to load pack: '%s', disabling pack-reuse"
msgstr ""
"no s'ha pogut carregar el paquet: «%s», s'està inhabilitant lareutilització "
"de paquets"
+# s'inhabilita / s'està inhabilitant?
+#: pack-bitmap.c
+msgid "unable to compute preferred pack, disabling pack-reuse"
+msgstr "no s'ha pogut calcular el paquet preferit, s'inhabilita pack-reuse"
+
+#: pack-bitmap.c
#, c-format
msgid "object '%s' not found in type bitmaps"
msgstr "no s'ha trobat l'objecte «%s» als tipus de mapes de bits"
+#: pack-bitmap.c
#, c-format
msgid "object '%s' does not have a unique type"
msgstr "l'objecte «%s» no té un tipus únic"
+#: pack-bitmap.c
#, c-format
msgid "object '%s': real type '%s', expected: '%s'"
msgstr "objecte «%s»: tipus real «%s», s'esperava: «%s»"
+#: pack-bitmap.c
#, c-format
msgid "object not in bitmap: '%s'"
msgstr "objecte no trobat al mapa de bits: «%s»"
+#: pack-bitmap.c
msgid "failed to load bitmap indexes"
msgstr "s'ha produït un error en carregar l'índex de mapa de bits"
+#: pack-bitmap.c
msgid "you must specify exactly one commit to test"
msgstr "heu d'especificar exactament una comissió a provar"
+#: pack-bitmap.c
#, c-format
msgid "commit '%s' doesn't have an indexed bitmap"
msgstr "la comissió «%s» no té un mapa de bits indexat"
+#: pack-bitmap.c
msgid "mismatch in bitmap results"
msgstr "no coincideix en els resultats del mapa de bits"
+#: pack-bitmap.c
+#, c-format
+msgid "pseudo-merge index out of range (%<PRIu32> >= %<PRIuMAX>)"
+msgstr "l'índex de pseudo-fusions és fora de rang (%<PRIu32> >= %<PRIuMAX>)"
+
+#: pack-bitmap.c
#, c-format
msgid "could not find '%s' in pack '%s' at offset %<PRIuMAX>"
msgstr "no s'ha pogut trobar «%s» al paquet «%s» al desplaçament %<PRIuMAX>"
+#: pack-bitmap.c
#, c-format
msgid "unable to get disk usage of '%s'"
msgstr "no s'ha pogut obtenir l'ús del disc de «%s»"
+#: pack-bitmap.c
#, c-format
msgid "bitmap file '%s' has invalid checksum"
msgstr "el fitxer de mapa de bits «%s» té una suma de verificació no vàlida"
+#: pack-mtimes.c
#, c-format
msgid "mtimes file %s is too small"
msgstr "el fitxer mtimes %s és massa petit"
+#: pack-mtimes.c
#, c-format
msgid "mtimes file %s has unknown signature"
msgstr "el fitxer mtimes %s té una signatura desconeguda"
+#: pack-mtimes.c
#, c-format
msgid "mtimes file %s has unsupported version %<PRIu32>"
msgstr "el fitxer mtimes %s té la versió %<PRIu32> no admesa"
+#: pack-mtimes.c
#, c-format
msgid "mtimes file %s has unsupported hash id %<PRIu32>"
msgstr "el fitxer mtimes %s té un ID de resum %<PRIu32> no admès"
+#: pack-mtimes.c
#, c-format
msgid "mtimes file %s is corrupt"
msgstr "el fitxer mtimes %s està malmès"
+#: pack-revindex.c
#, c-format
msgid "reverse-index file %s is too small"
msgstr "el fitxer d'índex invers %s és massa petit"
+#: pack-revindex.c
#, c-format
msgid "reverse-index file %s is corrupt"
msgstr "el fitxer d'índex invers %s està malmès"
+#: pack-revindex.c
#, c-format
msgid "reverse-index file %s has unknown signature"
msgstr "el fitxer d'índex invers %s té una signatura desconeguda"
+#: pack-revindex.c
#, c-format
msgid "reverse-index file %s has unsupported version %<PRIu32>"
msgstr "el fitxer d'índex invers %s té la versió %<PRIu32> no admesa"
+#: pack-revindex.c
#, c-format
msgid "reverse-index file %s has unsupported hash id %<PRIu32>"
msgstr "el fitxer d'índex invers %s té un ID de resum %<PRIu32> no admès"
+#: pack-revindex.c
msgid "invalid checksum"
msgstr "suma de verificació no vàlida"
+#: pack-revindex.c
#, c-format
msgid "invalid rev-index position at %<PRIu64>: %<PRIu32> != %<PRIu32>"
msgstr ""
"posició no vàlida de l'índex de reversió a %<PRIu64>: %<PRIu32> != %<PRIu32>"
+#: pack-revindex.c
msgid "multi-pack-index reverse-index chunk is the wrong size"
msgstr ""
"el fragment de l'index invers de l'índex multipaquet és de mida incorrecta"
+#: pack-revindex.c
msgid "could not determine preferred pack"
msgstr "no s'ha pogut determinar el paquet preferit"
+#: pack-write.c
msgid "cannot both write and verify reverse index"
msgstr "no es pot escriure i verificar l'índex invers"
+#: pack-write.c
#, c-format
msgid "could not stat: %s"
msgstr "no s'ha pogut fer stat a: %s"
+#: pack-write.c
#, c-format
msgid "failed to make %s readable"
msgstr "s'ha produït un error en fer %s llegible"
+#: pack-write.c
#, c-format
msgid "could not write '%s' promisor file"
msgstr "no s'ha pogut escriure «%s» al fitxer «promisor»"
+#: packfile.c
msgid "offset before end of packfile (broken .idx?)"
msgstr "desplaçament abans de la fi del fitxer de paquet (.idx trencat?)"
+#: packfile.c
#, c-format
msgid "packfile %s cannot be mapped%s"
msgstr "el fitxer de paquet %s no es pot mapar%s"
+#: packfile.c
#, c-format
msgid "offset before start of pack index for %s (corrupt index?)"
msgstr ""
"desplaçament abans d'inici d'índex de paquet per a %s (índex corromput?)"
+#: packfile.c
#, c-format
msgid "offset beyond end of pack index for %s (truncated index?)"
msgstr ""
"desplaçament més enllà de la fi d'índex de paquet per a %s (índex truncat?)"
+#: parse-options-cb.c
#, c-format
msgid "malformed expiration date '%s'"
msgstr "data de venciment «%s» mal formada"
+#: parse-options-cb.c
#, c-format
msgid "option `%s' expects \"always\", \"auto\", or \"never\""
msgstr "l'opció «%s» espera «always», «auto» o «never»"
+#: parse-options-cb.c
#, c-format
msgid "malformed object name '%s'"
msgstr "nom d'objecte «%s» mal format"
+#: parse-options-cb.c
#, c-format
msgid "option `%s' expects \"%s\" or \"%s\""
msgstr "l'opció «%s» espera «%s» o «%s»"
+#: parse-options.c
#, c-format
msgid "%s requires a value"
msgstr "%s requereix un valor"
+#: parse-options.c
#, c-format
msgid "%s takes no value"
msgstr "%s no accepta cap valor"
+#: parse-options.c
#, c-format
msgid "%s isn't available"
msgstr "%s no és disponible"
+#: parse-options.c
#, c-format
msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
msgstr "%s espera un valor enter no negatiu amb un sufix opcional k/m/g"
+#: parse-options.c
#, c-format
msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
msgstr "opció ambigua: %s (pot ser --%s%s o --%s%s)"
+#: parse-options.c
#, c-format
msgid "did you mean `--%s` (with two dashes)?"
msgstr "voleu dir «--%s» (amb dos guionets)?"
+#: parse-options.c
#, c-format
msgid "alias of --%s"
msgstr "àlies de --%s"
+#: parse-options.c
msgid "need a subcommand"
msgstr "cal una subordre"
+#: parse-options.c
#, c-format
msgid "unknown option `%s'"
msgstr "opció desconeguda «%s»"
+#: parse-options.c
#, c-format
msgid "unknown switch `%c'"
msgstr "opció «%c» desconeguda"
+#: parse-options.c
#, c-format
msgid "unknown non-ascii option in string: `%s'"
msgstr "opció no ascii desconeguda en la cadena: «%s»"
+#: parse-options.c
msgid "..."
msgstr "..."
+#: parse-options.c
#, c-format
msgid "usage: %s"
msgstr "ús: %s"
@@ -18676,6 +23879,7 @@ msgstr "ús: %s"
#. TRANSLATORS: the colon here should align with the
#. one in "usage: %s" translation.
#.
+#: parse-options.c
#, c-format
msgid " or: %s"
msgstr " o: %s"
@@ -18699,83 +23903,105 @@ msgstr " o: %s"
#. translated) N_() usage string, which contained embedded
#. newlines before we split it up.
#.
+#: parse-options.c
#, c-format
msgid "%*s%s"
msgstr "%*s%s"
+#: parse-options.c
#, c-format
msgid " %s"
msgstr " %s"
+#: parse-options.c
msgid "-NUM"
msgstr "-NUM"
+#: parse-options.c
#, c-format
msgid "opposite of --no-%s"
msgstr "oposat a --no-%s"
+#: parse-options.h
msgid "expiry-date"
msgstr "data-de-caducitat"
+#: parse-options.h
msgid "no-op (backward compatibility)"
msgstr "operació nul·la (per a compatibilitat amb versions anteriors)"
+#: parse-options.h
msgid "be more verbose"
msgstr "sigues més detallat"
+#: parse-options.h
msgid "be more quiet"
msgstr "sigues més discret"
+#: parse-options.h
msgid "use <n> digits to display object names"
msgstr "usa <n> xifres per a mostrar els noms d'objecte"
+#: parse-options.h
msgid "prefixed path to initial superproject"
msgstr "camí prefixat al superprojecte inicial"
+#: parse-options.h
msgid "how to strip spaces and #comments from message"
msgstr "com suprimir els espais i #comentaris del missatge"
+#: parse-options.h
msgid "read pathspec from file"
msgstr "llegeix l'especificació del camí del fitxer"
+#: parse-options.h
msgid ""
"with --pathspec-from-file, pathspec elements are separated with NUL character"
msgstr ""
"amb --pathspec-from-file els elements d'especificació del camí estan "
"separats amb el caràcter NUL"
+#: parse.c
#, c-format
msgid "bad boolean environment value '%s' for '%s'"
msgstr "el valor «%s» booleà de l'entorn és incorrecte per a «%s»"
+#: parse.c
#, c-format
msgid "failed to parse %s"
msgstr "s'ha produït un error en analitzar %s"
+#: path.c
#, c-format
msgid "Could not make %s writable by group"
msgstr "No s'ha pogut fer %s escrivible pel grup"
+#: pathspec.c
msgid "Escape character '\\' not allowed as last character in attr value"
msgstr ""
"El caràcter d'escapament «\\» no està permès com a últim caràcter en un "
"valor d'un atribut"
+#: pathspec.c
msgid "Only one 'attr:' specification is allowed."
msgstr "Només es permet una especificació «attr:»."
+#: pathspec.c
msgid "attr spec must not be empty"
msgstr "una especificació d'atribut no pot estar buida"
+#: pathspec.c
#, c-format
msgid "invalid attribute name %s"
msgstr "nom d'atribut no vàlid %s"
+#: pathspec.c
msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
msgstr ""
"els paràmetres d'especificació de camí «glob» i «noglob» globals són "
"incompatibles"
+#: pathspec.c
msgid ""
"global 'literal' pathspec setting is incompatible with all other global "
"pathspec settings"
@@ -18783,138 +24009,273 @@ msgstr ""
"el paràmetre d'especificació de camí «literal» global és incompatible amb "
"tots els altres paràmetres d'especificació de camí globals"
+#: pathspec.c
msgid "invalid parameter for pathspec magic 'prefix'"
msgstr "paràmetre no vàlid per a la màgia d'especificació de camí «prefix»"
+#: pathspec.c
#, c-format
msgid "Invalid pathspec magic '%.*s' in '%s'"
msgstr "Màgia d'especificació de camí no vàlida «%.*s» en «%s»"
+#: pathspec.c
#, c-format
msgid "Missing ')' at the end of pathspec magic in '%s'"
msgstr "«)» mancant al final de la màgia d'especificació de camí en «%s»"
+#: pathspec.c
#, c-format
msgid "Unimplemented pathspec magic '%c' in '%s'"
msgstr "Màgia d'especificació de camí no implementada «%c» en «%s»"
+#: pathspec.c
#, c-format
msgid "%s: 'literal' and 'glob' are incompatible"
msgstr "%s: «literal» i «glob» són incompatibles"
+#: pathspec.c
#, c-format
msgid "'%s' is outside the directory tree"
msgstr "«%s» és fora de l'arbre de directoris"
+#: pathspec.c
#, c-format
msgid "%s: '%s' is outside repository at '%s'"
msgstr "%s: «%s» està fora del repositori en «%s»"
+#: pathspec.c
#, c-format
msgid "'%s' (mnemonic: '%c')"
msgstr "«%s» (mnemònic: «%c»)"
+#: pathspec.c
#, c-format
msgid "%s: pathspec magic not supported by this command: %s"
msgstr ""
"%s: aquesta ordre no està admesa amb la màgia d'especificació de camí: %s"
+#: pathspec.c
#, c-format
msgid "pathspec '%s' is beyond a symbolic link"
msgstr "l'especificació de camí «%s» és més enllà d'un enllaç simbòlic"
+#: pathspec.c
#, c-format
msgid "line is badly quoted: %s"
msgstr "la línia no està ben envoltada per cometes: %s"
+#: pkt-line.c
msgid "unable to write flush packet"
msgstr "no s'ha pogut escriure el paquet de buidatge"
+#: pkt-line.c
msgid "unable to write delim packet"
msgstr "no s'ha pogut escriure el paquet delim"
+#: pkt-line.c
msgid "unable to write response end packet"
msgstr "no s'ha pogut escriure el paquet de final de resposta"
+#: pkt-line.c
msgid "flush packet write failed"
msgstr "s'ha produït un error en escriure el paquet de buidatge"
+#: pkt-line.c
msgid "protocol error: impossibly long line"
msgstr "error de protocol: longitud de línia impossible"
+#: pkt-line.c
msgid "packet write with format failed"
msgstr "ha fallat l'escriptura del paquet amb format"
+#: pkt-line.c
msgid "packet write failed - data exceeds max packet size"
msgstr ""
"no s'ha pogut escriure el paquet - les dades excedeixen la mida màxima del "
"paquet"
+#: pkt-line.c
#, c-format
msgid "packet write failed: %s"
msgstr "no s'ha pogut escriure el paquet: %s"
+#: pkt-line.c
msgid "read error"
msgstr "error de lectura"
+#: pkt-line.c
msgid "the remote end hung up unexpectedly"
msgstr "el remot ha penjat inesperadament"
+#: pkt-line.c
#, c-format
msgid "protocol error: bad line length character: %.4s"
msgstr "error de protocol: caràcter de longitud de línia erroni: %.4s"
+#: pkt-line.c
#, c-format
msgid "protocol error: bad line length %d"
msgstr "error de protocol: longitud de línia errònia %d"
+#: pkt-line.c sideband.c
#, c-format
msgid "remote error: %s"
msgstr "error remot: %s"
+#: preload-index.c
msgid "Refreshing index"
msgstr "S'està actualitzant l'índex"
+#: preload-index.c
#, c-format
msgid "unable to create threaded lstat: %s"
msgstr "no s'han pogut crear lstat amb fils %s"
+#: pretty.c
msgid "unable to parse --pretty format"
msgstr "no s'ha pogut analitzar el format --pretty"
+# lazy → tardà as in “lazy evaluationâ€
+# 2 línies OK?
+#: promisor-remote.c
+msgid "lazy fetching disabled; some objects may not be available"
+msgstr ""
+"s'ha inhabilitat l'obtenció tardana; por ser que alguns objectes\n"
+"no estiguin disponibles"
+
+#: promisor-remote.c
msgid "promisor-remote: unable to fork off fetch subprocess"
msgstr "promisor-remote: no es pot bifurcar el subprocés d'obtenció"
+#: promisor-remote.c
msgid "promisor-remote: could not write to fetch subprocess"
msgstr "promisor-remote: no s'ha pogut escriure per al subprocés d'obtenció"
+#: promisor-remote.c
msgid "promisor-remote: could not close stdin to fetch subprocess"
msgstr "promisor-remote: no s'ha pogut tancar stdin al subprocés d'obtenció"
+#: promisor-remote.c
#, c-format
msgid "promisor remote name cannot begin with '/': %s"
msgstr "el nom remot «promisor» no pot començar amb «/»: %s"
+#: promisor-remote.c
#, c-format
msgid "could not fetch %s from promisor remote"
msgstr "no s'ha pogut obtenir «%s» del «promisor» remot"
+#: protocol-caps.c
msgid "object-info: expected flush after arguments"
msgstr "object-info: s'esperava una neteja després dels arguments"
+#: prune-packed.c
msgid "Removing duplicate objects"
msgstr "S'estan eliminant els objectes duplicats"
+#: pseudo-merge.c
+#, c-format
+msgid "failed to load pseudo-merge regex for %s: '%s'"
+msgstr ""
+"no s'ha pogut carregar l'expressió regular de pseudo-fusió per a %s: «%s»"
+
+# gerundi → futur?
+# default → valor predeterminat?
+#: pseudo-merge.c
+#, c-format
+msgid "%s must be non-negative, using default"
+msgstr "%s ha de ser no negatiu, s'usarà el valor predeterminat"
+
+# gerundi → futur?
+# default → valor predeterminat?
+#: pseudo-merge.c
+#, c-format
+msgid "%s must be between 0 and 1, using default"
+msgstr "%s ha d'estar entre 0 i 1, s'usarà el valor predeterminat"
+
+# gerundi → futur?
+# default → valor predeterminat?
+#: pseudo-merge.c
+#, c-format
+msgid "%s must be positive, using default"
+msgstr "%s ha de ser positiu, s'usarà el valor predeterminat"
+
+#: pseudo-merge.c
+#, c-format
+msgid "pseudo-merge group '%s' missing required pattern"
+msgstr "manca un patró requerit al grup de pseudo-fusió «%s»"
+
+#: pseudo-merge.c
+#, c-format
+msgid "pseudo-merge group '%s' has unstable threshold before stable one"
+msgstr ""
+"el grup de pseudo-fusió «%s» té un llindar inestable abans de l'estable"
+
+#: pseudo-merge.c
+#, c-format
+msgid ""
+"pseudo-merge regex from config has too many capture groups (max=%<PRIuMAX>)"
+msgstr ""
+"l'expressió regular de pseudo-fusions procedent de la configuració\n"
+"té massa grups de captura (màxim=%<PRIuMAX>)"
+
+# lectura ampliada o pseudo-fusions ampliades?
+# read → lectura / llegit?
+#: pseudo-merge.c
+#, c-format
+msgid "extended pseudo-merge read out-of-bounds (%<PRIuMAX> >= %<PRIuMAX>)"
+msgstr ""
+"la lectura de pseudo-fusions ampliades és fora de rang (%<PRIuMAX> >= "
+"%<PRIuMAX>)"
+
+#: pseudo-merge.c
+#, c-format
+msgid "extended pseudo-merge entry is too short (%<PRIuMAX> >= %<PRIuMAX>)"
+msgstr ""
+"l'entrada de pseudo-fusions ampliades és massa curta (%<PRIuMAX> >= "
+"%<PRIuMAX>)"
+
+#: pseudo-merge.c
+#, c-format
+msgid "could not find pseudo-merge for commit %s at offset %<PRIuMAX>"
+msgstr ""
+"no s'ha pogut trobar una pseudo-fusió per a la comissió %s\n"
+"a la posició %<PRIuMAX>"
+
+# consulta ampliada o pseudo-fusions ampliades?
+#: pseudo-merge.c
+#, c-format
+msgid "extended pseudo-merge lookup out-of-bounds (%<PRIu32> >= %<PRIu32>)"
+msgstr ""
+"la consulta de pseudo-fusions ampliades és fora de rang (%<PRIu32> >= "
+"%<PRIu32>)"
+
+# read → lectura?
+#: pseudo-merge.c
+#, c-format
+msgid "out-of-bounds read: (%<PRIuMAX> >= %<PRIuMAX>)"
+msgstr "lectura fora de rang: (%<PRIuMAX> >= %<PRIuMAX>)"
+
+#: pseudo-merge.c
+#, c-format
+msgid "could not read extended pseudo-merge table for commit %s"
+msgstr ""
+"no s'ha pogut llegir la taula de pseudo-fusions ampliada per a la comissió %s"
+
+#: range-diff.c
msgid "could not start `log`"
msgstr "no s'ha pogut iniciar «log»"
+#: range-diff.c
msgid "could not read `log` output"
msgstr "no s'ha pogut llegir la sortida de «log»"
+#: range-diff.c sequencer.c
#, c-format
msgid "could not parse commit '%s'"
msgstr "no s'ha pogut analitzar la comissió «%s»"
+#: range-diff.c
#, c-format
msgid ""
"could not parse first line of `log` output: did not start with 'commit ': "
@@ -18923,51 +24284,64 @@ msgstr ""
"no s'ha pogut analitzar la primera línia de la sortida «log»: no començava "
"amb «commit»: «%s»"
+#: range-diff.c
#, c-format
msgid "could not parse git header '%.*s'"
msgstr "no s'ha pogut llegir la capçalera de la gif «%.*s»"
+#: range-diff.c
msgid "failed to generate diff"
msgstr "s'ha produït un error en generar el diff"
+#: range-diff.c
#, c-format
msgid "could not parse log for '%s'"
msgstr "no s'ha pogut llegir el fitxer de registre per a «%s»"
+#: reachable.c
#, c-format
msgid "invalid extra cruft tip: '%s'"
msgstr "punta extra extra no vàlida: «%s»"
+#: reachable.c
msgid "unable to enumerate additional recent objects"
msgstr "no s'han pogut enumerar els objectes recents addicionals"
+#: read-cache.c
#, c-format
msgid "will not add file alias '%s' ('%s' already exists in index)"
msgstr "no s'afegirà l'àlies «%s»: («%s» ja existeix en l'índex)"
+#: read-cache.c
msgid "cannot create an empty blob in the object database"
msgstr "no es pot crear un blob buit a la base de dades d'objectes"
+#: read-cache.c
#, c-format
msgid "%s: can only add regular files, symbolic links or git-directories"
msgstr ""
"%s: només pot afegir fitxers normals, enllaços simbòlics o directoris git"
+#: read-cache.c
#, c-format
msgid "unable to index file '%s'"
msgstr "no es pot llegir indexar el fitxer «%s»"
+#: read-cache.c
#, c-format
msgid "unable to add '%s' to index"
msgstr "no s'ha pogut afegir «%s» a l'índex"
+#: read-cache.c
#, c-format
msgid "'%s' appears as both a file and as a directory"
msgstr "«%s» apareix com a fitxer i com a directori"
+#: read-cache.c
msgid "Refresh index"
msgstr "Actualitza l'índex"
+#: read-cache.c
#, c-format
msgid ""
"index.version set, but the value is invalid.\n"
@@ -18976,6 +24350,7 @@ msgstr ""
"index.version està establerta, però el valor no és vàlid.\n"
"S'està usant la versió %i"
+#: read-cache.c
#, c-format
msgid ""
"GIT_INDEX_VERSION set, but the value is invalid.\n"
@@ -18984,114 +24359,143 @@ msgstr ""
"GIT_INDEX_VERSION està establerta, però el valor no és vàlid.\n"
"S'està usant la versió %i"
+#: read-cache.c
#, c-format
msgid "bad signature 0x%08x"
msgstr "signatura malmesa 0x%08x"
+#: read-cache.c
#, c-format
msgid "bad index version %d"
msgstr "versió d'índex incorrecta %d"
+#: read-cache.c
msgid "bad index file sha1 signature"
msgstr "signatura sha1 malmesa al fitxer d'índex"
+#: read-cache.c
#, c-format
msgid "index uses %.4s extension, which we do not understand"
msgstr "l'índex usa l'extensió %.4s, que no es pot entendre"
+#: read-cache.c
#, c-format
msgid "ignoring %.4s extension"
msgstr "s'està ignorant l'extensió %.4s"
+#: read-cache.c
#, c-format
msgid "unknown index entry format 0x%08x"
msgstr "format d'entrada d'índex desconeguda «0x%08x»"
+#: read-cache.c
#, c-format
msgid "malformed name field in the index, near path '%s'"
msgstr "camp del nom mal formatat l'índex, camí a prop «%s»"
+#: read-cache.c
msgid "unordered stage entries in index"
msgstr "entrades «stage» no ordenades en l'índex"
+#: read-cache.c
#, c-format
msgid "multiple stage entries for merged file '%s'"
msgstr "múltiples entrades «stage» per al fitxer fusionat «%s»"
+#: read-cache.c
#, c-format
msgid "unordered stage entries for '%s'"
msgstr "entrades «stage» no ordenades per a «%s»"
+#: read-cache.c
#, c-format
msgid "unable to create load_cache_entries thread: %s"
msgstr "no s'ha pogut crear fil «load_cache_entries»: %s"
+#: read-cache.c
#, c-format
msgid "unable to join load_cache_entries thread: %s"
msgstr "no s'ha pogut unir al fil «load_cache_entries»: %s"
+#: read-cache.c
#, c-format
msgid "%s: index file open failed"
msgstr "%s: ha fallat l'obertura del fitxer d'índex"
+#: read-cache.c
#, c-format
msgid "%s: cannot stat the open index"
msgstr "%s: no es pot fer «stat» a l'índex obert"
+#: read-cache.c
#, c-format
msgid "%s: index file smaller than expected"
msgstr "%s: fitxer d'índex més petit que s'esperava"
+#: read-cache.c
#, c-format
msgid "%s: unable to map index file%s"
msgstr "%s: no es pot mapar el fitxer d'índex%s"
+#: read-cache.c
#, c-format
msgid "unable to create load_index_extensions thread: %s"
msgstr "no s'ha pogut crear un fil «load_index_extensions»: %s"
+#: read-cache.c
#, c-format
msgid "unable to join load_index_extensions thread: %s"
msgstr "no s'ha pogut unir un fil «load_index_extensions»: %s"
+#: read-cache.c
#, c-format
msgid "could not freshen shared index '%s'"
msgstr "no s'ha pogut refrescar l'índex compartit «%s»"
+#: read-cache.c
#, c-format
msgid "broken index, expect %s in %s, got %s"
msgstr "índex malmès, s'esperava %s a %s, s'ha rebut %s"
+#: read-cache.c
msgid "cannot write split index for a sparse index"
msgstr "no es pot escriure l'índex dividit per a un índex dispers"
+#: read-cache.c
msgid "failed to convert to a sparse-index"
msgstr "s'ha produït un error en convertir a un índex dispers"
+#: read-cache.c
#, c-format
msgid "unable to open git dir: %s"
msgstr "no s'ha pogut obrir el directori git: %s"
+#: read-cache.c
#, c-format
msgid "unable to unlink: %s"
msgstr "no s'ha pogut desenllaçar: %s"
+#: read-cache.c
#, c-format
msgid "cannot fix permission bits on '%s'"
msgstr "no s'han pogut corregir els bits de permisos en «%s»"
+#: read-cache.c
#, c-format
msgid "%s: cannot drop to stage #0"
msgstr "%s: no es pot baixar fins al «stage» #0"
+#: read-cache.c
#, c-format
msgid "unexpected diff status %c"
msgstr "estat de diff inesperat %c"
+#: read-cache.c
#, c-format
msgid "remove '%s'\n"
msgstr "elimina «%s»\n"
+#: rebase-interactive.c
msgid ""
"You can fix this with 'git rebase --edit-todo' and then run 'git rebase --"
"continue'.\n"
@@ -19101,6 +24505,7 @@ msgstr ""
"continue».\n"
"O bé, podeu avortar el «rebase» amb «git rebase --abort».\n"
+#: rebase-interactive.c
#, c-format
msgid ""
"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
@@ -19108,6 +24513,7 @@ msgstr ""
"no s'ha reconegut el paràmetre %s per rebase.missingCommitsCheck. S'està "
"ignorant."
+#: rebase-interactive.c
msgid ""
"\n"
"Commands:\n"
@@ -19160,20 +24566,22 @@ msgstr ""
" (o línia única, si no hi ha cap comissió de fusió original "
"especificada).\n"
" Useu -c <comissió> per a reescriure el missatge de la comissió.\n"
-"u, update-ref <ref> = segueix un marcador de posició per a actualitzar "
-"<ref>\n"
+"u, update-ref <referència> = segueix un marcador de posició per a "
+"actualitzar <ref>\n"
" a aquesta posició en les comissions noves. La <ref> "
"s'actualitza\n"
" al final del «rebase»\n"
"\n"
"Es pot canviar l'ordre d'aquestes línies; s'executen de dalt a baix.\n"
+#: rebase-interactive.c
#, c-format
msgid "Rebase %s onto %s (%d command)"
msgid_plural "Rebase %s onto %s (%d commands)"
msgstr[0] "Fes «rebase» de %s a %s (%d ordre)"
msgstr[1] "Fes «rebase» de %s a %s (%d ordres)"
+#: rebase-interactive.c
msgid ""
"\n"
"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
@@ -19182,6 +24590,7 @@ msgstr ""
"No elimineu cap línia. Useu «drop» explícitament per a eliminar una "
"comissió.\n"
+#: rebase-interactive.c
msgid ""
"\n"
"If you remove a line here THAT COMMIT WILL BE LOST.\n"
@@ -19189,6 +24598,7 @@ msgstr ""
"\n"
"Si elimineu una línia aquí, ES PERDRÀ AQUELLA COMISSIÓ.\n"
+#: rebase-interactive.c
msgid ""
"\n"
"You are editing the todo file of an ongoing interactive rebase.\n"
@@ -19202,19 +24612,22 @@ msgstr ""
" git rebase --continue\n"
"\n"
+#: rebase-interactive.c
msgid ""
"\n"
"However, if you remove everything, the rebase will be aborted.\n"
"\n"
msgstr ""
"\n"
-"No obstant això, si elimineu tot, s'avortarà el «rebase».\n"
+"No obstant això, si ho elimineu tot, s'avortarà el «rebase».\n"
"\n"
+#: rebase-interactive.c
#, c-format
msgid "could not write '%s'."
msgstr "no s'ha pogut escriure a «%s»."
+#: rebase-interactive.c
#, c-format
msgid ""
"Warning: some commits may have been dropped accidentally.\n"
@@ -19224,6 +24637,7 @@ msgstr ""
"accidentalment.\n"
"Les comissions descartades (més nova a més vella):\n"
+#: rebase-interactive.c
#, c-format
msgid ""
"To avoid this message, use \"drop\" to explicitly remove a commit.\n"
@@ -19240,113 +24654,146 @@ msgstr ""
"d'advertències.\n"
"Els comportaments possibles són: ignore, warn, error.\n"
+#: rebase.c
#, c-format
msgid "%s: 'preserve' superseded by 'merges'"
msgstr "%s: «conserva» substituït per «fusiona»"
+#: ref-filter.c wt-status.c
msgid "gone"
msgstr "no hi és"
+#: ref-filter.c
#, c-format
msgid "ahead %d"
msgstr "davant per %d"
+#: ref-filter.c
#, c-format
msgid "behind %d"
msgstr "darrere per %d"
+#: ref-filter.c
#, c-format
msgid "ahead %d, behind %d"
msgstr "davant per %d, darrere per %d"
+#: ref-filter.c
#, c-format
msgid "%%(%.*s) does not take arguments"
msgstr "%%(%.*s) no accepta arguments"
+#: ref-filter.c
#, c-format
msgid "unrecognized %%(%.*s) argument: %s"
msgstr "argument %%(%.*s) desconegut: %s"
+#: ref-filter.c
#, c-format
msgid "expected format: %%(color:<color>)"
msgstr "format esperat: %%(color:<color>)"
+#: ref-filter.c
#, c-format
msgid "unrecognized color: %%(color:%s)"
msgstr "color no reconegut: %%(color:%s)"
+#: ref-filter.c
#, c-format
msgid "Integer value expected refname:lstrip=%s"
msgstr "Valor enter esperat pel nom de referència:lstrip=%s"
+#: ref-filter.c
#, c-format
msgid "Integer value expected refname:rstrip=%s"
msgstr "Valor enter esperat pel nom de referència:rstrip=%s"
+#: ref-filter.c
#, c-format
msgid "expected %%(trailers:key=<value>)"
-msgstr "s'esperava %%(trailers:key=<value>)"
+msgstr "s'esperava %%(trailers:key=<valor>)"
+#: ref-filter.c
#, c-format
msgid "unknown %%(trailers) argument: %s"
msgstr "argument %%(trailers) desconegut: %s"
+#: ref-filter.c
#, c-format
msgid "positive value expected contents:lines=%s"
msgstr "valor positiu esperat conté:lines=%s"
+#: ref-filter.c
#, c-format
msgid "argument expected for %s"
msgstr "s'esperava un argument per a %s"
+#: ref-filter.c
#, c-format
msgid "positive value expected %s=%s"
msgstr "valor positiu esperat %s=%s"
+#: ref-filter.c
#, c-format
msgid "cannot fully parse %s=%s"
msgstr "no es pot analitzar completament %s=%s"
+#: ref-filter.c
#, c-format
msgid "value expected %s="
msgstr "s'esperava un valor %s="
+#: ref-filter.c
#, c-format
msgid "positive value expected '%s' in %%(%s)"
msgstr "valor positiu esperat «%s» a %%(%s)"
+#: ref-filter.c
#, c-format
msgid "expected format: %%(align:<width>,<position>)"
msgstr "format esperat: %%(align:<amplada>,<posició>)"
+#: ref-filter.c
#, c-format
msgid "unrecognized position:%s"
msgstr "posició no reconeguda:%s"
+#: ref-filter.c
#, c-format
msgid "unrecognized width:%s"
msgstr "amplada no reconeguda:%s"
+#: ref-filter.c
#, c-format
msgid "unrecognized %%(%s) argument: %s"
msgstr "argument %%(%s) desconegut: %s"
+#: ref-filter.c
#, c-format
msgid "positive width expected with the %%(align) atom"
msgstr "amplada positiva esperada amb l'àtom %%(align)"
+#: ref-filter.c
#, c-format
msgid "expected format: %%(ahead-behind:<committish>)"
msgstr "format esperat: %%(ahead-behind:<committish>)"
+#: ref-filter.c
+#, c-format
+msgid "expected format: %%(is-base:<committish>)"
+msgstr "format esperat: %%(is-base:<committish>)"
+
+#: ref-filter.c
#, c-format
msgid "malformed field name: %.*s"
msgstr "nom de camp mal format: %.*s"
+#: ref-filter.c
#, c-format
msgid "unknown field name: %.*s"
msgstr "nom de camp desconegut: %.*s"
+#: ref-filter.c
#, c-format
msgid ""
"not a git repository, but the field '%.*s' requires access to object data"
@@ -19354,117 +24801,147 @@ msgstr ""
"no és un repositori git, però el camp «%.*s» requereix accés a les dades de "
"l'objecte"
+#: ref-filter.c
#, c-format
msgid "format: %%(%s) atom used without a %%(%s) atom"
msgstr "format: l'àtom %%(%s) usat sense un àtom %%(%s)"
+#: ref-filter.c
#, c-format
msgid "format: %%(then) atom used more than once"
msgstr "format: s'ha usat l'àtom %%(then) més d'un cop"
+#: ref-filter.c
#, c-format
msgid "format: %%(then) atom used after %%(else)"
msgstr "format: s'ha usat l'àtom %%(then) després de %%(else)"
+#: ref-filter.c
#, c-format
msgid "format: %%(else) atom used more than once"
msgstr "format: s'ha usat l'àtom %%(else) més d'un cop"
+#: ref-filter.c
#, c-format
msgid "format: %%(end) atom used without corresponding atom"
msgstr "format: s'ha usat l'àtom %%(end) sense l'àtom corresponent"
+#: ref-filter.c
#, c-format
msgid "malformed format string %s"
msgstr "cadena de format mal format %s"
+#: ref-filter.c
#, c-format
msgid "this command reject atom %%(%.*s)"
msgstr "aquesta ordre rebutja l'àtom %%(%.*s)"
+#: ref-filter.c
#, c-format
msgid "--format=%.*s cannot be used with --python, --shell, --tcl"
msgstr "no es pot usar --format=%.*s amb --python, --shell, --tcl"
+#: ref-filter.c
msgid "failed to run 'describe'"
msgstr "no s'ha pogut executar «describe»"
+#: ref-filter.c
#, c-format
msgid "(no branch, rebasing %s)"
msgstr "(sense branca, s'està fent «rebase» %s)"
+#: ref-filter.c
#, c-format
msgid "(no branch, rebasing detached HEAD %s)"
msgstr "(sense branca, s'està fent «rebase» d'un «HEAD» separat %s)"
+#: ref-filter.c
#, c-format
msgid "(no branch, bisect started on %s)"
msgstr "(sense branca, bisecció començada en %s)"
+#: ref-filter.c
#, c-format
msgid "(HEAD detached at %s)"
msgstr "(HEAD separat a %s)"
+#: ref-filter.c
#, c-format
msgid "(HEAD detached from %s)"
msgstr "(HEAD separat des de %s)"
+#: ref-filter.c
msgid "(no branch)"
msgstr "(sense branca)"
+#: ref-filter.c
#, c-format
msgid "missing object %s for %s"
msgstr "manca l'objecte %s per a %s"
+#: ref-filter.c
#, c-format
msgid "parse_object_buffer failed on %s for %s"
msgstr "parse_object_buffer ha fallat en %s per a %s"
+#: ref-filter.c
#, c-format
msgid "malformed object at '%s'"
msgstr "objecte mal format a «%s»"
+#: ref-filter.c
#, c-format
msgid "ignoring ref with broken name %s"
msgstr "s'està ignorant la referència amb nom malmès %s"
+#: ref-filter.c refs.c
#, c-format
msgid "ignoring broken ref %s"
msgstr "s'està ignorant la referència malmesa %s"
+#: ref-filter.c
#, c-format
msgid "format: %%(end) atom missing"
msgstr "format: manca l'àtom %%(end)"
+#: ref-filter.c
#, c-format
msgid "malformed object name %s"
msgstr "nom d'objecte %s mal format"
+#: ref-filter.c
#, c-format
msgid "option `%s' must point to a commit"
msgstr "l'opció «%s» ha d'apuntar a una comissió"
+#: ref-filter.h
msgid "key"
msgstr "clau"
+#: ref-filter.h
msgid "field name to sort on"
msgstr "nom del camp en el qual ordenar"
+#: ref-filter.h
msgid "exclude refs which match pattern"
msgstr "exclou refs que coincideixin amb el patró"
+#: reflog.c
#, c-format
msgid "not a reflog: %s"
-msgstr "no és un registre de referència: %s"
+msgstr "no és un registre de referències: %s"
+#: reflog.c
#, c-format
msgid "no reflog for '%s'"
-msgstr "cap registre de referència per a «%s»"
+msgstr "cap registre de referències per a «%s»"
+#: refs.c
#, c-format
msgid "%s does not point to a valid object!"
msgstr "%s no apunta a un objecte vàlid"
+#: refs.c
#, c-format
msgid ""
"Using '%s' as the name for the initial branch. This default branch name\n"
@@ -19492,231 +24969,438 @@ msgstr ""
"\n"
"\tgit branch -m <nom>\n"
+#: refs.c
#, c-format
msgid "could not retrieve `%s`"
msgstr "no s'ha pogut recuperar «%s»"
+#: refs.c
#, c-format
msgid "invalid branch name: %s = %s"
msgstr "nom de branca no vàlida: %s = %s"
+#: refs.c
#, c-format
msgid "ignoring dangling symref %s"
-msgstr "s'està ignorant symref penjant %s"
+msgstr "s'està ignorant referència simbòlica despenjada %s"
+#: refs.c
#, c-format
msgid "log for ref %s has gap after %s"
msgstr "registre per a ref %s té un buit després de %s"
+#: refs.c
#, c-format
msgid "log for ref %s unexpectedly ended on %s"
msgstr "registre per als ref %s ha acabat inesperadament a %s"
+#: refs.c
#, c-format
msgid "log for %s is empty"
msgstr "el registre per a %s és buit"
+#: refs.c
+msgid "refusing to force and skip creation of reflog"
+msgstr ""
+"s'ha rebutjat l'acció forçada i l'omissió de crear un registre de referències"
+
+#: refs.c
#, c-format
msgid "refusing to update ref with bad name '%s'"
msgstr "s'està refusant la referència amb nom malmès «%s»"
+#: refs.c
+#, c-format
+msgid "refusing to update pseudoref '%s'"
+msgstr "s'ha rebutjat l'actualització de la pseudoreferència «%s»"
+
+#: refs.c
#, c-format
msgid "update_ref failed for ref '%s': %s"
msgstr "ha fallat update_ref per a la ref «%s»: %s"
+#: refs.c
#, c-format
msgid "multiple updates for ref '%s' not allowed"
msgstr "no es permeten múltiples actualitzacions per a la referència «%s»"
+#: refs.c
msgid "ref updates forbidden inside quarantine environment"
msgstr "no està permès actualitzar les referències en un entorn de quarantena"
+#: refs.c
msgid "ref updates aborted by hook"
msgstr "les actualitzacions de referències s'han avortat per un lligam"
+#: refs.c
#, c-format
msgid "'%s' exists; cannot create '%s'"
msgstr "«%s» existeix; no es pot crear «%s»"
+#: refs.c
#, c-format
msgid "cannot process '%s' and '%s' at the same time"
msgstr "no es poden processar «%s» i «%s» a la vegada"
+#: refs.c
#, c-format
msgid "could not delete reference %s: %s"
msgstr "no s'ha pogut suprimir la referència %s: %s"
+#: refs.c
#, c-format
msgid "could not delete references: %s"
msgstr "no s'han pogut suprimir les referències: %s"
+# 2 línies OK?
+#: refs.c
+#, c-format
+msgid "Finished dry-run migration of refs, the result can be found at '%s'\n"
+msgstr ""
+"S'ha acabat la prova no destructiva de migració de referències;\n"
+"el resultat es pot trobar a «%s»\n"
+
+# migració OK?
+#: refs.c
+#, c-format
+msgid "could not remove temporary migration directory '%s'"
+msgstr "no s'ha pogut eliminar el directori temporal de migració «%s»"
+
+# migrar OK?
+#: refs.c
+#, c-format
+msgid "migrated refs can be found at '%s'"
+msgstr "les referències migrades es poden trobar en «%s»"
+
+#: refs/files-backend.c refs/reftable-backend.c
+#, c-format
+msgid ""
+"cannot lock ref '%s': expected symref with target '%s': but is a regular ref"
+msgstr ""
+"no puc bloquejar la referència«%s»: s'esperava una referència\n"
+"simbòlica amb destinació «%s» però és una referència regular"
+
+#: refs/files-backend.c
+#, c-format
+msgid "cannot open directory %s"
+msgstr "no es pot obrir el directori «%s»"
+
+#: refs/files-backend.c
+msgid "Checking references consistency"
+msgstr "S'està comprovant la consistència de les referències"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "refname is dangerous: %s"
+msgstr "el nom de referència és perillós: %s"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "trying to write ref '%s' with nonexistent object %s"
+msgstr ""
+"s'està intentant escriure la referència «%s» amb l'objecte que no existeix %s"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "trying to write non-commit object %s to branch '%s'"
+msgstr ""
+"s'està intentant escriure un objecte no de comissió %s en la branca «%s»"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid ""
+"multiple updates for 'HEAD' (including one via its referent '%s') are not "
+"allowed"
+msgstr ""
+"no es permeten actualitzacions múltiples de «HEAD» (inclosa una feta a "
+"través del\n"
+"seu referent «%s»)"
+
+# bloquejar → blocar
+#: refs/reftable-backend.c
+#, c-format
+msgid "cannot lock ref '%s': unable to resolve reference '%s'"
+msgstr ""
+"no es pot bloquejar la referència «%s»: no s'ha pogut resoldre la referència "
+"«%s»"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "cannot lock ref '%s': error reading reference"
+msgstr "no es pot bloquejar la referència «%s»: error en llegir la referència"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid ""
+"multiple updates for '%s' (including one via symref '%s') are not allowed"
+msgstr ""
+"no es permeten les actualitzacions múltiples per a «%s» (inclosa una a\n"
+"través de la referència simbòlica «%s»"
+
+# bloquejar→blocar?
+#: refs/reftable-backend.c
+#, c-format
+msgid "cannot lock ref '%s': reference already exists"
+msgstr "no puc bloquejar la referència «%s»: la referència ja existeix"
+
+# massa llarg?
+#: refs/reftable-backend.c
+#, c-format
+msgid "cannot lock ref '%s': reference is missing but expected %s"
+msgstr ""
+"no puc bloquejar la referència «%s»: manca la referència però s'esperava %s"
+
+# blocar→bloquejar?
+#: refs/reftable-backend.c
+#, c-format
+msgid "cannot lock ref '%s': is at %s but expected %s"
+msgstr "no puc bloquejar la referència «%s»: és en %s però s'esperava %s"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "reftable: transaction prepare: %s"
+msgstr "taula de referències: prepara transacció: %s"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "reftable: transaction failure: %s"
+msgstr "taula de referències: fallada de transacció: %s"
+
+# stack→pila OK?
+#: refs/reftable-backend.c
+#, c-format
+msgid "unable to compact stack: %s"
+msgstr "no es pot compactar la pila: %s"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "refname %s not found"
+msgstr "no s'ha trobat el nom de referència %s"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "refname %s is a symbolic ref, copying it is not supported"
+msgstr ""
+"el nom de referència %s és una referència simbòlica: no es permet copiar"
+
+#: refspec.c
#, c-format
msgid "invalid refspec '%s'"
msgstr "refspec no vàlida: «%s»"
+#: remote-curl.c
#, c-format
msgid "invalid quoting in push-option value: '%s'"
msgstr "citació no vàlida en el valor de l'opció de pujada: «%s»"
+# object-format no traduït perquè és part de --show-object-format
+#: remote-curl.c
+#, c-format
+msgid "unknown value for object-format: %s"
+msgstr "valor desconegut per a l'object-format: %s"
+
+#: remote-curl.c
#, c-format
msgid "%sinfo/refs not valid: is this a git repository?"
msgstr "%sinfo/refs no vàlides: és un repositori git?"
+#: remote-curl.c
msgid "invalid server response; expected service, got flush packet"
msgstr ""
"resposta del servidor no és vàlida; el servei esperat, ha rebut in paquet de "
"neteja"
+#: remote-curl.c
#, c-format
msgid "invalid server response; got '%s'"
msgstr "resposta del servidor no vàlida; s'ha obtingut «%s»"
+#: remote-curl.c
#, c-format
msgid "repository '%s' not found"
msgstr "no s'ha trobat el repositori «%s»"
+#: remote-curl.c
#, c-format
msgid "Authentication failed for '%s'"
msgstr "S'ha produït un error en autenticar per «%s»"
+#: remote-curl.c
#, c-format
msgid "unable to access '%s' with http.pinnedPubkey configuration: %s"
msgstr "no es pot accedir a «%s» la configuració de http.pinnedPubkey :%s"
+#: remote-curl.c
#, c-format
msgid "unable to access '%s': %s"
msgstr "no s'ha pogut accedir a «%s»: %s"
+#: remote-curl.c
#, c-format
msgid "redirecting to %s"
msgstr "s'està redirigint a %s"
+#: remote-curl.c
msgid "shouldn't have EOF when not gentle on EOF"
msgstr "no hauria de tenir EOF quan s'és lax amb els EOF"
+#: remote-curl.c
msgid "remote server sent unexpected response end packet"
msgstr "el servidor remot ha enviat un paquet de final de resposta inesperat"
+#: remote-curl.c
msgid "unable to rewind rpc post data - try increasing http.postBuffer"
msgstr ""
"no s'han pogut rebobinar les dades de publicació rpc - proveu d'augmentar "
"http.postBuffer"
+#: remote-curl.c
#, c-format
msgid "remote-curl: bad line length character: %.4s"
msgstr "remote-curl: caràcter de longitud de línia erroni: %.4s"
+#: remote-curl.c
msgid "remote-curl: unexpected response end packet"
msgstr "remote-curl: paquet final de resposta inesperat"
+#: remote-curl.c
#, c-format
msgid "RPC failed; %s"
msgstr "RPC ha fallat; %s"
+#: remote-curl.c
msgid "cannot handle pushes this big"
msgstr "no es pot gestionar pujades tan grans"
+#: remote-curl.c
#, c-format
msgid "cannot deflate request; zlib deflate error %d"
msgstr "no es pot descomprimir la sol·licitud; error de deflate zlib %d"
+#: remote-curl.c
#, c-format
msgid "cannot deflate request; zlib end error %d"
msgstr ""
"no es pot descomprimir la sol·licitud; error de finalització de zlib %d"
+#: remote-curl.c
#, c-format
msgid "%d bytes of length header were received"
-msgstr "s'han rebut %d bytes de longitud de capçalera"
+msgstr "s'han rebut %d octets de longitud de capçalera"
+#: remote-curl.c
#, c-format
msgid "%d bytes of body are still expected"
-msgstr "encara s'esperen %d bytes del cos"
+msgstr "encara s'esperen %d octets del cos"
+#: remote-curl.c
msgid "dumb http transport does not support shallow capabilities"
msgstr "el transport ximple http no admet capacitats superficials"
+#: remote-curl.c
msgid "fetch failed."
msgstr "l'obtenció ha fallat."
+#: remote-curl.c
msgid "cannot fetch by sha1 over smart http"
msgstr "no s'ha pogut obtenir per sha1 a través de l'http intel·ligent"
+#: remote-curl.c
#, c-format
msgid "protocol error: expected sha/ref, got '%s'"
msgstr "error de protocol: s'esperava sha/ref, s'ha obtingut «%s»"
+#: remote-curl.c
#, c-format
msgid "http transport does not support %s"
msgstr "El transport http no admet %s"
+#: remote-curl.c
msgid "protocol error: expected '<url> <path>', missing space"
msgstr ""
"s'ha produït un error de protocol: s'esperava «<url> <camí>», falta espai"
+#: remote-curl.c
#, c-format
msgid "failed to download file at URL '%s'"
msgstr "no s'ha pogut baixar el fitxer a l'URL «%s»"
+#: remote-curl.c
msgid "git-http-push failed"
msgstr "git-http-push ha fallat"
+#: remote-curl.c
msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
-msgstr "remote-curl: ús: git remote-curl <remote> [<url>]"
+msgstr "remote-curl: ús: git remote-curl <remot> [<url>]"
+#: remote-curl.c
msgid "remote-curl: error reading command stream from git"
msgstr "remote-curl: error en llegir el flux d'ordres del git"
+#: remote-curl.c
msgid "remote-curl: fetch attempted without a local repo"
msgstr "remote-curl: s'ha intentat l'obtenció sense un repositori local"
+#: remote-curl.c
#, c-format
msgid "remote-curl: unknown command '%s' from git"
msgstr "remote-curl: ordre «%s» desconeguda del git"
+#: remote.c
#, c-format
msgid "config remote shorthand cannot begin with '/': %s"
msgstr ""
"l'abreviatura del fitxer de configuració remot no pot començar amb «/»: %s"
+#: remote.c
msgid "more than one receivepack given, using the first"
msgstr "més d'un paquet de recepció donat, usant el primer"
+#: remote.c
msgid "more than one uploadpack given, using the first"
msgstr "més d'un paquet de càrrega donat, usant el primer"
+#: remote.c
#, c-format
msgid "unrecognized value transfer.credentialsInUrl: '%s'"
msgstr "valor no conegut per a transfer.credentialsInUrl: «%s»"
+#: remote.c
#, c-format
msgid "URL '%s' uses plaintext credentials"
msgstr "L'URL «%s» utilitza credencials en text pla"
+#: remote.c
#, c-format
msgid "Cannot fetch both %s and %s to %s"
msgstr "No es poden obtenir ambdós %s i %s a %s"
+#: remote.c
#, c-format
msgid "%s usually tracks %s, not %s"
msgstr "%s generalment segueix %s, no %s"
+#: remote.c
#, c-format
msgid "%s tracks both %s and %s"
msgstr "%s segueix ambdós %s i %s"
+#: remote.c
#, c-format
msgid "key '%s' of pattern had no '*'"
msgstr "la clau «%s» del patró no té «*»"
+#: remote.c
#, c-format
msgid "value '%s' of pattern has no '*'"
msgstr "el valor «%s» del patró no té «*»"
+#: remote.c
#, c-format
msgid "src refspec %s does not match any"
msgstr "l'especificació de referència font %s no coincideix amb cap referència"
+#: remote.c
#, c-format
msgid "src refspec %s matches more than one"
msgstr ""
@@ -19726,6 +25410,7 @@ msgstr ""
#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
#. the <src>.
#.
+#: remote.c
#, c-format
msgid ""
"The destination you provided is not a full refname (i.e.,\n"
@@ -19748,6 +25433,7 @@ msgstr ""
"\n"
"Res d'això ha funcionat. Cal que proporcioneu una referència completa."
+#: remote.c
#, c-format
msgid ""
"The <src> part of the refspec is a commit object.\n"
@@ -19759,6 +25445,7 @@ msgstr ""
"Voleu crear una branca nova empenyent a\n"
"«%s:refs/heads/%s»?"
+#: remote.c
#, c-format
msgid ""
"The <src> part of the refspec is a tag object.\n"
@@ -19768,6 +25455,7 @@ msgstr ""
"La part <src> de l'especificació de la referència és un objecte d'etiqueta.\n"
"Voleu crear una etiqueta pujant-la a «%s:refs/tags/%s»?"
+#: remote.c
#, c-format
msgid ""
"The <src> part of the refspec is a tree object.\n"
@@ -19777,6 +25465,7 @@ msgstr ""
"La part <src> de l'especificació de la referència és un objecte d'arbre.\n"
"Voleu crear una etiqueta pujant-la a «%s:refs/tags/%s»?"
+#: remote.c
#, c-format
msgid ""
"The <src> part of the refspec is a blob object.\n"
@@ -19787,93 +25476,116 @@ msgstr ""
"Voleu posar una etiqueta al blob nou mitjançant la pujada a\n"
"?«%s:refs/tags/%s»?"
+#: remote.c
#, c-format
msgid "%s cannot be resolved to branch"
msgstr "«%s» no es pot resoldre a una branca"
+#: remote.c
#, c-format
msgid "unable to delete '%s': remote ref does not exist"
msgstr "no s'ha pogut suprimir «%s»: la referència remota no existeix"
+#: remote.c
#, c-format
msgid "dst refspec %s matches more than one"
msgstr ""
"l'especificació de la referència dst %s coincideixen amb més d'una referència"
+#: remote.c
#, c-format
msgid "dst ref %s receives from more than one src"
msgstr "l'especificació de la referència dst %s rep més d'una referència src"
+#: remote.c
msgid "HEAD does not point to a branch"
msgstr "HEAD no assenyala cap branca"
+#: remote.c
#, c-format
msgid "no such branch: '%s'"
msgstr "no existeix la branca: «%s»"
+#: remote.c
#, c-format
msgid "no upstream configured for branch '%s'"
msgstr "cap font configurada per a la branca «%s»"
+#: remote.c
#, c-format
msgid "upstream branch '%s' not stored as a remote-tracking branch"
msgstr "la branca font «%s» no s'emmagatzema com a branca amb seguiment remot"
+#: remote.c
#, c-format
msgid "push destination '%s' on remote '%s' has no local tracking branch"
msgstr ""
"el destí de pujada «%s» en el remot «%s» no té cap branca amb seguiment remot"
+#: remote.c
#, c-format
msgid "branch '%s' has no remote for pushing"
msgstr "la branca «%s» no té cap remot al qual pujar"
+#: remote.c
#, c-format
msgid "push refspecs for '%s' do not include '%s'"
msgstr "les especificacions de referència de pujada «%s» no inclouen «%s»"
+#: remote.c
msgid "push has no destination (push.default is 'nothing')"
msgstr "push no té destí (push.default és «nothing»)"
+#: remote.c
msgid "cannot resolve 'simple' push to a single destination"
msgstr "no es pot resoldre una pujada «simple» a un sol destí"
+#: remote.c
#, c-format
msgid "couldn't find remote ref %s"
msgstr "no s'ha pogut trobar la referència remota %s"
+#: remote.c
#, c-format
msgid "* Ignoring funny ref '%s' locally"
msgstr "* S'estan ignorant les referències «%s» localment"
+#: remote.c
#, c-format
msgid "Your branch is based on '%s', but the upstream is gone.\n"
msgstr "La vostra branca està basada en «%s», però la font no hi és.\n"
+#: remote.c
msgid " (use \"git branch --unset-upstream\" to fixup)\n"
msgstr " (useu «git branch --unset-upstream» per a arreglar-ho)\n"
+#: remote.c
#, c-format
msgid "Your branch is up to date with '%s'.\n"
msgstr "La vostra branca està al dia amb «%s».\n"
+#: remote.c
#, c-format
msgid "Your branch and '%s' refer to different commits.\n"
-msgstr "La vostra branca i «%s» es refereixen a diferents comissions.\n"
+msgstr "La vostra branca i «%s» es refereixen a comissions.\n"
+#: remote.c
#, c-format
msgid " (use \"%s\" for details)\n"
msgstr " (useu «%s» per a detalls)\n"
+#: remote.c
#, c-format
msgid "Your branch is ahead of '%s' by %d commit.\n"
msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
msgstr[0] "La vostra branca està %2$d comissió per davant de «%1$s».\n"
msgstr[1] "La vostra branca està %2$d comissions per davant de «%1$s».\n"
+#: remote.c
msgid " (use \"git push\" to publish your local commits)\n"
msgstr " (useu «git push» per a publicar les vostres comissions locals)\n"
+#: remote.c
#, c-format
msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
msgid_plural ""
@@ -19885,9 +25597,11 @@ msgstr[1] ""
"La vostra branca està %2$d comissions per darrere de «%1$s», i pot avançar-"
"se ràpidament.\n"
+#: remote.c
msgid " (use \"git pull\" to update your local branch)\n"
msgstr " (useu «git pull» per a actualitzar la vostra branca local)\n"
+#: remote.c
#, c-format
msgid ""
"Your branch and '%s' have diverged,\n"
@@ -19902,285 +25616,387 @@ msgstr[1] ""
"La vostra branca i «%s» han divergit,\n"
"i tenen %d i %d comissions distintes cada una, respectivament.\n"
+#: remote.c
msgid ""
" (use \"git pull\" if you want to integrate the remote branch with yours)\n"
msgstr ""
" (utilitzeu «git pull» si voleu integrar la branca remota amb la vostra)\n"
+#: remote.c
#, c-format
msgid "cannot parse expected object name '%s'"
msgstr "no es pot analitzar el nom de l'objecte esperat «%s»"
+#: remote.c
#, c-format
msgid "cannot strip one component off url '%s'"
msgstr "no es pot despullar un component de l'url «%s»"
+#: replace-object.c
#, c-format
msgid "bad replace ref name: %s"
msgstr "nom de la referència reemplaçada incorrecte: %s"
+#: replace-object.c
#, c-format
msgid "duplicate replace ref: %s"
msgstr "duplica les referències reemplaçades: %s"
+#: replace-object.c
#, c-format
msgid "replace depth too high for object %s"
msgstr "la profunditat de reemplaçament és massa alta per l'objecte %s"
+#: rerere.c
msgid "corrupt MERGE_RR"
msgstr "MERGE_RR corrupte"
+#: rerere.c
msgid "unable to write rerere record"
msgstr "no s'ha pogut escriure el registre «rerere»"
+#: rerere.c
#, c-format
msgid "there were errors while writing '%s' (%s)"
msgstr "s'han produït errors en escriure «%s» (%s)"
+#: rerere.c
#, c-format
msgid "could not parse conflict hunks in '%s'"
msgstr "no s'han pogut analitzar els pedaços en conflicte a «%s»"
+#: rerere.c
#, c-format
msgid "failed utime() on '%s'"
msgstr "s'ha produït un error en fer «failed utime()» a «%s»"
+#: rerere.c
#, c-format
msgid "writing '%s' failed"
msgstr "s'ha produït un error en escriure «%s»"
+#: rerere.c
#, c-format
msgid "Staged '%s' using previous resolution."
msgstr "«Staged» «%s» utilitzant una resolució anterior."
+#: rerere.c
#, c-format
msgid "Recorded resolution for '%s'."
msgstr "Es recorda la resolució per a «%s»."
+#: rerere.c
#, c-format
msgid "Resolved '%s' using previous resolution."
msgstr "S'ha resolt «%s» usant una resolució anterior."
+#: rerere.c
#, c-format
msgid "cannot unlink stray '%s'"
msgstr "no es pot desenllaçar «%s» (extraviat)"
+#: rerere.c
#, c-format
msgid "Recorded preimage for '%s'"
msgstr "Imatge prèvia registrada per a «%s»"
+#: rerere.c
#, c-format
msgid "failed to update conflicted state in '%s'"
msgstr "ha fallat en actualitzar l'estat en conflicte a «%s»"
+#: rerere.c
#, c-format
msgid "no remembered resolution for '%s'"
msgstr "no hi ha cap resolució recordada per a «%s»"
+#: rerere.c
#, c-format
msgid "Updated preimage for '%s'"
msgstr "Imatge prèvia actualitzada per a «%s»"
+#: rerere.c
#, c-format
msgid "Forgot resolution for '%s'\n"
msgstr "S'ha oblidat la resolució per a «%s»\n"
+#: rerere.c
msgid "unable to open rr-cache directory"
msgstr "no s'ha pogut obrir el directori rr-cache"
+#: rerere.h
msgid "update the index with reused conflict resolution if possible"
msgstr ""
"actualitza l'índex amb la resolució de conflictes reusada si és possible"
+#: reset.c
msgid "could not determine HEAD revision"
msgstr "no s'ha pogut determinar la revisió de HEAD"
+#: reset.c sequencer.c
#, c-format
msgid "failed to find tree of %s"
msgstr "s'ha produït un error en cercar l'arbre de %s"
+#: revision.c
#, c-format
msgid "unsupported section for hidden refs: %s"
msgstr "secció d'índex no compatible per a les referències ocultes: %s"
+#: revision.c
msgid "--exclude-hidden= passed more than once"
msgstr "--exclude-hidden= passat més d'una vegada"
+#: revision.c
#, c-format
msgid "resolve-undo records `%s` which is missing"
msgstr "resolve-undo indica «%s» que manquen"
+#: revision.c
#, c-format
-msgid "could not get commit for ancestry-path argument %s"
-msgstr "no s'ha pogut obtenir la comissió per a l'argument d'ancestry-path %s"
+msgid "%s exists but is a symbolic ref"
+msgstr "%s existeix però és una referència simbòlica"
+#: revision.c
+msgid ""
+"--merge requires one of the pseudorefs MERGE_HEAD, CHERRY_PICK_HEAD, "
+"REVERT_HEAD or REBASE_HEAD"
+msgstr ""
+"--merge requereix una de les pseudoreferències MERGE_HEAD, CHERRY_PICK_HEAD, "
+"REVERT_HEAD o REBASE_HEAD"
+
+#: revision.c
+#, c-format
+msgid "could not get commit for --ancestry-path argument %s"
+msgstr ""
+"no s'ha pogut obtenir una comissió per a l'argument %s d'--ancestry-path"
+
+#: revision.c
msgid "--unpacked=<packfile> no longer supported"
msgstr "--unpacked=<packfile> ja no s'admet"
+#: revision.c
#, c-format
msgid "invalid option '%s' in --stdin mode"
msgstr "opció no vàlida: «%s» en mode --stdin"
+#: revision.c
msgid "your current branch appears to be broken"
msgstr "la vostra branca actual sembla malmesa"
+#: revision.c
#, c-format
msgid "your current branch '%s' does not have any commits yet"
msgstr "la branca actual «%s» encara no té cap comissió"
+#: revision.c
msgid "object filtering requires --objects"
msgstr "el filtratge d'objectes requereix --objects"
+#: revision.c
msgid "-L does not yet support diff formats besides -p and -s"
msgstr "-L no és encara compatible amb formats que no siguin «-p» o «-s»"
+#: run-command.c
#, c-format
msgid "cannot create async thread: %s"
msgstr "no s'ha pogut crear fil «async»: %s"
+#: scalar.c worktree.c
#, c-format
msgid "'%s' does not exist"
msgstr "«%s» no existeix"
+#: scalar.c
#, c-format
msgid "could not switch to '%s'"
msgstr "no s'ha pogut commutar a «%s»"
+#: scalar.c
msgid "need a working directory"
msgstr "cal un directori de treball"
+#: scalar.c
msgid "Scalar enlistments require a worktree"
msgstr "Els allistaments escalars requereixen un arbre de treball"
+#: scalar.c
#, c-format
msgid "could not configure %s=%s"
msgstr "no s'ha pogut configurar %s=%s"
+#: scalar.c
msgid "could not configure log.excludeDecoration"
msgstr "no s'ha pogut configurar log.excludeDecoration"
+#: scalar.c
msgid "could not add enlistment"
msgstr "no s'ha afegit a l'allistament"
+#: scalar.c
msgid "could not set recommended config"
msgstr "no s'ha pogut establir la configuració recomanada"
+#: scalar.c
msgid "could not turn on maintenance"
msgstr "no s'ha pogut activar el manteniment"
+#: scalar.c
msgid "could not start the FSMonitor daemon"
msgstr "no s'ha pogut iniciar el dimoni del fsmonitor"
+#: scalar.c
msgid "could not turn off maintenance"
msgstr "no s'ha pogut desactivar el manteniment"
+#: scalar.c
msgid "could not remove enlistment"
msgstr "no s'ha pogut eliminar l'allistament"
+#: scalar.c
#, c-format
msgid "remote HEAD is not a branch: '%.*s'"
msgstr "la HEAD remota no és una branca: «%.*s»"
+#: scalar.c
msgid "failed to get default branch name from remote; using local default"
msgstr ""
"no s'ha pogut obtenir el nom de la branca per defecte del remot; s'usa ela "
"predeterminada localment"
+#: scalar.c
msgid "failed to get default branch name"
msgstr "s'ha produït un error en obtenir el nom de branca predeterminada"
+#: scalar.c
msgid "failed to unregister repository"
msgstr "s'ha produït un error en desregistrar el repositori"
+#: scalar.c
msgid "failed to stop the FSMonitor daemon"
msgstr "no s'ha pogut aturar el dimoni del FSMonitor"
+#: scalar.c
msgid "failed to delete enlistment directory"
msgstr "s'ha produït un error en suprimir l'allistament del directori"
+#: scalar.c
msgid "branch to checkout after clone"
msgstr "branca a agafar després de clonar"
+#: scalar.c
msgid "when cloning, create full working directory"
msgstr "quan es clona, crear un directori de treball complet"
+#: scalar.c
msgid "only download metadata for the branch that will be checked out"
msgstr "només baixa les metadades per a la branca que s'agafarà"
+#: scalar.c
msgid "create repository within 'src' directory"
msgstr "crea un repositori dins del directori «src»"
+#: scalar.c
+msgid "specify if tags should be fetched during clone"
+msgstr "especifica si les etiquetes s'han d'obtenir durant el clon"
+
+# Deixem <enlistment> sense traduir de moment
+#: scalar.c
msgid ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
msgstr ""
-"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] <url> [<enlistment>]"
+"scalar clone [--single-branch] [--branch <branca-principal>] [--full-clone]\n"
+"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
+#: scalar.c
#, c-format
msgid "cannot deduce worktree name from '%s'"
msgstr "no es pot deduir el nom de l'arbre de treball de «%s»"
+#: scalar.c
#, c-format
msgid "directory '%s' exists already"
msgstr "el directori «%s» ja existeix"
+#: scalar.c
#, c-format
msgid "failed to get default branch for '%s'"
msgstr "s'ha produït un error en obtenir la branca per defecte per a «%s»"
+#: scalar.c
#, c-format
msgid "could not configure remote in '%s'"
msgstr "no s'ha pogut configurar el remot a «%s»"
+#: scalar.c
+#, c-format
+msgid "could not disable tags in '%s'"
+msgstr "no s'han pogut inhabilitar les etiquetes en «%s»"
+
+#: scalar.c
#, c-format
msgid "could not configure '%s'"
msgstr "no s'ha pogut configurar «%s»"
+#: scalar.c
msgid "partial clone failed; attempting full clone"
msgstr "ha fallat la clonació parcial; s'està intentant la clonació completa"
+#: scalar.c
msgid "could not configure for full clone"
msgstr "no s'ha pogut configurar per a una clonació completa"
+#: scalar.c
msgid "scalar diagnose [<enlistment>]"
msgstr "scalar diagnose [<enlistment>]"
+#: scalar.c
msgid "`scalar list` does not take arguments"
msgstr "«scalar list» no accepta arguments"
+#: scalar.c
msgid "scalar register [<enlistment>]"
msgstr "scalar register [<enlistment>]"
+#: scalar.c
msgid "reconfigure all registered enlistments"
msgstr "reconfigura tots els allistaments registrats"
+#: scalar.c
msgid "scalar reconfigure [--all | <enlistment>]"
msgstr "scalar reconfigure [--all | <enlistment>]"
+#: scalar.c
msgid "--all or <enlistment>, but not both"
msgstr "--all o <enlistment>, però no ambdós"
+#: scalar.c
#, c-format
msgid "could not remove stale scalar.repo '%s'"
msgstr "no s'ha pogut suprimir el scalar.repo «%s» estancat"
+#: scalar.c
#, c-format
msgid "removed stale scalar.repo '%s'"
msgstr "s'ha eliminat l'scalar.repo estancat «%s»"
+#: scalar.c
#, c-format
msgid "repository at '%s' has different owner"
msgstr "el dipòsit a «%s» té un propietari diferent"
+#: scalar.c
#, c-format
msgid "repository at '%s' has a format issue"
msgstr "el dipòsit a «%s» té un problema de format"
+#: scalar.c
#, c-format
msgid "repository not found in '%s'"
msgstr "no s'ha trobat el dipòsit a «%s»"
+#: scalar.c
#, c-format
msgid ""
"to unregister this repository from Scalar, run\n"
@@ -20189,6 +26005,7 @@ msgstr ""
"per a desregistrar aquest dipòsit de l'escalar, executeu\n"
"\tgit config --global --unset --fixed-value scalar.repo «%s»"
+#: scalar.c
msgid ""
"scalar run <task> [<enlistment>]\n"
"Tasks:\n"
@@ -20196,77 +26013,97 @@ msgstr ""
"scalar run <task> {<enlistment>]\n"
"Tasques:\n"
+#: scalar.c
#, c-format
msgid "no such task: '%s'"
msgstr "no existeix la tasca: «%s»"
+#: scalar.c
msgid "scalar unregister [<enlistment>]"
msgstr "scalar unregister [<enlistment>]"
+#: scalar.c
msgid "scalar delete <enlistment>"
msgstr "supressió de l'escalar <enlistment>"
+#: scalar.c
msgid "refusing to delete current working directory"
msgstr "s'ha rebutjat suprimir el directori de treball actual"
+#: scalar.c
msgid "include Git version"
msgstr "inclou la versió del Git"
+#: scalar.c
msgid "include Git's build options"
msgstr "inclou les opcions de construcció del Git"
+#: scalar.c
msgid "scalar verbose [-v | --verbose] [--build-options]"
msgstr "scalar verbose [-v | --verbose] [--build-options]"
+#: scalar.c
msgid "-C requires a <directory>"
-msgstr "-C requereix un <directory>"
+msgstr "-C requereix un <directori>"
+#: scalar.c
#, c-format
msgid "could not change to '%s'"
msgstr "no s'ha pogut canviar a «%s»"
+#: scalar.c
msgid "-c requires a <key>=<value> argument"
-msgstr "-c requereix un argument <key>=<value>"
+msgstr "-c requereix un argument <clau>=<valor>"
+#: scalar.c
msgid ""
"scalar [-C <directory>] [-c <key>=<value>] <command> [<options>]\n"
"\n"
"Commands:\n"
msgstr ""
-"scalar [-C <directory>] [-c <key>=<value>] <command> [<opcions>]\n"
+"scalar [-C <directori>] [-c <clau>=<valor>] <ordre> [<opcions>]\n"
"\n"
"Ordres:\n"
+#: send-pack.c
msgid "unexpected flush packet while reading remote unpack status"
msgstr ""
"paquet de buidatge no esperat quan estava llegint l'estat del "
"desempaquetament remot"
+#: send-pack.c
#, c-format
msgid "unable to parse remote unpack status: %s"
msgstr "no s'ha pogut analitzar l'estat del desempaquetament remot: %s"
+#: send-pack.c
#, c-format
msgid "remote unpack failed: %s"
msgstr "s'ha produït un error en el desempaquetament remot: %s"
+#: send-pack.c
msgid "failed to sign the push certificate"
msgstr "s'ha produït un error en signar el certificat de pujada"
+#: send-pack.c
msgid "send-pack: unable to fork off fetch subprocess"
msgstr "send-pack: no es pot bifurcar obtenint un subprocés"
+#: send-pack.c
msgid "push negotiation failed; proceeding anyway with push"
msgstr ""
"ha fallat la negociació de la pujada; s'està procedint igualment amb "
"l'empenta"
+#: send-pack.c
msgid "the receiving end does not support this repository's hash algorithm"
msgstr "el receptor de destí no admet l'algorisme de resum del repositori"
+#: send-pack.c
msgid "the receiving end does not support --signed push"
msgstr "el destí receptor no admet pujar --signed"
+#: send-pack.c
msgid ""
"not sending a push certificate since the receiving end does not support --"
"signed push"
@@ -20274,33 +26111,58 @@ msgstr ""
"no s'està enviant una certificació de pujada perquè el destí receptor no "
"admet pujar --signed"
+#: send-pack.c
msgid "the receiving end does not support --atomic push"
msgstr "el destí receptor no admet pujar --atomic"
+#: send-pack.c
msgid "the receiving end does not support push options"
msgstr "el receptor al destí no admet opcions de pujada"
+#: sequencer.c
#, c-format
msgid "invalid commit message cleanup mode '%s'"
msgstr "mode de neteja «%s» no vàlid en la comissió del missatge"
+#: sequencer.c
#, c-format
msgid "could not delete '%s'"
msgstr "no s'ha pogut suprimir «%s»"
+#: sequencer.c
msgid "revert"
msgstr "revertir"
+#: sequencer.c
msgid "cherry-pick"
msgstr "cherry-pick"
+#: sequencer.c
msgid "rebase"
msgstr "rebase"
+#: sequencer.c
#, c-format
msgid "unknown action: %d"
msgstr "acció desconeguda: %d"
+#: sequencer.c
+msgid ""
+"Resolve all conflicts manually, mark them as resolved with\n"
+"\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
+"You can instead skip this commit: run \"git rebase --skip\".\n"
+"To abort and get back to the state before \"git rebase\", run \"git rebase --"
+"abort\"."
+msgstr ""
+"Resoleu tots els conflictes manualment, marqueu-los com a resolts amb\n"
+"«git add/rm <fitxers_amb_conflicte>», llavors executeu «git rebase --"
+"continue».\n"
+"Alternativament podeu ometre aquesta comissió: executeu «git rebase --"
+"skip».\n"
+"Per a avortar i tornar a l'estat anterior abans de l'ordre «git rebase», "
+"executeu «git rebase --abort»."
+
+#: sequencer.c
msgid ""
"after resolving the conflicts, mark the corrected paths\n"
"with 'git add <paths>' or 'git rm <paths>'"
@@ -20308,6 +26170,7 @@ msgstr ""
"després de resoldre els conflictes, marqueu els camins\n"
"corregits amb «git add <camins>» o «git rm <camins>»"
+#: sequencer.c
msgid ""
"After resolving the conflicts, mark them with\n"
"\"git add/rm <pathspec>\", then run\n"
@@ -20323,6 +26186,7 @@ msgstr ""
"Per a interrompre i tornar a l'estat anterior abans de «git cherry-pick»,\n"
"executeu «git cherry-pick --abort»."
+#: sequencer.c
msgid ""
"After resolving the conflicts, mark them with\n"
"\"git add/rm <pathspec>\", then run\n"
@@ -20338,68 +26202,86 @@ msgstr ""
"Per a interrompre i tornar a l'estat anterior abans de «git revert»,\n"
"executeu «git revert --abort»."
+#: sequencer.c
#, c-format
msgid "could not lock '%s'"
msgstr "no s'ha pogut bloquejar «%s»"
+#: sequencer.c
#, c-format
msgid "could not write eol to '%s'"
msgstr "no s'ha pogut escriure el terminador de línia a «%s»"
+#: sequencer.c
#, c-format
msgid "failed to finalize '%s'"
msgstr "s'ha produït un error en finalitzar «%s»"
+#: sequencer.c
#, c-format
msgid "your local changes would be overwritten by %s."
msgstr "els vostres canvis locals se sobreescriurien per %s."
+#: sequencer.c
msgid "commit your changes or stash them to proceed."
msgstr "cometeu els vostres canvis o feu un «stash» per a procedir."
#. TRANSLATORS: %s will be "revert", "cherry-pick" or
#. "rebase".
#.
+#: sequencer.c
#, c-format
msgid "%s: Unable to write new index file"
msgstr "%s: No s'ha pogut escriure un fitxer d'índex nou"
+#: sequencer.c
msgid "unable to update cache tree"
msgstr "no s'ha pogut actualitzar l'arbre cau"
+#: sequencer.c
msgid "could not resolve HEAD commit"
msgstr "no s'ha pogut resoldre la comissió HEAD"
+#: sequencer.c
#, c-format
msgid "no key present in '%.*s'"
msgstr "no hi ha una clau a «%.*s»"
+#: sequencer.c
#, c-format
msgid "unable to dequote value of '%s'"
msgstr "no s'han pogut treure les cometes del valor de «%s»"
+#: sequencer.c
msgid "'GIT_AUTHOR_NAME' already given"
msgstr "Ja s'ha donat «GIT_AUTHOR_NAME»"
+#: sequencer.c
msgid "'GIT_AUTHOR_EMAIL' already given"
msgstr "Ja s'ha donat «GIT_AUTHOR_EMAIL»"
+#: sequencer.c
msgid "'GIT_AUTHOR_DATE' already given"
msgstr "Ja s'ha donat «GIT_AUTHOR_DATE»"
+#: sequencer.c
#, c-format
msgid "unknown variable '%s'"
msgstr "variable «%s» desconeguda"
+#: sequencer.c
msgid "missing 'GIT_AUTHOR_NAME'"
msgstr "falta «GIT_AUTHOR_NAME»"
+#: sequencer.c
msgid "missing 'GIT_AUTHOR_EMAIL'"
msgstr "falta «GIT_AUTHOR_EMAIL»"
+#: sequencer.c
msgid "missing 'GIT_AUTHOR_DATE'"
msgstr "falta «GIT_AUTHOR_DATE»"
+#: sequencer.c
#, c-format
msgid ""
"you have staged changes in your working tree\n"
@@ -20429,9 +26311,11 @@ msgstr ""
"\n"
" git rebase --continue\n"
+#: sequencer.c
msgid "'prepare-commit-msg' hook failed"
msgstr "el lligam «prepare-commit-msg» ha fallat"
+#: sequencer.c
msgid ""
"Your name and email address were configured automatically based\n"
"on your username and hostname. Please check that they are accurate.\n"
@@ -20458,6 +26342,7 @@ msgstr ""
"\n"
" git commit --amend --reset-author\n"
+#: sequencer.c
msgid ""
"Your name and email address were configured automatically based\n"
"on your username and hostname. Please check that they are accurate.\n"
@@ -20483,259 +26368,369 @@ msgstr ""
"\n"
" git commit --amend --reset-author\n"
+#: sequencer.c
msgid "couldn't look up newly created commit"
msgstr "no s'ha pogut trobar la comissió novament creada"
+#: sequencer.c
msgid "could not parse newly created commit"
msgstr "no s'ha pogut analitzar la comissió novament creada"
+#: sequencer.c
msgid "unable to resolve HEAD after creating commit"
msgstr "no s'ha pogut resoldre HEAD després de crear la comissió"
+#: sequencer.c
msgid "detached HEAD"
msgstr "HEAD separat"
+#: sequencer.c
msgid " (root-commit)"
msgstr " (comissió arrel)"
+#: sequencer.c
msgid "could not parse HEAD"
msgstr "no s'ha pogut analitzar HEAD"
+#: sequencer.c
#, c-format
msgid "HEAD %s is not a commit!"
msgstr "HEAD %s no és una comissió!"
+#: sequencer.c
msgid "unable to parse commit author"
msgstr "no s'ha pogut analitzar l'autor de la comissió"
+#: sequencer.c
#, c-format
msgid "unable to read commit message from '%s'"
msgstr "no s'ha pogut llegir el missatge de comissió des de «%s»"
+#: sequencer.c
#, c-format
msgid "invalid author identity '%s'"
msgstr "identitat d'autor no vàlida: «%s»"
+#: sequencer.c
msgid "corrupt author: missing date information"
msgstr "autor malmès: falta la informació de la data"
+#: sequencer.c
#, c-format
msgid "could not update %s"
msgstr "no s'ha pogut actualitzar %s"
-#, c-format
-msgid "could not parse commit %s"
-msgstr "no s'ha pogut analitzar la comissió %s"
-
+#: sequencer.c
#, c-format
msgid "could not parse parent commit %s"
msgstr "no s'ha pogut analitzar la comissió pare %s"
+#: sequencer.c
#, c-format
msgid "unknown command: %d"
msgstr "ordre desconeguda: %d"
+#: sequencer.c
msgid "This is the 1st commit message:"
msgstr "Aquest és el missatge de la 1a comissió:"
+#: sequencer.c
#, c-format
msgid "This is the commit message #%d:"
msgstr "Aquest és el missatge de la #%d comissió:"
+#: sequencer.c
msgid "The 1st commit message will be skipped:"
msgstr "El missatge de la primera comissió s'ometrà:"
+#: sequencer.c
#, c-format
msgid "The commit message #%d will be skipped:"
msgstr "El missatge de la comissió núm. #%d s'ometrà:"
+#: sequencer.c
#, c-format
msgid "This is a combination of %d commits."
msgstr "Això és una combinació de %d comissions."
+#: sequencer.c
#, c-format
msgid "cannot write '%s'"
msgstr "no es pot escriure «%s»"
+#: sequencer.c
msgid "need a HEAD to fixup"
msgstr "cal un HEAD per a reparar-ho"
+#: sequencer.c
msgid "could not read HEAD"
msgstr "no s'ha pogut llegir HEAD"
+#: sequencer.c
msgid "could not read HEAD's commit message"
msgstr "no s'ha pogut llegir el missatge de comissió de HEAD"
+#: sequencer.c
#, c-format
msgid "could not read commit message of %s"
msgstr "no s'ha pogut llegir el missatge de comissió: %s"
+#: sequencer.c
msgid "your index file is unmerged."
msgstr "el vostre fitxer d'índex està sense fusionar."
+#: sequencer.c
msgid "cannot fixup root commit"
msgstr "no es pot arreglar la comissió arrel"
+#: sequencer.c
#, c-format
msgid "commit %s is a merge but no -m option was given."
msgstr "la comissió %s és una fusió però no s'ha donat cap opció -m."
+#: sequencer.c
#, c-format
msgid "commit %s does not have parent %d"
msgstr "la comissió %s no té pare %d"
+#: sequencer.c
#, c-format
msgid "cannot get commit message for %s"
msgstr "no es pot obtenir el missatge de comissió de %s"
#. TRANSLATORS: The first %s will be a "todo" command like
#. "revert" or "pick", the second %s a SHA1.
+#: sequencer.c
#, c-format
msgid "%s: cannot parse parent commit %s"
msgstr "%s: no es pot analitzar la comissió pare %s"
+#: sequencer.c
#, c-format
msgid "could not revert %s... %s"
msgstr "no s'ha pogut revertir %s... %s"
+#: sequencer.c
#, c-format
msgid "could not apply %s... %s"
msgstr "no s'ha pogut aplicar %s... %s"
+#: sequencer.c
#, c-format
msgid "dropping %s %s -- patch contents already upstream\n"
msgstr "descartant %s %s -- el contingut del pedaç ja està a la font\n"
+#: sequencer.c
#, c-format
msgid "git %s: failed to read the index"
msgstr "git %s: s'ha produït un error en llegir l'índex"
+#: sequencer.c
#, c-format
msgid "git %s: failed to refresh the index"
msgstr "git %s: s'ha produït un error en actualitzar l'índex"
+#: sequencer.c
#, c-format
msgid "'%s' is not a valid label"
msgstr "«%s» no és una etiqueta vàlida"
+#: sequencer.c
#, c-format
msgid "'%s' is not a valid refname"
msgstr "«%s» no és un nom de referència vàlid"
+#: sequencer.c
#, c-format
msgid "update-ref requires a fully qualified refname e.g. refs/heads/%s"
msgstr ""
"«update-ref» requereix un refname plenament qualificat, p. ex. refs/heads/%s"
+#: sequencer.c
#, c-format
-msgid "invalid command '%.*s'"
-msgstr "ordre no vàlida «%.*s»"
+msgid "'%s' does not accept merge commits"
+msgstr "%s no accepta comissions de fusió"
+#. TRANSLATORS: 'pick' and 'merge -C' should not be
+#. translated.
+#.
+#: sequencer.c
+msgid ""
+"'pick' does not take a merge commit. If you wanted to\n"
+"replay the merge, use 'merge -C' on the commit."
+msgstr ""
+"«pick» no accepta una comissió de fusió. Si volíeu\n"
+"reproduir la fusió, utilitzeu «merge -C» en la comissió."
+
+#. TRANSLATORS: 'reword' and 'merge -c' should not be
+#. translated.
+#.
+#: sequencer.c
+msgid ""
+"'reword' does not take a merge commit. If you wanted to\n"
+"replay the merge and reword the commit message, use\n"
+"'merge -c' on the commit"
+msgstr ""
+"«reword» no accepta una comissió de fusió. Si volíeu\n"
+"reproduir la fusió i fer «reword» del missatge de comissió,\n"
+"utilitzeu «merge -c» en la comissió"
+
+#. TRANSLATORS: 'edit', 'merge -C' and 'break' should
+#. not be translated.
+#.
+#: sequencer.c
+msgid ""
+"'edit' does not take a merge commit. If you wanted to\n"
+"replay the merge, use 'merge -C' on the commit, and then\n"
+"'break' to give the control back to you so that you can\n"
+"do 'git commit --amend && git rebase --continue'."
+msgstr ""
+"«edit» no accepta una comissió de fusió. Si volíeu\n"
+"reproduir la fusió, utilitzeu «merge -C» en la comissió\n"
+" i després «break» per a recuperar el control perquè pugueu\n"
+"feu «git commit --amend && git rebase --continue»."
+
+#: sequencer.c
+msgid "cannot squash merge commit into another commit"
+msgstr "no es pot fer «squash» d'una comissió de fusió en una altra comissió"
+
+#: sequencer.c
#, c-format
-msgid "%s does not accept arguments: '%s'"
-msgstr "%s no accepta arguments: «%s»"
+msgid "invalid command '%.*s'"
+msgstr "ordre no vàlida «%.*s»"
+#: sequencer.c
#, c-format
msgid "missing arguments for %s"
msgstr "falten els arguments per a %s"
+#: sequencer.c
#, c-format
msgid "could not parse '%s'"
msgstr "no s'ha pogut analitzar «%s»"
+#: sequencer.c
#, c-format
msgid "invalid line %d: %.*s"
msgstr "línia no vàlida %d: %.*s"
+#: sequencer.c
#, c-format
msgid "cannot '%s' without a previous commit"
msgstr "no es pot «%s» sense una comissió prèvia"
+#: sequencer.c
msgid "cancelling a cherry picking in progress"
msgstr "s'està cancel·lant un «cherry pick» en curs"
+#: sequencer.c
msgid "cancelling a revert in progress"
msgstr "s'està cancel·lant la reversió en curs"
+#: sequencer.c
msgid "please fix this using 'git rebase --edit-todo'."
msgstr "corregiu-ho usant «git rebase --edit-todo»."
+#: sequencer.c
#, c-format
msgid "unusable instruction sheet: '%s'"
msgstr "full d'instruccions inusable: «%s»"
+#: sequencer.c
msgid "no commits parsed."
msgstr "no s'ha analitzat cap comissió."
+#: sequencer.c
msgid "cannot cherry-pick during a revert."
msgstr "no es pot fer «cherry pick» durant una reversió."
+#: sequencer.c
msgid "cannot revert during a cherry-pick."
msgstr "no es pot revertir durant un «cherry pick»."
+#: sequencer.c
msgid "unusable squash-onto"
msgstr "«squash-onto» no usable"
+#: sequencer.c
#, c-format
msgid "malformed options sheet: '%s'"
msgstr "full d'opcions mal format: «%s»"
+#: sequencer.c
msgid "empty commit set passed"
msgstr "conjunt de comissions buit passat"
+#: sequencer.c
msgid "revert is already in progress"
msgstr "una reversió ja està en curs"
+#: sequencer.c
#, c-format
msgid "try \"git revert (--continue | %s--abort | --quit)\""
msgstr "intenteu «git revert (--continue | %s--abort | --quit)»"
+#: sequencer.c
msgid "cherry-pick is already in progress"
msgstr "un «cherry pick» ja està en curs"
+#: sequencer.c
#, c-format
msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
msgstr "intenteu «git cherry-pick (--continue | %s--abort | --quit)»"
+#: sequencer.c
#, c-format
msgid "could not create sequencer directory '%s'"
msgstr "no s'ha pogut crear el directori de seqüenciador «%s»"
+#: sequencer.c
msgid "no cherry-pick or revert in progress"
msgstr "ni hi ha cap «cherry pick» ni cap reversió en curs"
+#: sequencer.c
msgid "cannot resolve HEAD"
msgstr "no es pot resoldre HEAD"
+#: sequencer.c
msgid "cannot abort from a branch yet to be born"
msgstr "no es pot avortar des d'una branca que encara ha de nàixer"
+#: sequencer.c
#, c-format
msgid "cannot read '%s': %s"
msgstr "no es pot llegir «%s»: %s"
+#: sequencer.c
msgid "unexpected end of file"
msgstr "final de fitxer inesperat"
+#: sequencer.c
#, c-format
msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
msgstr "el fitxer HEAD emmagatzemat abans de fer «cherry pick» «%s» és malmès"
+#: sequencer.c
msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
-msgstr "Sembla que heu mogut HEAD sense rebobinar, comproveu-ho HEAD"
+msgstr "Sembla que heu mogut HEAD. No es fa el rebobinat, comproveu-ho HEAD"
+#: sequencer.c
msgid "no revert in progress"
msgstr "no hi ha cap reversió en curs"
+#: sequencer.c
msgid "no cherry-pick in progress"
msgstr "ni hi ha cap «cherry pick» en curs"
+#: sequencer.c
msgid "failed to skip the commit"
msgstr "s'ha produït un error en ometre la comissió"
+#: sequencer.c
msgid "there is nothing to skip"
msgstr "no hi ha res a ometre"
+#: sequencer.c
#, c-format
msgid ""
"have you committed already?\n"
@@ -20744,13 +26739,15 @@ msgstr ""
"heu fet ja una comissió?\n"
"proveu «git %s --continue»"
+#: sequencer.c
msgid "cannot read HEAD"
msgstr "no es pot llegir HEAD"
-#, c-format
-msgid "unable to copy '%s' to '%s'"
-msgstr "no s'ha pogut copiar «%s» a «%s»"
+#: sequencer.c
+msgid "could not write commit message file"
+msgstr "no s'ha pogut escriure el fitxer de missatge de comissió"
+#: sequencer.c
#, c-format
msgid ""
"You can amend the commit now, with\n"
@@ -20769,18 +26766,22 @@ msgstr ""
"\n"
" git rebase --continue\n"
+#: sequencer.c
#, c-format
msgid "Could not apply %s... %.*s"
msgstr "No s'ha pogut aplicar %s... %.*s"
+#: sequencer.c
#, c-format
msgid "Could not merge %.*s"
msgstr "No s'ha pogut fusionar %.*s"
+#: sequencer.c
#, c-format
msgid "Executing: %s\n"
msgstr "S'està executant: %s\n"
+#: sequencer.c
#, c-format
msgid ""
"execution failed: %s\n"
@@ -20795,9 +26796,11 @@ msgstr ""
" git rebase --continue\n"
"\n"
+#: sequencer.c
msgid "and made changes to the index and/or the working tree.\n"
msgstr "i ha fet canvis a l'índex i/o a l'arbre de treball.\n"
+#: sequencer.c
#, c-format
msgid ""
"execution succeeded: %s\n"
@@ -20814,52 +26817,65 @@ msgstr ""
" git rebase --continue\n"
"\n"
+#: sequencer.c
#, c-format
msgid "illegal label name: '%.*s'"
msgstr "nom d'etiqueta no permès: «%.*s»"
+#: sequencer.c
#, c-format
msgid "could not resolve '%s'"
msgstr "no s'ha pogut resoldre «%s»"
+#: sequencer.c
msgid "writing fake root commit"
msgstr "s'està escrivint una comissió arrel falsa"
+#: sequencer.c
msgid "writing squash-onto"
msgstr "s'està escrivint «squash-onto»"
+#: sequencer.c
msgid "cannot merge without a current revision"
msgstr "no es pot fusionar sense una revisió actual"
+#: sequencer.c
#, c-format
msgid "unable to parse '%.*s'"
msgstr "no s'ha pogut analitzar «%.*s»"
+#: sequencer.c
#, c-format
msgid "nothing to merge: '%.*s'"
msgstr "no hi ha res per a fusionar «%.*s»"
+#: sequencer.c
msgid "octopus merge cannot be executed on top of a [new root]"
msgstr ""
"no es pot executar la fusió «octopus» a la part superior d'una [arrel nova]"
+#: sequencer.c
#, c-format
msgid "could not get commit message of '%s'"
msgstr "no s'ha pogut llegir el missatge de comissió de «%s»"
+#: sequencer.c
#, c-format
msgid "could not even attempt to merge '%.*s'"
msgstr "no s'ha pogut fusionar «%.*s»"
+#: sequencer.c
msgid "merge: Unable to write new index file"
msgstr "fusió: no s'ha pogut escriure un fitxer d'índex nou"
+#: sequencer.c
#, c-format
msgid ""
"another 'rebase' process appears to be running; '%s.lock' already exists"
msgstr ""
"sembla que s'està executant un altre procés «rebase»: «%s.lock» ja existeix"
+#: sequencer.c
#, c-format
msgid ""
"Updated the following refs with %s:\n"
@@ -20868,6 +26884,7 @@ msgstr ""
"S'han actualitzat els següents refs amb %s:\n"
"%s"
+#: sequencer.c
#, c-format
msgid ""
"Failed to update the following refs with %s:\n"
@@ -20876,32 +26893,40 @@ msgstr ""
"No s'han pogut actualitzar les referències següents amb %s:\n"
"%s"
+#: sequencer.c
msgid "Cannot autostash"
msgstr "No es pot fer un «stash» automàticament"
+#: sequencer.c
#, c-format
msgid "Unexpected stash response: '%s'"
msgstr "Resposta de «stash» inesperada: «%s»"
+#: sequencer.c
#, c-format
msgid "Could not create directory for '%s'"
msgstr "No s'ha pogut crear el directori per a «%s»"
+#: sequencer.c
#, c-format
msgid "Created autostash: %s\n"
msgstr "S'ha creat un «stash» automàticament: %s\n"
+#: sequencer.c
msgid "could not reset --hard"
msgstr "no s'ha pogut fer reset --hard"
+#: sequencer.c
#, c-format
msgid "Applied autostash.\n"
msgstr "S'ha aplicat el «stash» automàticament.\n"
+#: sequencer.c
#, c-format
msgid "cannot store %s"
msgstr "no es pot emmagatzemar %s"
+#: sequencer.c
#, c-format
msgid ""
"%s\n"
@@ -20912,27 +26937,34 @@ msgstr ""
"Els vostres canvis estan segurs en el «stash».\n"
"Podeu executar «git stash pop» o «git stash drop» en qualsevol moment.\n"
+#: sequencer.c
msgid "Applying autostash resulted in conflicts."
msgstr "L'aplicació del «stash» automàticament ha donat conflictes."
+#: sequencer.c
msgid "Autostash exists; creating a new stash entry."
msgstr ""
"El «stash» automàtic ja existeix; s'està creant una entrada «stash» nova."
+#: sequencer.c
msgid "autostash reference is a symref"
msgstr "la referència d'autostash és un symref"
+#: sequencer.c
msgid "could not detach HEAD"
msgstr "no s'ha pogut separar HEAD"
+#: sequencer.c
#, c-format
msgid "Stopped at HEAD\n"
msgstr "Aturat a HEAD\n"
+#: sequencer.c
#, c-format
msgid "Stopped at %s\n"
msgstr "Aturat a %s\n"
+#: sequencer.c
#, c-format
msgid ""
"Could not execute the todo command\n"
@@ -20953,46 +26985,58 @@ msgstr ""
" git rebase --edit-todo\n"
" git rebase --continue\n"
+#: sequencer.c
#, c-format
msgid "Stopped at %s... %.*s\n"
msgstr "Aturat a %s... %.*s\n"
+#: sequencer.c
#, c-format
msgid "Rebasing (%d/%d)%s"
msgstr "S'està fent «rebase» (%d/%d)%s"
+#: sequencer.c
#, c-format
msgid "unknown command %d"
msgstr "ordre %d desconeguda"
+#: sequencer.c
msgid "could not read orig-head"
msgstr "no s'ha pogut llegir orig-head"
+#: sequencer.c
msgid "could not read 'onto'"
msgstr "no s'ha pogut llegir «onto»"
+#: sequencer.c
#, c-format
msgid "could not update HEAD to %s"
msgstr "no s'ha pogut actualitzar HEAD a %s"
+#: sequencer.c
#, c-format
msgid "Successfully rebased and updated %s.\n"
msgstr "S'ha fet «rebase» i actualitzat %s amb èxit.\n"
+#: sequencer.c
msgid "cannot rebase: You have unstaged changes."
msgstr "no es pot fer «rebase»: teniu canvis «unstaged»."
+#: sequencer.c
msgid "cannot amend non-existing commit"
msgstr "no es pot esmenar una comissió no existent"
+#: sequencer.c
#, c-format
msgid "invalid file: '%s'"
msgstr "fitxer no vàlid: «%s»"
+#: sequencer.c
#, c-format
msgid "invalid contents: '%s'"
msgstr "contingut no vàlid: «%s»"
+#: sequencer.c
msgid ""
"\n"
"You have uncommitted changes in your working tree. Please, commit them\n"
@@ -21002,57 +27046,73 @@ msgstr ""
"Teniu canvis no comesos en el vostre arbre de treball. \n"
"Cometeu-los primer i després executeu «git rebase --continue» de nou."
+#: sequencer.c
#, c-format
msgid "could not write file: '%s'"
msgstr "no s'ha pogut escriure el fitxer: «%s»"
+#: sequencer.c
msgid "could not remove CHERRY_PICK_HEAD"
msgstr "no s'ha pogut eliminar CHERRY_PICK_HEAD"
+#: sequencer.c
msgid "could not commit staged changes."
msgstr "no s'han pogut cometre els canvis «staged»."
+#: sequencer.c
#, c-format
msgid "%s: can't cherry-pick a %s"
msgstr "%s: no es pot fer «cherry pick» a %s"
+#: sequencer.c
#, c-format
msgid "%s: bad revision"
msgstr "%s: revisió incorrecta"
+#: sequencer.c
msgid "can't revert as initial commit"
msgstr "no es pot revertir com a comissió inicial"
+#: sequencer.c
#, c-format
msgid "skipped previously applied commit %s"
msgstr "omet les comissions aplicades anteriorment %s"
+#: sequencer.c
msgid "use --reapply-cherry-picks to include skipped commits"
msgstr "useu --reapply-cherry-picks per a incloure les comissions omeses"
+#: sequencer.c
msgid "make_script: unhandled options"
msgstr "make_script: opcions no gestionades"
+#: sequencer.c
msgid "make_script: error preparing revisions"
msgstr "make_script: s'ha produït un error en preparar les revisions"
+#: sequencer.c
msgid "nothing to do"
msgstr "res a fer"
+#: sequencer.c
msgid "could not skip unnecessary pick commands"
msgstr "no s'han pogut ometre les ordres «picks» no necessàries"
+#: sequencer.c
msgid "the script was already rearranged."
msgstr "l'script ja estava endreçat."
+#: sequencer.c
#, c-format
msgid "update-refs file at '%s' is invalid"
msgstr "el fitxer update-refs a «%s» no és vàlid"
+#: setup.c
#, c-format
msgid "'%s' is outside repository at '%s'"
msgstr "«%s» està fora del repositori a «%s»"
+#: setup.c
#, c-format
msgid ""
"%s: no such path in the working tree.\n"
@@ -21062,6 +27122,7 @@ msgstr ""
"Useu «git <ordre> -- <camí>...» per a especificar camins que no existeixin "
"localment."
+#: setup.c
#, c-format
msgid ""
"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
@@ -21073,10 +27134,12 @@ msgstr ""
"Useu «--» per a separar els camins de les revisions:\n"
"«git <ordre> [<revisió>...] -- [<fitxer>...]»"
+#: setup.c
#, c-format
msgid "option '%s' must come before non-option arguments"
msgstr "l'opció «%s» ha d'aparèixer abans que els arguments opcionals"
+#: setup.c
#, c-format
msgid ""
"ambiguous argument '%s': both revision and filename\n"
@@ -21087,79 +27150,121 @@ msgstr ""
"Useu «--» per a separar els camins de les revisions:\n"
"«git <ordre> [<revisió>...] -- [<fitxer>...]»"
+#: setup.c
msgid "unable to set up work tree using invalid config"
msgstr ""
"no s'ha pogut configurar un arbre de treball utilitzant una configuració no "
"vàlida"
+#: setup.c
+#, c-format
+msgid "'%s' already specified as '%s'"
+msgstr "«%s» ja especificat com a «%s»"
+
+#: setup.c
#, c-format
msgid "Expected git repo version <= %d, found %d"
msgstr "S'esperava una versió de repositori de git <= %d, s'ha trobat %d"
+#: setup.c
msgid "unknown repository extension found:"
msgid_plural "unknown repository extensions found:"
msgstr[0] "s'ha trobat una extensió de repositori desconeguda:"
msgstr[1] "s'han trobat extensions de repositori desconegudes:"
+#: setup.c
msgid "repo version is 0, but v1-only extension found:"
msgid_plural "repo version is 0, but v1-only extensions found:"
msgstr[0] "el repositori és versió 0, però només s'han trobat una extensió v1:"
msgstr[1] "el repositori és versió 0, però només s'han trobat extensions v1:"
+#: setup.c
#, c-format
msgid "error opening '%s'"
msgstr "s'ha produït un error en obrir «%s»"
+#: setup.c
#, c-format
msgid "too large to be a .git file: '%s'"
msgstr "massa gran per a ser un fitxer .git: «%s»"
+#: setup.c
#, c-format
msgid "error reading %s"
msgstr "error en llegir %s"
+#: setup.c
#, c-format
msgid "invalid gitfile format: %s"
msgstr "format gitfile no vàlid: %s"
+#: setup.c
#, c-format
msgid "no path in gitfile: %s"
msgstr "sense camí al gitfile: %s"
+#: setup.c
#, c-format
msgid "not a git repository: %s"
msgstr "no és un repositori de git: %s"
+#: setup.c
#, c-format
msgid "'$%s' too big"
msgstr "«$%s» massa gran"
+#: setup.c
#, c-format
msgid "not a git repository: '%s'"
msgstr "no és un repositori de git: «%s»"
+#: setup.c
#, c-format
msgid "cannot chdir to '%s'"
msgstr "no es pot canviar de directori a «%s»"
+#: setup.c
msgid "cannot come back to cwd"
msgstr "no es pot tornar al directori de treball actual"
+#: setup.c
#, c-format
msgid "failed to stat '%*s%s%s'"
msgstr "s'ha produït un error en fer stat a «%*s%s%s»"
+#: setup.c
+#, c-format
+msgid "safe.directory '%s' not absolute"
+msgstr "el safe.directory «%s» no és absolut"
+
+#: setup.c
+#, c-format
+msgid ""
+"detected dubious ownership in repository at '%s'\n"
+"%sTo add an exception for this directory, call:\n"
+"\n"
+"\tgit config --global --add safe.directory %s"
+msgstr ""
+"s'ha detectat una propietat dubtosa al repositori a «%s»\n"
+"%sPer a afegir una excepció per a aquest directori, executeu:\n"
+"\n"
+"\tgit config --global --add safe.directory %s"
+
+#: setup.c
msgid "Unable to read current working directory"
msgstr "No s'ha pogut llegir el directori de treball actual"
+#: setup.c
#, c-format
msgid "cannot change to '%s'"
msgstr "no es pot canviar a «%s»"
+#: setup.c
#, c-format
msgid "not a git repository (or any of the parent directories): %s"
msgstr "no és un repositori de git (ni cap dels directoris pares): %s"
+#: setup.c
#, c-format
msgid ""
"not a git repository (or any parent up to mount point %s)\n"
@@ -21170,22 +27275,12 @@ msgstr ""
"S'atura a la frontera de sistema de fitxers (GIT_DISCOVERY_ACROSS_FILESYSTEM "
"no està establert)."
-#, c-format
-msgid ""
-"detected dubious ownership in repository at '%s'\n"
-"%sTo add an exception for this directory, call:\n"
-"\n"
-"\tgit config --global --add safe.directory %s"
-msgstr ""
-"s'ha detectat una propietat dubtosa al repositori a «%s»\n"
-"%sPer a afegir una excepció per a aquest directori, executeu:\n"
-"\n"
-"\tgit config --global --add safe.directory %s"
-
+#: setup.c
#, c-format
msgid "cannot use bare repository '%s' (safe.bareRepository is '%s')"
msgstr "no es pot utilitzar el dipòsit nu «%s» (safe.bareRepository és «%s»)"
+#: setup.c
#, c-format
msgid ""
"problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -21196,185 +27291,246 @@ msgstr ""
"El propietari dels fitxers sempre ha de tenir permisos de lectura i "
"escriptura."
+#: setup.c
msgid "fork failed"
msgstr "el «fork» ha fallat"
+#: setup.c
msgid "setsid failed"
msgstr "«setsid» ha fallat"
+#: setup.c
#, c-format
msgid "cannot stat template '%s'"
msgstr "no es pot fer stat en la plantilla «%s»"
+#: setup.c
#, c-format
msgid "cannot opendir '%s'"
msgstr "no es pot fer opendir en el directori «%s»"
+#: setup.c
#, c-format
msgid "cannot readlink '%s'"
msgstr "no es pot fer readlink en «%s»"
+#: setup.c
#, c-format
msgid "cannot symlink '%s' '%s'"
msgstr "no es pot fer symlink en «%s» «%s»"
+#: setup.c
#, c-format
msgid "cannot copy '%s' to '%s'"
msgstr "no es pot copiar «%s» a «%s»"
+#: setup.c
#, c-format
msgid "ignoring template %s"
msgstr "s'està ignorant la plantilla %s"
+#: setup.c
#, c-format
msgid "templates not found in %s"
msgstr "plantilles no trobades a %s"
+#: setup.c
#, c-format
msgid "not copying templates from '%s': %s"
msgstr "no s'estan copiant plantilles de «%s»: %s"
+#: setup.c
#, c-format
msgid "invalid initial branch name: '%s'"
msgstr "nom de branca inicial no vàlid: «%s»"
+#: setup.c
#, c-format
msgid "re-init: ignored --initial-branch=%s"
msgstr "reinicialització: s'ha ignorat --initial-branch=%s"
+#: setup.c
#, c-format
msgid "unable to handle file type %d"
msgstr "no s'ha pogut gestionar el tipus de fitxer %d"
+#: setup.c
#, c-format
msgid "unable to move %s to %s"
msgstr "no s'ha pogut moure %s a %s"
+#: setup.c
msgid "attempt to reinitialize repository with different hash"
msgstr "s'ha intentat reinicialitzar el repositori amb un resum diferent"
+#: setup.c
msgid ""
"attempt to reinitialize repository with different reference storage format"
msgstr ""
"s'ha intentat reactivar el repositori amb un format d'emmagatzematge de "
"referència diferent"
+#: setup.c
#, c-format
msgid "%s already exists"
msgstr "%s ja existeix"
+#: setup.c
#, c-format
msgid "Reinitialized existing shared Git repository in %s%s\n"
msgstr "S'ha reinicialitzat el repositori compartit existent del Git en %s%s\n"
+#: setup.c
#, c-format
msgid "Reinitialized existing Git repository in %s%s\n"
msgstr "S'ha reinicialitzat el repositori existent del Git en %s%s\n"
+#: setup.c
#, c-format
msgid "Initialized empty shared Git repository in %s%s\n"
msgstr "S'ha inicialitzat un repositori compartit buit del Git en %s%s\n"
+#: setup.c
#, c-format
msgid "Initialized empty Git repository in %s%s\n"
msgstr "S'ha inicialitzat un repositori buit del Git en %s%s\n"
+#: sparse-index.c
#, c-format
msgid "index entry is a directory, but not sparse (%08x)"
msgstr "l'entrada d'índex és un directori, però no dispers (%08x)"
+#: split-index.c
msgid "cannot use split index with a sparse index"
msgstr "no es pot utilitzar l'índex partit amb un índex dispers"
+#. TRANSLATORS: The first %s is a command like "ls-tree".
+#: strbuf.c
+#, c-format
+msgid "bad %s format: element '%s' does not start with '('"
+msgstr "format %s incorrecte: l'element «%s» no comença amb «(»"
+
+#. TRANSLATORS: The first %s is a command like "ls-tree".
+#: strbuf.c
+#, c-format
+msgid "bad %s format: element '%s' does not end in ')'"
+msgstr "format %s incorrecte: l'element «%s» no acaba en «)»"
+
+#. TRANSLATORS: %s is a command like "ls-tree".
+#: strbuf.c
+#, c-format
+msgid "bad %s format: %%%.*s"
+msgstr "format %s incorrecte: %%%.*s"
+
#. TRANSLATORS: IEC 80000-13:2008 gibibyte
+#: strbuf.c
#, c-format
msgid "%u.%2.2u GiB"
msgstr "%u.%2.2u GiB"
#. TRANSLATORS: IEC 80000-13:2008 gibibyte/second
+#: strbuf.c
#, c-format
msgid "%u.%2.2u GiB/s"
msgstr "%u.%2.2u GiB/s"
#. TRANSLATORS: IEC 80000-13:2008 mebibyte
+#: strbuf.c
#, c-format
msgid "%u.%2.2u MiB"
msgstr "%u.%2.2u MiB"
#. TRANSLATORS: IEC 80000-13:2008 mebibyte/second
+#: strbuf.c
#, c-format
msgid "%u.%2.2u MiB/s"
msgstr "%u.%2.2u MiB/s"
#. TRANSLATORS: IEC 80000-13:2008 kibibyte
+#: strbuf.c
#, c-format
msgid "%u.%2.2u KiB"
msgstr "%u.%2.2u KiB"
#. TRANSLATORS: IEC 80000-13:2008 kibibyte/second
+#: strbuf.c
#, c-format
msgid "%u.%2.2u KiB/s"
msgstr "%u.%2.2u KiB/s"
#. TRANSLATORS: IEC 80000-13:2008 byte
+#: strbuf.c
#, c-format
msgid "%u byte"
msgid_plural "%u bytes"
-msgstr[0] "%u byte"
-msgstr[1] "%u bytes"
+msgstr[0] "%u octet"
+msgstr[1] "%u octets"
#. TRANSLATORS: IEC 80000-13:2008 byte/second
+#: strbuf.c
#, c-format
msgid "%u byte/s"
msgid_plural "%u bytes/s"
-msgstr[0] "%u byte/s"
-msgstr[1] "%u bytes/s"
+msgstr[0] "%u octet/s"
+msgstr[1] "%u octets/s"
+#: submodule-config.c
#, c-format
msgid "ignoring suspicious submodule name: %s"
msgstr "s'està ignorant el nom de submòdul sospitós %s"
+#: submodule-config.c
msgid "negative values not allowed for submodule.fetchJobs"
msgstr "no es permeten els valors negatius a submodule.fetchJobs"
+#: submodule-config.c
#, c-format
msgid "ignoring '%s' which may be interpreted as a command-line option: %s"
msgstr ""
"s'està ignorant «%s» que pot interpretar-se com a una opció de línia "
"d'ordres: %s"
+#: submodule-config.c
#, c-format
msgid "Could not update .gitmodules entry %s"
msgstr "No s'ha pogut actualitzar l'entrada de .gitmodules %s"
+#: submodule.c
msgid "Cannot change unmerged .gitmodules, resolve merge conflicts first"
msgstr ""
"No es pot canviar un .gitmodules no fusionat, primer resoleu els conflictes "
"de fusió"
+#: submodule.c
#, c-format
msgid "Could not find section in .gitmodules where path=%s"
msgstr "No s'ha pogut trobar la secció en .gitmodules on path=%s"
+#: submodule.c
#, c-format
msgid "Could not remove .gitmodules entry for %s"
msgstr "No s'ha pogut eliminar l'entrada de .gitmodules per a %s"
+#: submodule.c
msgid "staging updated .gitmodules failed"
msgstr "l'allistament del .gitmodules actualitzat ha fallat"
+#: submodule.c
#, c-format
msgid "in unpopulated submodule '%s'"
msgstr "al submòdul sense popular «%s»"
+#: submodule.c
#, c-format
msgid "Pathspec '%s' is in submodule '%.*s'"
msgstr "L'especificació «%s» és en el submòdul «%.*s»"
+#: submodule.c
#, c-format
msgid "bad --ignore-submodules argument: %s"
msgstr "argument incorrecte --ignore-submodules: %s"
+#: submodule.c
#, c-format
msgid ""
"Submodule in commit %s at path: '%s' collides with a submodule named the "
@@ -21383,10 +27539,12 @@ msgstr ""
"El submòdul en la comissió %s al camí: «%s» col·lideix amb un submòdul amb "
"el mateix nom. Ometent-lo."
+#: submodule.c
#, c-format
msgid "submodule entry '%s' (%s) is a %s, not a commit"
msgstr "l'entrada del submòdul «%s» (%s) és a %s, no és una comissió"
+#: submodule.c
#, c-format
msgid ""
"Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
@@ -21395,34 +27553,42 @@ msgstr ""
"No s'ha pogut executar l'ordre «git rev-list <commits> --not --remotes -n 1» "
"en el submòdul %s"
+#: submodule.c
#, c-format
msgid "process for submodule '%s' failed"
msgstr "ha fallat el procés per al submòdul «%s»"
+#: submodule.c
#, c-format
msgid "Pushing submodule '%s'\n"
msgstr "S'està pujant el submòdul «%s»\n"
+#: submodule.c
#, c-format
msgid "Unable to push submodule '%s'\n"
msgstr "No s'ha pogut pujar el submòdul «%s»\n"
+#: submodule.c
#, c-format
msgid "Fetching submodule %s%s\n"
msgstr "S'està obtenint el submòdul %s%s\n"
+#: submodule.c
#, c-format
msgid "Could not access submodule '%s'\n"
msgstr "No s'ha pogut accedir al submòdul «%s»\n"
+#: submodule.c
#, c-format
msgid "Could not access submodule '%s' at commit %s\n"
msgstr "No s'ha pogut accedir al submòdul «%s» en la comissió %s\n"
+#: submodule.c
#, c-format
msgid "Fetching submodule %s%s at commit %s\n"
msgstr "S'està obtenint el submòdul %s%s en la comissió %s\n"
+#: submodule.c
#, c-format
msgid ""
"Errors during submodule fetch:\n"
@@ -21431,51 +27597,74 @@ msgstr ""
"Errors durant l'obtenció de submòduls:\n"
"%s"
+#: submodule.c
#, c-format
msgid "'%s' not recognized as a git repository"
msgstr "«%s» no reconegut com un repositori git"
+#: submodule.c
#, c-format
msgid "Could not run 'git status --porcelain=2' in submodule %s"
msgstr "No s'ha pogut executar «git status --porcelain=2» en el submòdul %s"
+#: submodule.c
#, c-format
msgid "'git status --porcelain=2' failed in submodule %s"
msgstr "«git status --porcelain=2» ha fallat en el submòdul %s"
+#: submodule.c
#, c-format
msgid "could not start 'git status' in submodule '%s'"
msgstr "no s'ha pogut iniciar «git status» al submòdul «%s»"
+#: submodule.c
#, c-format
msgid "could not run 'git status' in submodule '%s'"
msgstr "no s'ha pogut executar «git status» al submòdul «%s»"
+#: submodule.c
#, c-format
msgid "Could not unset core.worktree setting in submodule '%s'"
msgstr ""
"No s'ha pogut desassignar el paràmetre «core.worktree» al submòdul «%s»"
+#: submodule.c
#, c-format
msgid "could not recurse into submodule '%s'"
msgstr ""
"s'ha produït un error en cercar recursivament al camí del submòdul «%s»"
+#: submodule.c
msgid "could not reset submodule index"
msgstr "no s'ha pogut restablir l'índex del submòdul"
+#: submodule.c
#, c-format
msgid "submodule '%s' has dirty index"
msgstr "el submòdul «%s» té l'índex brut"
+#: submodule.c
#, c-format
msgid "Submodule '%s' could not be updated."
msgstr "No s'ha pogut actualitzar el submòdul «%s»."
+#: submodule.c
#, c-format
msgid "submodule git dir '%s' is inside git dir '%.*s'"
msgstr "submodule git dir «%s» està dins git dir «%.*s»"
+#: submodule.c
+#, c-format
+msgid "expected '%.*s' in submodule path '%s' not to be a symbolic link"
+msgstr ""
+"s'esperava que «%.*s» en el camí del submòdul «%s» no fos un enllaç simbòlic"
+
+#: submodule.c
+#, c-format
+msgid "expected submodule path '%s' not to be a symbolic link"
+msgstr "s'esperava que el camí del submòdul «%s» no fos un enllaç simbòlic"
+
+#: submodule.c
#, c-format
msgid ""
"relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -21483,14 +27672,17 @@ msgstr ""
"no està admès relocate_gitdir per al submòdul «%s» amb més d'un arbre de "
"treball"
+#: submodule.c
#, c-format
msgid "could not lookup name for submodule '%s'"
msgstr "no s'ha trobat el nom pel submòdul «%s»"
+#: submodule.c
#, c-format
msgid "refusing to move '%s' into an existing git dir"
msgstr "s'ha refusat moure «%s» a un directori git existent"
+#: submodule.c
#, c-format
msgid ""
"Migrating git directory of '%s%s' from\n"
@@ -21501,150 +27693,186 @@ msgstr ""
"«%s» a\n"
"«%s»\n"
+#: submodule.c
msgid "could not start ls-files in .."
msgstr "no s'ha pogut iniciar ls-files a .."
+#: submodule.c
#, c-format
msgid "ls-tree returned unexpected return code %d"
msgstr "ls-tree ha retornat un codi de retorn %d no esperat"
+#: symlinks.c
#, c-format
msgid "failed to lstat '%s'"
msgstr "s'ha produït un error en fer lstat a «%s»"
+#: t/helper/test-bundle-uri.c
msgid "no remote configured to get bundle URIs from"
msgstr "no hi ha cap remot configurat per a obtenir els URI del paquet"
-#, c-format
-msgid "remote '%s' has no configured URL"
-msgstr "el remot «%s» no té cap URL configurat"
-
+#: t/helper/test-bundle-uri.c
msgid "could not get the bundle-uri list"
msgstr "no s'ha pogut obtenir la llista bundle-uri"
+#: t/helper/test-cache-tree.c
msgid "test-tool cache-tree <options> (control|prime|update)"
msgstr "test-tool cache-tree <opcions> (control|prime|update)"
+#: t/helper/test-cache-tree.c
msgid "clear the cache tree before each iteration"
msgstr "neteja l'arbre de la memòria cau abans de cada iteració"
+#: t/helper/test-cache-tree.c
msgid "number of entries in the cache tree to invalidate (default 0)"
msgstr ""
"nombre d'entrades a l'arbre de la memòria cau a invalidar (per defecte 0)"
+#: t/helper/test-reach.c
#, c-format
msgid "commit %s is not marked reachable"
msgstr "la comissió %s no està marcada com abastable"
+#: t/helper/test-reach.c
msgid "too many commits marked reachable"
msgstr "hi ha massa comissions marcades com abastables"
+#: t/helper/test-serve-v2.c
msgid "test-tool serve-v2 [<options>]"
msgstr "test-tool serve-v2 [<opcions>]"
+#: t/helper/test-serve-v2.c
msgid "exit immediately after advertising capabilities"
msgstr "surt immediatament després d'anunciar les funcionalitats"
+#: t/helper/test-simple-ipc.c
msgid "test-helper simple-ipc is-active [<name>] [<options>]"
msgstr "test-helper simple-ipc is-active [<nom>] [<opcions>]"
+#: t/helper/test-simple-ipc.c
msgid "test-helper simple-ipc run-daemon [<name>] [<threads>]"
msgstr "test-helper simple-ipc run-daemon [<nom>] [<fils>]"
+#: t/helper/test-simple-ipc.c
msgid "test-helper simple-ipc start-daemon [<name>] [<threads>] [<max-wait>]"
msgstr "test-helper simple-ipc start-daemon [<nom>] [<fils>] [<max-wait>]"
+#: t/helper/test-simple-ipc.c
msgid "test-helper simple-ipc stop-daemon [<name>] [<max-wait>]"
msgstr "test-helper simple-ipc stop-daemon [<nom>] [<max-wait>]"
+#: t/helper/test-simple-ipc.c
msgid "test-helper simple-ipc send [<name>] [<token>]"
msgstr "test-helper simple-ipc send [<nom>] [<testimoni>]"
+#: t/helper/test-simple-ipc.c
msgid "test-helper simple-ipc sendbytes [<name>] [<bytecount>] [<byte>]"
-msgstr "test-helper simple-ipc sendbytes [<nom>] [<bytecount>] [<byte>]"
+msgstr ""
+"test-helper simple-ipc sendbytes [<nom>] [<recompte-octets>] [<octet>]"
+#: t/helper/test-simple-ipc.c
msgid ""
"test-helper simple-ipc multiple [<name>] [<threads>] [<bytecount>] "
"[<batchsize>]"
msgstr ""
-"test-helper simple-ipc multiple [<nom>] [<fils>] [<bytecount>] "
-"[<batchsize>]"
+"test-helper simple-ipc multiple [<nom>] [<fils>] [<recompte-octets>] "
+"[<mida-lot>]"
+#: t/helper/test-simple-ipc.c
msgid "name or pathname of unix domain socket"
msgstr "nom o nom de camí del sòcol de domini unix"
+#: t/helper/test-simple-ipc.c
msgid "named-pipe name"
msgstr "nom del conducte amb nom"
+#: t/helper/test-simple-ipc.c
msgid "number of threads in server thread pool"
msgstr "nombre de fils en el conjunt de fils del servidor"
+#: t/helper/test-simple-ipc.c
msgid "seconds to wait for daemon to start or stop"
msgstr "segons a esperar que el dimoni comenci o s'aturi"
+#: t/helper/test-simple-ipc.c
msgid "number of bytes"
msgstr "nombre d'octets"
+#: t/helper/test-simple-ipc.c
msgid "number of requests per thread"
msgstr "nombre de peticions per fil"
+#: t/helper/test-simple-ipc.c
msgid "byte"
msgstr "octet"
+#: t/helper/test-simple-ipc.c
msgid "ballast character"
msgstr "caràcter de llast"
+#: t/helper/test-simple-ipc.c
msgid "token"
msgstr "testimoni"
+#: t/helper/test-simple-ipc.c
msgid "command token to send to the server"
msgstr "testimoni d'ordre a enviar al servidor"
+#: t/unit-tests/unit-test.c
+msgid "unit-test [<options>]"
+msgstr "unit-test [<opcions>]"
+
+#: t/unit-tests/unit-test.c
+msgid "immediately exit upon the first failed test"
+msgstr "sortir immediatament en fallar el primer test"
+
+# deixada sense traduir perquè pareix opció i no text
+#: t/unit-tests/unit-test.c
+msgid "suite[::test]"
+msgstr "suite[::test]"
+
+#: t/unit-tests/unit-test.c
+msgid "run only test suite or individual test <suite[::test]>"
+msgstr ""
+"executa només el conjunt de proves o la prova individual <suite[::test]>"
+
+#: t/unit-tests/unit-test.c
+msgid "suite"
+msgstr "suite"
+
+#: t/unit-tests/unit-test.c
+msgid "exclude test suite <suite>"
+msgstr "exclou conjunt de proves <conjunt>"
+
+#: trailer.c
#, c-format
msgid "running trailer command '%s' failed"
msgstr "l'execució de l'ordre «trailer» «%s» ha fallat"
+#: trailer.c
#, c-format
msgid "unknown value '%s' for key '%s'"
msgstr "valor desconegut «%s» per a la clau «%s»"
+#: trailer.c
#, c-format
msgid "empty trailer token in trailer '%.*s'"
msgstr "testimoni de «trailer» buit en el «trailer» «%.*s»"
-#, c-format
-msgid "could not read input file '%s'"
-msgstr "no s'ha pogut llegir el fitxer d'entrada «%s»"
-
-#, c-format
-msgid "could not stat %s"
-msgstr "no s'ha pogut fer stat a %s"
-
-#, c-format
-msgid "file %s is not a regular file"
-msgstr "el fitxer %s no és un fitxer regular"
-
-#, c-format
-msgid "file %s is not writable by user"
-msgstr "el fitxer %s no és gravable per l'usuari"
-
-msgid "could not open temporary file"
-msgstr "no s'ha pogut obrir el fitxer temporal"
-
-#, c-format
-msgid "could not rename temporary file to %s"
-msgstr "no s'ha pogut canviar el nom del fitxer temporal a %s"
-
+#: transport-helper.c
msgid "full write to remote helper failed"
msgstr "l'escriptura completa a l'ajudant remot ha fallat"
+#: transport-helper.c
#, c-format
msgid "unable to find remote helper for '%s'"
msgstr "no s'ha pogut trobar l'ajudant remot per a «%s»"
+#: transport-helper.c
msgid "can't dup helper output fd"
msgstr "no es pot duplicar la sortida de l'ajudant «fd»"
+#: transport-helper.c
#, c-format
msgid ""
"unknown mandatory capability %s; this remote helper probably needs newer "
@@ -21653,93 +27881,118 @@ msgstr ""
"funcionalitat obligatòria %s desconeguda; aquest ajudant remot probablement "
"necessita una versió més nova del Git"
+#: transport-helper.c
msgid "this remote helper should implement refspec capability"
msgstr "aquest ajudant remot ha d'implementar la funcionalitat de refspec"
+#: transport-helper.c
#, c-format
msgid "%s unexpectedly said: '%s'"
msgstr "%s ha dit inesperadament «%s»"
+#: transport-helper.c
#, c-format
msgid "%s also locked %s"
msgstr "%s també està bloquejat %s"
+#: transport-helper.c
msgid "couldn't run fast-import"
msgstr "no s'ha pogut executar «fast-import»"
+#: transport-helper.c
msgid "error while running fast-import"
msgstr "error en executar la importació ràpida"
+#: transport-helper.c
#, c-format
msgid "could not read ref %s"
msgstr "no s'ha pogut llegir la referència %s"
+#: transport-helper.c
#, c-format
msgid "unknown response to connect: %s"
msgstr "resposta desconeguda en connectar: %s"
+#: transport-helper.c
msgid "setting remote service path not supported by protocol"
msgstr "el protocol no permet establir el camí del servei remot"
+#: transport-helper.c
msgid "invalid remote service path"
msgstr "el camí del servei remot no és vàlid"
+#: transport-helper.c
#, c-format
msgid "can't connect to subservice %s"
msgstr "no es pot connectar al subservei %s"
+#: transport-helper.c transport.c
msgid "--negotiate-only requires protocol v2"
msgstr "--negotiate-only requereix el protocol v2"
+#: transport-helper.c
msgid "'option' without a matching 'ok/error' directive"
msgstr "«option» sense una directiva «ok/error» coincident"
+#: transport-helper.c
#, c-format
msgid "expected ok/error, helper said '%s'"
msgstr "s'esperava error/OK, l'ajudant ha dit «%s»"
+#: transport-helper.c
#, c-format
msgid "helper reported unexpected status of %s"
msgstr "l'ajudant ha informat d'un estat inesperat de %s"
+#: transport-helper.c
#, c-format
msgid "helper %s does not support dry-run"
msgstr "l'ajudant %s no admet dry-run"
+#: transport-helper.c
#, c-format
msgid "helper %s does not support --signed"
msgstr "l'ajudant %s no admet --signed"
+#: transport-helper.c
#, c-format
msgid "helper %s does not support --signed=if-asked"
msgstr "l'ajudant %s no admet --signed=if-asked"
+#: transport-helper.c
#, c-format
msgid "helper %s does not support --atomic"
msgstr "l'ajudant %s no admet --atomic"
+#: transport-helper.c
#, c-format
msgid "helper %s does not support --%s"
msgstr "l'ajudant %s no admet --%s"
+#: transport-helper.c
#, c-format
msgid "helper %s does not support 'push-option'"
msgstr "l'ajudant %s no admet «push-option»"
+#: transport-helper.c
msgid "remote-helper doesn't support push; refspec needed"
msgstr ""
-"remot-helper no permet pujar; es necessiten especificacions de referència"
+"remote-helper no permet pujar; es necessiten especificacions de referència"
+#: transport-helper.c
#, c-format
-msgid "helper %s does not support 'force'"
-msgstr "l'ajudant %s no admet «force»"
+msgid "helper %s does not support '--force'"
+msgstr "l'ajudant %s no admet «--force»"
+#: transport-helper.c
msgid "couldn't run fast-export"
msgstr "no s'ha pogut executar l'exportació ràpida"
+#: transport-helper.c
msgid "error while running fast-export"
msgstr "error en executar l'exportació ràpida"
+#: transport-helper.c
#, c-format
msgid ""
"No refs in common and none specified; doing nothing.\n"
@@ -21748,80 +28001,101 @@ msgstr ""
"No hi ha referències en comú i no n'hi ha cap d'especificada.\n"
"No es farà res. Potser hauríeu d'especificar una branca.\n"
+#: transport-helper.c
#, c-format
msgid "unsupported object format '%s'"
msgstr "format d'objecte no suportat «%s»"
+#: transport-helper.c
#, c-format
msgid "malformed response in ref list: %s"
msgstr "resposta mal formada al llistat de referències: %s"
+#: transport-helper.c
#, c-format
msgid "read(%s) failed"
msgstr "ha fallat la lectura(%s)"
+#: transport-helper.c
#, c-format
msgid "write(%s) failed"
msgstr "ha fallat l'escriptura(%s)"
+#: transport-helper.c
#, c-format
msgid "%s thread failed"
msgstr "%s ha fallat el fil"
+#: transport-helper.c
#, c-format
msgid "%s thread failed to join: %s"
msgstr "el fil %s no s'ha pogut unir: %s"
+#: transport-helper.c
#, c-format
msgid "can't start thread for copying data: %s"
msgstr "no es pot iniciar el fil per a copiar les dades: %s"
+#: transport-helper.c
#, c-format
msgid "%s process failed to wait"
msgstr "el procés %s no ha pogut esperar"
+#: transport-helper.c
#, c-format
msgid "%s process failed"
msgstr "el procés %s ha fallat"
+#: transport-helper.c
msgid "can't start thread for copying data"
msgstr "no es pot iniciar el fil per a copiar dades"
+#: transport.c
#, c-format
msgid "Would set upstream of '%s' to '%s' of '%s'\n"
msgstr "Canviaria la font de «%s» a «%s» de «%s»\n"
+#: transport.c
#, c-format
msgid "could not read bundle '%s'"
msgstr "no s'ha pogut llegir el farcell «%s»"
+#: transport.c
#, c-format
msgid "transport: invalid depth option '%s'"
msgstr "transport: opció de profunditat no vàlida «%s»"
+#: transport.c
msgid "see protocol.version in 'git help config' for more details"
msgstr "vegeu «protocol.version» a «git help config» per a més detalls"
+#: transport.c
msgid "server options require protocol version 2 or later"
msgstr "les opcions del servidor requereixen el protocol versió 2 o posterior"
+#: transport.c
msgid "server does not support wait-for-done"
msgstr "el servidor no admet «wait-for-done»"
+#: transport.c
msgid "could not parse transport.color.* config"
msgstr "no s'ha pogut analitzar la configuració de transport.color.*"
+#: transport.c
msgid "support for protocol v2 not implemented yet"
msgstr ""
"encara no s'ha implementat la compatibilitat amb la versió v2 del protocol"
+#: transport.c
#, c-format
msgid "transport '%s' not allowed"
msgstr "no es permet el transport «%s»"
+#: transport.c
msgid "git-over-rsync is no longer supported"
msgstr "git-over-rsync ja no s'admet"
+#: transport.c
#, c-format
msgid ""
"The following submodule paths contain changes that can\n"
@@ -21830,6 +28104,7 @@ msgstr ""
"Els camins de submòdul següents contenen canvis que no\n"
"es poden trobar en cap remot:\n"
+#: transport.c
#, c-format
msgid ""
"\n"
@@ -21855,34 +28130,44 @@ msgstr ""
"\n"
"per a pujar-los a un remot.\n"
+#: transport.c
msgid "Aborting."
msgstr "S'està avortant."
+#: transport.c
msgid "failed to push all needed submodules"
msgstr "no s'han pogut pujar tots els submòduls necessaris"
+#: transport.c
msgid "bundle-uri operation not supported by protocol"
msgstr "L'operació bundle-uri no és compatible amb el protocol"
+#: transport.c
msgid "could not retrieve server-advertised bundle-uri list"
msgstr ""
"no s'ha pogut recuperar la llista de paquets d'URI anunciats pel servidor"
+#: transport.c
msgid "operation not supported by protocol"
msgstr "opció no admesa pel protocol"
+#: tree-walk.c
msgid "too-short tree object"
msgstr "objecte d'arbre massa curt"
+#: tree-walk.c
msgid "malformed mode in tree entry"
msgstr "mode mal format en entrada d'arbre"
+#: tree-walk.c
msgid "empty filename in tree entry"
msgstr "nom de fitxer buit en una entrada d'arbre"
+#: tree-walk.c
msgid "too-short tree file"
msgstr "fitxer d'arbre massa curt"
+#: unpack-trees.c
#, c-format
msgid ""
"Your local changes to the following files would be overwritten by checkout:\n"
@@ -21891,6 +28176,7 @@ msgstr ""
"Els canvis locals als fitxers següents se sobreescriurien per a agafar:\n"
"%%sCometeu els vostres canvis o feu «stash» abans de canviar de branca."
+#: unpack-trees.c
#, c-format
msgid ""
"Your local changes to the following files would be overwritten by checkout:\n"
@@ -21899,6 +28185,7 @@ msgstr ""
"Els canvis locals als fitxers següents se sobreescriurien per a agafar:\n"
"%%s"
+#: unpack-trees.c
#, c-format
msgid ""
"Your local changes to the following files would be overwritten by merge:\n"
@@ -21907,6 +28194,7 @@ msgstr ""
"Els canvis locals als fitxers següents se sobreescriurien per a fusionar:\n"
"%%sCometeu els vostres canvis o feu «stash» abans de fusionar."
+#: unpack-trees.c
#, c-format
msgid ""
"Your local changes to the following files would be overwritten by merge:\n"
@@ -21915,6 +28203,7 @@ msgstr ""
"Els canvis locals als fitxers següents se sobreescriurien per a fusionar:\n"
"%%s"
+#: unpack-trees.c
#, c-format
msgid ""
"Your local changes to the following files would be overwritten by %s:\n"
@@ -21923,6 +28212,7 @@ msgstr ""
"Els vostres canvis locals als fitxers següents se sobreescriurien per %s:\n"
"%%sCometeu els vostres canvis o feu «stash» abans de %s."
+#: unpack-trees.c
#, c-format
msgid ""
"Your local changes to the following files would be overwritten by %s:\n"
@@ -21931,6 +28221,7 @@ msgstr ""
"Els vostres canvis locals als fitxers següents se sobreescriurien per %s:\n"
"%%s"
+#: unpack-trees.c
#, c-format
msgid ""
"Updating the following directories would lose untracked files in them:\n"
@@ -21939,6 +28230,7 @@ msgstr ""
"En actualitzar els directoris següents perdria fitxers no seguits en el:\n"
"%s"
+#: unpack-trees.c
#, c-format
msgid ""
"Refusing to remove the current working directory:\n"
@@ -21947,6 +28239,7 @@ msgstr ""
"S'ha rebutjat suprimir el directori de treball actual:\n"
"%s"
+#: unpack-trees.c
#, c-format
msgid ""
"The following untracked working tree files would be removed by checkout:\n"
@@ -21956,6 +28249,7 @@ msgstr ""
"agafar:\n"
"%%sMoveu-los o elimineu-los abans de canviar de branca."
+#: unpack-trees.c
#, c-format
msgid ""
"The following untracked working tree files would be removed by checkout:\n"
@@ -21965,6 +28259,7 @@ msgstr ""
"agafar:\n"
"%%s"
+#: unpack-trees.c
#, c-format
msgid ""
"The following untracked working tree files would be removed by merge:\n"
@@ -21974,6 +28269,7 @@ msgstr ""
"fusionar:\n"
"%%sMoveu-los o elimineu-los abans de fusionar."
+#: unpack-trees.c
#, c-format
msgid ""
"The following untracked working tree files would be removed by merge:\n"
@@ -21983,6 +28279,7 @@ msgstr ""
"fusionar:\n"
"%%s"
+#: unpack-trees.c
#, c-format
msgid ""
"The following untracked working tree files would be removed by %s:\n"
@@ -21991,6 +28288,7 @@ msgstr ""
"Els següents fitxers no seguits en l'arbre de treball s'eliminarien per %s:\n"
"%%sMoveu-los o elimineu-los abans de %s."
+#: unpack-trees.c
#, c-format
msgid ""
"The following untracked working tree files would be removed by %s:\n"
@@ -21999,6 +28297,7 @@ msgstr ""
"Els següents fitxers no seguits en l'arbre de treball s'eliminarien per %s:\n"
"%%s"
+#: unpack-trees.c
#, c-format
msgid ""
"The following untracked working tree files would be overwritten by "
@@ -22009,6 +28308,7 @@ msgstr ""
"a agafar:\n"
"%%sMoveu-los o elimineu-los abans de canviar de branca."
+#: unpack-trees.c
#, c-format
msgid ""
"The following untracked working tree files would be overwritten by "
@@ -22019,6 +28319,7 @@ msgstr ""
"a agafar:\n"
"%%s"
+#: unpack-trees.c
#, c-format
msgid ""
"The following untracked working tree files would be overwritten by merge:\n"
@@ -22028,6 +28329,7 @@ msgstr ""
"a fusionar:\n"
"%%sMoveu-los o elimineu-los abans de fusionar."
+#: unpack-trees.c
#, c-format
msgid ""
"The following untracked working tree files would be overwritten by merge:\n"
@@ -22037,6 +28339,7 @@ msgstr ""
"a fusionar:\n"
"%%s"
+#: unpack-trees.c
#, c-format
msgid ""
"The following untracked working tree files would be overwritten by %s:\n"
@@ -22046,6 +28349,7 @@ msgstr ""
"%s:\n"
"%%sMoveu-los o elimineu-los abans de %s."
+#: unpack-trees.c
#, c-format
msgid ""
"The following untracked working tree files would be overwritten by %s:\n"
@@ -22055,10 +28359,12 @@ msgstr ""
"%s:\n"
"%%s"
+#: unpack-trees.c
#, c-format
msgid "Entry '%s' overlaps with '%s'. Cannot bind."
msgstr "L'entrada «%s» encavalca amb «%s». No es pot vincular."
+#: unpack-trees.c
#, c-format
msgid ""
"Cannot update submodule:\n"
@@ -22067,6 +28373,7 @@ msgstr ""
"No es pot actualitzar el submòdul:\n"
"%s"
+#: unpack-trees.c
#, c-format
msgid ""
"The following paths are not up to date and were left despite sparse "
@@ -22077,6 +28384,7 @@ msgstr ""
"patrons dispersos:\n"
"%s"
+#: unpack-trees.c
#, c-format
msgid ""
"The following paths are unmerged and were left despite sparse patterns:\n"
@@ -22086,6 +28394,7 @@ msgstr ""
"dispersos:\n"
"%s"
+#: unpack-trees.c
#, c-format
msgid ""
"The following paths were already present and thus not updated despite sparse "
@@ -22096,10 +28405,12 @@ msgstr ""
"malgrat els patrons dispersos.:\n"
"%s"
+#: unpack-trees.c
#, c-format
msgid "Aborting\n"
msgstr "S'està avortant\n"
+#: unpack-trees.c
#, c-format
msgid ""
"After fixing the above paths, you may want to run `git sparse-checkout "
@@ -22108,9 +28419,11 @@ msgstr ""
"Després de corregir els camins anteriors és possible que vulgueu executar "
"«git sparse-checkout reapply».\n"
+#: unpack-trees.c
msgid "Updating files"
msgstr "S'estan actualitzant els fitxers"
+#: unpack-trees.c
msgid ""
"the following paths have collided (e.g. case-sensitive paths\n"
"on a case-insensitive filesystem) and only one from the same\n"
@@ -22121,273 +28434,358 @@ msgstr ""
"minúscules). Només un camí del mateix grup de col·lisió es troba a l'arbre\n"
"de treball:\n"
+#: unpack-trees.c
msgid "Updating index flags"
msgstr "Actualitzant els indicadors d'índex"
+#: unpack-trees.c
#, c-format
msgid "worktree and untracked commit have duplicate entries: %s"
msgstr ""
"l'arbre de treball i la comissió no seguida tenen entrades duplicades: %s"
+#: upload-pack.c
msgid "expected flush after fetch arguments"
msgstr "s'esperava una neteja després dels arguments del «fetch»"
+#: urlmatch.c
msgid "invalid URL scheme name or missing '://' suffix"
msgstr "l'esquema d'URL no és vàlid o li manca el sufix «://»"
+#: urlmatch.c
#, c-format
msgid "invalid %XX escape sequence"
msgstr "seqüència d'escapament %XX no vàlida"
+#: urlmatch.c
msgid "missing host and scheme is not 'file:'"
msgstr "manca la màquina i l'esquema no és «file:»"
+#: urlmatch.c
msgid "a 'file:' URL may not have a port number"
msgstr "un URL «file:» no pot tenir número de port"
+#: urlmatch.c
msgid "invalid characters in host name"
msgstr "hi ha caràcters no vàlids en el nom de màquina"
+#: urlmatch.c
msgid "invalid port number"
msgstr "número de port no vàlid"
+#: urlmatch.c
msgid "invalid '..' path segment"
msgstr "segment de camí «..» no vàlid"
+#: usage.c
+#, c-format
+msgid "error: unable to format message: %s\n"
+msgstr "error: no s'ha pogut formatar el missatge: %s\n"
+
+#: usage.c
msgid "usage: "
msgstr "ús: "
+#: usage.c
msgid "fatal: "
msgstr "fatal: "
+#: usage.c
msgid "error: "
msgstr "error: "
+#: usage.c
msgid "warning: "
msgstr "avís: "
+#: walker.c
msgid "Fetching objects"
msgstr "S'estan obtenint objectes"
+#: worktree.c
#, c-format
msgid "'%s' at main working tree is not the repository directory"
msgstr "«%s» a l'arbre de treball principal no és al directori del repositori"
+#: worktree.c
#, c-format
msgid "'%s' file does not contain absolute path to the working tree location"
msgstr ""
"El fitxer «%s» no conté el camí absolut a la ubicació de l'arbre de treball"
+#: worktree.c
#, c-format
msgid "'%s' is not a .git file, error code %d"
msgstr "«%s» no és un fitxer .git, codi d'error %d"
+#: worktree.c
#, c-format
msgid "'%s' does not point back to '%s'"
msgstr "«%s» no assenyala de tornada a «%s»"
+#: worktree.c
msgid "not a directory"
msgstr "no és en un directori"
+#: worktree.c
msgid ".git is not a file"
msgstr ".git no és un fitxer"
+#: worktree.c
msgid ".git file broken"
msgstr "fitxer .git malmès"
+#: worktree.c
msgid ".git file incorrect"
msgstr "fitxer .git incorrecte"
+#: worktree.c
msgid "not a valid path"
msgstr "no és un camí vàlid"
+#: worktree.c
msgid "unable to locate repository; .git is not a file"
msgstr "no s'ha pogut trobar el repositori; .git no és un fitxer"
+#: worktree.c
msgid "unable to locate repository; .git file does not reference a repository"
msgstr ""
"no s'ha pogut trobar el repositori; el fitxer .git no fa referència a un "
"repositori"
+#: worktree.c
msgid "unable to locate repository; .git file broken"
msgstr "no s'ha pogut trobar el repositori; el fitxer .git està malmès"
+#: worktree.c
msgid "gitdir unreadable"
msgstr "gitdir illegible"
+#: worktree.c
msgid "gitdir incorrect"
msgstr "gitdir incorrecte"
+#: worktree.c
msgid "not a valid directory"
msgstr "no és en un directori vàlid"
+#: worktree.c
msgid "gitdir file does not exist"
msgstr "el fitxer gitdir no existeix"
+#: worktree.c
#, c-format
msgid "unable to read gitdir file (%s)"
msgstr "no s'ha pogut llegir el fitxer gitdir (%s)"
+#: worktree.c
#, c-format
msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
-msgstr "lectura curta (s'esperaven %<PRIuMAX> bytes, llegits %<PRIuMAX>)"
+msgstr "lectura curta (s'esperaven %<PRIuMAX> octets, s'han llegit %<PRIuMAX>)"
+#: worktree.c
msgid "invalid gitdir file"
msgstr "fitxer gitdir no vàlid"
+#: worktree.c
msgid "gitdir file points to non-existent location"
msgstr "el fitxer gitdir indica una ubicació no existent"
+#: worktree.c
#, c-format
msgid "unable to set %s in '%s'"
msgstr "no s'han pogut establir %s en «%s»"
+#: worktree.c
#, c-format
msgid "unable to unset %s in '%s'"
msgstr "no s'ha pogut desassignar %s en «%s»"
+#: worktree.c
msgid "failed to set extensions.worktreeConfig setting"
msgstr "no s'ha pogut establir el paràmetre extensions.worktreeConfig"
+#: wrapper.c
#, c-format
msgid "could not setenv '%s'"
msgstr "no s'ha pogut fer setenv «%s»"
+#: wrapper.c
#, c-format
msgid "unable to create '%s'"
msgstr "no s'ha pogut crear «%s»"
+#: wrapper.c
#, c-format
msgid "could not open '%s' for reading and writing"
msgstr "no s'ha pogut obrir «%s» per a lectura i escriptura"
+#: wrapper.c
#, c-format
msgid "unable to access '%s'"
msgstr "no s'ha pogut accedir a «%s»"
+#: wrapper.c
msgid "unable to get current working directory"
msgstr "no s'ha pogut obtenir el directori de treball actual"
+#: wrapper.c
msgid "unable to get random bytes"
-msgstr "no s'han pogut obtenir bytes aleatoris"
+msgstr "no s'han pogut obtenir octets aleatoris"
+#: wt-status.c
msgid "Unmerged paths:"
msgstr "Camins sense fusionar:"
+#: wt-status.c
msgid " (use \"git restore --staged <file>...\" to unstage)"
msgstr " (useu «git restore --staged <fitxer>...» per a fer «unstage»)"
+#: wt-status.c
#, c-format
msgid " (use \"git restore --source=%s --staged <file>...\" to unstage)"
msgstr ""
" (useu «git restore --source=%s --staged <fitxer>...» per a fer «unstage»)"
+#: wt-status.c
msgid " (use \"git rm --cached <file>...\" to unstage)"
msgstr " (useu «git rm --cached <fitxer>...» per a fer «unstage»)"
+#: wt-status.c
msgid " (use \"git add <file>...\" to mark resolution)"
msgstr " (useu «git add <fitxer>...» per a senyalar resolució)"
+#: wt-status.c
msgid " (use \"git add/rm <file>...\" as appropriate to mark resolution)"
msgstr ""
" (useu «git add/rm <fitxer>...» segons sigui apropiat per a senyalar "
"resolució)"
+#: wt-status.c
msgid " (use \"git rm <file>...\" to mark resolution)"
msgstr " (useu «git rm <fitxer>...» per a senyalar resolució)"
+#: wt-status.c
msgid "Changes to be committed:"
msgstr "Canvis a cometre:"
+#: wt-status.c
msgid "Changes not staged for commit:"
msgstr "Canvis no «staged» per a cometre:"
+#: wt-status.c
msgid " (use \"git add <file>...\" to update what will be committed)"
msgstr " (useu «git add <fitxer>...» per a actualitzar què es cometrà)"
+#: wt-status.c
msgid " (use \"git add/rm <file>...\" to update what will be committed)"
msgstr " (useu «git add/rm <fitxer>...» per a actualitzar què es cometrà)"
+#: wt-status.c
msgid ""
" (use \"git restore <file>...\" to discard changes in working directory)"
msgstr ""
" (useu «git restore <fitxer>...» per a descartar canvis en el directori de "
"treball)"
+#: wt-status.c
msgid " (commit or discard the untracked or modified content in submodules)"
msgstr ""
" (cometeu o descarteu el contingut modificat o no seguit en els submòduls)"
+#: wt-status.c
#, c-format
msgid " (use \"git %s <file>...\" to include in what will be committed)"
msgstr " (useu «git %s <fitxer>...» per a incloure'ls en la comissió)"
+#: wt-status.c
msgid "both deleted:"
msgstr "suprimit per ambdós:"
+#: wt-status.c
msgid "added by us:"
msgstr "afegit per nosaltres:"
+#: wt-status.c
msgid "deleted by them:"
msgstr "suprimit per ells:"
+#: wt-status.c
msgid "added by them:"
msgstr "afegit per ells:"
+#: wt-status.c
msgid "deleted by us:"
msgstr "suprimit per nosaltres:"
+#: wt-status.c
msgid "both added:"
msgstr "afegit per ambdós:"
+#: wt-status.c
msgid "both modified:"
msgstr "modificat per ambdós:"
+#: wt-status.c
msgid "new file:"
msgstr "fitxer nou:"
+#: wt-status.c
msgid "copied:"
msgstr "copiat:"
+#: wt-status.c
msgid "deleted:"
msgstr "suprimit:"
+#: wt-status.c
msgid "modified:"
msgstr "modificat:"
+#: wt-status.c
msgid "renamed:"
msgstr "canviat de nom:"
+#: wt-status.c
msgid "typechange:"
msgstr "canviat de tipus:"
+#: wt-status.c
msgid "unknown:"
msgstr "desconegut:"
+#: wt-status.c
msgid "unmerged:"
msgstr "sense fusionar:"
+#: wt-status.c
msgid "new commits, "
msgstr "comissions noves, "
+#: wt-status.c
msgid "modified content, "
msgstr "contingut modificat, "
+#: wt-status.c
msgid "untracked content, "
msgstr "contingut no seguit, "
+#: wt-status.c
#, c-format
msgid "Your stash currently has %d entry"
msgid_plural "Your stash currently has %d entries"
msgstr[0] "L'«stash» té actualment %d entrada"
msgstr[1] "L'«stash» té actualment %d entrades"
+#: wt-status.c
msgid "Submodules changed but not updated:"
msgstr "Submòduls canviats però no actualitzats:"
+#: wt-status.c
msgid "Submodule changes to be committed:"
msgstr "Canvis de submòdul a cometre:"
+#: wt-status.c
msgid ""
"Do not modify or remove the line above.\n"
"Everything below it will be ignored."
@@ -22395,6 +28793,7 @@ msgstr ""
"No modifiqueu ni elimineu la línia de dalt.\n"
"Tot el que hi ha a sota s'ignorarà."
+#: wt-status.c
#, c-format
msgid ""
"\n"
@@ -22406,90 +28805,115 @@ msgstr ""
"darrere.\n"
"Podeu utilitzar «--no-ahead-behind» per a evitar-ho.\n"
+#: wt-status.c
msgid "You have unmerged paths."
msgstr "Teniu camins sense fusionar."
+#: wt-status.c
msgid " (fix conflicts and run \"git commit\")"
msgstr " (arregleu els conflictes i executeu «git commit»)"
+#: wt-status.c
msgid " (use \"git merge --abort\" to abort the merge)"
msgstr " (useu «git merge --abort» per a avortar la fusió)"
+#: wt-status.c
msgid "All conflicts fixed but you are still merging."
msgstr "Tots els conflictes estan arreglats però encara esteu fusionant."
+#: wt-status.c
msgid " (use \"git commit\" to conclude merge)"
msgstr " (useu «git commit» per a concloure la fusió)"
+#: wt-status.c
msgid "You are in the middle of an am session."
msgstr "Esteu enmig d'una sessió am."
+#: wt-status.c
msgid "The current patch is empty."
msgstr "El pedaç actual està buit."
+#: wt-status.c
msgid " (fix conflicts and then run \"git am --continue\")"
msgstr " (arregleu els conflictes i després executeu «git am --continue»)"
+#: wt-status.c
msgid " (use \"git am --skip\" to skip this patch)"
msgstr " (useu «git am --skip» per a ometre aquest pedaç)"
+#: wt-status.c
msgid ""
" (use \"git am --allow-empty\" to record this patch as an empty commit)"
msgstr ""
" (useu «git am --allow-empty» per a enregistrar aquest pedaç com una "
"comissió buida)"
+#: wt-status.c
msgid " (use \"git am --abort\" to restore the original branch)"
msgstr " (useu «git am --abort» per a restaurar la branca original)"
+#: wt-status.c
msgid "git-rebase-todo is missing."
msgstr "Manca git-rebase-todo."
+#: wt-status.c
msgid "No commands done."
msgstr "No s'ha fet cap ordre."
+#: wt-status.c
#, c-format
msgid "Last command done (%<PRIuMAX> command done):"
msgid_plural "Last commands done (%<PRIuMAX> commands done):"
msgstr[0] "Darrera ordre acabada (%<PRIuMAX> ordre acabada):"
msgstr[1] "Darreres ordres acabades (%<PRIuMAX> ordres acabades):"
+#: wt-status.c
#, c-format
msgid " (see more in file %s)"
msgstr " (vegeu més en el fitxer %s)"
+#: wt-status.c
msgid "No commands remaining."
msgstr "No manca cap ordre."
+#: wt-status.c
#, c-format
msgid "Next command to do (%<PRIuMAX> remaining command):"
msgid_plural "Next commands to do (%<PRIuMAX> remaining commands):"
msgstr[0] "Següent ordre a fer (%<PRIuMAX> ordre restant):"
msgstr[1] "Següents ordres a fer (%<PRIuMAX> ordres restants):"
+#: wt-status.c
msgid " (use \"git rebase --edit-todo\" to view and edit)"
msgstr " (useu «git rebase --edit-todo» per a veure i editar)"
+#: wt-status.c
#, c-format
msgid "You are currently rebasing branch '%s' on '%s'."
msgstr "Actualment esteu fent «rebase» de la branca «%s» en «%s»."
+#: wt-status.c
msgid "You are currently rebasing."
msgstr "Actualment esteu fent «rebase»."
+#: wt-status.c
msgid " (fix conflicts and then run \"git rebase --continue\")"
msgstr " (arregleu els conflictes i després executeu «git rebase --continue»)"
+#: wt-status.c
msgid " (use \"git rebase --skip\" to skip this patch)"
msgstr " (useu «git rebase --skip» per a ometre aquest pedaç)"
+#: wt-status.c
msgid " (use \"git rebase --abort\" to check out the original branch)"
msgstr " (useu «git rebase --abort» per a agafar la branca original)"
+#: wt-status.c
msgid " (all conflicts fixed: run \"git rebase --continue\")"
msgstr ""
" (tots els conflictes estan arreglats: executeu «git rebase --continue»)"
+#: wt-status.c
#, c-format
msgid ""
"You are currently splitting a commit while rebasing branch '%s' on '%s'."
@@ -22497,128 +28921,164 @@ msgstr ""
"Actualment esteu dividint una comissió mentre es fa «rebase» de la branca "
"«%s» en «%s»."
+#: wt-status.c
msgid "You are currently splitting a commit during a rebase."
msgstr "Actualment esteu dividint una comissió durant un «rebase»."
+#: wt-status.c
msgid " (Once your working directory is clean, run \"git rebase --continue\")"
msgstr ""
" (Una vegada que el vostre directori de treball sigui net, executeu «git "
"rebase --continue»)"
+#: wt-status.c
#, c-format
msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
msgstr ""
"Actualment esteu editant una comissió mentre es fa «rebase» de la branca "
"«%s» en «%s»."
+#: wt-status.c
msgid "You are currently editing a commit during a rebase."
msgstr "Actualment esteu editant una comissió durant un «rebase»."
+#: wt-status.c
msgid " (use \"git commit --amend\" to amend the current commit)"
msgstr " (useu «git commit --amend» per a esmenar la comissió actual)"
+#: wt-status.c
msgid ""
" (use \"git rebase --continue\" once you are satisfied with your changes)"
msgstr ""
" (useu «git rebase --continue» una vegada que estigueu satisfet amb els "
"vostres canvis)"
+#: wt-status.c
msgid "Cherry-pick currently in progress."
msgstr "Hi ha «cherry pick» actualment en curs."
+#: wt-status.c
#, c-format
msgid "You are currently cherry-picking commit %s."
msgstr "Actualment esteu fent «cherry pick» a la comissió %s."
+#: wt-status.c
msgid " (fix conflicts and run \"git cherry-pick --continue\")"
msgstr " (arregleu els conflictes i executeu «git cherry-pick --continue»)"
+#: wt-status.c
msgid " (run \"git cherry-pick --continue\" to continue)"
msgstr " (executeu «git cherry-pick --continue» per a continuar)"
+#: wt-status.c
msgid " (all conflicts fixed: run \"git cherry-pick --continue\")"
msgstr ""
" (tots els conflictes estan arreglats: executeu «git cherry-pick --"
"continue»)"
+#: wt-status.c
msgid " (use \"git cherry-pick --skip\" to skip this patch)"
msgstr " (useu «git cherry-pick --skip» per a ometre aquest pedaç)"
+#: wt-status.c
msgid " (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
msgstr ""
" (useu «git cherry-pick --abort» per a cancel·lar l'operació de «cherry "
"pick»)"
+#: wt-status.c
msgid "Revert currently in progress."
msgstr "Una reversió està actualment en curs."
+#: wt-status.c
#, c-format
msgid "You are currently reverting commit %s."
msgstr "Actualment esteu revertint la comissió %s."
+#: wt-status.c
msgid " (fix conflicts and run \"git revert --continue\")"
msgstr " (arregleu els conflictes i executeu «git revert --continue»)"
+#: wt-status.c
msgid " (run \"git revert --continue\" to continue)"
msgstr " (executeu «git revert --continue» per a continuar)"
+#: wt-status.c
msgid " (all conflicts fixed: run \"git revert --continue\")"
msgstr ""
" (tots els conflictes estan arreglats: executeu «git revert --continue»)"
+#: wt-status.c
msgid " (use \"git revert --skip\" to skip this patch)"
msgstr " (useu «git revert --skip» per a ometre aquest pedaç)"
+#: wt-status.c
msgid " (use \"git revert --abort\" to cancel the revert operation)"
msgstr " (useu «git revert --abort» per a cancel·lar l'operació de reversió)"
+#: wt-status.c
#, c-format
msgid "You are currently bisecting, started from branch '%s'."
msgstr "Actualment esteu bisecant, heu començat des de la branca «%s»."
+#: wt-status.c
msgid "You are currently bisecting."
msgstr "Actualment esteu bisecant."
+#: wt-status.c
msgid " (use \"git bisect reset\" to get back to the original branch)"
msgstr " (useu «git bisect reset» per a tornar a la branca original)"
+#: wt-status.c
msgid "You are in a sparse checkout."
msgstr "Esteu en un «sparse-checkout»."
+#: wt-status.c
#, c-format
msgid "You are in a sparse checkout with %d%% of tracked files present."
msgstr "Esteu en un «sparse-checkout» amb un %d%% de fitxers seguits presents."
+#: wt-status.c
msgid "On branch "
msgstr "En la branca "
+#: wt-status.c
msgid "interactive rebase in progress; onto "
msgstr "«rebase» interactiu en curs; sobre "
+#: wt-status.c
msgid "rebase in progress; onto "
msgstr "«rebase» en curs; sobre "
+#: wt-status.c
msgid "HEAD detached at "
msgstr "HEAD separat a "
+#: wt-status.c
msgid "HEAD detached from "
msgstr "HEAD separat des de "
+#: wt-status.c
msgid "Not currently on any branch."
msgstr "Actualment no s'és en cap branca."
+#: wt-status.c
msgid "Initial commit"
msgstr "Comissió inicial"
+#: wt-status.c
msgid "No commits yet"
msgstr "No s'ha fet cap comissió encara"
+#: wt-status.c
msgid "Untracked files"
msgstr "Fitxers no seguits"
+#: wt-status.c
msgid "Ignored files"
msgstr "Fitxers ignorats"
+#: wt-status.c
#, c-format
msgid ""
"It took %.2f seconds to enumerate untracked files,\n"
@@ -22628,32 +29088,40 @@ msgstr ""
"però els resultats es van emmagatzemar a la memòria cau, i les\n"
"execucions posteriors podrien ser més ràpides."
+#: wt-status.c
#, c-format
msgid "It took %.2f seconds to enumerate untracked files."
msgstr "S'han trigat %.2f segons a enumerar els fitxers sense seguiment."
+#: wt-status.c
msgid "See 'git help status' for information on how to improve this."
msgstr ""
"Vegeu «git help status» per a obtenir informació sobre com millorar-ho."
+#: wt-status.c
#, c-format
msgid "Untracked files not listed%s"
msgstr "Els fitxers no seguits no estan llistats%s"
+#: wt-status.c
msgid " (use -u option to show untracked files)"
msgstr " (useu l'opció -u per a mostrar els fitxers no seguits)"
+#: wt-status.c
msgid "No changes"
msgstr "Sense canvis"
+#: wt-status.c
#, c-format
msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
msgstr "no hi ha canvis afegits a cometre (useu «git add» o «git commit -a»)\n"
+#: wt-status.c
#, c-format
msgid "no changes added to commit\n"
msgstr "no hi ha canvis afegits a cometre\n"
+#: wt-status.c
#, c-format
msgid ""
"nothing added to commit but untracked files present (use \"git add\" to "
@@ -22662,60 +29130,75 @@ msgstr ""
"no hi ha res afegit a cometre però hi ha fitxers no seguits (useu «git add» "
"per a seguir-los)\n"
+#: wt-status.c
#, c-format
msgid "nothing added to commit but untracked files present\n"
msgstr "no hi ha res afegit a cometre però hi ha fitxers no seguits\n"
+#: wt-status.c
#, c-format
msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
msgstr ""
"no hi ha res a cometre (creeu/copieu fitxers i useu «git add» per a seguir-"
"los)\n"
+#: wt-status.c
#, c-format
msgid "nothing to commit\n"
msgstr "no hi ha res a cometre\n"
+#: wt-status.c
#, c-format
msgid "nothing to commit (use -u to show untracked files)\n"
msgstr ""
"no hi ha res a cometre (useu -u per a mostrar els fitxers no seguits)\n"
+#: wt-status.c
#, c-format
msgid "nothing to commit, working tree clean\n"
msgstr "no hi ha res a cometre, l'arbre de treball està net\n"
+#: wt-status.c
msgid "No commits yet on "
msgstr "No s'ha fet cap comissió encara a "
+#: wt-status.c
msgid "HEAD (no branch)"
msgstr "HEAD (sense branca)"
+#: wt-status.c
msgid "different"
msgstr "diferent"
+#: wt-status.c
msgid "behind "
msgstr "darrere "
+#: wt-status.c
msgid "ahead "
msgstr "davant per "
#. TRANSLATORS: the action is e.g. "pull with rebase"
+#: wt-status.c
#, c-format
msgid "cannot %s: You have unstaged changes."
msgstr "no es pot %s: Teniu canvis «unstaged»."
+#: wt-status.c
msgid "additionally, your index contains uncommitted changes."
msgstr "addicionalment, el vostre índex conté canvis sense cometre."
+#: wt-status.c
#, c-format
msgid "cannot %s: Your index contains uncommitted changes."
msgstr "no es pot %s: El vostre índex conté canvis sense cometre."
+#: xdiff-interface.c
#, c-format
msgid "unknown style '%s' given for '%s'"
msgstr "estil desconegut «%s» donat per a «%s»"
+#: git-merge-octopus.sh git-merge-resolve.sh
msgid ""
"Error: Your local changes to the following files would be overwritten by "
"merge"
@@ -22723,92 +29206,120 @@ msgstr ""
"Error: Els vostres canvis locals als fitxers següents se sobreescriurien per "
"a fusionar"
+#: git-merge-octopus.sh
msgid "Automated merge did not work."
msgstr "La fusió automàtica no ha funcionat."
+#: git-merge-octopus.sh
msgid "Should not be doing an octopus."
msgstr "No s'ha de fer un «octopus»."
+#: git-merge-octopus.sh
#, sh-format
msgid "Unable to find common commit with $pretty_name"
msgstr "No s'ha pogut trobar cap comissió en comú amb $pretty_name"
+#: git-merge-octopus.sh
#, sh-format
msgid "Already up to date with $pretty_name"
msgstr "Ja està al dia amb $pretty_name"
+#: git-merge-octopus.sh
#, sh-format
msgid "Fast-forwarding to: $pretty_name"
msgstr "S'està avançant ràpidament a: $pretty_name"
+#: git-merge-octopus.sh
#, sh-format
msgid "Trying simple merge with $pretty_name"
msgstr "S'està intentant una fusió simple amb $pretty_name"
+#: git-merge-octopus.sh
msgid "Simple merge did not work, trying automatic merge."
msgstr ""
"La fusió simple no ha funcionat, s'està intentant una fusió automàtica."
+#: git-sh-setup.sh
#, sh-format
msgid "usage: $dashless $USAGE"
msgstr "ús: $dashless $USAGE"
+#: git-sh-setup.sh
#, sh-format
msgid "Cannot chdir to $cdup, the toplevel of the working tree"
msgstr ""
"No es pot canviar de directori a $cdup, el nivell superior de l'arbre de "
"treball"
+#: git-sh-setup.sh
#, sh-format
msgid "fatal: $program_name cannot be used without a working tree."
msgstr "fatal: no es pot usar $program_name sense un arbre de treball."
+#: git-sh-setup.sh
msgid "Cannot rewrite branches: You have unstaged changes."
msgstr "No es poden reescriure branques: Teniu canvis «unstaged»."
+#: git-sh-setup.sh
#, sh-format
msgid "Cannot $action: You have unstaged changes."
msgstr "No es pot $action: Teniu canvis «unstaged»."
+#: git-sh-setup.sh
#, sh-format
msgid "Cannot $action: Your index contains uncommitted changes."
msgstr "No es pot $action: El vostre índex conté canvis sense cometre."
+#: git-sh-setup.sh
msgid "Additionally, your index contains uncommitted changes."
msgstr "Addicionalment, el vostre índex conté canvis sense cometre."
+#: git-sh-setup.sh
msgid "You need to run this command from the toplevel of the working tree."
msgstr ""
"Heu d'executar aquesta ordre des del nivell superior de l'arbre de treball."
+#: git-sh-setup.sh
msgid "Unable to determine absolute path of git directory"
msgstr "No s'ha pogut determinar el camí absolut del directori de git"
+#: git-send-email.perl
msgid "local zone differs from GMT by a non-minute interval\n"
msgstr "la zona local difereix de GMT per un interval que no és de minuts\n"
+#: git-send-email.perl
msgid "local time offset greater than or equal to 24 hours\n"
msgstr "el desplaçament de la zona local és més gran o igual a 24 hores\n"
+#: git-send-email.perl
#, perl-format
msgid "fatal: command '%s' died with exit code %d"
msgstr "fatal: l'ordre «%s» ha mort amb el codi de sortida %d"
+#: git-send-email.perl
msgid "the editor exited uncleanly, aborting everything"
msgstr "l'editor no ha sortit correctament, avortant-ho tot"
+#: git-send-email.perl
#, perl-format
msgid ""
"'%s' contains an intermediate version of the email you were composing.\n"
msgstr "«%s» conté una versió intermèdia del correu que estàveu redactant.\n"
+#: git-send-email.perl
#, perl-format
msgid "'%s.final' contains the composed email.\n"
msgstr "«%s.final» conté el correu redactat.\n"
+#: git-send-email.perl
msgid "--dump-aliases incompatible with other options\n"
msgstr "--dump-aliases és incompatible amb altres opcions\n"
+#: git-send-email.perl
+msgid "--dump-aliases and --translate-aliases are mutually exclusive\n"
+msgstr "--dump-aliases i --translate-aliases s'exclouen mútuament\n"
+
+#: git-send-email.perl
msgid ""
"fatal: found configuration options for 'sendmail'\n"
"git-send-email is configured with the sendemail.* options - note the 'e'.\n"
@@ -22819,9 +29330,11 @@ msgstr ""
"la «e». Establiu sendemail.forbidSendmailVariables a false per a desactivar\n"
"la comprovació.\n"
+#: git-send-email.perl
msgid "Cannot run git format-patch from outside a repository\n"
msgstr "No es pot executar git format-patch des de fora del repositori\n"
+#: git-send-email.perl
msgid ""
"`batch-size` and `relogin` must be specified together (via command-line or "
"configuration option)\n"
@@ -22829,30 +29342,37 @@ msgstr ""
"«batch-size» i «relogin» s'han d'especificar junts (a través de la línia "
"d'ordres o l'opció de configuració)\n"
+#: git-send-email.perl
#, perl-format
msgid "Unknown --suppress-cc field: '%s'\n"
msgstr "Camp --suppress-cc desconegut: «%s»\n"
+#: git-send-email.perl
#, perl-format
msgid "Unknown --confirm setting: '%s'\n"
msgstr "Paràmetre --confirm desconegut: «%s»\n"
+#: git-send-email.perl
#, perl-format
msgid "warning: sendmail alias with quotes is not supported: %s\n"
msgstr "avís: no s'admet l'àlies de sendmail amb cometes: %s\n"
+#: git-send-email.perl
#, perl-format
msgid "warning: `:include:` not supported: %s\n"
msgstr "avís: «:include:» no s'admet: %s\n"
+#: git-send-email.perl
#, perl-format
msgid "warning: `/file` or `|pipe` redirection not supported: %s\n"
msgstr "avís: les redireccions «/file» ni «|pipe» no s'admeten: %s\n"
+#: git-send-email.perl
#, perl-format
msgid "warning: sendmail line is not recognized: %s\n"
msgstr "avís: no es pot reconèixer la línia sendmail: %s\n"
+#: git-send-email.perl
#, perl-format
msgid ""
"File '%s' exists but it could also be the range of commits\n"
@@ -22867,10 +29387,12 @@ msgstr ""
" * Dient «./%s» si volíeu especificar un fitxer; o\n"
" * Proporcionant l'opció «--format-patch» si volíeu especificar un rang.\n"
+#: git-send-email.perl
#, perl-format
msgid "Failed to opendir %s: %s"
msgstr "S'ha produït un error en obrir el directori %s: %s"
+#: git-send-email.perl
msgid ""
"\n"
"No patch files specified!\n"
@@ -22880,14 +29402,17 @@ msgstr ""
"No s'han especificat fitxers de pedaç\n"
"\n"
+#: git-send-email.perl
#, perl-format
msgid "No subject line in %s?"
msgstr "Sense assumpte a %s?"
+#: git-send-email.perl
#, perl-format
msgid "Failed to open for writing %s: %s"
msgstr "S'ha produït un error en obrir per escriptura %s: %s"
+#: git-send-email.perl
msgid ""
"Lines beginning in \"GIT:\" will be removed.\n"
"Consider including an overall diffstat or table of contents\n"
@@ -22901,22 +29426,27 @@ msgstr ""
"\n"
"Esborreu el contingut del cos si no voleu enviar cap resum.\n"
+#: git-send-email.perl
#, perl-format
msgid "Failed to open %s.final: %s"
msgstr "S'ha produït un error en obrir %s.final: %s"
+#: git-send-email.perl
#, perl-format
msgid "Failed to open %s: %s"
msgstr "S'ha produït un error en obrir %s: %s"
+#: git-send-email.perl
msgid "Summary email is empty, skipping it\n"
msgstr "El correu electrònic de resum està buit, s'omet\n"
#. TRANSLATORS: please keep [y/N] as is.
+#: git-send-email.perl
#, perl-format
msgid "Are you sure you want to use <%s> [y/N]? "
msgstr "Esteu segur que voleu usar <%s> [y/N]? "
+#: git-send-email.perl
msgid ""
"The following files are 8bit, but do not declare a Content-Transfer-"
"Encoding.\n"
@@ -22924,9 +29454,11 @@ msgstr ""
"Els fitxers següents són 8bit, però no declaren un Content-Transfer-"
"Encoding.\n"
+#: git-send-email.perl
msgid "Which 8bit encoding should I declare [UTF-8]? "
msgstr "Quina codificació de 8 bits hauria de declarar [UTF-8]? "
+#: git-send-email.perl
#, perl-format
msgid ""
"Refusing to send because the patch\n"
@@ -22939,19 +29471,23 @@ msgstr ""
"perquè la plantilla té l'assumpte «*** SUBJECT HERE ***». Passeu --force si "
"realment voleu enviar-ho.\n"
+#: git-send-email.perl
msgid "To whom should the emails be sent (if anyone)?"
msgstr ""
"A qui s'haurien d'enviar els correus electrònics (si s'han d'enviar a algú)?"
+#: git-send-email.perl
#, perl-format
msgid "fatal: alias '%s' expands to itself\n"
msgstr "fatal: l'àlies «%s» s'expandeix a si mateix\n"
+#: git-send-email.perl
msgid "Message-ID to be used as In-Reply-To for the first email (if any)? "
msgstr ""
"S'ha d'usar el Message-ID com a In-Reply-To pel primer correu (si n'hi ha "
"cap)? "
+#: git-send-email.perl
#, perl-format
msgid "error: unable to extract a valid address from: %s\n"
msgstr "error: no s'ha pogut extreure una adreça vàlida de: %s\n"
@@ -22959,13 +29495,16 @@ msgstr "error: no s'ha pogut extreure una adreça vàlida de: %s\n"
#. TRANSLATORS: Make sure to include [q] [d] [e] in your
#. translation. The program will only accept English input
#. at this point.
+#: git-send-email.perl
msgid "What to do with this address? ([q]uit|[d]rop|[e]dit): "
msgstr "Què cal fer amb aquesta adreça? ([q]surt|[d]escarta|[e]dita): "
+#: git-send-email.perl
#, perl-format
msgid "CA path \"%s\" does not exist"
msgstr "el camí CA «%s» no existeix"
+#: git-send-email.perl
msgid ""
" The Cc list above has been expanded by additional\n"
" addresses found in the patch commit message. By default\n"
@@ -22992,95 +29531,121 @@ msgstr ""
#. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
#. translation. The program will only accept English input
#. at this point.
+#: git-send-email.perl
msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
msgstr ""
"Voleu enviar aquest correu electrònic? ([y]sí|[n]o|[e]dita|[q]surt|[a]tot): "
+#: git-send-email.perl
msgid "Send this email reply required"
msgstr "Requereix resposta en enviar el correu"
+#: git-send-email.perl
msgid "The required SMTP server is not properly defined."
msgstr "El servidor SMTP requerit no està correctament definit."
+#: git-send-email.perl
#, perl-format
msgid "Server does not support STARTTLS! %s"
msgstr "El servidor no admet STARTTLS! %s"
+#: git-send-email.perl
#, perl-format
msgid "STARTTLS failed! %s"
msgstr "STARTTLS ha fallat! %s"
+#: git-send-email.perl
msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
msgstr ""
"No s'ha pogut inicialitzar SMTP correctament. Comproveu-ho la configuració i "
"useu --smtp-debug."
+#: git-send-email.perl
#, perl-format
msgid "Failed to send %s\n"
msgstr "S'ha produït un error en enviar %s\n"
+#: git-send-email.perl
#, perl-format
-msgid "Dry-Sent %s\n"
-msgstr "Simulació d'enviament %s\n"
+msgid "Dry-Sent %s"
+msgstr "Prova-Enviat %s"
+#: git-send-email.perl
#, perl-format
-msgid "Sent %s\n"
-msgstr "Enviat %s\n"
+msgid "Sent %s"
+msgstr "Enviat %s"
-msgid "Dry-OK. Log says:\n"
-msgstr "Simulació de correcte. El registre diu:\n"
+#: git-send-email.perl
+msgid "Dry-OK. Log says:"
+msgstr "Prova correcta. El registre diu:"
-msgid "OK. Log says:\n"
-msgstr "Correcte. El registre diu: \n"
+#: git-send-email.perl
+msgid "OK. Log says:"
+msgstr "Correcte. El registre diu:"
+#: git-send-email.perl
msgid "Result: "
msgstr "Resultat: "
-msgid "Result: OK\n"
-msgstr "Resultat: correcte\n"
+# OK = correcte?
+#: git-send-email.perl
+msgid "Result: OK"
+msgstr "Resultat: correcte"
+#: git-send-email.perl
#, perl-format
msgid "can't open file %s"
msgstr "no es pot obrir el fitxer %s"
+#: git-send-email.perl
#, perl-format
msgid "(mbox) Adding cc: %s from line '%s'\n"
msgstr "(mbox) S'està afegint cc: %s des de la línia «%s»\n"
+#: git-send-email.perl
#, perl-format
msgid "(mbox) Adding to: %s from line '%s'\n"
msgstr "(mbox) S'està afegint a: %s des de la línia «%s»\n"
+#: git-send-email.perl
#, perl-format
msgid "(non-mbox) Adding cc: %s from line '%s'\n"
msgstr "(no mbox) S'està afegint cc: %s des de la línia «%s»\n"
+#: git-send-email.perl
#, perl-format
msgid "(body) Adding cc: %s from line '%s'\n"
msgstr "(cos) S'està afegint cc: %s des de la línia «%s»\n"
+#: git-send-email.perl
#, perl-format
msgid "(%s) Could not execute '%s'"
msgstr "(%s) no s'ha pogut executar «%s»"
+#: git-send-email.perl
#, perl-format
msgid "(%s) Malformed output from '%s'"
msgstr "(%s) Sortida mal formada de «%s»"
+#: git-send-email.perl
#, perl-format
msgid "(%s) failed to close pipe to '%s'"
msgstr "(%s) s'ha produït un error en tancar el conducte «%s»"
+#: git-send-email.perl
#, perl-format
msgid "(%s) Adding %s: %s from: '%s'\n"
msgstr "(%s) S'està afegint %s: %s des de: «%s»\n"
+#: git-send-email.perl
msgid "cannot send message as 7bit"
msgstr "no es pot enviar el missatge en 7 bits"
+#: git-send-email.perl
msgid "invalid transfer encoding"
msgstr "codificació de transferència no vàlida"
+#: git-send-email.perl
#, perl-format
msgid ""
"fatal: %s: rejected by %s hook\n"
@@ -23091,10 +29656,12 @@ msgstr ""
"%s\n"
"avís: no s'ha enviat cap pedaç\n"
+#: git-send-email.perl
#, perl-format
msgid "unable to open %s: %s\n"
msgstr "no s'ha pogut obrir %s: %s\n"
+#: git-send-email.perl
#, perl-format
msgid ""
"fatal: %s:%d is longer than 998 characters\n"
@@ -23103,11 +29670,91 @@ msgstr ""
"fatal: %s:%d té més de 998 caràcters\n"
"avís: no s'ha enviat cap pedaç\n"
+#: git-send-email.perl
#, perl-format
msgid "Skipping %s with backup suffix '%s'.\n"
msgstr "S'està ometent %s amb el sufix de còpia de seguretat «%s».\n"
#. TRANSLATORS: please keep "[y|N]" as is.
+#: git-send-email.perl
#, perl-format
msgid "Do you really want to send %s? [y|N]: "
msgstr "Esteu segur que voleu enviar %s? [y|N]: "
+
+#~ msgid "revision walk setup failed\n"
+#~ msgstr "la configuració del recorregut de revisions ha fallat\n"
+
+#, c-format
+#~ msgid "unable to parse contact: %s"
+#~ msgstr "no s'ha pogut analitzar el contacte: %s"
+
+#, c-format
+#~ msgid "truncating .rej filename to %.*s.rej"
+#~ msgstr "s'està truncant el nom del fitxer .rej a %.*s.rej"
+
+#~ msgid ""
+#~ "the add.interactive.useBuiltin setting has been removed!\n"
+#~ "See its entry in 'git help config' for details."
+#~ msgstr ""
+#~ "s'ha eliminat la configuració add.interactive.useBuiltin\n"
+#~ "Per a més detalls, vegeu la seva entrada a «git help config»."
+
+#~ msgid ""
+#~ "Use -f if you really want to add them.\n"
+#~ "Turn this message off by running\n"
+#~ "\"git config advice.addIgnoredFile false\""
+#~ msgstr ""
+#~ "Utilitzeu -f si realment voleu afegir-los.\n"
+#~ "Desactiveu aquest missatge executant\n"
+#~ "«git config advice.addIgnoredFile false»"
+
+#~ msgid ""
+#~ "Maybe you wanted to say 'git add .'?\n"
+#~ "Turn this message off by running\n"
+#~ "\"git config advice.addEmptyPathspec false\""
+#~ msgstr ""
+#~ "Potser voleu dir «git add .»?\n"
+#~ "Desactiveu aquest missatge executant\n"
+#~ "«git config advice.addEmptyPathspec false»"
+
+#~ msgid "git archive: Remote with no URL"
+#~ msgstr "git archive: Remot sense URL"
+
+#~ msgid ""
+#~ "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
+#~ "refusing to clean"
+#~ msgstr ""
+#~ "clean.requireForce és per defecte cert i ni -i, -n ni -f s'han indicat; "
+#~ "refusant netejar"
+
+#~ msgid "only one action at a time"
+#~ msgstr "només una acció cada cop"
+
+#~ msgid "use [RFC PATCH] instead of [PATCH]"
+#~ msgstr "useu [RFC PATCH] en comptes de [PATCH]"
+
+#, c-format
+#~ msgid "bad ls-files format: element '%s' does not start with '('"
+#~ msgstr "format incorrecte del ls-files: l'element «%s» no comença amb «(»"
+
+#, c-format
+#~ msgid "bad ls-files format: element '%s' does not end in ')'"
+#~ msgstr "format incorrecte del ls-files: l'element «%s» no acaba amb «)»"
+
+#, c-format
+#~ msgid "bad ls-files format: %%%.*s"
+#~ msgstr "format incorrecte de ls-files: %%%.*s"
+
+#, c-format
+#~ msgid "no URLs configured for remote '%s'"
+#~ msgstr "cap URL configurat per al remot «%s»"
+
+#~ msgid "keep redundant, empty commits"
+#~ msgstr "retén les comissions redundants i buides"
+
+#~ msgid "core.commentChar should only be one ASCII character"
+#~ msgstr "core.commentChar només hauria de ser un caràcter ASCII"
+
+#, c-format
+#~ msgid "remote '%s' has no configured URL"
+#~ msgstr "el remot «%s» no té cap URL configurat"
diff --git a/po/de.po b/po/de.po
index e271476cd2..06055e7611 100644
--- a/po/de.po
+++ b/po/de.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Git\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2024-07-19 19:21+0200\n"
-"PO-Revision-Date: 2024-07-19 19:25+0200\n"
+"POT-Creation-Date: 2024-10-05 16:17+0200\n"
+"PO-Revision-Date: 2024-10-05 16:18+0200\n"
"Last-Translator: Ralf Thielow <ralf.thielow@gmail.com>\n"
"Language-Team: German\n"
"Language: de\n"
@@ -566,7 +566,7 @@ msgid ""
"/ - 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\n"
+"p - print the current hunk, 'P' to use the pager\n"
"? - print help\n"
msgstr ""
"j - diesen Patch-Block unbestimmt lassen, nächsten unbestimmten Patch-Block "
@@ -579,7 +579,7 @@ msgstr ""
"/ - nach Patch-Block suchen, der regulärem Ausdruck entspricht\n"
"s - aktuellen Patch-Block in kleinere Patch-Blöcke aufteilen\n"
"e - aktuellen Patch-Block manuell editieren\n"
-"p - aktuellen Patch-Block anzeigen\n"
+"p - aktuellen Patch-Block anzeigen, 'P' um Anzeigeprogramm zu benutzen\n"
"? - Hilfe anzeigen\n"
#, c-format
@@ -1280,6 +1280,15 @@ msgid "attempt three-way merge, fall back on normal patch if that fails"
msgstr ""
"versuche 3-Wege-Merge, weiche auf normalen Patch aus, wenn dies fehlschlägt"
+msgid "for conflicts, use our version"
+msgstr "bei Konflikten unsere Variante verwenden"
+
+msgid "for conflicts, use their version"
+msgstr "bei Konflikten ihre Variante verwenden"
+
+msgid "for conflicts, use a union version"
+msgstr "bei Konflikten eine gemeinsame Variante verwenden"
+
msgid "build a temporary index based on embedded index information"
msgstr ""
"einen temporären Index, basierend auf den integrierten Index-Informationen, "
@@ -1329,6 +1338,9 @@ msgstr "<Wurzelverzeichnis> vor alle Dateinamen stellen"
msgid "don't return error for empty patches"
msgstr "keinen Fehler für leere Patches zurückgeben"
+msgid "--ours, --theirs, and --union require --3way"
+msgstr "--ours, --theirs, und --union erfordern --3way"
+
#, c-format
msgid "cannot stream blob %s"
msgstr "kann Blob %s nicht streamen"
@@ -1402,6 +1414,10 @@ msgid "not a tree object: %s"
msgstr "Kein Tree-Objekt: %s"
#, c-format
+msgid "failed to unpack tree object %s"
+msgstr "Tree-Objekt %s konnte nicht entpackt werden"
+
+#, c-format
msgid "File not found: %s"
msgstr "Datei nicht gefunden: %s"
@@ -2525,9 +2541,6 @@ msgstr ""
"Ungültiges Argument %s für 'git bisect terms'.\n"
"Unterstützte Optionen sind: --term-good|--term-old und --term-bad|--term-new."
-msgid "revision walk setup failed\n"
-msgstr "Einrichtung des Revisionsgangs fehlgeschlagen\n"
-
#, c-format
msgid "could not open '%s' for appending"
msgstr "konnte '%s' nicht zum Anhängen öffnen"
@@ -3533,9 +3546,14 @@ msgstr "git check-mailmap [<Optionen>] <Kontakt>..."
msgid "also read contacts from stdin"
msgstr "ebenfalls Kontakte von der Standard-Eingabe lesen"
-#, c-format
-msgid "unable to parse contact: %s"
-msgstr "konnte Kontakt nicht parsen: %s"
+msgid "read additional mailmap entries from file"
+msgstr "zusätzliche mailmap-Einträge aus Datei lesen"
+
+msgid "blob"
+msgstr "Blob"
+
+msgid "read additional mailmap entries from blob"
+msgstr "zusätzliche mailmap-Einträge aus Blob lesen"
msgid "no contacts specified"
msgstr "keine Kontakte angegeben"
@@ -3898,6 +3916,10 @@ msgid "'%s' cannot be used with switching branches"
msgstr "'%s' kann nicht beim Wechseln von Branches verwendet werden"
#, c-format
+msgid "'%s' needs the paths to check out"
+msgstr "'%s' benötigt die Pfade zum Auschecken"
+
+#, c-format
msgid "'%s' cannot be used with '%s'"
msgstr "'%s' kann nicht mit '%s' verwendet werden"
@@ -4693,7 +4715,7 @@ msgstr "git commit-tree: Fehler beim Lesen"
msgid ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]\n"
" [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|"
-"reword):]<commit>)]\n"
+"reword):]<commit>]\n"
" [-F <file> | -m <msg>] [--reset-author] [--allow-empty]\n"
" [--allow-empty-message] [--no-verify] [-e] [--author=<author>]\n"
" [--date=<date>] [--cleanup=<mode>] [--[no-]status]\n"
@@ -4703,7 +4725,7 @@ msgid ""
msgstr ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u<Modus>] [--amend]\n"
" [--dry-run] [(-c | -C | --squash) <Commit> | --fixup [(amend|"
-"reword):]<Commit>)]\n"
+"reword):]<Commit>]\n"
" [-F <Datei> | -m <Nachricht>] [--reset-author] [--allow-empty]\n"
" [--allow-empty-message] [--no-verify] [-e] [--author=<Autor>]\n"
" [--date=<Datum>] [--cleanup=<Modus>] [--[no-]status]\n"
@@ -5207,11 +5229,10 @@ msgstr "git config list [<Datei-Option>] [<Anzeige-Option>] [--includes]"
msgid ""
"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
-"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
-"<name>"
+"regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name>"
msgstr ""
"git config get [<Datei-Option>] [<Anzeige-Option>] [--includes] [--all] [--"
-"regexp=<Regex>] [--value=<Wert>] [--fixed-value] [--default=<Standardwert>] "
+"regexp] [--value=<Wert>] [--fixed-value] [--default=<Standardwert>] "
"<Name>"
msgid ""
@@ -5243,6 +5264,15 @@ msgstr ""
"Terminal>]"
msgid ""
+"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
+"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
+"<name>"
+msgstr ""
+"git config get [<Datei-Option>] [<Anzeige-Option>] [--includes] [--all] [--"
+"regexp=<Regex>] [--value=<Wert>] [--fixed-value] [--default=<Standardwert>] "
+"<Name>"
+
+msgid ""
"git config set [<file-option>] [--type=<type>] [--comment=<message>] [--all] "
"[--value=<value>] [--fixed-value] <name> <value>"
msgstr ""
@@ -6061,8 +6091,8 @@ msgstr ""
"zu umgehen.\n"
#, c-format
-msgid "%s did not send all necessary objects\n"
-msgstr "%s hat nicht alle erforderlichen Objekte gesendet\n"
+msgid "%s did not send all necessary objects"
+msgstr "%s hat nicht alle erforderlichen Objekte gesendet"
#, c-format
msgid "rejected %s because shallow roots are not allowed to be updated"
@@ -6101,8 +6131,8 @@ msgid "option \"%s\" value \"%s\" is not valid for %s"
msgstr "Option \"%s\" Wert \"%s\" ist nicht gültig für %s"
#, c-format
-msgid "option \"%s\" is ignored for %s\n"
-msgstr "Option \"%s\" wird ignoriert für %s\n"
+msgid "option \"%s\" is ignored for %s"
+msgstr "Option \"%s\" wird für %s ignoriert"
#, c-format
msgid "%s is not a valid object"
@@ -6792,6 +6822,9 @@ msgstr "mehr Gründlichkeit (erhöht Laufzeit)"
msgid "enable auto-gc mode"
msgstr "\"auto-gc\" Modus aktivieren"
+msgid "perform garbage collection in the background"
+msgstr "Garbage Collection im Hintergrund ausführen"
+
msgid "force running gc even if there may be another gc running"
msgstr ""
"Ausführung von \"git gc\" erzwingen, selbst wenn ein anderes\n"
@@ -6895,6 +6928,9 @@ msgstr "Aufgabe '%s' kann nicht mehrfach ausgewählt werden"
msgid "run tasks based on the state of the repository"
msgstr "Aufgaben abhängig vom Zustand des Repositories ausführen"
+msgid "perform maintenance in the background"
+msgstr "Wartung im Hintergrund ausführen"
+
msgid "frequency"
msgstr "Häufigkeit"
@@ -7771,9 +7807,6 @@ msgstr "-L<Bereich>:<Datei> kann nicht mit Pfadspezifikation verwendet werden"
msgid "Final output: %d %s\n"
msgstr "letzte Ausgabe: %d %s\n"
-msgid "unable to create temporary object directory"
-msgstr "konnte temporäres Objektverzeichnis nicht erstellen"
-
#, c-format
msgid "git show %s: bad file"
msgstr "git show %s: ungültige Datei"
@@ -8353,15 +8386,6 @@ msgstr "einen diff3 basierten Merge verwenden"
msgid "use a zealous diff3 based merge"
msgstr "einen eifrigen diff3 basierten Merge verwenden"
-msgid "for conflicts, use our version"
-msgstr "bei Konflikten unsere Variante verwenden"
-
-msgid "for conflicts, use their version"
-msgstr "bei Konflikten ihre Variante verwenden"
-
-msgid "for conflicts, use a union version"
-msgstr "bei Konflikten eine gemeinsame Variante verwenden"
-
msgid "<algorithm>"
msgstr "<Algorithmus>"
@@ -8841,6 +8865,9 @@ msgstr ""
msgid "write multi-pack bitmap"
msgstr "schreibe Multi-Pack-Bitmap"
+msgid "write a new incremental MIDX"
+msgstr "ein neues inkrementelles MIDX schreiben"
+
msgid "write multi-pack index containing only given indexes"
msgstr "Multi-Pack-Index schreiben, der nur die gegebenen Indexe enthält"
@@ -10930,6 +10957,9 @@ msgstr "Ungültiges Format für Referenzen: %s"
msgid "git refs migrate --ref-format=<format> [--dry-run]"
msgstr "git refs migrate --ref-format=<Format> [--dry-run]"
+msgid "git refs verify [--strict] [--verbose]"
+msgstr "git refs verify [--strict] [--verbose]"
+
msgid "specify the reference format to convert to"
msgstr "das Referenzformat angeben, in das konvertiert werden soll"
@@ -10943,6 +10973,12 @@ msgstr "fehlendes --ref-format=<Format>"
msgid "repository already uses '%s' format"
msgstr "das Repository verwendet bereits das Format '%s'"
+msgid "enable strict checking"
+msgstr "strenge Kontrolle aktivieren"
+
+msgid "'git refs verify' takes no arguments"
+msgstr "'git refs verify' nimmt keine Argumente an"
+
msgid ""
"git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
"mirror=<fetch|push>] <name> <url>"
@@ -12397,11 +12433,11 @@ msgstr "Referenz nicht vorhanden"
msgid "failed to look up reference"
msgstr "Fehler beim Nachschlagen der Referenz"
-msgid "only show tags (can be combined with branches)"
-msgstr "nur Tags anzeigen (kann mit Branches kombiniert werden)"
+msgid "only show tags (can be combined with --branches)"
+msgstr "nur Tags anzeigen (kann mit --branches kombiniert werden)"
-msgid "only show branches (can be combined with tags)"
-msgstr "nur Branches anzeigen (kann mit Tags kombiniert werden)"
+msgid "only show branches (can be combined with --tags)"
+msgstr "nur Branches anzeigen (kann mit --tags kombiniert werden)"
msgid "check for reference existence without resolving"
msgstr "Prüfung auf Vorhandensein einer Referenz, ohne diese aufzulösen"
@@ -12460,6 +12496,10 @@ msgstr ""
"Fehler beim Erstellen eines Verzeichnisses für Datei eines partiellen "
"Checkouts"
+#, c-format
+msgid "unable to fdopen %s"
+msgstr "kann %s nicht öffnen"
+
msgid "failed to initialize worktree config"
msgstr "Fehler beim Initialisieren der Arbeitsverzeichnis-Konfiguration"
@@ -12927,8 +12967,8 @@ msgid "couldn't hash object from '%s'"
msgstr "Hash eines Objektes von '%s' konnte nicht erzeugt werden"
#, c-format
-msgid "unexpected mode %o\n"
-msgstr "unerwarteter Modus %o\n"
+msgid "unexpected mode %o"
+msgstr "unerwarteter Modus %o"
msgid "use the commit stored in the index instead of the submodule HEAD"
msgstr ""
@@ -17635,13 +17675,16 @@ msgstr ""
msgid "Unable to create '%s.lock': %s"
msgstr "Konnte '%s.lock' nicht erstellen: %s"
+msgid "unable to create temporary object directory"
+msgstr "konnte temporäres Objektverzeichnis nicht erstellen"
+
#, c-format
msgid "could not write loose object index %s"
msgstr "konnte den losen Objektindex %s nicht schreiben"
#, c-format
-msgid "failed to write loose object index %s\n"
-msgstr "Fehler beim Schreiben des losen Objektindexes %s\n"
+msgid "failed to write loose object index %s"
+msgstr "Fehler beim Schreiben des losen Objektindex %s"
#, c-format
msgid "unexpected line: '%s'"
@@ -18213,6 +18256,17 @@ msgstr "Paket konnte nicht geladen werden"
msgid "could not open index for %s"
msgstr "konnte Index für %s nicht öffnen"
+#, c-format
+msgid "unable to link '%s' to '%s'"
+msgstr "kann '%s' nicht mit '%s' verknüpfen"
+
+#, c-format
+msgid "failed to clear multi-pack-index at %s"
+msgstr "Fehler beim Löschen des Multi-Pack-Index bei %s"
+
+msgid "cannot write incremental MIDX with bitmap"
+msgstr "kann kein inkrementelles MIDX mit Bitmap schreiben"
+
msgid "ignoring existing multi-pack-index; checksum mismatch"
msgstr ""
"ignoriere existierenden Multi-Pack-Index; Prüfsumme stimmt nicht überein"
@@ -18242,18 +18296,34 @@ msgstr "keine Packdateien zum Indizieren."
msgid "refusing to write multi-pack .bitmap without any objects"
msgstr "Schreiben der Multi-Pack-Bitmap ohne Objekte abgelehnt"
+msgid "unable to create temporary MIDX layer"
+msgstr "konnte keine temporäre MIDX-Ebene erstellen"
+
msgid "could not write multi-pack bitmap"
msgstr "Multi-Pack-Bitmap konnte nicht geschrieben werden"
+msgid "unable to open multi-pack-index chain file"
+msgstr "Multi-Pack-Indexketten-Datei kann nicht geöffnet werden"
+
+msgid "unable to rename new multi-pack-index layer"
+msgstr "neue Multi-Pack-Index-Ebene konnte nicht umbenannt werden"
+
msgid "could not write multi-pack-index"
msgstr "Multi-Pack-Index konnte nicht geschrieben werden"
+msgid "cannot expire packs from an incremental multi-pack-index"
+msgstr ""
+"kann Pakete aus einem inkrementellen Multi-Pack-Index nicht ablaufen lassen"
+
msgid "Counting referenced objects"
msgstr "Referenzierte Objekte zählen"
msgid "Finding and deleting unreferenced packfiles"
msgstr "Suchen und Löschen von unreferenzierten Pack-Dateien"
+msgid "cannot repack an incremental multi-pack-index"
+msgstr "kann einen inkrementellen Multi-Pack-Index nicht neu packen"
+
msgid "could not start pack-objects"
msgstr "Konnte 'pack-objects' nicht ausführen"
@@ -18316,6 +18386,27 @@ msgstr "multi-pack-index Pack-Name Chunk ist zu klein"
msgid "multi-pack-index pack names out of order: '%s' before '%s'"
msgstr "Falsche Reihenfolge bei Multi-Pack-Index Pack-Namen: '%s' vor '%s'"
+msgid "multi-pack-index chain file too small"
+msgstr "Multi-Pack-Index-Kettendatei zu klein"
+
+#, c-format
+msgid "pack count in base MIDX too high: %<PRIuMAX>"
+msgstr "Paketanzahl im Basis-MIDX zu hoch: %<PRIuMAX>"
+
+#, c-format
+msgid "object count in base MIDX too high: %<PRIuMAX>"
+msgstr "Objektanzahl in Basis-MIDX zu hoch: %<PRIuMAX>"
+
+#, c-format
+msgid "invalid multi-pack-index chain: line '%s' not a hash"
+msgstr "ungültige Multi-Pack-Index-Kette: Zeile '%s' ist kein Hash"
+
+msgid "unable to find all multi-pack index files"
+msgstr "konnte nicht alle Multi-Pack-Indexdateien finden"
+
+msgid "invalid MIDX object position, MIDX is likely corrupt"
+msgstr "ungültige MIDX-Objektposition, MIDX ist wahrscheinlich beschädigt"
+
#, c-format
msgid "bad pack-int-id: %u (%u total packs)"
msgstr "Ungültige pack-int-id: %u (%u Pakete insgesamt)"
@@ -18334,10 +18425,6 @@ msgstr ""
msgid "multi-pack-index large offset out of bounds"
msgstr "multi-pack-index großer Offset außerhalb der Grenzen"
-#, c-format
-msgid "failed to clear multi-pack-index at %s"
-msgstr "Fehler beim Löschen des Multi-Pack-Index bei %s"
-
msgid "multi-pack-index file exists, but failed to parse"
msgstr "Multi-Pack-Index-Datei existiert, aber das Parsen schlug fehl"
@@ -18556,6 +18643,14 @@ msgid "missing mapping of %s to %s"
msgstr "fehlende Abbildung von %s auf %s"
#, c-format
+msgid "unable to open %s"
+msgstr "kann %s nicht öffnen"
+
+#, c-format
+msgid "files '%s' and '%s' differ in contents"
+msgstr "die Dateien '%s' und '%s' unterscheiden sich im Inhalt"
+
+#, c-format
msgid "unable to write file %s"
msgstr "Konnte Datei %s nicht schreiben."
@@ -18642,10 +18737,6 @@ msgid "%s is not a valid '%s' object"
msgstr "%s ist kein gültiges '%s' Objekt"
#, c-format
-msgid "unable to open %s"
-msgstr "kann %s nicht öffnen"
-
-#, c-format
msgid "hash mismatch for %s (expected %s)"
msgstr "Hash für %s stimmt nicht überein (%s erwartet)."
@@ -19882,6 +19973,10 @@ msgid "expected format: %%(ahead-behind:<committish>)"
msgstr "erwartetes Format: %%(ahead-behind:<Commit>)"
#, c-format
+msgid "expected format: %%(is-base:<committish>)"
+msgstr "erwartetes Format: %%(is-base:<committish>)"
+
+#, c-format
msgid "malformed field name: %.*s"
msgstr "Fehlerhafter Feldname: %.*s"
@@ -20121,6 +20216,13 @@ msgstr ""
"'%s': ist aber eine reguläre Referenz"
#, c-format
+msgid "cannot open directory %s"
+msgstr "Verzeichnis %s kann nicht geöffnet werden"
+
+msgid "Checking references consistency"
+msgstr "Überprüfung der Konsistenz der Referenzen"
+
+#, c-format
msgid "refname is dangerous: %s"
msgstr "Referenzname ist gefährlich: %s"
@@ -20766,12 +20868,15 @@ msgstr "lade nur Metadaten des Branches herunter, der ausgecheckt wird"
msgid "create repository within 'src' directory"
msgstr "Repository im Verzeichnis 'src' erstellen"
+msgid "specify if tags should be fetched during clone"
+msgstr "Angabe, ob Tags während des Klonens abgerufen werden sollen"
+
msgid ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
msgstr ""
"scalar clone [--single-branch] [--branch <Haupt-Branch>] [--full-clone]\n"
-"\t[--[no-]src] <URL> [<Eintragung>]"
+"\t[--[no-]src] [--[no-]tags] <URL> [<Eintragung>]"
#, c-format
msgid "cannot deduce worktree name from '%s'"
@@ -20790,6 +20895,10 @@ msgid "could not configure remote in '%s'"
msgstr "konnte Remote-Repository in '%s' nicht konfigurieren"
#, c-format
+msgid "could not disable tags in '%s'"
+msgstr "konnte die Tags in '%s' nicht deaktivieren"
+
+#, c-format
msgid "could not configure '%s'"
msgstr "konnte '%s' nicht konfigurieren"
@@ -21872,6 +21981,10 @@ msgid "failed to stat '%*s%s%s'"
msgstr "Konnte '%*s%s%s' nicht lesen."
#, c-format
+msgid "safe.directory '%s' not absolute"
+msgstr "safe.directory '%s' nicht absolut"
+
+#, c-format
msgid ""
"detected dubious ownership in repository at '%s'\n"
"%sTo add an exception for this directory, call:\n"
@@ -22339,6 +22452,24 @@ msgstr "Token"
msgid "command token to send to the server"
msgstr "Befehlstoken, der an den Server gesendet werden soll"
+msgid "unit-test [<options>]"
+msgstr "unit-test [<Optionen>]"
+
+msgid "immediately exit upon the first failed test"
+msgstr "beim ersten fehlgeschlagenen Test sofort abbrechen"
+
+msgid "suite[::test]"
+msgstr "suite[::test]"
+
+msgid "run only test suite or individual test <suite[::test]>"
+msgstr "nur Testsuite oder einzelnen Test ausführen <suite[::test]>"
+
+msgid "suite"
+msgstr "Suite"
+
+msgid "exclude test suite <suite>"
+msgstr "Testsuite <Suite> ausschließen"
+
#, c-format
msgid "running trailer command '%s' failed"
msgstr "Ausführen des Anhang-Befehls '%s' fehlgeschlagen"
@@ -23588,6 +23719,10 @@ msgstr "'%s.final' enthält die verfasste E-Mail.\n"
msgid "--dump-aliases incompatible with other options\n"
msgstr "--dump-aliases ist mit anderen Optionen inkompatibel\n"
+msgid "--dump-aliases and --translate-aliases are mutually exclusive\n"
+msgstr ""
+"--dump-aliases und --translate-aliases schließen sich gegenseitig aus\n"
+
msgid ""
"fatal: found configuration options for 'sendmail'\n"
"git-send-email is configured with the sendemail.* options - note the 'e'.\n"
diff --git a/po/fr.po b/po/fr.po
index 7b03f2c25b..481e1bdc1d 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -80,8 +80,8 @@ msgid ""
msgstr ""
"Project-Id-Version: git\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2024-07-17 21:57+0000\n"
-"PO-Revision-Date: 2024-07-19 20:25+0200\n"
+"POT-Creation-Date: 2024-10-02 16:57+0000\n"
+"PO-Revision-Date: 2024-10-04 23:03+0200\n"
"Last-Translator: Cédric Malard <c.malard-git@valdun.net>\n"
"Language-Team: Jean-Noël Avila <jn.avila@free.fr>\n"
"Language: fr\n"
@@ -628,7 +628,7 @@ msgid ""
"/ - 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\n"
+"p - print the current hunk, 'P' to use the pager\n"
"? - print help\n"
msgstr ""
"j - laisser cette section non décidée et aller à la suivante non-décidée\n"
@@ -639,7 +639,7 @@ msgstr ""
"/ - rechercher une section correspondant à une regex donnée\n"
"s - découper la section en sections plus petites\n"
"e - éditer manuellement la section actuelle\n"
-"p - afficher la section actuelle\n"
+"p - afficher la section actuelle, 'P' pour utiliser un paginateur\n"
"? - afficher l'aide\n"
#, c-format
@@ -1330,6 +1330,15 @@ msgid "attempt three-way merge, fall back on normal patch if that fails"
msgstr ""
"tenter une fusion à 3 points, revenir à un rustinage normal en cas d'échec"
+msgid "for conflicts, use our version"
+msgstr "pour les conflits, utiliser notre version (our)"
+
+msgid "for conflicts, use their version"
+msgstr "pour les conflits, utiliser leur version (their)"
+
+msgid "for conflicts, use a union version"
+msgstr "pour les conflits, utiliser l'union des versions"
+
msgid "build a temporary index based on embedded index information"
msgstr ""
"construire un index temporaire fondé sur l'information de l'index embarqué"
@@ -1380,6 +1389,9 @@ msgstr "préfixer tous les noms de fichier avec <root>"
msgid "don't return error for empty patches"
msgstr "ne pas renvoyer d'erreur pour les rustines vides"
+msgid "--ours, --theirs, and --union require --3way"
+msgstr "--ours, --theirs et --union requièrent --3way"
+
#, c-format
msgid "cannot stream blob %s"
msgstr "impossible de transmettre le blob %s en flux"
@@ -1453,6 +1465,9 @@ msgstr "nom d'objet invalide : %s"
msgid "not a tree object: %s"
msgstr "objet arbre invalide : %s"
+msgid "unable to checkout working tree"
+msgstr "impossible d'extraire la copie de travail"
+
#, c-format
msgid "File not found: %s"
msgstr "Fichier non trouvé : %s"
@@ -2566,9 +2581,6 @@ msgstr ""
"Les options supportées sont : --term-good|--term-old et --term-bad|--term-"
"new."
-msgid "revision walk setup failed\n"
-msgstr "échec de la préparation du parcours des révisions\n"
-
#, c-format
msgid "could not open '%s' for appending"
msgstr "impossible d'ouvrir '%s' en ajout"
@@ -3364,7 +3376,7 @@ msgstr "%s nécessite des arguments"
#, c-format
msgid "%s takes no arguments"
-msgstr "%s n'accepte aucune argument"
+msgstr "%s n'accepte aucun argument"
msgid "only one batch option may be specified"
msgstr "une seule option de traitement ne peut être spécifiée à la fois"
@@ -3569,9 +3581,14 @@ msgstr "git check-mailmap [<options>] <contact>..."
msgid "also read contacts from stdin"
msgstr "lire aussi les contacts depuis l'entrée standard"
-#, c-format
-msgid "unable to parse contact: %s"
-msgstr "impossible d'analyser le contact : %s"
+msgid "read additional mailmap entries from file"
+msgstr "lire des entrées supplémentaires de mailmap depuis un fichier"
+
+msgid "blob"
+msgstr "blob"
+
+msgid "read additional mailmap entries from blob"
+msgstr "lire des entrées supplémentaires depuis un blob"
msgid "no contacts specified"
msgstr "aucun contact spécifié"
@@ -3929,6 +3946,10 @@ msgid "'%s' cannot be used with switching branches"
msgstr "'%s' ne peut pas être utilisé avec un basculement de branches"
#, c-format
+msgid "'%s' needs the paths to check out"
+msgstr "'%s' requiert les chemins à extraire"
+
+#, c-format
msgid "'%s' cannot be used with '%s'"
msgstr "'%s' ne peut pas être utilisé avec '%s'"
@@ -4415,9 +4436,6 @@ msgstr ""
"la HEAD distante réfère à une référence non existante, impossible de "
"l'extraire"
-msgid "unable to checkout working tree"
-msgstr "impossible d'extraire la copie de travail"
-
msgid "unable to write parameters to config file"
msgstr "impossible d'écrire les paramètres dans le fichier de configuration"
@@ -4707,7 +4725,7 @@ msgstr "git commit-tree : échec de la lecture"
msgid ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]\n"
" [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|"
-"reword):]<commit>)]\n"
+"reword):]<commit>]\n"
" [-F <file> | -m <msg>] [--reset-author] [--allow-empty]\n"
" [--allow-empty-message] [--no-verify] [-e] [--author=<author>]\n"
" [--date=<date>] [--cleanup=<mode>] [--[no-]status]\n"
@@ -4718,7 +4736,7 @@ msgstr ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]\n"
" [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|"
"reword):]<commit>)]\n"
-" [-F <file> | -m <msg>] [--reset-author] [--allow-empty]\n"
+" [-F <fichier> | -m <msg>] [--reset-author] [--allow-empty]\n"
" [--allow-empty-message] [--no-verify] [-e] [--author=<auteur>]\n"
" [--date=<date>] [--cleanup=<mode>] [--[no-]status]\n"
" [-i | -o] [--pathspec-from-file=<fichier> [--pathspec-file-nul]]\n"
@@ -5222,12 +5240,11 @@ msgstr ""
msgid ""
"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
-"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
-"<name>"
+"regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name>"
msgstr ""
"git config get [<option-de-fichier>] [<option-d-affichage>] [--includes] [--"
-"all] [--regexp=<regexp>] [--value=<valeur>] [--fixed-value] [--"
-"default=<défaut>] <name>"
+"all] [--regexp] [--value=<valeur>] [--fixed-value] [--default=<défaut>] "
+"<name>"
msgid ""
"git config set [<file-option>] [--type=<type>] [--all] [--value=<value>] [--"
@@ -5258,6 +5275,15 @@ msgstr ""
"git config [<option-de-fichier>] --get-colorbool <nom> [<stdout-est-tty>]"
msgid ""
+"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
+"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
+"<name>"
+msgstr ""
+"git config get [<option-de-fichier>] [<option-d-affichage>] [--includes] [--"
+"all] [--regexp=<regexp>] [--value=<valeur>] [--fixed-value] [--"
+"default=<défaut>] <name>"
+
+msgid ""
"git config set [<file-option>] [--type=<type>] [--comment=<message>] [--all] "
"[--value=<value>] [--fixed-value] <name> <value>"
msgstr ""
@@ -6077,8 +6103,8 @@ msgstr ""
"'git config fetch.showForcedUpdates false' pour éviter cette vérification\n"
#, c-format
-msgid "%s did not send all necessary objects\n"
-msgstr "%s n'a pas envoyé tous les objets nécessaires\n"
+msgid "%s did not send all necessary objects"
+msgstr "%s n'a pas envoyé tous les objets nécessaires"
#, c-format
msgid "rejected %s because shallow roots are not allowed to be updated"
@@ -6117,8 +6143,8 @@ msgid "option \"%s\" value \"%s\" is not valid for %s"
msgstr "la valeur \"%2$s\" de l'option \"%1$s\" est invalide pour %3$s"
#, c-format
-msgid "option \"%s\" is ignored for %s\n"
-msgstr "l'option \"%s\" est ignorée pour %s\n"
+msgid "option \"%s\" is ignored for %s"
+msgstr "l'option \"%s\" est ignorée pour %s"
#, c-format
msgid "%s is not a valid object"
@@ -6797,6 +6823,9 @@ msgstr "être plus consciencieux (durée de traitement allongée)"
msgid "enable auto-gc mode"
msgstr "activer le mode auto-gc"
+msgid "perform garbage collection in the background"
+msgstr "réaliser le glanage de cellules en arrière plan"
+
msgid "force running gc even if there may be another gc running"
msgstr ""
"forcer le lancement du ramasse-miettes même si un autre ramasse-miettes "
@@ -6897,6 +6926,9 @@ msgstr "la tâche '%s' ne peut pas être sélectionnée plusieurs fois"
msgid "run tasks based on the state of the repository"
msgstr "lancer les tâches selon l'état du dépôt"
+msgid "perform maintenance in the background"
+msgstr "réaliser la maintenance en arrière-plan"
+
msgid "frequency"
msgstr "fréquence"
@@ -7776,9 +7808,6 @@ msgstr ""
msgid "Final output: %d %s\n"
msgstr "Sortie finale : %d %s\n"
-msgid "unable to create temporary object directory"
-msgstr "impossible de créer un répertoire d'objets temporaire"
-
#, c-format
msgid "git show %s: bad file"
msgstr "git show %s : fichier incorrect"
@@ -8365,15 +8394,6 @@ msgstr "utiliser une fusion basée sur diff3"
msgid "use a zealous diff3 based merge"
msgstr "utiliser une fusion basée sur un diff3 zélée"
-msgid "for conflicts, use our version"
-msgstr "pour les conflits, utiliser notre version (our)"
-
-msgid "for conflicts, use their version"
-msgstr "pour les conflits, utiliser leur version (their)"
-
-msgid "for conflicts, use a union version"
-msgstr "pour les conflits, utiliser l'ensemble des versions"
-
msgid "<algorithm>"
msgstr "<algorithme>"
@@ -8848,6 +8868,9 @@ msgstr "paquet à réutiliser lors du calcul de bitmap de multi-paquet"
msgid "write multi-pack bitmap"
msgstr "écriture du bitmap de multi-paquet"
+msgid "write a new incremental MIDX"
+msgstr "écrire un nouveau MIDX incrémental"
+
msgid "write multi-pack index containing only given indexes"
msgstr "écrire l'index multi-paquet ne contenant que les index fournis"
@@ -10903,6 +10926,9 @@ msgstr "format de référence invalide : %s"
msgid "git refs migrate --ref-format=<format> [--dry-run]"
msgstr "git refs migrate --ref-format=<format> [--dry-run]"
+msgid "git refs verify [--strict] [--verbose]"
+msgstr "git refs verify [--strict] [--verbose]"
+
msgid "specify the reference format to convert to"
msgstr "spécifier le format de réference vers lequel convertir"
@@ -10916,6 +10942,12 @@ msgstr "--ref-format=<format> manquant"
msgid "repository already uses '%s' format"
msgstr "le dépôt utilise déjà le format '%s'"
+msgid "enable strict checking"
+msgstr "activer une vérification plus strict"
+
+msgid "'git refs verify' takes no arguments"
+msgstr "'git refs verify' n'accepte aucun argument"
+
msgid ""
"git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
"mirror=<fetch|push>] <name> <url>"
@@ -12370,13 +12402,11 @@ msgstr "la référence n'existe pas"
msgid "failed to look up reference"
msgstr "échec de la recherche de la référence"
-msgid "only show tags (can be combined with branches)"
-msgstr ""
-"afficher seulement les étiquettes (peut être combiné avec les branches)"
+msgid "only show tags (can be combined with --branches)"
+msgstr "afficher seulement les étiquettes (peut être combiné avec --branches)"
-msgid "only show branches (can be combined with tags)"
-msgstr ""
-"afficher seulement les branches (peut être combiné avec les étiquettes)"
+msgid "only show branches (can be combined with --tags)"
+msgstr "afficher seulement les branches (peut être combiné avec --tags)"
msgid "check for reference existence without resolving"
msgstr "vérifier l'existence de la référence sans la résoudre"
@@ -12435,6 +12465,10 @@ msgid "failed to create directory for sparse-checkout file"
msgstr ""
"échec de la création du répertoire pour le fichier d'extraction clairsemée"
+#, c-format
+msgid "unable to fdopen %s"
+msgstr "impossible d'ouvrir %s avec fdopen"
+
msgid "failed to initialize worktree config"
msgstr "échec lors de l'initialisation de la configuration d'arbre de travail"
@@ -12904,8 +12938,8 @@ msgid "couldn't hash object from '%s'"
msgstr "impossible de calculer l'empreinte de l'objet depuis '%s'"
#, c-format
-msgid "unexpected mode %o\n"
-msgstr "mode %o inattendu\n"
+msgid "unexpected mode %o"
+msgstr "mode %o inattendu"
msgid "use the commit stored in the index instead of the submodule HEAD"
msgstr ""
@@ -17628,13 +17662,16 @@ msgstr ""
msgid "Unable to create '%s.lock': %s"
msgstr "Impossible de créer '%s.lock' : %s"
+msgid "unable to create temporary object directory"
+msgstr "impossible de créer un répertoire d'objets temporaire"
+
#, c-format
msgid "could not write loose object index %s"
msgstr "impossible d'écrire l'objet esseulé %s"
#, c-format
-msgid "failed to write loose object index %s\n"
-msgstr "Échec de l'écriture de l'index d'objet esseulé %s\n"
+msgid "failed to write loose object index %s"
+msgstr "Échec de l'écriture de l'index d'objet esseulé %s"
#, c-format
msgid "unexpected line: '%s'"
@@ -18190,6 +18227,17 @@ msgstr "impossible de charger le paquet"
msgid "could not open index for %s"
msgstr "impossible d'ouvrir l'index pour %s"
+#, c-format
+msgid "unable to link '%s' to '%s'"
+msgstr "impossible de lier '%s' à '%s'"
+
+#, c-format
+msgid "failed to clear multi-pack-index at %s"
+msgstr "échec du nettoyage de l'index de multi-paquet à %s"
+
+msgid "cannot write incremental MIDX with bitmap"
+msgstr "impossible d'écrire un MIDX incrémental avec des bitmap"
+
msgid "ignoring existing multi-pack-index; checksum mismatch"
msgstr ""
"index multi-paquet existant ignoré ; non-concordance de la somme de contrôle"
@@ -18219,18 +18267,34 @@ msgstr "aucun fichier paquet à l'index."
msgid "refusing to write multi-pack .bitmap without any objects"
msgstr "refus d'écrire le .bitmap multi-paquet sans aucun objet"
+msgid "unable to create temporary MIDX layer"
+msgstr "impossible de créer une couche MIDX temporaire"
+
msgid "could not write multi-pack bitmap"
msgstr "impossible d'écrire le bitmap multi-paquet"
+msgid "unable to open multi-pack-index chain file"
+msgstr "impossible d'ouvrir le fichier d'index multi-paquet"
+
+msgid "unable to rename new multi-pack-index layer"
+msgstr "impossible d'écrire la nouvelle couche de l'index multi-paquet"
+
msgid "could not write multi-pack-index"
msgstr "échec de l'écriture de l'index de multi-paquet"
+msgid "cannot expire packs from an incremental multi-pack-index"
+msgstr ""
+"impossible d'expirer les paquets dpuis un index multi-paquet incrémental"
+
msgid "Counting referenced objects"
msgstr "Comptage des objets référencés"
msgid "Finding and deleting unreferenced packfiles"
msgstr "Recherche et effacement des fichiers paquets non-référencés"
+msgid "cannot repack an incremental multi-pack-index"
+msgstr "impossible de ré-empaqueter un index multi-paquet"
+
msgid "could not start pack-objects"
msgstr "impossible de démarrer le groupement d'objets"
@@ -18303,6 +18367,28 @@ msgid "multi-pack-index pack names out of order: '%s' before '%s'"
msgstr ""
"index multi-paquet les noms de paquets sont en désordre : '%s' avant '%s'"
+msgid "multi-pack-index chain file too small"
+msgstr "le fichier de chaîne d'index multi-paquet est trop petit"
+
+#, c-format
+msgid "pack count in base MIDX too high: %<PRIuMAX>"
+msgstr "nombre de paquets dans la base MIDX trop haut : %<PRIuMAX>"
+
+#, c-format
+msgid "object count in base MIDX too high: %<PRIuMAX>"
+msgstr "nombre d'objets dans la base MIDX trop haut : %<PRIuMAX>"
+
+#, c-format
+msgid "invalid multi-pack-index chain: line '%s' not a hash"
+msgstr ""
+"chaîne d'index multi-paquet invalide : la ligne '%s' n'est pas une empreinte"
+
+msgid "unable to find all multi-pack index files"
+msgstr "impossible de trouver tous les fichiers d'index multi-paquet"
+
+msgid "invalid MIDX object position, MIDX is likely corrupt"
+msgstr "position d'objet MIDX invalide. MIDX est vraisemblablement corrompu"
+
#, c-format
msgid "bad pack-int-id: %u (%u total packs)"
msgstr "mauvais pack-int-id : %u (%u paquets au total)"
@@ -18321,10 +18407,6 @@ msgstr ""
msgid "multi-pack-index large offset out of bounds"
msgstr "le grand décalage de l'index-multi-paquet est hors limite"
-#, c-format
-msgid "failed to clear multi-pack-index at %s"
-msgstr "échec du nettoyage de l'index de multi-paquet à %s"
-
msgid "multi-pack-index file exists, but failed to parse"
msgstr "le fichier d'index multi-paquet existe mais n'a pu être analysé"
@@ -18534,6 +18616,14 @@ msgid "missing mapping of %s to %s"
msgstr "correspondance manquante entre %s et %s"
#, c-format
+msgid "unable to open %s"
+msgstr "impossible d'ouvrir %s"
+
+#, c-format
+msgid "files '%s' and '%s' differ in contents"
+msgstr "les fichiers '%s' et '%s' diffèrent par leur contenu"
+
+#, c-format
msgid "unable to write file %s"
msgstr "impossible d'écrire le fichier %s"
@@ -18619,10 +18709,6 @@ msgid "%s is not a valid '%s' object"
msgstr "%s n'est pas un objet '%s' valide"
#, c-format
-msgid "unable to open %s"
-msgstr "impossible d'ouvrir %s"
-
-#, c-format
msgid "hash mismatch for %s (expected %s)"
msgstr "incohérence de hachage pour %s (%s attendu)"
@@ -19866,6 +19952,10 @@ msgid "expected format: %%(ahead-behind:<committish>)"
msgstr "format attendu : %%(ahead-behind:<commit-esque>)"
#, c-format
+msgid "expected format: %%(is-base:<committish>)"
+msgstr "format attendu : %%(is-base:<commit-esque>)"
+
+#, c-format
msgid "malformed field name: %.*s"
msgstr "nom de champ malformé %.*s"
@@ -20100,6 +20190,13 @@ msgstr ""
"normale trouvée"
#, c-format
+msgid "cannot open directory %s"
+msgstr "impossible d'ouvrir le répertoire %s"
+
+msgid "Checking references consistency"
+msgstr "Vérification de la cohérence des références"
+
+#, c-format
msgid "refname is dangerous: %s"
msgstr "le nom de réference est dangereux : %s"
@@ -20750,13 +20847,17 @@ msgstr "ne télécharger les méta-données que pour la branche qui sera extrait
msgid "create repository within 'src' directory"
msgstr "Créer un dépôt dans le repertoire 'src'"
+msgid "specify if tags should be fetched during clone"
+msgstr ""
+"spécifier si les étiquettes devraient être récupérées pendant le clonage"
+
msgid ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
msgstr ""
"scalar clone [--single-branch] [--branch <branche-principale>] [--full-"
"clone]\n"
-"\t[--[no-]src] <url> [<enrôlement>]"
+"\t[--[no-]src] [--[no-]tags] <url> [<enrôlement>]"
#, c-format
msgid "cannot deduce worktree name from '%s'"
@@ -20775,6 +20876,10 @@ msgid "could not configure remote in '%s'"
msgstr "impossible de paramétrer le distant dans '%s'"
#, c-format
+msgid "could not disable tags in '%s'"
+msgstr "impossible de désactiver les étiquettes dans '%s'"
+
+#, c-format
msgid "could not configure '%s'"
msgstr "impossible de configurer '%s'"
@@ -21846,6 +21951,10 @@ msgid "failed to stat '%*s%s%s'"
msgstr "échec du stat de '%*s%s%s'"
#, c-format
+msgid "safe.directory '%s' not absolute"
+msgstr "safe.directory '%s' n'est pas absolu"
+
+#, c-format
msgid ""
"detected dubious ownership in repository at '%s'\n"
"%sTo add an exception for this directory, call:\n"
@@ -22320,6 +22429,25 @@ msgstr "jeton"
msgid "command token to send to the server"
msgstr "jeton de commande à envoyer au serveur"
+msgid "unit-test [<options>]"
+msgstr "unit-test [<options>]"
+
+msgid "immediately exit upon the first failed test"
+msgstr "sortir immédiatement sur le premier échec"
+
+msgid "suite[::test]"
+msgstr "suite[::test]"
+
+msgid "run only test suite or individual test <suite[::test]>"
+msgstr ""
+"lancer seulement la suite de test ou le test individuel <suite[::test]>"
+
+msgid "suite"
+msgstr "suite"
+
+msgid "exclude test suite <suite>"
+msgstr "exclure la suite de tests <suite>"
+
#, c-format
msgid "running trailer command '%s' failed"
msgstr "échec de la commande trailer '%s'"
@@ -23526,6 +23654,9 @@ msgstr "'%s.final' contient le courriel composé.\n"
msgid "--dump-aliases incompatible with other options\n"
msgstr "--dump-aliases est incompatible avec d'autres options\n"
+msgid "--dump-aliases and --translate-aliases are mutually exclusive\n"
+msgstr "--dump-aliases et --translate-aliases sont mutuellement exclusifs.\n"
+
msgid ""
"fatal: found configuration options for 'sendmail'\n"
"git-send-email is configured with the sendemail.* options - note the 'e'.\n"
@@ -23830,6 +23961,13 @@ msgstr "%s sauté avec un suffix de sauvegarde '%s'.\n"
msgid "Do you really want to send %s? [y|N]: "
msgstr "Souhaitez-vous réellement envoyer %s ?[y|N] : "
+#~ msgid "revision walk setup failed\n"
+#~ msgstr "échec de la préparation du parcours des révisions\n"
+
+#, c-format
+#~ msgid "unable to parse contact: %s"
+#~ msgstr "impossible d'analyser le contact : %s"
+
#, c-format
#~ msgid "truncating .rej filename to %.*s.rej"
#~ msgstr "troncature du nom de fichier .rej en %.*s.rej"
@@ -23855,10 +23993,6 @@ msgstr "Souhaitez-vous réellement envoyer %s ?[y|N] : "
#~ msgstr "aucune URL configurée pour le dépôt distant '%s'"
#, c-format
-#~ msgid "unable to copy '%s' to '%s'"
-#~ msgstr "impossible de copier '%s' vers '%s'"
-
-#, c-format
#~ msgid "remote '%s' has no configured URL"
#~ msgstr "le distant '%s' n'a pas d'URL configuré"
diff --git a/po/id.po b/po/id.po
index 7131a49e85..fc34140776 100644
--- a/po/id.po
+++ b/po/id.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Git\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2024-07-19 14:03+0700\n"
-"PO-Revision-Date: 2024-07-19 14:25+0700\n"
+"POT-Creation-Date: 2024-10-04 08:33+0700\n"
+"PO-Revision-Date: 2024-10-04 08:52+0700\n"
"Last-Translator: Bagas Sanjaya <bagasdotme@gmail.com>\n"
"Language-Team: Indonesian\n"
"Language: id\n"
@@ -651,18 +651,20 @@ msgid ""
"/ - 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\n"
+"p - print the current hunk, 'P' to use the pager\n"
"? - print help\n"
msgstr ""
-"j - biarkan bingkah ini, lihat bingkah berikutnya yang belum diputuskan\n"
-"J - biarkan bingkah ini, lihat bingkah berikutnya\n"
-"k - biarkan bingkah ini, lihat bingkah sebelumnya yang belum diputuskan\n"
-"K - biarkan bingkah ini, lihat bingkah sebelumnya\n"
+"j - biarkan bingkah ini tak diputuskan, lihat bingkah berikutnya yang belum "
+"diputuskan\n"
+"J - biarkan bingkah ini tak diputuskan, lihat bingkah berikutnya\n"
+"k - biarkan bingkah ini tak diputuskan, lihat bingkah sebelumnya yang belum "
+"diputuskan\n"
+"K - biarkan bingkah ini tak diputuskan, lihat bingkah sebelumnya\n"
"g - pilih satu bingkah untuk dikunjungi\n"
"/ - cari satu bingkah yang cocok dengan regex yang diberikan\n"
"s - belah bingkah saat ini ke dalam bingkah yang lebih kecil\n"
"e - sunting bingkah saat ini secara manual\n"
-"p - lihat bingkah saat ini\n"
+"p - lihat bingkah saat ini, 'P' untuk menggunakan pager\n"
"? - lihat bantuan\n"
#: add-patch.c
@@ -1502,6 +1504,18 @@ msgstr "juga terapkan tambalan (gunakan dengan --stat/--summary/--check)"
msgid "attempt three-way merge, fall back on normal patch if that fails"
msgstr "coba penggabungan tiga arah, mundur ke penambalan normal jika gagal"
+#: apply.c builtin/merge-file.c
+msgid "for conflicts, use our version"
+msgstr "untuk konflik, gunakan versi kami"
+
+#: apply.c builtin/merge-file.c
+msgid "for conflicts, use their version"
+msgstr "untuk konflik, gunakan versi mereka"
+
+#: apply.c builtin/merge-file.c
+msgid "for conflicts, use a union version"
+msgstr "untuk konflik, gunakan versi bersatu"
+
#: apply.c
msgid "build a temporary index based on embedded index information"
msgstr "bangun sebuah indeks sementara berdasarkan informasi indeks tertanam"
@@ -1563,6 +1577,10 @@ msgstr "tambahkan <akar> di depan semua nama berkas"
msgid "don't return error for empty patches"
msgstr "jangan kembalikan kesalahan untuk tambalan kosong"
+#: apply.c
+msgid "--ours, --theirs, and --union require --3way"
+msgstr "--ours, --theirs, dan --union memerlukan --3way"
+
#: archive-tar.c archive-zip.c
#, c-format
msgid "cannot stream blob %s"
@@ -1652,6 +1670,10 @@ msgstr "bukan nama objek valid: %s"
msgid "not a tree object: %s"
msgstr "bukan objek pohon: %s"
+#: archive.c builtin/clone.c
+msgid "unable to checkout working tree"
+msgstr "tidak dapat men-checkout pohon kerja"
+
#: archive.c
#, c-format
msgid "File not found: %s"
@@ -1768,7 +1790,7 @@ msgstr "opsi `%s' butuh '%s'"
msgid "Unexpected option --output"
msgstr "Opsi --output tak diharapkan"
-#: archive.c
+#: archive.c t/unit-tests/unit-test.c
#, c-format
msgid "extra command line parameter '%s'"
msgstr "parameter konfigurasi tambahan: '%s'"
@@ -1840,7 +1862,7 @@ msgid "unable to stat '%s'"
msgstr "tidak dapat men-stat '%s'"
#: bisect.c builtin/cat-file.c builtin/index-pack.c builtin/notes.c
-#: builtin/pack-objects.c combine-diff.c rerere.c
+#: builtin/pack-objects.c combine-diff.c object-file.c rerere.c
#, c-format
msgid "unable to read %s"
msgstr "tidak dapat membaca %s"
@@ -1978,7 +2000,7 @@ msgid "--reverse and --first-parent together require specified latest commit"
msgstr ""
"--reverse dan --first-parent bersama-sama butuh komit terbaru yang disebutkan"
-#: blame.c builtin/commit.c builtin/log.c builtin/merge.c
+#: blame.c builtin/bisect.c builtin/commit.c builtin/log.c builtin/merge.c
#: builtin/pack-objects.c builtin/shortlog.c midx-write.c pack-bitmap.c
#: remote.c sequencer.c submodule.c
msgid "revision walk setup failed"
@@ -2239,7 +2261,7 @@ msgstr "latihan"
#: builtin/add.c builtin/check-ignore.c builtin/commit.c
#: builtin/count-objects.c builtin/fsck.c builtin/log.c builtin/mv.c
-#: builtin/read-tree.c
+#: builtin/read-tree.c builtin/refs.c
msgid "be verbose"
msgstr "jadi berkata-kata"
@@ -2738,7 +2760,7 @@ msgstr "n"
#: builtin/am.c builtin/branch.c builtin/bugreport.c builtin/cat-file.c
#: builtin/clone.c builtin/diagnose.c builtin/for-each-ref.c builtin/init-db.c
#: builtin/ls-files.c builtin/ls-tree.c builtin/refs.c builtin/replace.c
-#: builtin/tag.c builtin/verify-tag.c
+#: builtin/submodule--helper.c builtin/tag.c builtin/verify-tag.c
msgid "format"
msgstr "format"
@@ -3037,10 +3059,6 @@ msgstr ""
"Opsi yang didukung adalah: --term-good|--term-old dan --term-bad|--term-new."
#: builtin/bisect.c
-msgid "revision walk setup failed\n"
-msgstr "setup jalan revisi gagal\n"
-
-#: builtin/bisect.c
#, c-format
msgid "could not open '%s' for appending"
msgstr "tidak dapat membuka '%s' untuk menambahkan"
@@ -4282,9 +4300,16 @@ msgid "also read contacts from stdin"
msgstr "juga baca kontak dari masukan standar"
#: builtin/check-mailmap.c
-#, c-format
-msgid "unable to parse contact: %s"
-msgstr "tidak dapat menguraikan kontak: %s"
+msgid "read additional mailmap entries from file"
+msgstr "baca entri mailmap tambahan dari berkas"
+
+#: builtin/check-mailmap.c
+msgid "blob"
+msgstr "blob"
+
+#: builtin/check-mailmap.c
+msgid "read additional mailmap entries from blob"
+msgstr "baca entri mailmap tambahan dari blob"
#: builtin/check-mailmap.c
msgid "no contacts specified"
@@ -4711,6 +4736,11 @@ msgstr "'%s' tidak dapat digunakan dengan mengganti cabang"
#: builtin/checkout.c
#, c-format
+msgid "'%s' needs the paths to check out"
+msgstr "'%s' butuh jalur untuk di-checkout"
+
+#: builtin/checkout.c
+#, c-format
msgid "'%s' cannot be used with '%s'"
msgstr "'%s' tidak dapat digunakan dengan '%s'"
@@ -5178,7 +5208,7 @@ msgstr "direktori git"
msgid "separate git dir from working tree"
msgstr "pisahkan direktori git dari pohon kerja"
-#: builtin/clone.c builtin/init-db.c
+#: builtin/clone.c builtin/init-db.c builtin/submodule--helper.c
msgid "specify the reference format to use"
msgstr "sebutkan format referensi untuk digunakan"
@@ -5276,7 +5306,7 @@ msgstr "gagal membuat tautan '%s'"
msgid "failed to copy file to '%s'"
msgstr "gagal menyalin berkas ke '%s'"
-#: builtin/clone.c
+#: builtin/clone.c refs/files-backend.c
#, c-format
msgid "failed to iterate over '%s'"
msgstr "gagal iterasi pada '%s'"
@@ -5319,10 +5349,6 @@ msgid "remote HEAD refers to nonexistent ref, unable to checkout"
msgstr "HEAD remote merujuk pada ref yang tidak ada, tidak dapat men-checkout"
#: builtin/clone.c
-msgid "unable to checkout working tree"
-msgstr "tidak dapat men-checkout pohon kerja"
-
-#: builtin/clone.c
msgid "unable to write parameters to config file"
msgstr "tidak dapat menulis parameter ke berkas konfigurasi"
@@ -5342,7 +5368,8 @@ msgstr "Terlalu banyak argumen."
msgid "You must specify a repository to clone."
msgstr "Anda harus sebutkan repositori untuk diklon."
-#: builtin/clone.c builtin/init-db.c builtin/refs.c setup.c
+#: builtin/clone.c builtin/init-db.c builtin/refs.c builtin/submodule--helper.c
+#: setup.c
#, c-format
msgid "unknown ref storage format '%s'"
msgstr "format penyimpanan referensi tidak dikenal '%s'"
@@ -5687,7 +5714,7 @@ msgstr "git commit-tree: gagal membaca"
msgid ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]\n"
" [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|"
-"reword):]<commit>)]\n"
+"reword):]<commit>]\n"
" [-F <file> | -m <msg>] [--reset-author] [--allow-empty]\n"
" [--allow-empty-message] [--no-verify] [-e] [--author=<author>]\n"
" [--date=<date>] [--cleanup=<mode>] [--[no-]status]\n"
@@ -5697,7 +5724,7 @@ msgid ""
msgstr ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]\n"
" [--dry-run] [(-c | -C | --squash) <komit> | --fixup [(amend|"
-"reword):]<komit>)]\n"
+"reword):]<komit>]\n"
" [-F <berkas> | -m <pesan>] [--reset-author] [--allow-empty]\n"
" [--allow-empty-message] [--no-verify] [-e] [--"
"author=<pengarang>]\n"
@@ -6304,12 +6331,10 @@ msgstr "git config list [<opsi berkas>] [<opsi tampilan>] [--includes]"
#: builtin/config.c
msgid ""
"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
-"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
-"<name>"
+"regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name>"
msgstr ""
-"git config get [<opsi berkas>] [<opsi tampilan] [--includes] [--all] [--"
-"regexp=<regexp> [--value=<nilai>] [--fixed-value] [--default=<default>] "
-"<nama>"
+"git config get [<opsi berkas>] [<opsi tampilan>] [--includes] [--all] [--"
+"regexp] [--value=<nilai>] [--fixed-value] [--default=<default>] <nama>"
#: builtin/config.c
msgid ""
@@ -6345,6 +6370,16 @@ msgstr "git config [<opsi berkas>] --get-colorbool <nama> [<stdout-is-tty>]"
#: builtin/config.c
msgid ""
+"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
+"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
+"<name>"
+msgstr ""
+"git config get [<opsi berkas>] [<opsi tampilan] [--includes] [--all] [--"
+"regexp=<regexp> [--value=<nilai>] [--fixed-value] [--default=<default>] "
+"<nama>"
+
+#: builtin/config.c
+msgid ""
"git config set [<file-option>] [--type=<type>] [--comment=<message>] [--all] "
"[--value=<value>] [--fixed-value] <name> <value>"
msgstr ""
@@ -7372,8 +7407,8 @@ msgstr ""
#: builtin/fetch.c
#, c-format
-msgid "%s did not send all necessary objects\n"
-msgstr "%s tidak mengirim semua objek yang diperlukan\n"
+msgid "%s did not send all necessary objects"
+msgstr "%s tidak mengirim semua objek yang diperlukan"
#: builtin/fetch.c
#, c-format
@@ -7419,8 +7454,8 @@ msgstr "opsi \"%s\" nilai \"%s\" tidak valid untuk %s"
#: builtin/fetch.c
#, c-format
-msgid "option \"%s\" is ignored for %s\n"
-msgstr "opsi \"%s\" diabaikan untuk %s\n"
+msgid "option \"%s\" is ignored for %s"
+msgstr "opsi \"%s\" diabaikan untuk %s"
#: builtin/fetch.c object-file.c
#, c-format
@@ -8277,6 +8312,10 @@ msgid "enable auto-gc mode"
msgstr "aktifkan mode gc otomatis"
#: builtin/gc.c
+msgid "perform garbage collection in the background"
+msgstr "lakukan pengumpulan sampah di latar belakang"
+
+#: builtin/gc.c
msgid "force running gc even if there may be another gc running"
msgstr "paksa jalankan gc bahkan jika mungkin ada gc lain yang berjalan"
@@ -8397,6 +8436,10 @@ msgid "run tasks based on the state of the repository"
msgstr "jalankan tugas berdasarkan keadaan repositori"
#: builtin/gc.c
+msgid "perform maintenance in the background"
+msgstr "lakukan pemeliharaan di latar belakang"
+
+#: builtin/gc.c
msgid "frequency"
msgstr "frekuensi"
@@ -9503,10 +9546,6 @@ msgid "Final output: %d %s\n"
msgstr "Keluaran terakhir: %d %s\n"
#: builtin/log.c
-msgid "unable to create temporary object directory"
-msgstr "tidak dapat membuat direktori objek sementara"
-
-#: builtin/log.c
#, c-format
msgid "git show %s: bad file"
msgstr "git show %s: berkas jelek"
@@ -10246,18 +10285,6 @@ msgstr "gunakan penggabungan berdasarkan diff3"
msgid "use a zealous diff3 based merge"
msgstr "gunakan penggabungan berdasarkan diff3 yang bersemangat"
-#: builtin/merge-file.c
-msgid "for conflicts, use our version"
-msgstr "untuk konflik, gunakan versi kami"
-
-#: builtin/merge-file.c
-msgid "for conflicts, use their version"
-msgstr "untuk konflik, gunakan versi mereka"
-
-#: builtin/merge-file.c
-msgid "for conflicts, use a union version"
-msgstr "untuk konflik, gunakan versi bersatu"
-
#: builtin/merge-file.c diff.c
msgid "<algorithm>"
msgstr "<algoritma>"
@@ -10553,7 +10580,7 @@ msgstr "Tidak dapat menulis indeks."
msgid "Not handling anything other than two heads merge."
msgstr "Tak tangani apapun selain penggabungan dua kepala."
-#: builtin/merge.c
+#: builtin/merge.c builtin/sparse-checkout.c
#, c-format
msgid "unable to write %s"
msgstr "tidak dapat menulis %s"
@@ -10853,6 +10880,10 @@ msgid "write multi-pack bitmap"
msgstr "tulis bitmap multipak"
#: builtin/multi-pack-index.c
+msgid "write a new incremental MIDX"
+msgstr "tulis MIDX tambahan baru"
+
+#: builtin/multi-pack-index.c
msgid "write multi-pack index containing only given indexes"
msgstr "tulis indeks multipak yang hanya berisi indeks yang diberikan"
@@ -13337,6 +13368,10 @@ msgid "git refs migrate --ref-format=<format> [--dry-run]"
msgstr "git refs migrate --ref-format=<format> [--dry-run]"
#: builtin/refs.c
+msgid "git refs verify [--strict] [--verbose]"
+msgstr "git refs verify [--strict] [---verbose]"
+
+#: builtin/refs.c
msgid "specify the reference format to convert to"
msgstr "sebutkan format referensi untuk dikonversi"
@@ -13353,6 +13388,14 @@ msgstr "--ref-format=<format> hilang"
msgid "repository already uses '%s' format"
msgstr "repositori telah menggunakan format '%s'"
+#: builtin/refs.c
+msgid "enable strict checking"
+msgstr "aktifkan pemeriksaan lebih ketat"
+
+#: builtin/refs.c
+msgid "'git refs verify' takes no arguments"
+msgstr "'git refs verify' tidak mengambil argumen"
+
#: builtin/remote.c
msgid ""
"git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
@@ -15156,12 +15199,12 @@ msgid "failed to look up reference"
msgstr "gagal mencari referensi"
#: builtin/show-ref.c
-msgid "only show tags (can be combined with branches)"
-msgstr "hanya perlihatkan tag (bisa dikombinasikan dengan cabang)"
+msgid "only show tags (can be combined with --branches)"
+msgstr "hanya perlihatkan tag (bisa dikombinasikan dengan --branches)"
#: builtin/show-ref.c
-msgid "only show branches (can be combined with tags)"
-msgstr "hanya perlihatkan cabang (bisa dikombinasikan dengan tag)"
+msgid "only show branches (can be combined with --tags)"
+msgstr "hanya perlihatkan cabang (bisa dikombinasikan dengan --tags)"
#: builtin/show-ref.c
msgid "check for reference existence without resolving"
@@ -15228,6 +15271,11 @@ msgid "failed to create directory for sparse-checkout file"
msgstr "gagal membuat direktori untuk berkas sparse-checkout"
#: builtin/sparse-checkout.c
+#, c-format
+msgid "unable to fdopen %s"
+msgstr "tidak dapat membuka (fdopen) %s"
+
+#: builtin/sparse-checkout.c
msgid "failed to initialize worktree config"
msgstr "gagal menginisialisasi konfigurasi pohon kerja"
@@ -15797,8 +15845,8 @@ msgstr "tidak dapat hash objek dari '%s'"
#: builtin/submodule--helper.c
#, c-format
-msgid "unexpected mode %o\n"
-msgstr "mode tidak diharapkan %o\n"
+msgid "unexpected mode %o"
+msgstr "mode tidak diharapkan %o"
#: builtin/submodule--helper.c
msgid "use the commit stored in the index instead of the submodule HEAD"
@@ -18519,7 +18567,7 @@ msgstr "gagal menulis jumlah id grafik dasar yang benar"
msgid "unable to create temporary graph layer"
msgstr "tidak dapat membuat lapisan grafik dasar"
-#: commit-graph.c
+#: commit-graph.c midx-write.c
#, c-format
msgid "unable to adjust shared permissions for '%s'"
msgstr "tidak dapat menyesuaikan perizinan berbagi untuk '%s'"
@@ -19894,7 +19942,7 @@ msgstr ""
msgid "Unknown value for 'diff.submodule' config variable: '%s'"
msgstr "Nilai tidak dikenal untuk variabel konfigurasi 'diff.submodule': '%s'"
-#: diff.c transport.c
+#: diff.c merge-recursive.c transport.c
#, c-format
msgid "unknown value for config '%s': %s"
msgstr "nilai tidak dikenal untuk konfigurasi '%s': %s"
@@ -21529,6 +21577,10 @@ msgstr ""
msgid "Unable to create '%s.lock': %s"
msgstr "Tidak dapat membuat '%s.lock': %s"
+#: log-tree.c
+msgid "unable to create temporary object directory"
+msgstr "tidak dapat membuat direktori objek sementara"
+
#: loose.c
#, c-format
msgid "could not write loose object index %s"
@@ -21536,8 +21588,8 @@ msgstr "tidak dapat menulis indeks objek longgar %s"
#: loose.c
#, c-format
-msgid "failed to write loose object index %s\n"
-msgstr "gagal menulis indeks objek longgar %s\n"
+msgid "failed to write loose object index %s"
+msgstr "gagal menulis indeks objek longgar %s"
#: ls-refs.c
#, c-format
@@ -22201,6 +22253,20 @@ msgid "could not open index for %s"
msgstr "tidak dapat membuka indeks untuk %s"
#: midx-write.c
+#, c-format
+msgid "unable to link '%s' to '%s'"
+msgstr "tidak dapat mentautkan '%s' ke '%s'"
+
+#: midx-write.c midx.c
+#, c-format
+msgid "failed to clear multi-pack-index at %s"
+msgstr "gagal membersihkan indeks multipak pada %s"
+
+#: midx-write.c
+msgid "cannot write incremental MIDX with bitmap"
+msgstr "tidak dapat menulis MIDX tambahan dengan bitmap"
+
+#: midx-write.c
msgid "ignoring existing multi-pack-index; checksum mismatch"
msgstr "abaikan indeks multipak yang sudah ada; checksum tidak cocok"
@@ -22237,14 +22303,30 @@ msgid "refusing to write multi-pack .bitmap without any objects"
msgstr "menolak menulis .bitmap multipak tanpa objek apapun"
#: midx-write.c
+msgid "unable to create temporary MIDX layer"
+msgstr "tidak dapat membuat lapisan MIDX sementara"
+
+#: midx-write.c
msgid "could not write multi-pack bitmap"
msgstr "tidak dapat menulis bitmap multipak"
#: midx-write.c
+msgid "unable to open multi-pack-index chain file"
+msgstr "tidak dapat membuka berkas rantai indeks multipak"
+
+#: midx-write.c
+msgid "unable to rename new multi-pack-index layer"
+msgstr "tidak dapat menamai ulang lapisan indeks multipak baru"
+
+#: midx-write.c
msgid "could not write multi-pack-index"
msgstr "gagal menulis indeks multipak"
#: midx-write.c
+msgid "cannot expire packs from an incremental multi-pack-index"
+msgstr "tidak dapat mengkadaluarsakan pak dari indeks multipak tambahan"
+
+#: midx-write.c
msgid "Counting referenced objects"
msgstr "Menghitung objek tereferensi"
@@ -22253,6 +22335,10 @@ msgid "Finding and deleting unreferenced packfiles"
msgstr "Mencari dan menghapus berkas pak tak tereferensi"
#: midx-write.c
+msgid "cannot repack an incremental multi-pack-index"
+msgstr "tidak dapat mempak ulang indeks multipak tambahan"
+
+#: midx-write.c
msgid "could not start pack-objects"
msgstr "tidak dapat memulai pack-objects"
@@ -22329,6 +22415,33 @@ msgid "multi-pack-index pack names out of order: '%s' before '%s'"
msgstr "nama pak indeks multipak tidak berurutan: '%s' sebelum '%s'"
#: midx.c
+msgid "multi-pack-index chain file too small"
+msgstr "berkas rantai indeks multipak terlalu kecil"
+
+#: midx.c
+#, c-format
+msgid "pack count in base MIDX too high: %<PRIuMAX>"
+msgstr "jumlah pak pada MIDX dasarterlalu tinggi: %<PRIuMAX>"
+
+#: midx.c
+#, c-format
+msgid "object count in base MIDX too high: %<PRIuMAX>"
+msgstr "jumlah object pada MIDX dasar terlalu tinggi: %<PRIuMAX>"
+
+#: midx.c
+#, c-format
+msgid "invalid multi-pack-index chain: line '%s' not a hash"
+msgstr "rantai indeks multipak tidak valid: baris '%s' bukan suatu hash"
+
+#: midx.c
+msgid "unable to find all multi-pack index files"
+msgstr "tidak dapat menemukan semua berkas indeks multipak"
+
+#: midx.c
+msgid "invalid MIDX object position, MIDX is likely corrupt"
+msgstr "posisi objek MIDX tidak valid, MIDX mungkin rusak"
+
+#: midx.c
#, c-format
msgid "bad pack-int-id: %u (%u total packs)"
msgstr "pack-int-id jelek: %u (total pak %u)"
@@ -22351,11 +22464,6 @@ msgid "multi-pack-index large offset out of bounds"
msgstr "offset indeks multipak besar di luar jangkauan"
#: midx.c
-#, c-format
-msgid "failed to clear multi-pack-index at %s"
-msgstr "gagal membersihkan indeks multipak pada %s"
-
-#: midx.c
msgid "multi-pack-index file exists, but failed to parse"
msgstr "berkas indeks multipak ada, tetapi gagal diurai"
@@ -22616,6 +22724,16 @@ msgstr "pemetaan %s ke %s hilang"
#: object-file.c
#, c-format
+msgid "unable to open %s"
+msgstr "tidak dapat membuka %s"
+
+#: object-file.c
+#, c-format
+msgid "files '%s' and '%s' differ in contents"
+msgstr "berkas '%s' dan '%s' berbeda konteks"
+
+#: object-file.c
+#, c-format
msgid "unable to write file %s"
msgstr "tidak dapat menulis berkas %s"
@@ -22724,11 +22842,6 @@ msgstr "%s bukan sebuah objek '%s' valid"
#: object-file.c
#, c-format
-msgid "unable to open %s"
-msgstr "tidak dapat membuka %s"
-
-#: object-file.c
-#, c-format
msgid "hash mismatch for %s (expected %s)"
msgstr "hash tidak cocok untuk %s (diharapkan %s)"
@@ -24215,6 +24328,11 @@ msgstr "format yang diharapkan: %%(ahead-behind:<mirip komit>)"
#: ref-filter.c
#, c-format
+msgid "expected format: %%(is-base:<committish>)"
+msgstr "format yang diharapkan: %%(is-base:<mirip komit>)"
+
+#: ref-filter.c
+#, c-format
msgid "malformed field name: %.*s"
msgstr "nama bidang rusak: %.*s"
@@ -24502,6 +24620,15 @@ msgstr ""
"tidak dapat mengunci referensi '%s': diharapkan referensi simbolik dengan "
"target '%s': tetapi bukan referensi reguler"
+#: refs/files-backend.c
+#, c-format
+msgid "cannot open directory %s"
+msgstr "tidak dapat membuka direktori %s"
+
+#: refs/files-backend.c
+msgid "Checking references consistency"
+msgstr "Memeriksa konsistensi referensi"
+
#: refs/reftable-backend.c
#, c-format
msgid "refname is dangerous: %s"
@@ -25290,12 +25417,16 @@ msgid "create repository within 'src' directory"
msgstr "salin repositori di dalam direktori 'src'"
#: scalar.c
+msgid "specify if tags should be fetched during clone"
+msgstr "rincikan jikan tag hendak diambil selama kloning"
+
+#: scalar.c
msgid ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
msgstr ""
"scalar clone [--single-branch] [--branch <cabang utama>] [--full-clone]\n"
-"\t[--[-no-]src] <url> [<pendaftaran>]"
+"\t[--[-no-]src] [--[no-]tags] <url> [<pendaftaran>]"
#: scalar.c
#, c-format
@@ -25319,6 +25450,11 @@ msgstr "tidak dapat menyetel remote di '%s'"
#: scalar.c
#, c-format
+msgid "could not disable tags in '%s'"
+msgstr "tidak dapat menonaktifkan tag di '%s'"
+
+#: scalar.c
+#, c-format
msgid "could not configure '%s'"
msgstr "tidak dapat menyetel '%s'"
@@ -26608,6 +26744,11 @@ msgstr "gagal men-stat '%*s%s%s'"
#: setup.c
#, c-format
+msgid "safe.directory '%s' not absolute"
+msgstr "safe.directory '%s' bukan mutlak"
+
+#: setup.c
+#, c-format
msgid ""
"detected dubious ownership in repository at '%s'\n"
"%sTo add an exception for this directory, call:\n"
@@ -27181,6 +27322,30 @@ msgstr "token"
msgid "command token to send to the server"
msgstr "token perintah untuk dikirim ke peladen"
+#: t/unit-tests/unit-test.c
+msgid "unit-test [<options>]"
+msgstr "unit-test [<opsi>]"
+
+#: t/unit-tests/unit-test.c
+msgid "immediately exit upon the first failed test"
+msgstr "langsung keluar pada saat kegagalan tes pertama"
+
+#: t/unit-tests/unit-test.c
+msgid "suite[::test]"
+msgstr "suite[::test]"
+
+#: t/unit-tests/unit-test.c
+msgid "run only test suite or individual test <suite[::test]>"
+msgstr "hanya jalankan rangkaian tes atau tes individu <suite[::test]>"
+
+#: t/unit-tests/unit-test.c
+msgid "suite"
+msgstr "rangkaian"
+
+#: t/unit-tests/unit-test.c
+msgid "exclude test suite <suite>"
+msgstr "kecualikan rangkaian tes <rangkaian>"
+
#: trailer.c
#, c-format
msgid "running trailer command '%s' failed"
@@ -28630,6 +28795,10 @@ msgid "--dump-aliases incompatible with other options\n"
msgstr "--dump-aliases tidak kompatibel dengan opsi yang lain\n"
#: git-send-email.perl
+msgid "--dump-aliases and --translate-aliases are mutually exclusive\n"
+msgstr "--dump-aliases dan --translate-aliases saling eksklusif\n"
+
+#: git-send-email.perl
msgid ""
"fatal: found configuration options for 'sendmail'\n"
"git-send-email is configured with the sendemail.* options - note the 'e'.\n"
diff --git a/po/sv.po b/po/sv.po
index 4e05168183..973dd940ac 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -5,10 +5,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: git 2.46.0\n"
+"Project-Id-Version: git 2.47.0\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2024-07-20 21:56+0100\n"
-"PO-Revision-Date: 2024-07-21 14:53+0100\n"
+"POT-Creation-Date: 2024-09-19 02:06+0000\n"
+"PO-Revision-Date: 2024-09-28 15:45+0100\n"
"Last-Translator: Peter Krefting <peter@softwolves.pp.se>\n"
"Language-Team: Svenska <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
@@ -542,7 +542,7 @@ msgid ""
"/ - 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\n"
+"p - print the current hunk, 'P' to use the pager\n"
"? - print help\n"
msgstr ""
"j - lämna stycket obestämt, se nästa obestämda stycke\n"
@@ -553,7 +553,7 @@ msgstr ""
"/ - sök efter stycke som motsvarar angivet reguljärt uttryck\n"
"s - dela aktuellt stycke i mindre styckens\n"
"e - redigera aktuellt stycke manuellt\n"
-"p - visa aktuellt stycke\n"
+"p - visa aktuellt stycke, â€P†för att använda bläddrare\n"
"? - visa hjälp\n"
#, c-format
@@ -664,7 +664,7 @@ msgstr ""
"som lämpligt för att ange lösning och checka in."
msgid "Exiting because of an unresolved conflict."
-msgstr "Avslutar på grund av olöst konflikgt."
+msgstr "Avslutar på grund av olöst konflikt."
msgid "You have not concluded your merge (MERGE_HEAD exists)."
msgstr "Du har inte avslutat sammanslagningen (MERGE_HEAD finns)."
@@ -1229,6 +1229,15 @@ msgstr ""
"försök en trevägssammanslagning, fall tillbaka på normal patch om det "
"misslyckas"
+msgid "for conflicts, use our version"
+msgstr "för konflikter, använd vår version"
+
+msgid "for conflicts, use their version"
+msgstr "för konflikter, använd deras version"
+
+msgid "for conflicts, use a union version"
+msgstr "för konflikter, använd en förenad version"
+
msgid "build a temporary index based on embedded index information"
msgstr "bygg ett temporärt index baserat på inbyggd indexinformation"
@@ -1274,6 +1283,9 @@ msgstr "lägg till <rot> i alla filnamn"
msgid "don't return error for empty patches"
msgstr "ge inte någon felkod för tomma patchar"
+msgid "--ours, --theirs, and --union require --3way"
+msgstr "--ours, --theirs, och --union kräver --3way"
+
#, c-format
msgid "cannot stream blob %s"
msgstr "kan inte strömma blob:en %s"
@@ -2440,9 +2452,6 @@ msgstr ""
"ogiltigt argument %s för â€git bisect termsâ€.\n"
"Flaggor som stöds är: --term-good|--term-old och --term-bad|--term-new."
-msgid "revision walk setup failed\n"
-msgstr "misslyckades starta revisionstraversering\n"
-
#, c-format
msgid "could not open '%s' for appending"
msgstr "kunde inte öppna â€%s†för tillägg"
@@ -3414,9 +3423,14 @@ msgstr "git check-mailmap [<flaggor>] <kontakt>..."
msgid "also read contacts from stdin"
msgstr "läs även kontakter från standard in"
-#, c-format
-msgid "unable to parse contact: %s"
-msgstr "kan inte tolka kontakt: %s"
+msgid "read additional mailmap entries from file"
+msgstr "läs ytterligare mailmap-poster från fil"
+
+msgid "blob"
+msgstr "blob"
+
+msgid "read additional mailmap entries from blob"
+msgstr "läs ytterligare mailmap-poster från blob"
msgid "no contacts specified"
msgstr "inga kontakter angavs"
@@ -3765,6 +3779,10 @@ msgid "'%s' cannot be used with switching branches"
msgstr "â€%s†kan inte användas vid byte av gren"
#, c-format
+msgid "'%s' needs the paths to check out"
+msgstr "â€%s†behöver sökvägar att checka ut"
+
+#, c-format
msgid "'%s' cannot be used with '%s'"
msgstr "â€%s†kan inte användas med â€%sâ€"
@@ -4521,7 +4539,7 @@ msgstr "git commit-tree: misslyckades läsa"
msgid ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]\n"
" [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|"
-"reword):]<commit>)]\n"
+"reword):]<commit>]\n"
" [-F <file> | -m <msg>] [--reset-author] [--allow-empty]\n"
" [--allow-empty-message] [--no-verify] [-e] [--author=<author>]\n"
" [--date=<date>] [--cleanup=<mode>] [--[no-]status]\n"
@@ -4531,7 +4549,7 @@ msgid ""
msgstr ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u<läge>] [--amend]\n"
" [--dry-run] [(-c | -C | --squash) <incheckning> | --fixup [(amend|"
-"reword):]<incheckning>)]\n"
+"reword):]<incheckning>]\n"
" [-F <fil> | -m <medd>] [--reset-author] [--allow-empty]\n"
" [--allow-empty-message] [--no-verify] [-e] [--"
"author=<författare>]\n"
@@ -5022,12 +5040,10 @@ msgstr "git config list [<filflagga>] [<visningsflagga>] [--includes]"
msgid ""
"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
-"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
-"<name>"
+"regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name>"
msgstr ""
"git config get [<filflagga>] [<visningsflagga>] [--includes] [--all] [--"
-"regexp=<reguttr>] [--value=<värde>] [--fixed-value] [--default=<förval>] "
-"<namn>"
+"regexp] [--value=<värde>] [--fixed-value] [--default=<förval>] <namn>"
msgid ""
"git config set [<file-option>] [--type=<type>] [--all] [--value=<value>] [--"
@@ -5056,6 +5072,15 @@ msgid "git config [<file-option>] --get-colorbool <name> [<stdout-is-tty>]"
msgstr "git config [<filflagga>] --get-colorbool <namn> [<stdout-är-tty>]"
msgid ""
+"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
+"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
+"<name>"
+msgstr ""
+"git config get [<filflagga>] [<visningsflagga>] [--includes] [--all] [--"
+"regexp=<reguttr>] [--value=<värde>] [--fixed-value] [--default=<förval>] "
+"<namn>"
+
+msgid ""
"git config set [<file-option>] [--type=<type>] [--comment=<message>] [--all] "
"[--value=<value>] [--fixed-value] <name> <value>"
msgstr ""
@@ -5853,8 +5878,8 @@ msgstr ""
"false†för att undvika testet\n"
#, c-format
-msgid "%s did not send all necessary objects\n"
-msgstr "%s sände inte alla nödvändiga objekt\n"
+msgid "%s did not send all necessary objects"
+msgstr "%s sände inte alla nödvändiga objekt"
#, c-format
msgid "rejected %s because shallow roots are not allowed to be updated"
@@ -5891,8 +5916,8 @@ msgid "option \"%s\" value \"%s\" is not valid for %s"
msgstr "flaggan â€%s†med värdet â€%s†är inte giltigt för %s"
#, c-format
-msgid "option \"%s\" is ignored for %s\n"
-msgstr "flaggan â€%s†ignoreras för %s\n"
+msgid "option \"%s\" is ignored for %s"
+msgstr "flaggan â€%s†ignoreras för %s"
#, c-format
msgid "%s is not a valid object"
@@ -6568,6 +6593,9 @@ msgstr "var mer grundlig (ökar körtiden)"
msgid "enable auto-gc mode"
msgstr "aktivera auto-gc-läge"
+msgid "perform garbage collection in the background"
+msgstr "utför skräpsamling i bakgrunden"
+
msgid "force running gc even if there may be another gc running"
msgstr "tvinga gc-körning även om en annan gc kanske körs"
@@ -6664,6 +6692,9 @@ msgstr "uppgiften â€%s†kan inte väljas flera gÃ¥nger"
msgid "run tasks based on the state of the repository"
msgstr "kör uppgifter baserad på arkivets tillstånd"
+msgid "perform maintenance in the background"
+msgstr "utför underhåll i bakgrunden"
+
msgid "frequency"
msgstr "frekvens"
@@ -7521,9 +7552,6 @@ msgstr "-L<intervall>:<fil> kan inte användas med sökvägsspecifikation"
msgid "Final output: %d %s\n"
msgstr "Slututdata: %d %s\n"
-msgid "unable to create temporary object directory"
-msgstr "kan inte skapa temporär objektkatalog"
-
#, c-format
msgid "git show %s: bad file"
msgstr "git show %s: felaktig fil"
@@ -8080,15 +8108,6 @@ msgstr "använd diff3-baserad sammanslagning"
msgid "use a zealous diff3 based merge"
msgstr "använd nitisk diff3-baserad sammanslagning"
-msgid "for conflicts, use our version"
-msgstr "för konflikter, använd vår version"
-
-msgid "for conflicts, use their version"
-msgstr "för konflikter, använd deras version"
-
-msgid "for conflicts, use a union version"
-msgstr "för konflikter, använd en förenad version"
-
msgid "<algorithm>"
msgstr "<algoritm>"
@@ -8553,6 +8572,9 @@ msgstr "paket att återanvända vid beräkning av multipaketsbitkarta"
msgid "write multi-pack bitmap"
msgstr "skriv flerpaketsbitkarta"
+msgid "write a new incremental MIDX"
+msgstr "skriv en ny inkrementell MIDX"
+
msgid "write multi-pack index containing only given indexes"
msgstr "skriv flerpaketsindex som endast innehåller angivna index"
@@ -10546,6 +10568,9 @@ msgstr "felaktigt referensformat: %s"
msgid "git refs migrate --ref-format=<format> [--dry-run]"
msgstr "git refs migrate --ref-format=<format> [--dry-run]"
+msgid "git refs verify [--strict] [--verbose]"
+msgstr "git refs verify [--strict] [--verbose]"
+
msgid "specify the reference format to convert to"
msgstr "ange referensformatet att konvertera till"
@@ -10559,6 +10584,12 @@ msgstr "saknad --ref-format=<format>"
msgid "repository already uses '%s' format"
msgstr "arkivet använder redan â€%sâ€-format"
+msgid "enable strict checking"
+msgstr "aktivera strikt kontroll"
+
+msgid "'git refs verify' takes no arguments"
+msgstr "â€git refs verify†tar inget argument"
+
msgid ""
"git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
"mirror=<fetch|push>] <name> <url>"
@@ -11978,11 +12009,11 @@ msgstr "referensen existerar inte"
msgid "failed to look up reference"
msgstr "misslyckades slå upp referensen"
-msgid "only show tags (can be combined with branches)"
-msgstr "visa endast taggar (kan kombineras med grenar)"
+msgid "only show tags (can be combined with --branches)"
+msgstr "visa endast taggar (kan kombineras med --branches)"
-msgid "only show branches (can be combined with tags)"
-msgstr "visa endast grenar (kan kombineras med taggar)"
+msgid "only show branches (can be combined with --tags)"
+msgstr "visa endast grenar (kan kombineras med --tags)"
msgid "check for reference existence without resolving"
msgstr "kontrollerar att referensen existerar utan att slå upp dem"
@@ -12034,6 +12065,10 @@ msgstr "misslyckades ta bort katalogen â€%sâ€"
msgid "failed to create directory for sparse-checkout file"
msgstr "misslyckades skapa katalog för â€sparse-checkoutâ€-filen"
+#, c-format
+msgid "unable to fdopen %s"
+msgstr "kan inte utföra fdopen %s"
+
msgid "failed to initialize worktree config"
msgstr "misslyckades initiera arbetskataloginställning"
@@ -12485,8 +12520,8 @@ msgid "couldn't hash object from '%s'"
msgstr "kunde inte hasha objekt frÃ¥n â€%sâ€"
#, c-format
-msgid "unexpected mode %o\n"
-msgstr "okänt läge %o\n"
+msgid "unexpected mode %o"
+msgstr "okänt läge %o"
msgid "use the commit stored in the index instead of the submodule HEAD"
msgstr "använd incechkning lagrad i indexet istället för undermodulens HEAD"
@@ -17031,13 +17066,16 @@ msgstr ""
msgid "Unable to create '%s.lock': %s"
msgstr "Kunde inte skapa â€%s.lockâ€: %s"
+msgid "unable to create temporary object directory"
+msgstr "kan inte skapa temporär objektkatalog"
+
#, c-format
msgid "could not write loose object index %s"
msgstr "kunde inte skriva löst objektindex %s"
#, c-format
-msgid "failed to write loose object index %s\n"
-msgstr "misslyckades skriva löst objektindex %s\n"
+msgid "failed to write loose object index %s"
+msgstr "misslyckades skriva löst objektindex %s"
#, c-format
msgid "unexpected line: '%s'"
@@ -17586,6 +17624,17 @@ msgstr "kunde inte läsa paket{"
msgid "could not open index for %s"
msgstr "kunde inte öppna indexet för %s"
+#, c-format
+msgid "unable to link '%s' to '%s'"
+msgstr "kan inte länka â€%s†till â€%sâ€"
+
+#, c-format
+msgid "failed to clear multi-pack-index at %s"
+msgstr "misslyckades städa multi-pack-index på %s"
+
+msgid "cannot write incremental MIDX with bitmap"
+msgstr "kan inte skriva inkrementell MIDX med bitkarta"
+
msgid "ignoring existing multi-pack-index; checksum mismatch"
msgstr "ignorerar befintlig multi-pack-index; felaktig kontrollsumma"
@@ -17614,18 +17663,33 @@ msgstr "inga paketfiler att indexera."
msgid "refusing to write multi-pack .bitmap without any objects"
msgstr "kunde inte skriva fler-paketsbitkarta utan några objekt"
+msgid "unable to create temporary MIDX layer"
+msgstr "kan inte skapa temporärt MIDX-lager"
+
msgid "could not write multi-pack bitmap"
msgstr "kunde inte skriva fler-paketsbitkarta"
+msgid "unable to open multi-pack-index chain file"
+msgstr "kan inte öppna kedjefil för multi-pack-index"
+
+msgid "unable to rename new multi-pack-index layer"
+msgstr "kan inte byta namn på nytt multi-pack-index-lager"
+
msgid "could not write multi-pack-index"
msgstr "kunde inte skriva flerpakets-index"
+msgid "cannot expire packs from an incremental multi-pack-index"
+msgstr "kan inte låta tid gå ut för paket från inkrementellt multi-pack-index"
+
msgid "Counting referenced objects"
msgstr "Räknar refererade objekt"
msgid "Finding and deleting unreferenced packfiles"
msgstr "Ser efter och tar bort orefererade packfiler"
+msgid "cannot repack an incremental multi-pack-index"
+msgstr "kunde packa om ett inkrementellt multi-pack-index"
+
msgid "could not start pack-objects"
msgstr "kunde inte starta pack-objects"
@@ -17687,6 +17751,27 @@ msgstr "paketnamnstycke för multi-pack-index är för kort"
msgid "multi-pack-index pack names out of order: '%s' before '%s'"
msgstr "paketnamn för multi-pack-index i fel ordning: â€%s†före â€%sâ€"
+msgid "multi-pack-index chain file too small"
+msgstr "kedjefilen för multi-pack-index är för liten"
+
+#, c-format
+msgid "pack count in base MIDX too high: %<PRIuMAX>"
+msgstr "antalet paket i bas-MIDX för högt: %<PRIuMAX>"
+
+#, c-format
+msgid "object count in base MIDX too high: %<PRIuMAX>"
+msgstr "antalet object i bas-MIDX för högt: %<PRIuMAX>"
+
+#, c-format
+msgid "invalid multi-pack-index chain: line '%s' not a hash"
+msgstr "ogiltig kedja för multi-pack-index: raden â€%s†är inte ett hash-värde"
+
+msgid "unable to find all multi-pack index files"
+msgstr "kan inte hitta alla indexfiler för multi-pack"
+
+msgid "invalid MIDX object position, MIDX is likely corrupt"
+msgstr "ogiltig MIDX-objektposition, MIDX är troligtvis trasig"
+
#, c-format
msgid "bad pack-int-id: %u (%u total packs)"
msgstr "bad pack-int-id: %u (%u paket totalt)"
@@ -17704,10 +17789,6 @@ msgstr "multi-pack-index innehåller 64-bitars offset, men off_t är för liten"
msgid "multi-pack-index large offset out of bounds"
msgstr "stort offset för mult-pack-index utanför gränsen"
-#, c-format
-msgid "failed to clear multi-pack-index at %s"
-msgstr "misslyckades städa multi-pack-index på %s"
-
msgid "multi-pack-index file exists, but failed to parse"
msgstr "multi-pack-indexfilen finns, men kunde inte tolkas"
@@ -19219,6 +19300,10 @@ msgid "expected format: %%(ahead-behind:<committish>)"
msgstr "förväntat format: %%(ahead-behind:<incheckning-igt>)"
#, c-format
+msgid "expected format: %%(is-base:<committish>)"
+msgstr "förväntat format: %%(is-base:<incheckning-igt>)"
+
+#, c-format
msgid "malformed field name: %.*s"
msgstr "felformat fältnamn: %.*s"
@@ -19451,6 +19536,13 @@ msgstr ""
"men är en vanlig referens"
#, c-format
+msgid "cannot open directory %s"
+msgstr "kunde inte öppna katalogen %s"
+
+msgid "Checking references consistency"
+msgstr "Kontrollerar konsistens för referenser"
+
+#, c-format
msgid "refname is dangerous: %s"
msgstr "refnamnet är farligt: %s"
@@ -20077,12 +20169,15 @@ msgstr "hämta endast metadata för grenen som skall checkas ut"
msgid "create repository within 'src' directory"
msgstr "skapa arkiv inuti katalogen â€srcâ€"
+msgid "specify if tags should be fetched during clone"
+msgstr "ange om taggar ska hämtas vid kloning"
+
msgid ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
msgstr ""
"scalar clone [--single-branch] [--branch <huvudgren>] [--full-clone]\n"
-"\t[--[no-]src] <url> [<enrollering>]"
+"\t[--[no-]src] [--[no-]tags] <url> [<enrollering>]"
#, c-format
msgid "cannot deduce worktree name from '%s'"
@@ -20101,6 +20196,10 @@ msgid "could not configure remote in '%s'"
msgstr "kunde inte ställa in fjärr i â€%sâ€"
#, c-format
+msgid "could not disable tags in '%s'"
+msgstr "kunde inte inaktivera taggar i â€%sâ€"
+
+#, c-format
msgid "could not configure '%s'"
msgstr "kunde inte ställa in â€%sâ€"
@@ -21162,6 +21261,10 @@ msgid "failed to stat '%*s%s%s'"
msgstr "misslyckades ta status pÃ¥ â€%*ss%s%sâ€"
#, c-format
+msgid "safe.directory '%s' not absolute"
+msgstr "safe.directory â€%s†är inte absolut"
+
+#, c-format
msgid ""
"detected dubious ownership in repository at '%s'\n"
"%sTo add an exception for this directory, call:\n"
@@ -21624,6 +21727,24 @@ msgstr "igenkänningstecken"
msgid "command token to send to the server"
msgstr "igenkänningstecken för kommando att sända till servern"
+msgid "unit-test [<options>]"
+msgstr "unit-test [<flaggor>]"
+
+msgid "immediately exit upon the first failed test"
+msgstr "avsluta omedelbart vid det första misslyckade testet"
+
+msgid "suite[::test]"
+msgstr "svit[::test]"
+
+msgid "run only test suite or individual test <suite[::test]>"
+msgstr "kör endast testsviten eller individuella testet <svit[::test]>"
+
+msgid "suite"
+msgstr "svit"
+
+msgid "exclude test suite <suite>"
+msgstr "uteslut testsviten <svit>"
+
#, c-format
msgid "running trailer command '%s' failed"
msgstr "misslyckades utföra släpradskommandot â€%sâ€"
@@ -22793,6 +22914,9 @@ msgstr "â€%s.final†innehÃ¥ller det skrivna brevet.\n"
msgid "--dump-aliases incompatible with other options\n"
msgstr "--dump-aliases är inkompatibelt med andra flaggor\n"
+msgid "--dump-aliases and --translate-aliases are mutually exclusive\n"
+msgstr "--dump-aliases och --translate-aliases är ömsesidigt utelsutande\n"
+
msgid ""
"fatal: found configuration options for 'sendmail'\n"
"git-send-email is configured with the sendemail.* options - note the 'e'.\n"
@@ -23093,3 +23217,10 @@ msgstr ""
#, perl-format
msgid "Do you really want to send %s? [y|N]: "
msgstr "Vill du verkligen sända %s? [y=ja, n=nej]: "
+
+#~ msgid "revision walk setup failed\n"
+#~ msgstr "misslyckades starta revisionstraversering\n"
+
+#, c-format
+#~ msgid "unable to parse contact: %s"
+#~ msgstr "kan inte tolka kontakt: %s"
diff --git a/po/tr.po b/po/tr.po
index 61692d4b20..7aede5cd5f 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -96,8 +96,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Git Turkish Localization Project\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2024-07-19 13:59+0300\n"
-"PO-Revision-Date: 2024-07-19 14:00+0300\n"
+"POT-Creation-Date: 2024-10-03 06:52+0300\n"
+"PO-Revision-Date: 2024-10-03 07:00+0300\n"
"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
"Language-Team: Turkish (https://github.com/bitigchi/git-po/)\n"
"Language: tr\n"
@@ -632,7 +632,7 @@ msgid ""
"/ - 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\n"
+"p - print the current hunk, 'P' to use the pager\n"
"? - print help\n"
msgstr ""
"j - bu parça için sonra karar ver, bir sonraki karar verilmemiş parçayı gör\n"
@@ -642,8 +642,8 @@ msgstr ""
"g - gidilecek bir parça seç\n"
"/ - verilen düzenli ifade ile eşleşen bir parça ara\n"
"s - geçerli parçayı daha ufak parçalara böl\n"
-"e - geçerli parçayı el ile düzenle\n"
-"p - geçerli parçalı yazdır\n"
+"e - geçerli parçayı elle düzenle\n"
+"p - geçerli parçalı yazdır, sayfalayıcı için 'P' kullan\n"
"? - yardımı yazdır\n"
#, c-format
@@ -1314,6 +1314,15 @@ msgstr "ek olarak yamayı da uygula (--stat/--summary/--check ile kullan)"
msgid "attempt three-way merge, fall back on normal patch if that fails"
msgstr "3 yönlü birleştirme dene, başarısız olursa normal yamaya geri çekil"
+msgid "for conflicts, use our version"
+msgstr "çakışmalarda bizim sürümü kullan"
+
+msgid "for conflicts, use their version"
+msgstr "çakışmalarda onların sürümünü kullan"
+
+msgid "for conflicts, use a union version"
+msgstr "çakışmalarda birlik olmuş bir sürüm kullan"
+
msgid "build a temporary index based on embedded index information"
msgstr "gömülü indeks bilgisini temel alan geçici bir indeks oluştur"
@@ -1359,6 +1368,9 @@ msgstr "tüm dosya adlarının başına <kök> ekle"
msgid "don't return error for empty patches"
msgstr "boş yamalar için hata döndürme"
+msgid "--ours, --theirs, and --union require --3way"
+msgstr "--ours, --theirs ve --union; --3way gerektiriyor"
+
#, c-format
msgid "cannot stream blob %s"
msgstr "%s ikili nesnesi akıtılamıyor"
@@ -1429,6 +1441,9 @@ msgstr "geçerli bir nesne adı değil: %s"
msgid "not a tree object: %s"
msgstr "bir ağaç nesnesi değil: %s"
+msgid "unable to checkout working tree"
+msgstr "çalışma ağacı çıkış yapılamıyor"
+
#, c-format
msgid "File not found: %s"
msgstr "Dosya bulunamadı: %s"
@@ -2531,9 +2546,6 @@ msgstr ""
"'git bisect terms' için geçersiz argüman %s.\n"
"Desteklenen seçenekler: --term-good|--term-old ve --term-bad|--term-new."
-msgid "revision walk setup failed\n"
-msgstr "revizyonda gezinme ayarlaması başarısız oldu\n"
-
#, c-format
msgid "could not open '%s' for appending"
msgstr "'%s' iliştirme için açılamadı"
@@ -3508,9 +3520,14 @@ msgstr "git check-mailmap [<seçenekler>] <kişi>..."
msgid "also read contacts from stdin"
msgstr "stdin'den kiÅŸileri de oku"
-#, c-format
-msgid "unable to parse contact: %s"
-msgstr "kişi ayrıştırılamadı: %s"
+msgid "read additional mailmap entries from file"
+msgstr "dosyadan ek mailmap girdilerini oku"
+
+msgid "blob"
+msgstr "ikili nesne"
+
+msgid "read additional mailmap entries from blob"
+msgstr "ikili nesneden ek mailmap girdilerini oku"
msgid "no contacts specified"
msgstr "kiÅŸi belirtilmedi"
@@ -3858,6 +3875,10 @@ msgid "'%s' cannot be used with switching branches"
msgstr "dal değiştirilirken '%s' kullanılamaz"
#, c-format
+msgid "'%s' needs the paths to check out"
+msgstr "çıkış yapmak için '%s' yollara gereksinim duyuyor"
+
+#, c-format
msgid "'%s' cannot be used with '%s'"
msgstr "'%s', '%s' ile birlikte kullanılamaz"
@@ -4334,9 +4355,6 @@ msgstr "sparse-checkout ilklendirilemedi"
msgid "remote HEAD refers to nonexistent ref, unable to checkout"
msgstr "uzak konum HEAD'i, var olmayan başvuruya başvuruyor; çıkış yapılamıyor"
-msgid "unable to checkout working tree"
-msgstr "çalışma ağacı çıkış yapılamıyor"
-
msgid "unable to write parameters to config file"
msgstr "parametreler yapılandırma dosyasına yazılamıyor"
@@ -4622,7 +4640,7 @@ msgstr "git commit-tree: okunamadı"
msgid ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]\n"
" [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|"
-"reword):]<commit>)]\n"
+"reword):]<commit>]\n"
" [-F <file> | -m <msg>] [--reset-author] [--allow-empty]\n"
" [--allow-empty-message] [--no-verify] [-e] [--author=<author>]\n"
" [--date=<date>] [--cleanup=<mode>] [--[no-]status]\n"
@@ -4631,14 +4649,14 @@ msgid ""
" [--] [<pathspec>...]"
msgstr ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u<kip>] [--amend]\n"
-" [--dry-run] [(-c | -C | --squash) <iÅŸleme> | --fixup [(amend|"
-"reword):]<iÅŸleme>)]\n"
-" [-F <dosya> | -m <ileti>] [--reset-author] [--allow-empty]\n"
+" [--dry-run] [(-c | -C | --squash) <iÅŸleme> | --fixup\n"
+" [(amend|reword):]<iÅŸleme>] [-F <dosya> | -m <ileti>] [--"
+"reset-author] [--allow-empty]\n"
" [--allow-empty-message] [--no-verify] [-e] [--author=<author>]\n"
" [--date=<tarih>] [--cleanup=<kip>] [--[no-]status]\n"
" [-i | -o] [--pathspec-from-file=<dosya> [--pathspec-file-nul]]\n"
" [(--trailer <jeton>[(=|:)<deÄŸer>])...] [-S[<anahtar-kimliÄŸi>]]\n"
-" [--] [<yol-blrtç>...]"
+" [--] [<yol-belirteci>...]"
msgid "git status [<options>] [--] [<pathspec>...]"
msgstr "git status [<seçenekler>] [--] [<yol-blrtç>...]"
@@ -5131,12 +5149,10 @@ msgstr ""
msgid ""
"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
-"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
-"<name>"
+"regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name>"
msgstr ""
-"git config get [<dosya-seçeneği>] [<görüntüleme-seçeneği>] [--includes] [--"
-"all] [--regexp=<düzenli-ifade>] [--value=<değer>] [--fixed-value] [--"
-"default=<öntanımlı>] <ad>"
+"git config get [<dosya-sçnği>] [<görüntü-sçnği>] [--includes] [--all] [--"
+"regexp] [--value=<değer>] [--fixed-value] [--default=<öntanımlı>] <ad>"
msgid ""
"git config set [<file-option>] [--type=<type>] [--all] [--value=<value>] [--"
@@ -5165,6 +5181,15 @@ msgid "git config [<file-option>] --get-colorbool <name> [<stdout-is-tty>]"
msgstr "git config [<dosya-seçeneği>] --get-colorbool <ad> [<stdout-tty>]"
msgid ""
+"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
+"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
+"<name>"
+msgstr ""
+"git config get [<dosya-seçeneği>] [<görüntüleme-seçeneği>] [--includes] [--"
+"all] [--regexp=<düzenli-ifade>] [--value=<değer>] [--fixed-value] [--"
+"default=<öntanımlı>] <ad>"
+
+msgid ""
"git config set [<file-option>] [--type=<type>] [--comment=<message>] [--all] "
"[--value=<value>] [--fixed-value] <name> <value>"
msgstr ""
@@ -5966,8 +5991,8 @@ msgstr ""
"bu denetlemeden kaçınabilirsiniz.\n"
#, c-format
-msgid "%s did not send all necessary objects\n"
-msgstr "%s tüm gerekli nesneleri göndermedi\n"
+msgid "%s did not send all necessary objects"
+msgstr "%s tüm gerekli nesneleri göndermedi"
#, c-format
msgid "rejected %s because shallow roots are not allowed to be updated"
@@ -6004,8 +6029,8 @@ msgid "option \"%s\" value \"%s\" is not valid for %s"
msgstr "\"%s\" seçeneği \"%s\" değeri %s için geçerli değil"
#, c-format
-msgid "option \"%s\" is ignored for %s\n"
-msgstr "\"%s\" seçeneği %s için yok sayılıyor\n"
+msgid "option \"%s\" is ignored for %s"
+msgstr "\"%s\" seçeneği %s için yok sayılıyor"
#, c-format
msgid "%s is not a valid object"
@@ -6678,6 +6703,9 @@ msgstr "biraz daha titiz ol (artırılmış işleyiş süresi)"
msgid "enable auto-gc mode"
msgstr "auto-gc kipini etkinleÅŸtir"
+msgid "perform garbage collection in the background"
+msgstr "çöp toplamayı arka planda gerçekleştir"
+
msgid "force running gc even if there may be another gc running"
msgstr "başka bir gc çalışıyor olsa bile zorla gc çalıştır"
@@ -6773,6 +6801,9 @@ msgstr "'%s' görevi birden çok kez seçilemez"
msgid "run tasks based on the state of the repository"
msgstr "görevleri deponun durumuna göre çalıştır"
+msgid "perform maintenance in the background"
+msgstr "bakımı arka planda gerçekleştir"
+
msgid "frequency"
msgstr "sıklık"
@@ -7635,9 +7666,6 @@ msgstr "-L<erim>:<dosya>, yol belirteci ile kullanılamıyor"
msgid "Final output: %d %s\n"
msgstr "Son çıktı: %d %s\n"
-msgid "unable to create temporary object directory"
-msgstr "geçici nesne dizini oluşturulamıyor"
-
#, c-format
msgid "git show %s: bad file"
msgstr "git show %s: hatalı dosya"
@@ -8199,15 +8227,6 @@ msgstr "diff3 tabanlı birleştirme kullan"
msgid "use a zealous diff3 based merge"
msgstr "gayretli bir diff3 tabanlı birleştirme kullan"
-msgid "for conflicts, use our version"
-msgstr "çakışmalarda bizim sürümü kullan"
-
-msgid "for conflicts, use their version"
-msgstr "çakışmalarda onların sürümünü kullan"
-
-msgid "for conflicts, use a union version"
-msgstr "çakışmalarda birlik olmuş bir sürüm kullan"
-
msgid "<algorithm>"
msgstr "<algoritma>"
@@ -8670,6 +8689,9 @@ msgstr "bir çoklu paket biteşlemi hesaplanırken yeniden kullanılacak paket"
msgid "write multi-pack bitmap"
msgstr "çoklu paket biteşlemi yaz"
+msgid "write a new incremental MIDX"
+msgstr "yeni bir artımlı MIDX yaz"
+
msgid "write multi-pack index containing only given indexes"
msgstr "yalnızca verilen indeksleri içeren çoklu paket indekslerini yaz"
@@ -10678,6 +10700,9 @@ msgstr "geçersiz başvuru biçimi: %s"
msgid "git refs migrate --ref-format=<format> [--dry-run]"
msgstr "git refs migrate --ref-format=<biçim> [--dry-run]"
+msgid "git refs verify [--strict] [--verbose]"
+msgstr "git refs verify [--strict] [--verbose]"
+
msgid "specify the reference format to convert to"
msgstr "dönüştürülecek başvuru biçimini belirt"
@@ -10691,6 +10716,12 @@ msgstr "--ref-format=<biçim> eksik"
msgid "repository already uses '%s' format"
msgstr "depo halihazırda '%s' biçimini kullanıyor"
+msgid "enable strict checking"
+msgstr "kesin denetlemeyi etkinleÅŸtir"
+
+msgid "'git refs verify' takes no arguments"
+msgstr "'git refs verify' bir argüman almıyor"
+
msgid ""
"git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
"mirror=<fetch|push>] <name> <url>"
@@ -12121,11 +12152,11 @@ msgstr "baÅŸvuru yok"
msgid "failed to look up reference"
msgstr "başvuru bakılamadı"
-msgid "only show tags (can be combined with branches)"
-msgstr "yalnızca etiketleri göster (dallarla birlikte kullanılabilir)"
+msgid "only show tags (can be combined with --branches)"
+msgstr "yalnızca etiketleri göster (--branches ile birlikte kullanılabilir)"
-msgid "only show branches (can be combined with tags)"
-msgstr "yalnızca dalları göster (etiketlerle birlikte kullanılabilir)"
+msgid "only show branches (can be combined with --tags)"
+msgstr "yalnızca dalları göster (--tags ile birlikte kullanılabilir)"
msgid "check for reference existence without resolving"
msgstr "çözmeden başvuru varlığını denetle"
@@ -12177,6 +12208,10 @@ msgstr "'%s' dizini kaldırılamadı"
msgid "failed to create directory for sparse-checkout file"
msgstr "aralıklı çıkış dosyası için dizin oluşturulamadı"
+#, c-format
+msgid "unable to fdopen %s"
+msgstr "%s fdopen yapılamıyor"
+
msgid "failed to initialize worktree config"
msgstr "çalışma ağacı yapılandırması ilklendirilemedi"
@@ -12625,8 +12660,8 @@ msgid "couldn't hash object from '%s'"
msgstr "'%s' üzerinden nesne sağlaması yapılamadı"
#, c-format
-msgid "unexpected mode %o\n"
-msgstr "beklenmedik kip %o\n"
+msgid "unexpected mode %o"
+msgstr "beklenmedik kip %o"
msgid "use the commit stored in the index instead of the submodule HEAD"
msgstr "altmodül HEAD'i içindeki işleme ile indekstekini karşılaştırmak için"
@@ -17177,13 +17212,16 @@ msgstr ""
msgid "Unable to create '%s.lock': %s"
msgstr "'%s.lock' oluşturulamıyor: %s"
+msgid "unable to create temporary object directory"
+msgstr "geçici nesne dizini oluşturulamıyor"
+
#, c-format
msgid "could not write loose object index %s"
msgstr "gevşek nesne indeksi %s yazılamadı"
#, c-format
-msgid "failed to write loose object index %s\n"
-msgstr "gevşek nesne indeksi %s yazımı başarısız\n"
+msgid "failed to write loose object index %s"
+msgstr "gevşek nesne indeksi %s yazılamadı"
#, c-format
msgid "unexpected line: '%s'"
@@ -17739,6 +17777,17 @@ msgstr "paket yüklenemedi"
msgid "could not open index for %s"
msgstr "%s için indeks açılamadı"
+#, c-format
+msgid "unable to link '%s' to '%s'"
+msgstr "'%s', '%s' ile bağlantılanamıyor"
+
+#, c-format
+msgid "failed to clear multi-pack-index at %s"
+msgstr "multi-pack-index %s konumunda temizlenemedi"
+
+msgid "cannot write incremental MIDX with bitmap"
+msgstr "biteşlem ile artımlı MIDX yazılamıyor"
+
msgid "ignoring existing multi-pack-index; checksum mismatch"
msgstr "var olan multi-pack-index yok sayılıyor; sağlama toplamı uyumsuzluğu"
@@ -17767,18 +17816,34 @@ msgstr "indekslenecek paket dosyası yok."
msgid "refusing to write multi-pack .bitmap without any objects"
msgstr "bir nesne olmadan multi-pack .bitmap yazımı reddediliyor"
+msgid "unable to create temporary MIDX layer"
+msgstr "geçici MIDX katmanı oluşturulamıyor"
+
msgid "could not write multi-pack bitmap"
msgstr "çoklu paket biteşlem yazılamadı"
+msgid "unable to open multi-pack-index chain file"
+msgstr "multi-pack-index zincir dosyası açılamıyor"
+
+msgid "unable to rename new multi-pack-index layer"
+msgstr "yeni multi-pack-index katmanı yeniden adlandırılamıyor"
+
msgid "could not write multi-pack-index"
msgstr "multi-pack-index yazılamadı"
+msgid "cannot expire packs from an incremental multi-pack-index"
+msgstr ""
+"artımlı bir multi-pack-index ögesinden paketlerin süresi doldurulamıyor"
+
msgid "Counting referenced objects"
msgstr "Başvurulmuş nesneler sayılıyor"
msgid "Finding and deleting unreferenced packfiles"
msgstr "Başvurulmamış paket dosyaları bulunuyor ve siliniyor"
+msgid "cannot repack an incremental multi-pack-index"
+msgstr "artımlı bir multi-pack-index yeniden paketlenemiyor"
+
msgid "could not start pack-objects"
msgstr "pack-objects başlatılamadı"
@@ -17836,6 +17901,27 @@ msgstr "multi-pack-index pack-name iri parçası pek kısa"
msgid "multi-pack-index pack names out of order: '%s' before '%s'"
msgstr "multi-pack-index paket adlarının sırasız: '%s' şundan önce: '%s'"
+msgid "multi-pack-index chain file too small"
+msgstr "multi-pack-index zincir dosyası pek küçük"
+
+#, c-format
+msgid "pack count in base MIDX too high: %<PRIuMAX>"
+msgstr "temel MIDX içindeki paket sayısı pek yüksek: %<PRIuMAX>"
+
+#, c-format
+msgid "object count in base MIDX too high: %<PRIuMAX>"
+msgstr "temel MIDX içindeki nesne sayısı pek yüksek: %<PRIuMAX>"
+
+#, c-format
+msgid "invalid multi-pack-index chain: line '%s' not a hash"
+msgstr "geçersiz multi-pack-index zinciri: '%s' bir sağlama değil"
+
+msgid "unable to find all multi-pack index files"
+msgstr "tüm multi-pack-index dosyaları bulunamıyor"
+
+msgid "invalid MIDX object position, MIDX is likely corrupt"
+msgstr "geçersiz MIDX nesnesi konumu, MIDX büyük olasılıkla hasarlı"
+
#, c-format
msgid "bad pack-int-id: %u (%u total packs)"
msgstr "hatalı pack-int-id: %u (%u toplam paket)"
@@ -17853,10 +17939,6 @@ msgstr "multi-pack-index bir 64 bit ofset depoluyor; ancak off_t pek küçük"
msgid "multi-pack-index large offset out of bounds"
msgstr "multi-pack-index geniş ofseti sınırlar dışında"
-#, c-format
-msgid "failed to clear multi-pack-index at %s"
-msgstr "multi-pack-index %s konumunda temizlenemedi"
-
msgid "multi-pack-index file exists, but failed to parse"
msgstr "multi-pack-index dosyası var; ancak ayrıştırılamadı"
@@ -18065,6 +18147,14 @@ msgid "missing mapping of %s to %s"
msgstr "%s ögesinin %s ögesine eksik eşlemlemesi"
#, c-format
+msgid "unable to open %s"
+msgstr "%s açılamıyor"
+
+#, c-format
+msgid "files '%s' and '%s' differ in contents"
+msgstr "'%s' ve '%s' dosyalarının içeriği farklı"
+
+#, c-format
msgid "unable to write file %s"
msgstr "%s dosyası yazılamıyor"
@@ -18149,10 +18239,6 @@ msgid "%s is not a valid '%s' object"
msgstr "%s geçerli bir '%s' nesnesi değil"
#, c-format
-msgid "unable to open %s"
-msgstr "%s açılamıyor"
-
-#, c-format
msgid "hash mismatch for %s (expected %s)"
msgstr "%s için sağlama uyuşmazlığı (%s bekleniyordu)"
@@ -19362,6 +19448,10 @@ msgid "expected format: %%(ahead-behind:<committish>)"
msgstr "beklenen biçim: %%(ahead-behind:<işlememsi>)"
#, c-format
+msgid "expected format: %%(is-base:<committish>)"
+msgstr "beklenen biçim: %%(is-base:<işlememsi>)"
+
+#, c-format
msgid "malformed field name: %.*s"
msgstr "hatalı oluşturulmuş alan adı: %.*s"
@@ -19597,6 +19687,13 @@ msgstr ""
"bekleniyordu; ancak bu normal bir baÅŸvuru"
#, c-format
+msgid "cannot open directory %s"
+msgstr "%s dizini açılamıyor"
+
+msgid "Checking references consistency"
+msgstr "Başvuruların tutarlılığı denetleniyor"
+
+#, c-format
msgid "refname is dangerous: %s"
msgstr "başvuru adı tehlikeli: %s"
@@ -20227,12 +20324,15 @@ msgstr "yalnızca çıkış yapılacak dalın üstverisini indir"
msgid "create repository within 'src' directory"
msgstr "'src' dizininde depo oluÅŸtur"
+msgid "specify if tags should be fetched during clone"
+msgstr "etiketlerin klonlama sırasında getirilip getirilmeyeceğini belirt"
+
msgid ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
msgstr ""
"scalar clone [--single-branch] [--branch <ana-dal>] [--full-clone]\n"
-"\t[--[no-]src] <url> [<yazılma>]"
+"\t[--[no-]src] [--[no-]tags] <url> [<listeleme>]"
#, c-format
msgid "cannot deduce worktree name from '%s'"
@@ -20251,6 +20351,10 @@ msgid "could not configure remote in '%s'"
msgstr "'%s' içindeki uzak konum yapılandırılamadı"
#, c-format
+msgid "could not disable tags in '%s'"
+msgstr "'%s' içindeki etiketler devre dışı bırakılamıyor"
+
+#, c-format
msgid "could not configure '%s'"
msgstr "'%s' yapılandırılamadı"
@@ -21306,6 +21410,10 @@ msgid "failed to stat '%*s%s%s'"
msgstr "'%*s%s%s' bilgileri alınamadı"
#, c-format
+msgid "safe.directory '%s' not absolute"
+msgstr "safe.directory '%s' mutlak deÄŸil"
+
+#, c-format
msgid ""
"detected dubious ownership in repository at '%s'\n"
"%sTo add an exception for this directory, call:\n"
@@ -21768,6 +21876,24 @@ msgstr "jeton"
msgid "command token to send to the server"
msgstr "sunucuya gönderilecek komut jetonu"
+msgid "unit-test [<options>]"
+msgstr "unit-test [<seçenekler>]"
+
+msgid "immediately exit upon the first failed test"
+msgstr "ilk başarısız sınamada anında çık"
+
+msgid "suite[::test]"
+msgstr "suite[::test]"
+
+msgid "run only test suite or individual test <suite[::test]>"
+msgstr "yalnızca sınama paketini veya bireysel <süit[::sınama]> çalıştır"
+
+msgid "suite"
+msgstr "suite"
+
+msgid "exclude test suite <suite>"
+msgstr "<süit> sınama süitini dışla"
+
#, c-format
msgid "running trailer command '%s' failed"
msgstr "'%s' artbilgi komutunu çalıştırma başarısız oldu"
@@ -22934,6 +23060,9 @@ msgstr "'%s.final' yazılan e-postayı içeriyor.\n"
msgid "--dump-aliases incompatible with other options\n"
msgstr "--dump-aliases diğer seçeneklerle uyumsuz\n"
+msgid "--dump-aliases and --translate-aliases are mutually exclusive\n"
+msgstr "--dump-aliases ve --translate-aliases birlikte kullanılamaz\n"
+
msgid ""
"fatal: found configuration options for 'sendmail'\n"
"git-send-email is configured with the sendemail.* options - note the 'e'.\n"
diff --git a/po/vi.po b/po/vi.po
index 5f42970d4f..00008b50f5 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -64,10 +64,10 @@
# +------------------------------------------------------------------+
msgid ""
msgstr ""
-"Project-Id-Version: git 2.46\n"
+"Project-Id-Version: git 2.47\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2024-07-21 00:11+0700\n"
-"PO-Revision-Date: 2024-07-26 11:31+0700\n"
+"POT-Creation-Date: 2024-10-05 01:20+0000\n"
+"PO-Revision-Date: 2024-10-05 16:48+0700\n"
"Last-Translator: Vũ Tiến Hưng <newcomerminecraft@gmail.com>\n"
"Language-Team: Vietnamese <https://github.com/Nekosha/git-po>\n"
"Language: vi\n"
@@ -605,7 +605,7 @@ msgid ""
"/ - 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\n"
+"p - print the current hunk, 'P' to use the pager\n"
"? - print help\n"
msgstr ""
"j - để lại khúc này là chưa quyết định, xem khúc chưa quyết định kế tiếp\n"
@@ -616,7 +616,7 @@ msgstr ""
"/ - tìm một khúc khớp với biểu thức chính quy\n"
"s - chia khúc hiện tại thành các khúc nhỠhơn\n"
"e - sửa bằng tay khúc hiện hành\n"
-"p - in ra khúc hiện hành\n"
+"p - in ra khúc hiện hành, 'P' để chạy trình phân trang\n"
"? - hiển thị trợ giúp\n"
#, c-format
@@ -1282,6 +1282,15 @@ msgstr "đồng thá»i áp dụng bản vá (dùng vá»›i tùy chá»n --stat/--su
msgid "attempt three-way merge, fall back on normal patch if that fails"
msgstr "thá»­ hòa trá»™n kiểu three-way, quay lại kiểu bình thưá»ng nếu thất bại"
+msgid "for conflicts, use our version"
+msgstr "nếu xung đột, sử dụng phiên bản của ta"
+
+msgid "for conflicts, use their version"
+msgstr "nếu xung đột, sá»­ dụng phiên bản cá»§a há»"
+
+msgid "for conflicts, use a union version"
+msgstr "nếu xung đột, sử dụng phiên bản kết hợp"
+
msgid "build a temporary index based on embedded index information"
msgstr "xây dá»±ng chỉ mục tạm thá»i dá»±a trên thông tin chỉ mục được nhúng"
@@ -1328,6 +1337,9 @@ msgstr "thêm <gốc> vào trước tất cả các tên tập tin"
msgid "don't return error for empty patches"
msgstr "đừng trả vỠlỗi khi các bản vá trống rỗng"
+msgid "--ours, --theirs, and --union require --3way"
+msgstr "--ours, --theirs, và --union cần tuỳ chá»n --3way"
+
#, c-format
msgid "cannot stream blob %s"
msgstr "không thể stream blob '%s'"
@@ -1400,6 +1412,10 @@ msgid "not a tree object: %s"
msgstr "không phải là đối tượng cây: %s"
#, c-format
+msgid "failed to unpack tree object %s"
+msgstr "gặp lỗi khi giải nén đối tượng cây %s"
+
+#, c-format
msgid "File not found: %s"
msgstr "Không tìm thấy tập tin: %s"
@@ -2497,9 +2513,6 @@ msgstr ""
"tham số không hợp lệ %s cho 'git bisect terms'.\n"
"Các tùy chá»n há»— trợ là: --term-good|--term-old và --term-bad|--term-new."
-msgid "revision walk setup failed\n"
-msgstr "gặp lỗi cài đặt việc di chuyển qua các điểm xét duyệt\n"
-
#, c-format
msgid "could not open '%s' for appending"
msgstr "không thể mở '%s' để nối thêm"
@@ -2707,17 +2720,17 @@ msgid "ignore revisions from <file>"
msgstr "bỠqua các điểm xét duyệt từ <tập tin>"
msgid "color redundant metadata from previous line differently"
-msgstr "siêu dữ liệu dư thừa màu từ dòng trước khác hẳn"
+msgstr "tô màu khác cho siêu dữ liệu dư thừa từ dòng trước"
msgid "color lines by age"
-msgstr "các dòng màu theo tuổi"
+msgstr "tô màu các dòng theo tuổi"
msgid "spend extra cycles to find better match"
-msgstr "tiêu thụ thêm năng tài nguyên máy móc để tìm kiếm tốt hơn nữa"
+msgstr "tiêu thụ thêm tài nguyên để tìm kiếm tốt hơn nữa"
msgid "use revisions from <file> instead of calling git-rev-list"
msgstr ""
-"sá»­ dụng các Ä‘iểm xét duyệt (revision) từ <tập tin> thay vì gá»i 'git-rev-list'"
+"sá»­ dụng các Ä‘iểm xét duyệt (revision) từ <tập tin> thay vì gá»i git-rev-list"
msgid "use <file>'s contents as the final image"
msgstr "sử dụng nội dung của <tập tin> như là ảnh cuối cùng"
@@ -3474,9 +3487,14 @@ msgstr "git check-mailmap [<các tùy chá»n>] <danh-bạ>..."
msgid "also read contacts from stdin"
msgstr "đồng thá»i Ä‘á»c các danh bạ từ stdin"
-#, c-format
-msgid "unable to parse contact: %s"
-msgstr "không thể Ä‘á»c danh bạ: '%s'"
+msgid "read additional mailmap entries from file"
+msgstr "Ä‘á»c thêm mục mailmap từ tập-tin"
+
+msgid "blob"
+msgstr "blob"
+
+msgid "read additional mailmap entries from blob"
+msgstr "Ä‘á»c thêm mục mailmap từ blob"
msgid "no contacts specified"
msgstr "chưa chỉ ra danh bạ"
@@ -3813,7 +3831,11 @@ msgstr "các đưá»ng dẫn không thể dùng cùng vá»›i các nhánh chuyển
#, c-format
msgid "'%s' cannot be used with switching branches"
-msgstr "'%s' không thể được sử dụng với các nhánh chuyển"
+msgstr "'%s' không thể được sử dụng khi chuyển nhánh"
+
+#, c-format
+msgid "'%s' needs the paths to check out"
+msgstr "'%s' cần đưá»ng dẫn để checkout"
#, c-format
msgid "'%s' cannot be used with '%s'"
@@ -4585,7 +4607,7 @@ msgstr "git commit-tree: gặp lá»—i khi Ä‘á»c"
msgid ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]\n"
" [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|"
-"reword):]<commit>)]\n"
+"reword):]<commit>]\n"
" [-F <file> | -m <msg>] [--reset-author] [--allow-empty]\n"
" [--allow-empty-message] [--no-verify] [-e] [--author=<author>]\n"
" [--date=<date>] [--cleanup=<mode>] [--[no-]status]\n"
@@ -4660,7 +4682,7 @@ msgid "updating files failed"
msgstr "cập nhật tập tin gặp lỗi"
msgid "failed to unpack HEAD tree object"
-msgstr "gặp lỗi khi tháo dỡ HEAD đối tượng cây"
+msgstr "gặp lỗi khi giải nén đối tượng cây HEAD"
msgid "No paths with --include/--only does not make sense."
msgstr "Không đưá»ng dẫn vá»›i các tùy chá»n --include/--only không hợp lý."
@@ -5106,12 +5128,11 @@ msgstr "git config list [<tuỳ-chá»n>] [<tuỳ-chá»n-hiển-thị>] [--includ
msgid ""
"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
-"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
-"<name>"
+"regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name>"
msgstr ""
"git config get [<tuỳ-chá»n>] [<tuỳ-chá»n-hiển-thị>] [--includes] [--all] [--"
-"regexp=<biểu-thức-chính-quy>] [--value=<giá-trị>] [--fixed-value] [--"
-"default=<giá-trị-mặc-định>] <khoá>"
+"regexp] [--value=<giá-trị>] [--fixed-value] [--default=<giá-trị-mặc-định>] "
+"<tên>"
msgid ""
"git config set [<file-option>] [--type=<type>] [--all] [--value=<value>] [--"
@@ -5141,6 +5162,15 @@ msgstr ""
"git config [<tuỳ-chá»n>] --get-colorbool <tên> [<stdout-là-tty-hay-không>]"
msgid ""
+"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
+"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
+"<name>"
+msgstr ""
+"git config get [<tuỳ-chá»n>] [<tuỳ-chá»n-hiển-thị>] [--includes] [--all] [--"
+"regexp=<biểu-thức-chính-quy>] [--value=<giá-trị>] [--fixed-value] [--"
+"default=<giá-trị-mặc-định>] <khoá>"
+
+msgid ""
"git config set [<file-option>] [--type=<type>] [--comment=<message>] [--all] "
"[--value=<value>] [--fixed-value] <name> <value>"
msgstr ""
@@ -5941,8 +5971,8 @@ msgstr ""
"để tránh kiểm tra này\n"
#, c-format
-msgid "%s did not send all necessary objects\n"
-msgstr "%s đã không gửi tất cả các đối tượng cần thiết\n"
+msgid "%s did not send all necessary objects"
+msgstr "%s đã không gửi tất cả các đối tượng cần thiết"
#, c-format
msgid "rejected %s because shallow roots are not allowed to be updated"
@@ -5979,8 +6009,8 @@ msgid "option \"%s\" value \"%s\" is not valid for %s"
msgstr "tùy chá»n \"%s\" có giá trị \"%s\" là không hợp lệ cho %s"
#, c-format
-msgid "option \"%s\" is ignored for %s\n"
-msgstr "tùy chá»n \"%s\" bị bá» qua vá»›i %s\n"
+msgid "option \"%s\" is ignored for %s"
+msgstr "tùy chá»n \"%s\" bị bá» qua vá»›i %s"
#, c-format
msgid "%s is not a valid object"
@@ -6652,7 +6682,10 @@ msgid "be more thorough (increased runtime)"
msgstr "cẩn thận hÆ¡n nữa (tăng thá»i gian chạy)"
msgid "enable auto-gc mode"
-msgstr "bật chế độ auto-gc"
+msgstr "bật chế độ auto-gc (tá»± động dá»n rác)"
+
+msgid "perform garbage collection in the background"
+msgstr "tiến hành gc (dá»n rác) trong ná»n"
msgid "force running gc even if there may be another gc running"
msgstr "buộc gc chạy ngay cả khi có tiến trình gc khác đang chạy"
@@ -6751,6 +6784,9 @@ msgstr "nhiệm vụ '%s' không được chá»n nhiá»u lần"
msgid "run tasks based on the state of the repository"
msgstr "chạy nhiệm vụ dựa trên trạng thái của kho chứa"
+msgid "perform maintenance in the background"
+msgstr "tiến hành bảo trì trong ná»n"
+
msgid "frequency"
msgstr "tần số"
@@ -7030,10 +7066,10 @@ msgid "show only matches from files that match all patterns"
msgstr "chỉ hiển thị những cái khớp từ tập tin mà nó khớp toàn bộ các mẫu"
msgid "pager"
-msgstr "dàn trang"
+msgstr "trình phân trang"
msgid "show matching files in the pager"
-msgstr "hiển thị các tập tin khớp trong trang giấy"
+msgstr "hiển thị các tập tin khớp trong trình phân trang"
msgid "allow calling of grep(1) (ignored by this build)"
msgstr "cho phép gá»i grep(1) (bị bá» qua bởi lần dịch này)"
@@ -7519,7 +7555,7 @@ msgid "edit files in place"
msgstr "sửa các tập tin tại chỗ"
msgid "trim empty trailers"
-msgstr "cắt bỠphần trống thừa ở đuôi"
+msgstr "cắt bỠphần trailer trống ở đuôi"
msgid "placement"
msgstr "vị trí"
@@ -7603,9 +7639,6 @@ msgstr "-L<vùng>:<tập tin> không thể được sá»­ dụng vá»›i đặc táº
msgid "Final output: %d %s\n"
msgstr "Äầu ra cuối cùng: %d %s\n"
-msgid "unable to create temporary object directory"
-msgstr "không thể tạo thư mục đối tượng tạm thá»i"
-
#, c-format
msgid "git show %s: bad file"
msgstr "git show %s: sai tập tin"
@@ -8174,15 +8207,6 @@ msgstr "dùng kiểu hòa dựa trên diff3"
msgid "use a zealous diff3 based merge"
msgstr "dùng kiểu hòa trộn dựa trên 'zealous diff3'"
-msgid "for conflicts, use our version"
-msgstr "nếu xung đột, sử dụng phiên bản của ta"
-
-msgid "for conflicts, use their version"
-msgstr "nếu xung đột, sá»­ dụng phiên bản cá»§a há»"
-
-msgid "for conflicts, use a union version"
-msgstr "nếu xung đột, sử dụng phiên bản kết hợp"
-
msgid "<algorithm>"
msgstr "<thuật toán>"
@@ -8654,6 +8678,9 @@ msgstr "gói được sử dụng khi tính toán một \"multi-pack bitmap\""
msgid "write multi-pack bitmap"
msgstr "ghi multi-pack bitmap"
+msgid "write a new incremental MIDX"
+msgstr "ghi incremental MIDX má»›i"
+
msgid "write multi-pack index containing only given indexes"
msgstr "ghi chỉ mục multi-pack chỉ chứa các chỉ mục đã cho"
@@ -10674,6 +10701,9 @@ msgstr "định dạng tham chiếu không hợp lệ: %s"
msgid "git refs migrate --ref-format=<format> [--dry-run]"
msgstr "git refs migrate --ref-format=<định dạng> [--dry-run]"
+msgid "git refs verify [--strict] [--verbose]"
+msgstr "git refs verify [--strict] [--verbose]"
+
msgid "specify the reference format to convert to"
msgstr "chỉ định định dạng tham chiếu để chuyển đổi sang"
@@ -10687,6 +10717,12 @@ msgstr "thiếu --ref-format=<định dạng>"
msgid "repository already uses '%s' format"
msgstr "kho đã dùng định dạng '%s'"
+msgid "enable strict checking"
+msgstr "cho phép kiểm tra nghiêm ngặt"
+
+msgid "'git refs verify' takes no arguments"
+msgstr "'git refs verify' không nhận tham số"
+
msgid ""
"git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
"mirror=<fetch|push>] <name> <url>"
@@ -12095,11 +12131,11 @@ msgstr "tham chiếu không tồn tại"
msgid "failed to look up reference"
msgstr "gặp lỗi khi tìm tham chiếu"
-msgid "only show tags (can be combined with branches)"
-msgstr "chỉ hiển thị thẻ (có thể tổ hợp cùng với nhánh)"
+msgid "only show tags (can be combined with --branches)"
+msgstr "chỉ hiển thị thẻ (có thể kết hợp với --branches)"
-msgid "only show branches (can be combined with tags)"
-msgstr "chỉ hiển thị đầu (có thể tổ hợp cùng với thẻ)"
+msgid "only show branches (can be combined with --tags)"
+msgstr "chỉ hiển thị đầu (có thể kết hợp với --tags)"
msgid "check for reference existence without resolving"
msgstr "kiểm tra tồn tại tham chiếu nhưng không phân giải"
@@ -12151,6 +12187,10 @@ msgstr "gặp lỗi khi gỡ bỠthư mục \"%s\""
msgid "failed to create directory for sparse-checkout file"
msgstr "gặp lỗi khi tạo thư mục cho tập tin sparse-checkout"
+#, c-format
+msgid "unable to fdopen %s"
+msgstr "không thể fdopen %s"
+
msgid "failed to initialize worktree config"
msgstr "gặp lỗi khi khởi tạo cấu hình cây làm việc"
@@ -12394,7 +12434,7 @@ msgid "failed to parse tree"
msgstr "gặp lá»—i khi Ä‘á»c cây"
msgid "failed to unpack trees"
-msgstr "gặp lỗi khi tháo dỡ cây"
+msgstr "gặp lỗi khi giải nén cây"
msgid "include untracked files in the stash"
msgstr "bao gồm các tập tin không được theo dõi trong stash"
@@ -12605,8 +12645,8 @@ msgid "couldn't hash object from '%s'"
msgstr "không thể băm đối tượng từ '%s'"
#, c-format
-msgid "unexpected mode %o\n"
-msgstr "gặp chế độ không như mong chỠ%o\n"
+msgid "unexpected mode %o"
+msgstr "gặp chế độ không rõ %o"
msgid "use the commit stored in the index instead of the submodule HEAD"
msgstr "hùng lần chuyển giao đã lưu trong chỉ mục thay cho HEAD mô-đun-con"
@@ -14774,7 +14814,7 @@ msgid_plural "Writing out commit graph in %d passes"
msgstr[0] "Äang ghi ra đồ thị các lần chuyển giao trong lần %d"
msgid "unable to open commit-graph chain file"
-msgstr "không thể mở tập tin mắt xích đồ thị chuyển giao"
+msgstr "không thể mở tập tin chain đồ thị chuyển giao"
msgid "failed to rename base commit-graph file"
msgstr "gặp lỗi khi đổi tên tập tin đồ-thị-chuyển-giao"
@@ -17171,13 +17211,16 @@ msgstr ""
msgid "Unable to create '%s.lock': %s"
msgstr "Không thể tạo '%s.lock': %s"
+msgid "unable to create temporary object directory"
+msgstr "không thể tạo thư mục đối tượng tạm thá»i"
+
#, c-format
msgid "could not write loose object index %s"
msgstr "không thể ghi tập tin đối tượng loose %s"
#, c-format
-msgid "failed to write loose object index %s\n"
-msgstr "ghi chỉ mục đối tượng loose %s thất bại\n"
+msgid "failed to write loose object index %s"
+msgstr "ghi chỉ mục đối tượng loose %s thất bại"
#, c-format
msgid "unexpected line: '%s'"
@@ -17701,7 +17744,7 @@ msgstr "gặp lá»—i khi Ä‘á»c bá»™ nhá»› đệm"
#, c-format
msgid "failed to add packfile '%s'"
-msgstr "gặp lỗi khi thêm tập tin gói '%s'"
+msgstr "gặp lỗi khi thêm packfile '%s'"
#, c-format
msgid "failed to open pack-index '%s'"
@@ -17729,6 +17772,17 @@ msgstr "không thể tải gói"
msgid "could not open index for %s"
msgstr "không thể mở chỉ mục cho %s"
+#, c-format
+msgid "unable to link '%s' to '%s'"
+msgstr "không thể liên kết '%s' vào '%s'"
+
+#, c-format
+msgid "failed to clear multi-pack-index at %s"
+msgstr "gặp lỗi khi xóa multi-pack-index tại %s"
+
+msgid "cannot write incremental MIDX with bitmap"
+msgstr "không thể ghi incremental MIDX với bitmap"
+
msgid "ignoring existing multi-pack-index; checksum mismatch"
msgstr "bỠqua multi-pack-index sẵn có; tổng kiểm không khớp"
@@ -17737,7 +17791,7 @@ msgstr "Äang thêm tập tin gói từ multi-pack-index"
#, c-format
msgid "unknown preferred pack: '%s'"
-msgstr "không hiểu \"preferred pack\": %s"
+msgstr "không hiểu preferred pack: %s"
#, c-format
msgid "cannot select preferred pack %s with no objects"
@@ -17749,19 +17803,31 @@ msgstr "đã không thấy tập tin gói %s để xóa"
#, c-format
msgid "preferred pack '%s' is expired"
-msgstr "\"preferred pack\" '%s' đã hết hạn"
+msgstr "preferred pack '%s' đã hết hạn"
msgid "no pack files to index."
msgstr "không có tập tin gói để đánh chỉ mục."
msgid "refusing to write multi-pack .bitmap without any objects"
-msgstr "từ chối ghi 'multi-pack bitmap' mà không có bất kỳ đối tượng nào"
+msgstr "từ chối ghi multi-pack bitmap mà không có bất kỳ đối tượng nào"
+
+msgid "unable to create temporary MIDX layer"
+msgstr "không thể tạo lá»›p MIDX tạm thá»i"
msgid "could not write multi-pack bitmap"
-msgstr "không thể ghi 'multi-pack bitmap'"
+msgstr "không thể ghi multi-pack bitmap"
+
+msgid "unable to open multi-pack-index chain file"
+msgstr "không thể mở tập tin chain multi-pack-index"
+
+msgid "unable to rename new multi-pack-index layer"
+msgstr "gặp lỗi khi đổi tên lớp multi-pack-index"
msgid "could not write multi-pack-index"
-msgstr "không thể ghi 'multi-pack-index'"
+msgstr "không thể ghi multi-pack-index"
+
+msgid "cannot expire packs from an incremental multi-pack-index"
+msgstr "không thể hết hạn gói từ incremental multi-pack-index"
msgid "Counting referenced objects"
msgstr "Äang đếm các đối tượng được tham chiếu"
@@ -17769,6 +17835,9 @@ msgstr "Äang đếm các đối tượng được tham chiếu"
msgid "Finding and deleting unreferenced packfiles"
msgstr "Äang tìm và xóa các gói không được tham chiếu"
+msgid "cannot repack an incremental multi-pack-index"
+msgstr "không thể repack incremental multi-pack-index"
+
msgid "could not start pack-objects"
msgstr "không thể khởi chạy pack-objects"
@@ -17825,6 +17894,27 @@ msgstr "tập tin đồ thị multi-pack-index %s quá nhá»"
msgid "multi-pack-index pack names out of order: '%s' before '%s'"
msgstr "các tên gói multi-pack-index không đúng thứ tự: '%s' trước '%s'"
+msgid "multi-pack-index chain file too small"
+msgstr "tập tin chain multi-pack-index quá nhá»"
+
+#, c-format
+msgid "pack count in base MIDX too high: %<PRIuMAX>"
+msgstr "số pack trong base MIDX quá lớn: %<PRIuMAX>"
+
+#, c-format
+msgid "object count in base MIDX too high: %<PRIuMAX>"
+msgstr "số đối tượng trong base MIDX quá lớn: %<PRIuMAX>"
+
+#, c-format
+msgid "invalid multi-pack-index chain: line '%s' not a hash"
+msgstr "multi-pack-index chain không hợp lệ: dòng '%s' không phải là mã băm"
+
+msgid "unable to find all multi-pack index files"
+msgstr "không thể tìm thấy tất cả các tập tin multi-pack index"
+
+msgid "invalid MIDX object position, MIDX is likely corrupt"
+msgstr "vị trí đối tượng MIDX không hợp lệ. MIDX có vẻ như đã bị há»ng"
+
#, c-format
msgid "bad pack-int-id: %u (%u total packs)"
msgstr "pack-int-id sai: %u (%u các gói tổng)"
@@ -17842,10 +17932,6 @@ msgstr "multi-pack-index lưu trữ một offset 64-bít, nhưng off_t là quá
msgid "multi-pack-index large offset out of bounds"
msgstr "multi-pack-index large offset nằm ngoài biên"
-#, c-format
-msgid "failed to clear multi-pack-index at %s"
-msgstr "gặp lỗi khi xóa multi-pack-index tại %s"
-
msgid "multi-pack-index file exists, but failed to parse"
msgstr "đã có tập tin multi-pack-index, nhưng gặp lá»—i khi Ä‘á»c cú pháp"
@@ -18056,6 +18142,14 @@ msgid "missing mapping of %s to %s"
msgstr "thiếu ánh xạ %s sang %s"
#, c-format
+msgid "unable to open %s"
+msgstr "không thể mở %s"
+
+#, c-format
+msgid "files '%s' and '%s' differ in contents"
+msgstr "tập tin '%s' và '%s' có nội dung khác nhau"
+
+#, c-format
msgid "unable to write file %s"
msgstr "không thể ghi tập tin %s"
@@ -18103,7 +18197,7 @@ msgstr "deflateEnd trên đối tượng stream gặp lỗi (%d)"
#, c-format
msgid "unable to create directory %s"
-msgstr "tạo thư mục \"%s\" gặp lỗi"
+msgstr "tạo thư mục %s gặp lỗi"
#, c-format
msgid "cannot read object for %s"
@@ -18141,10 +18235,6 @@ msgid "%s is not a valid '%s' object"
msgstr "%s không phải là một đối tượng '%s' hợp lệ"
#, c-format
-msgid "unable to open %s"
-msgstr "không thể mở %s"
-
-#, c-format
msgid "hash mismatch for %s (expected %s)"
msgstr "mã băm không khớp cho %s (cần %s)"
@@ -19079,10 +19169,10 @@ msgid "broken index, expect %s in %s, got %s"
msgstr "chỉ mục bị há»ng, cần %s trong %s, nhưng lại có %s"
msgid "cannot write split index for a sparse index"
-msgstr "không thể ghi chỉ mục chia tách cho \"sparse index\""
+msgstr "không thể ghi chỉ mục chia tách cho sparse index"
msgid "failed to convert to a sparse-index"
-msgstr "gặp lỗi khi chuyển đổi sang \"sparse-index\""
+msgstr "gặp lỗi khi chuyển đổi sang sparse-index"
#, c-format
msgid "unable to open git dir: %s"
@@ -19352,6 +19442,10 @@ msgid "expected format: %%(ahead-behind:<committish>)"
msgstr "cần định dạng: %%(ahead-behind:<committish>)"
#, c-format
+msgid "expected format: %%(is-base:<committish>)"
+msgstr "cần định dạng: %%(is-base:<committish>)"
+
+#, c-format
msgid "malformed field name: %.*s"
msgstr "tên trưá»ng sai quy cách: %.*s"
@@ -19586,6 +19680,13 @@ msgstr ""
"tham chiếu thưá»ng"
#, c-format
+msgid "cannot open directory %s"
+msgstr "không thể mở thư mục %s"
+
+msgid "Checking references consistency"
+msgstr "Äang kiểm tra tính nhất quán các tham chiếu"
+
+#, c-format
msgid "refname is dangerous: %s"
msgstr "tên tham chiếu không an toàn: %s"
@@ -20144,7 +20245,7 @@ msgstr "không thể tạo tuyến trình async: %s"
#, c-format
msgid "'%s' does not exist"
-msgstr "\"%s\" không tồn tại"
+msgstr "'%s' không tồn tại"
#, c-format
msgid "could not switch to '%s'"
@@ -20212,12 +20313,15 @@ msgstr "chỉ siêu dữ liệu tải vỠcho nhánh mà sẽ được checkout
msgid "create repository within 'src' directory"
msgstr "tạo kho chứa trong thư mục 'src'"
+msgid "specify if tags should be fetched during clone"
+msgstr "có nên lấy vỠthẻ khi nhân bản"
+
msgid ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
msgstr ""
"scalar clone [--single-branch] [--branch <nhánh-chính>] [--full-clone]\n"
-"\t[--[no-]src] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
#, c-format
msgid "cannot deduce worktree name from '%s'"
@@ -20236,6 +20340,10 @@ msgid "could not configure remote in '%s'"
msgstr "không thể cấu hình máy chủ trong '%s'"
#, c-format
+msgid "could not disable tags in '%s'"
+msgstr "không thể vô hiệu thẻ trong '%s'"
+
+#, c-format
msgid "could not configure '%s'"
msgstr "không thể cấu hình '%s'"
@@ -21301,6 +21409,10 @@ msgid "failed to stat '%*s%s%s'"
msgstr "gặp lỗi khi stat'%*s%s%s'"
#, c-format
+msgid "safe.directory '%s' not absolute"
+msgstr "safe.directory '%s' không phải đưá»ng dẫn tuyệt đối"
+
+#, c-format
msgid ""
"detected dubious ownership in repository at '%s'\n"
"%sTo add an exception for this directory, call:\n"
@@ -21762,9 +21874,27 @@ msgstr "thẻ bài"
msgid "command token to send to the server"
msgstr "thẻ bài lệnh để gửi lên cho máy chủ"
+msgid "unit-test [<options>]"
+msgstr "unit-test [<các tùy chá»n>]"
+
+msgid "immediately exit upon the first failed test"
+msgstr "thoát ngay khi gặp test thất bại"
+
+msgid "suite[::test]"
+msgstr "suite[::test]"
+
+msgid "run only test suite or individual test <suite[::test]>"
+msgstr "chạy riêng test suite hoặc test <suite[::test]>"
+
+msgid "suite"
+msgstr "suite"
+
+msgid "exclude test suite <suite>"
+msgstr "loại trừ test suite <suite>"
+
#, c-format
msgid "running trailer command '%s' failed"
-msgstr "chạy lệnh kéo theo '%s' gặp lỗi"
+msgstr "chạy lệnh trailer '%s' gặp lỗi"
#, c-format
msgid "unknown value '%s' for key '%s'"
@@ -21772,7 +21902,7 @@ msgstr "không hiểu giá trị '%s' cho khóa '%s'"
#, c-format
msgid "empty trailer token in trailer '%.*s'"
-msgstr "thẻ thừa trống rỗng trong phần thừa '%.*s'"
+msgstr "thẻ trailer trống rỗng trong phần trailer '%.*s'"
msgid "full write to remote helper failed"
msgstr "ghi đầy đủ lên helper máy chủ gặp lỗi"
@@ -22962,6 +23092,9 @@ msgstr "'%s.final' chứa emal đã soạn thảo.\n"
msgid "--dump-aliases incompatible with other options\n"
msgstr "--dump-aliases không tương thích vá»›i các tùy chá»n khác\n"
+msgid "--dump-aliases and --translate-aliases are mutually exclusive\n"
+msgstr "--dump-aliases và --translate-aliases không tương thích với nhau\n"
+
msgid ""
"fatal: found configuration options for 'sendmail'\n"
"git-send-email is configured with the sendemail.* options - note the 'e'.\n"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 91b8b79de8..55d2aee627 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -154,8 +154,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Git\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2024-07-27 22:28+0800\n"
-"PO-Revision-Date: 2024-07-28 19:52+0800\n"
+"POT-Creation-Date: 2024-10-05 03:31+0800\n"
+"PO-Revision-Date: 2024-10-05 03:32+0800\n"
"Last-Translator: Teng Long <dyroneteng@gmail.com>\n"
"Language-Team: GitHub <https://github.com/dyrone/git/>\n"
"Language: zh_CN\n"
@@ -784,7 +784,7 @@ msgid ""
"/ - 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\n"
+"p - print the current hunk, 'P' to use the pager\n"
"? - print help\n"
msgstr ""
"j - ç»´æŒè¯¥å—未决状æ€ï¼ŒæŸ¥çœ‹ä¸‹ä¸€ä¸ªæœªå†³å—\n"
@@ -795,7 +795,7 @@ msgstr ""
"/ - 查找和给定正则表达å¼åŒ¹é…çš„å—\n"
"s - 拆分当å‰å—为更å°çš„å—\n"
"e - 手动编辑当å‰å—\n"
-"p - 显示当å‰å—\n"
+"p - 显示当å‰å—, 'P' 使用分页器\n"
"? - 显示帮助\n"
#: add-patch.c
@@ -1613,6 +1613,18 @@ msgstr "还应用此补ä¸ï¼ˆä¸Ž --stat/--summary/--check é€‰é¡¹åŒæ—¶ä½¿ç”¨ï¼‰"
msgid "attempt three-way merge, fall back on normal patch if that fails"
msgstr "å°è¯•三路åˆå¹¶ï¼Œå¦‚果失败则回è½è‡³æ­£å¸¸è¡¥ä¸æ¨¡å¼"
+#: apply.c builtin/merge-file.c
+msgid "for conflicts, use our version"
+msgstr "如果冲çªï¼Œä½¿ç”¨æˆ‘们的版本"
+
+#: apply.c builtin/merge-file.c
+msgid "for conflicts, use their version"
+msgstr "如果冲çªï¼Œä½¿ç”¨ä»–们的版本"
+
+#: apply.c builtin/merge-file.c
+msgid "for conflicts, use a union version"
+msgstr "如果冲çªï¼Œä½¿ç”¨è”åˆç‰ˆæœ¬"
+
#: apply.c
msgid "build a temporary index based on embedded index information"
msgstr "创建一个临时索引基于嵌入的索引信æ¯"
@@ -1674,6 +1686,10 @@ msgstr "为所有文件å剿·»åŠ  <根目录>"
msgid "don't return error for empty patches"
msgstr "对空的补ä¸ä¸è¿”回错误"
+#: apply.c
+msgid "--ours, --theirs, and --union require --3way"
+msgstr "--oursã€--theirs å’Œ --union éœ€è¦ --3way"
+
#: archive-tar.c archive-zip.c
#, c-format
msgid "cannot stream blob %s"
@@ -1762,6 +1778,10 @@ msgstr "䏿˜¯ä¸€ä¸ªæœ‰æ•ˆçš„对象å:%s"
msgid "not a tree object: %s"
msgstr "䏿˜¯ä¸€ä¸ªæ ‘对象:%s"
+#: archive.c builtin/clone.c
+msgid "unable to checkout working tree"
+msgstr "ä¸èƒ½æ£€å‡ºå·¥ä½œåŒº"
+
#: archive.c
#, c-format
msgid "File not found: %s"
@@ -1878,7 +1898,7 @@ msgstr "选项 '%s' éœ€è¦ '%s'"
msgid "Unexpected option --output"
msgstr "æœªçŸ¥å‚æ•° --output"
-#: archive.c
+#: archive.c t/unit-tests/unit-test.c
#, c-format
msgid "extra command line parameter '%s'"
msgstr "é¢å¤–çš„å‘½ä»¤è¡Œå‚æ•°ï¼š'%s'"
@@ -1949,7 +1969,7 @@ msgid "unable to stat '%s'"
msgstr "无法对 %s 执行 stat"
#: bisect.c builtin/cat-file.c builtin/index-pack.c builtin/notes.c
-#: builtin/pack-objects.c combine-diff.c rerere.c
+#: builtin/pack-objects.c combine-diff.c object-file.c rerere.c
#, c-format
msgid "unable to read %s"
msgstr "ä¸èƒ½è¯» %s"
@@ -2086,7 +2106,7 @@ msgstr "--contents å’Œ --reverse ä¸èƒ½æ··ç”¨ã€‚"
msgid "--reverse and --first-parent together require specified latest commit"
msgstr "--reverse å’Œ --first-parent å…±ç”¨ï¼Œéœ€è¦æŒ‡å®šæœ€æ–°çš„æäº¤"
-#: blame.c builtin/commit.c builtin/log.c builtin/merge.c
+#: blame.c builtin/bisect.c builtin/commit.c builtin/log.c builtin/merge.c
#: builtin/pack-objects.c builtin/shortlog.c midx-write.c pack-bitmap.c
#: remote.c sequencer.c submodule.c
msgid "revision walk setup failed"
@@ -2333,7 +2353,7 @@ msgstr "演习"
#: builtin/add.c builtin/check-ignore.c builtin/commit.c
#: builtin/count-objects.c builtin/fsck.c builtin/log.c builtin/mv.c
-#: builtin/read-tree.c
+#: builtin/read-tree.c builtin/refs.c
msgid "be verbose"
msgstr "冗长输出"
@@ -2813,7 +2833,7 @@ msgstr "n"
#: builtin/am.c builtin/branch.c builtin/bugreport.c builtin/cat-file.c
#: builtin/clone.c builtin/diagnose.c builtin/for-each-ref.c builtin/init-db.c
#: builtin/ls-files.c builtin/ls-tree.c builtin/refs.c builtin/replace.c
-#: builtin/tag.c builtin/verify-tag.c
+#: builtin/submodule--helper.c builtin/tag.c builtin/verify-tag.c
msgid "format"
msgstr "æ ¼å¼"
@@ -3108,10 +3128,6 @@ msgstr ""
"支æŒçš„选项有:--term-good|--term-old å’Œ --term-bad|--term-new。"
#: builtin/bisect.c
-msgid "revision walk setup failed\n"
-msgstr "版本é历设置失败\n"
-
-#: builtin/bisect.c
#, c-format
msgid "could not open '%s' for appending"
msgstr "无法打开 '%s' 进行追加"
@@ -4337,9 +4353,16 @@ msgid "also read contacts from stdin"
msgstr "还从标准输入读å–è”系地å€"
#: builtin/check-mailmap.c
-#, c-format
-msgid "unable to parse contact: %s"
-msgstr "ä¸èƒ½è§£æžè”系地å€ï¼š%s"
+msgid "read additional mailmap entries from file"
+msgstr "从文件中读å–附加邮件映射æ¡ç›®"
+
+#: builtin/check-mailmap.c
+msgid "blob"
+msgstr "æ•°æ®å¯¹è±¡"
+
+#: builtin/check-mailmap.c
+msgid "read additional mailmap entries from blob"
+msgstr "从数æ®å¯¹è±¡ä¸­è¯»å–附加邮件映射æ¡ç›®"
#: builtin/check-mailmap.c
msgid "no contacts specified"
@@ -4759,6 +4782,11 @@ msgstr "'%s' ä¸èƒ½å’Œåˆ‡æ¢åˆ†æ”¯åŒæ—¶ä½¿ç”¨"
#: builtin/checkout.c
#, c-format
+msgid "'%s' needs the paths to check out"
+msgstr "'%s' 需è¦è·¯å¾„进行检出"
+
+#: builtin/checkout.c
+#, c-format
msgid "'%s' cannot be used with '%s'"
msgstr "'%s' ä¸èƒ½å’Œ '%s' åŒæ—¶ä½¿ç”¨"
@@ -5223,7 +5251,7 @@ msgstr "git目录"
msgid "separate git dir from working tree"
msgstr "git目录和工作区分离"
-#: builtin/clone.c builtin/init-db.c
+#: builtin/clone.c builtin/init-db.c builtin/submodule--helper.c
msgid "specify the reference format to use"
msgstr "指定è¦ä½¿ç”¨çš„引用格å¼"
@@ -5320,7 +5348,7 @@ msgstr "无法创建链接 '%s'"
msgid "failed to copy file to '%s'"
msgstr "æ— æ³•æ‹·è´æ–‡ä»¶è‡³ '%s'"
-#: builtin/clone.c
+#: builtin/clone.c refs/files-backend.c
#, c-format
msgid "failed to iterate over '%s'"
msgstr "无法在 '%s' 上迭代"
@@ -5363,10 +5391,6 @@ msgid "remote HEAD refers to nonexistent ref, unable to checkout"
msgstr "远程 HEAD 指å‘一个ä¸å­˜åœ¨çš„引用,无法检出"
#: builtin/clone.c
-msgid "unable to checkout working tree"
-msgstr "ä¸èƒ½æ£€å‡ºå·¥ä½œåŒº"
-
-#: builtin/clone.c
msgid "unable to write parameters to config file"
msgstr "æ— æ³•å°†å‚æ•°å†™å…¥é…置文件"
@@ -5386,7 +5410,8 @@ msgstr "å¤ªå¤šå‚æ•°ã€‚"
msgid "You must specify a repository to clone."
msgstr "您必须指定一个仓库æ¥å…‹éš†ã€‚"
-#: builtin/clone.c builtin/init-db.c builtin/refs.c setup.c
+#: builtin/clone.c builtin/init-db.c builtin/refs.c builtin/submodule--helper.c
+#: setup.c
#, c-format
msgid "unknown ref storage format '%s'"
msgstr "æœªçŸ¥çš„å¼•ç”¨å­˜å‚¨æ ¼å¼ '%s'"
@@ -5724,7 +5749,7 @@ msgstr "git commit-tree:无法读å–"
msgid ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]\n"
" [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|"
-"reword):]<commit>)]\n"
+"reword):]<commit>]\n"
" [-F <file> | -m <msg>] [--reset-author] [--allow-empty]\n"
" [--allow-empty-message] [--no-verify] [-e] [--author=<author>]\n"
" [--date=<date>] [--cleanup=<mode>] [--[no-]status]\n"
@@ -5734,7 +5759,7 @@ msgid ""
msgstr ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u<模å¼>] [--amend]\n"
" [--dry-run] [(-c | -C | --squash) <æäº¤> | --fixup [(amend|"
-"reword):]<æäº¤>)]\n"
+"reword):]<æäº¤>]\n"
" [-F <文件> | -m <消æ¯>] [--reset-author] [--allow-empty]\n"
" [--allow-empty-message] [--no-verify] [-e] [--author=<作者>]\n"
" [--date=<日期>] [--cleanup=<模å¼>] [--[no-]status]\n"
@@ -6327,11 +6352,10 @@ msgstr "git config list [<文件选项>] [<显示选项>] [--includes]"
#: builtin/config.c
msgid ""
"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
-"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
-"<name>"
+"regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name>"
msgstr ""
-"git config get [<文件选项>] [<显示选项>] [--includes] [--all] [--regexp=<正则"
-"表达å¼>] [--value=<值>] [--fixed-value] [--default=<默认值>] <åç§°>"
+"git config get [<文件选项>] [<显示选项>] [--includes] [--all] [--regexp] [--"
+"value=<值>] [--fixed-value] [--default=<默认值>] <åç§°>"
#: builtin/config.c
msgid ""
@@ -6367,6 +6391,15 @@ msgstr "git config [<文件选项>] --get-colorbool <åç§°> [<标准输出为tt
#: builtin/config.c
msgid ""
+"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
+"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
+"<name>"
+msgstr ""
+"git config get [<文件选项>] [<显示选项>] [--includes] [--all] [--regexp=<正则"
+"表达å¼>] [--value=<值>] [--fixed-value] [--default=<默认值>] <åç§°>"
+
+#: builtin/config.c
+msgid ""
"git config set [<file-option>] [--type=<type>] [--comment=<message>] [--all] "
"[--value=<value>] [--fixed-value] <name> <value>"
msgstr ""
@@ -7373,8 +7406,8 @@ msgstr ""
#: builtin/fetch.c
#, c-format
-msgid "%s did not send all necessary objects\n"
-msgstr "%s 未å‘逿‰€æœ‰å¿…需的对象\n"
+msgid "%s did not send all necessary objects"
+msgstr "%s 未å‘逿‰€æœ‰å¿…需的对象"
#: builtin/fetch.c
#, c-format
@@ -7422,8 +7455,8 @@ msgstr "选项 \"%s\" 的值 \"%s\" 对于 %s 是无效的"
#: builtin/fetch.c
#, c-format
-msgid "option \"%s\" is ignored for %s\n"
-msgstr "选项 \"%s\" 为 %s 所忽略\n"
+msgid "option \"%s\" is ignored for %s"
+msgstr "选项 \"%s\" 为 %s 所忽略"
#: builtin/fetch.c object-file.c
#, c-format
@@ -8266,6 +8299,10 @@ msgid "enable auto-gc mode"
msgstr "å¯ç”¨è‡ªåŠ¨åžƒåœ¾å›žæ”¶æ¨¡å¼"
#: builtin/gc.c
+msgid "perform garbage collection in the background"
+msgstr "在åŽå°è¿›è¡Œåžƒåœ¾å›žæ”¶"
+
+#: builtin/gc.c
msgid "force running gc even if there may be another gc running"
msgstr "强制执行 gc å³ä½¿å¦å¤–一个 gc 正在执行"
@@ -8383,6 +8420,10 @@ msgid "run tasks based on the state of the repository"
msgstr "åŸºäºŽä»“åº“çŠ¶æ€æ¥è¿è¡Œä»»åŠ¡"
#: builtin/gc.c
+msgid "perform maintenance in the background"
+msgstr "在åŽå°æ‰§è¡Œè¿ç»´"
+
+#: builtin/gc.c
msgid "frequency"
msgstr "频率"
@@ -9474,10 +9515,6 @@ msgid "Final output: %d %s\n"
msgstr "最终输出:%d %s\n"
#: builtin/log.c
-msgid "unable to create temporary object directory"
-msgstr "无法创建临时对象目录"
-
-#: builtin/log.c
#, c-format
msgid "git show %s: bad file"
msgstr "git show %s: æŸå的文件"
@@ -10205,18 +10242,6 @@ msgstr "使用基于 diff3 çš„åˆå¹¶"
msgid "use a zealous diff3 based merge"
msgstr "使用基于狂热 diff3(zealous diff3)的åˆå¹¶"
-#: builtin/merge-file.c
-msgid "for conflicts, use our version"
-msgstr "如果冲çªï¼Œä½¿ç”¨æˆ‘们的版本"
-
-#: builtin/merge-file.c
-msgid "for conflicts, use their version"
-msgstr "如果冲çªï¼Œä½¿ç”¨ä»–们的版本"
-
-#: builtin/merge-file.c
-msgid "for conflicts, use a union version"
-msgstr "如果冲çªï¼Œä½¿ç”¨è”åˆç‰ˆæœ¬"
-
#: builtin/merge-file.c diff.c
msgid "<algorithm>"
msgstr "<算法>"
@@ -10512,7 +10537,7 @@ msgstr "ä¸èƒ½å†™å…¥ç´¢å¼•。"
msgid "Not handling anything other than two heads merge."
msgstr "未处ç†ä¸¤ä¸ªå¤´åˆå¹¶ä¹‹å¤–的任何æ“作。"
-#: builtin/merge.c
+#: builtin/merge.c builtin/sparse-checkout.c
#, c-format
msgid "unable to write %s"
msgstr "ä¸èƒ½å†™ %s"
@@ -10804,6 +10829,10 @@ msgid "write multi-pack bitmap"
msgstr "写入多包ä½å›¾"
#: builtin/multi-pack-index.c
+msgid "write a new incremental MIDX"
+msgstr "å†™å…¥ä¸€ä¸ªæ–°çš„å¢žé‡ MIDX"
+
+#: builtin/multi-pack-index.c
msgid "write multi-pack index containing only given indexes"
msgstr "写入åªåŒ…括给定索引的多包索引"
@@ -13206,6 +13235,10 @@ msgid "git refs migrate --ref-format=<format> [--dry-run]"
msgstr "git refs migrate --ref-format=<æ ¼å¼> [--dry-run]"
#: builtin/refs.c
+msgid "git refs verify [--strict] [--verbose]"
+msgstr "git refs verify [--strict] [--verbose]"
+
+#: builtin/refs.c
msgid "specify the reference format to convert to"
msgstr "指定è¦è½¬æ¢çš„引用格å¼"
@@ -13222,6 +13255,14 @@ msgstr "缺少 --ref-format=<æ ¼å¼>"
msgid "repository already uses '%s' format"
msgstr "仓库已使用 '%s' æ ¼å¼"
+#: builtin/refs.c
+msgid "enable strict checking"
+msgstr "å¯ç”¨ä¸¥æ ¼çš„æ£€æŸ¥"
+
+#: builtin/refs.c
+msgid "'git refs verify' takes no arguments"
+msgstr "'git refs verify' 䏿ޥå—任何傿•°"
+
#: builtin/remote.c
msgid ""
"git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
@@ -14996,12 +15037,12 @@ msgid "failed to look up reference"
msgstr "无法找到引用"
#: builtin/show-ref.c
-msgid "only show tags (can be combined with branches)"
-msgstr "仅显示标签(å¯ä¸Žåˆ†æ”¯ç»„åˆä½¿ç”¨ï¼‰"
+msgid "only show tags (can be combined with --branches)"
+msgstr "仅显示标签(å¯ä¸Ž --branches 组åˆä½¿ç”¨ï¼‰"
#: builtin/show-ref.c
-msgid "only show branches (can be combined with tags)"
-msgstr "仅显示分支(å¯ä»¥å’Œæ ‡ç­¾ç»„åˆä½¿ç”¨ï¼‰"
+msgid "only show branches (can be combined with --tags)"
+msgstr "仅显示分支(å¯ä¸Ž --tags 组åˆä½¿ç”¨ï¼‰"
#: builtin/show-ref.c
msgid "check for reference existence without resolving"
@@ -15064,6 +15105,11 @@ msgid "failed to create directory for sparse-checkout file"
msgstr "æ— æ³•ä¸ºç¨€ç–æ£€å‡ºæ–‡ä»¶åˆ›å»ºç›®å½•"
#: builtin/sparse-checkout.c
+#, c-format
+msgid "unable to fdopen %s"
+msgstr "ä¸èƒ½ fdopen %s"
+
+#: builtin/sparse-checkout.c
msgid "failed to initialize worktree config"
msgstr "无法åˆå§‹åŒ–工作树é…ç½®"
@@ -15612,8 +15658,8 @@ msgstr "ä¸èƒ½ä»Ž '%s' 创建哈希对象"
#: builtin/submodule--helper.c
#, c-format
-msgid "unexpected mode %o\n"
-msgstr "æ„å¤–çš„æ¨¡å¼ %o\n"
+msgid "unexpected mode %o"
+msgstr "æ„å¤–çš„æ¨¡å¼ %o"
#: builtin/submodule--helper.c
msgid "use the commit stored in the index instead of the submodule HEAD"
@@ -18289,7 +18335,7 @@ msgstr "无法写入正确数é‡çš„基础图形 ID"
msgid "unable to create temporary graph layer"
msgstr "无法创建临时图层"
-#: commit-graph.c
+#: commit-graph.c midx-write.c
#, c-format
msgid "unable to adjust shared permissions for '%s'"
msgstr "无法为 '%s' 调整共享æƒé™"
@@ -19638,7 +19684,7 @@ msgstr "color-moved-ws:allow-indentation-change ä¸èƒ½ä¸Žå…¶å®ƒç©ºç™½å­—符模
msgid "Unknown value for 'diff.submodule' config variable: '%s'"
msgstr "é…ç½®å˜é‡ 'diff.submodule' 未知的å–值:'%s'"
-#: diff.c transport.c
+#: diff.c merge-recursive.c transport.c
#, c-format
msgid "unknown value for config '%s': %s"
msgstr "é…ç½® '%s' 未知的å–值:%s"
@@ -21117,6 +21163,7 @@ msgstr ""
"\n"
"æ¥è®¾ç½®æ‚¨è´¦å·çš„缺çœèº«ä»½æ ‡è¯†ã€‚\n"
"如果仅在本仓库设置身份标识,则çœç•¥ --global 傿•°ã€‚\n"
+"\n"
#: ident.c
msgid "no email was given and auto-detection is disabled"
@@ -21237,6 +21284,10 @@ msgstr ""
msgid "Unable to create '%s.lock': %s"
msgstr "ä¸èƒ½åˆ›å»º '%s.lock':%s"
+#: log-tree.c
+msgid "unable to create temporary object directory"
+msgstr "无法创建临时对象目录"
+
#: loose.c
#, c-format
msgid "could not write loose object index %s"
@@ -21244,8 +21295,8 @@ msgstr "ä¸èƒ½å†™å…¥æ¾æ•£å¯¹è±¡ç´¢å¼• %s"
#: loose.c
#, c-format
-msgid "failed to write loose object index %s\n"
-msgstr "æ— æ³•å†™å…¥æ¾æ•£å¯¹è±¡ç´¢å¼• %s\n"
+msgid "failed to write loose object index %s"
+msgstr "æ— æ³•å†™å…¥æ¾æ•£å¯¹è±¡ç´¢å¼• %s"
#: ls-refs.c
#, c-format
@@ -21879,6 +21930,20 @@ msgid "could not open index for %s"
msgstr "ä¸èƒ½æ‰“å¼€ %s 的索引"
#: midx-write.c
+#, c-format
+msgid "unable to link '%s' to '%s'"
+msgstr "无法将 '%s' 链接至 '%s'"
+
+#: midx-write.c midx.c
+#, c-format
+msgid "failed to clear multi-pack-index at %s"
+msgstr "无法清ç†ä½äºŽ %s 的多包索引"
+
+#: midx-write.c
+msgid "cannot write incremental MIDX with bitmap"
+msgstr "无法使用ä½å›¾å†™å…¥å¢žé‡ MIDX"
+
+#: midx-write.c
msgid "ignoring existing multi-pack-index; checksum mismatch"
msgstr "忽略已存在的多包索引,校验ç ä¸åŒ¹é…"
@@ -21915,14 +21980,30 @@ msgid "refusing to write multi-pack .bitmap without any objects"
msgstr "æ‹’ç»å†™å…¥æ²¡æœ‰ä»»ä½•对象的多包ä½å›¾"
#: midx-write.c
+msgid "unable to create temporary MIDX layer"
+msgstr "无法创建临时 MIDX 层"
+
+#: midx-write.c
msgid "could not write multi-pack bitmap"
msgstr "无法写入多包ä½å›¾"
#: midx-write.c
+msgid "unable to open multi-pack-index chain file"
+msgstr "无法打开多包索引链文件"
+
+#: midx-write.c
+msgid "unable to rename new multi-pack-index layer"
+msgstr "无法é‡å‘½å新的多包索引层"
+
+#: midx-write.c
msgid "could not write multi-pack-index"
msgstr "无法写入多包索引"
#: midx-write.c
+msgid "cannot expire packs from an incremental multi-pack-index"
+msgstr "增é‡å¤šåŒ…索引中的包ä¸èƒ½è¿‡æœŸ"
+
+#: midx-write.c
msgid "Counting referenced objects"
msgstr "正在对引用对象计数"
@@ -21931,6 +22012,10 @@ msgid "Finding and deleting unreferenced packfiles"
msgstr "正在查找和删除未引用的包文件"
#: midx-write.c
+msgid "cannot repack an incremental multi-pack-index"
+msgstr "æ— æ³•é‡æ–°æ‰“包增é‡å¤šåŒ…索引"
+
+#: midx-write.c
msgid "could not start pack-objects"
msgstr "ä¸èƒ½å¼€å§‹ pack-objects"
@@ -22002,6 +22087,33 @@ msgid "multi-pack-index pack names out of order: '%s' before '%s'"
msgstr "å¤šåŒ…ç´¢å¼•åŒ…åæ— åºï¼š'%s' 在 '%s' 之å‰"
#: midx.c
+msgid "multi-pack-index chain file too small"
+msgstr "多包索引链文件太å°"
+
+#: midx.c
+#, c-format
+msgid "pack count in base MIDX too high: %<PRIuMAX>"
+msgstr "基线的 MIDX 中包的数é‡è¿‡é«˜ï¼š%<PRIuMAX>"
+
+#: midx.c
+#, c-format
+msgid "object count in base MIDX too high: %<PRIuMAX>"
+msgstr "基线的 MIDX 中对象的数é‡è¿‡é«˜ï¼š%<PRIuMAX>"
+
+#: midx.c
+#, c-format
+msgid "invalid multi-pack-index chain: line '%s' not a hash"
+msgstr "无效的多包索引链:第 '%s' è¡Œä¸æ˜¯å“ˆå¸Œå€¼"
+
+#: midx.c
+msgid "unable to find all multi-pack index files"
+msgstr "无法找到所有的多包索引文件"
+
+#: midx.c
+msgid "invalid MIDX object position, MIDX is likely corrupt"
+msgstr "无效的 MIDX 对象ä½ç½®ï¼ŒMIDX å¯èƒ½å·²æŸå"
+
+#: midx.c
#, c-format
msgid "bad pack-int-id: %u (%u total packs)"
msgstr "错的 pack-int-id:%u(共有 %u 个包)"
@@ -22024,11 +22136,6 @@ msgid "multi-pack-index large offset out of bounds"
msgstr "多包索引大å移区越界"
#: midx.c
-#, c-format
-msgid "failed to clear multi-pack-index at %s"
-msgstr "无法清ç†ä½äºŽ %s 的多包索引"
-
-#: midx.c
msgid "multi-pack-index file exists, but failed to parse"
msgstr "多包索引文件存在,但无法解æž"
@@ -22287,6 +22394,16 @@ msgstr "缺少 %s 到 %s 的映射"
#: object-file.c
#, c-format
+msgid "unable to open %s"
+msgstr "ä¸èƒ½æ‰“å¼€ %s"
+
+#: object-file.c
+#, c-format
+msgid "files '%s' and '%s' differ in contents"
+msgstr "文件 '%s' å’Œ '%s' 的内容ä¸åŒ"
+
+#: object-file.c
+#, c-format
msgid "unable to write file %s"
msgstr "无法写文件 %s"
@@ -22393,11 +22510,6 @@ msgstr "%s 䏿˜¯ä¸€ä¸ªæœ‰æ•ˆçš„ '%s' 对象"
#: object-file.c
#, c-format
-msgid "unable to open %s"
-msgstr "ä¸èƒ½æ‰“å¼€ %s"
-
-#: object-file.c
-#, c-format
msgid "hash mismatch for %s (expected %s)"
msgstr "%s 的哈希值ä¸åŒ¹é…(预期 %s)"
@@ -23844,6 +23956,11 @@ msgstr "期望的格å¼ï¼š%%(ahead-behind:<æäº¤å·>)"
#: ref-filter.c
#, c-format
+msgid "expected format: %%(is-base:<committish>)"
+msgstr "期望的格å¼ï¼š%%(is-base:<æäº¤å·>)"
+
+#: ref-filter.c
+#, c-format
msgid "malformed field name: %.*s"
msgstr "æ ¼å¼é”™è¯¯çš„字段å:%.*s"
@@ -24125,6 +24242,15 @@ msgid ""
"cannot lock ref '%s': expected symref with target '%s': but is a regular ref"
msgstr "无法é”定引用 '%s':预期目标为 '%s' 的符å·å¼•用:但是是普通引用"
+#: refs/files-backend.c
+#, c-format
+msgid "cannot open directory %s"
+msgstr "无法打开目录 %s"
+
+#: refs/files-backend.c
+msgid "Checking references consistency"
+msgstr "正在检查引用一致性"
+
#: refs/reftable-backend.c
#, c-format
msgid "refname is dangerous: %s"
@@ -24895,12 +25021,16 @@ msgid "create repository within 'src' directory"
msgstr "在 'src' 目录中创建仓库"
#: scalar.c
+msgid "specify if tags should be fetched during clone"
+msgstr "å¦‚è‹¥åº”åœ¨å…‹éš†æœŸé—´èŽ·å–æ ‡ç­¾åˆ™æŒ‡å®š"
+
+#: scalar.c
msgid ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
msgstr ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] <url> [<登记>]"
+"\t[--[no-]src] [--[no-]tags] <url> [<登记>]"
#: scalar.c
#, c-format
@@ -24924,6 +25054,11 @@ msgstr "无法在 '%s' 中é…置远程"
#: scalar.c
#, c-format
+msgid "could not disable tags in '%s'"
+msgstr "无法ç¦ç”¨ '%s' 中的标签"
+
+#: scalar.c
+#, c-format
msgid "could not configure '%s'"
msgstr "无法é…ç½® '%s'"
@@ -26192,6 +26327,11 @@ msgstr "æ— æ³•èŽ·å– '%*s%s%s' 状æ€ï¼ˆstat)"
#: setup.c
#, c-format
+msgid "safe.directory '%s' not absolute"
+msgstr "safe.directory '%s' 䏿˜¯ç»å¯¹è·¯å¾„"
+
+#: setup.c
+#, c-format
msgid ""
"detected dubious ownership in repository at '%s'\n"
"%sTo add an exception for this directory, call:\n"
@@ -26750,6 +26890,30 @@ msgstr "令牌"
msgid "command token to send to the server"
msgstr "å‘é€åˆ°æœåŠ¡å™¨çš„å‘½ä»¤ä»¤ç‰Œ"
+#: t/unit-tests/unit-test.c
+msgid "unit-test [<options>]"
+msgstr "unit-test [<选项>]"
+
+#: t/unit-tests/unit-test.c
+msgid "immediately exit upon the first failed test"
+msgstr "第一次测试失败åŽç«‹å³é€€å‡º"
+
+#: t/unit-tests/unit-test.c
+msgid "suite[::test]"
+msgstr "suite[::测试用例]"
+
+#: t/unit-tests/unit-test.c
+msgid "run only test suite or individual test <suite[::test]>"
+msgstr "åªè¿è¡Œæµ‹è¯•套件或å•独的测试 <测试套件[::测试用例]>"
+
+#: t/unit-tests/unit-test.c
+msgid "suite"
+msgstr "测试套件"
+
+#: t/unit-tests/unit-test.c
+msgid "exclude test suite <suite>"
+msgstr "排除测试套件 <测试套件>"
+
#: trailer.c
#, c-format
msgid "running trailer command '%s' failed"
@@ -28201,6 +28365,10 @@ msgid "--dump-aliases incompatible with other options\n"
msgstr "--dump-aliases 和其它选项ä¸å…¼å®¹\n"
#: git-send-email.perl
+msgid "--dump-aliases and --translate-aliases are mutually exclusive\n"
+msgstr "--dump-aliases 和 --translate-aliases 是互斥的\n"
+
+#: git-send-email.perl
msgid ""
"fatal: found configuration options for 'sendmail'\n"
"git-send-email is configured with the sendemail.* options - note the 'e'.\n"
diff --git a/po/zh_TW.po b/po/zh_TW.po
index abf7157a99..5e6818f453 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -30,8 +30,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Git\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2024-07-19 15:00+0800\n"
-"PO-Revision-Date: 2024-07-24 08:21+0000\n"
+"POT-Creation-Date: 2024-10-05 01:20+0000\n"
+"PO-Revision-Date: 2024-10-05 15:45+0800\n"
"Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\n"
"Language-Team: Chinese (Traditional) <http://weblate.slat.org/projects/git-"
"po/git-cli/zh_Hant/>\n"
@@ -40,7 +40,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 5.6.2\n"
+"X-Generator: Poedit 3.5\n"
"X-ZhConverter: ç¹åŒ–姬 dict-f4bc617e-r910 @ 2019/11/16 20:23:12 | https://"
"zhconvert.org\n"
@@ -663,7 +663,7 @@ msgid ""
"/ - 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\n"
+"p - print the current hunk, 'P' to use the pager\n"
"? - print help\n"
msgstr ""
"j - ç¶­æŒæ­¤å€å¡Šæœªæ±ºå®šç‹€æ…‹ï¼Œæª¢è¦–下一個未決定å€å¡Š\n"
@@ -674,7 +674,7 @@ msgstr ""
"/ - å°‹æ‰¾ç¬¦åˆæä¾›ä¹‹å¸¸è¦è¡¨ç¤ºå¼çš„å€å¡Š\n"
"s - 分割目å‰å€å¡Šç‚ºæ›´å°çš„å€å¡Š\n"
"e - 手動編輯目å‰å€å¡Š\n"
-"p - 輸出目å‰å€å¡Š\n"
+"p - 輸出目å‰å€å¡Šï¼Œã€ŒPã€åˆ†é é¡¯ç¤º\n"
"? - 顯示說明\n"
#: add-patch.c
@@ -1487,6 +1487,18 @@ msgstr "亦套用修補檔(與 --stat/--summary/--check é¸é …åŒæ™‚使用)"
msgid "attempt three-way merge, fall back on normal patch if that fails"
msgstr "嘗試三方åˆä½µï¼Œè‹¥å¤±æ•—則回到正常修補模å¼"
+#: apply.c builtin/merge-file.c
+msgid "for conflicts, use our version"
+msgstr "如果è¡çªï¼Œä½¿ç”¨æˆ‘們的版本"
+
+#: apply.c builtin/merge-file.c
+msgid "for conflicts, use their version"
+msgstr "如果è¡çªï¼Œä½¿ç”¨ä»–們的版本"
+
+#: apply.c builtin/merge-file.c
+msgid "for conflicts, use a union version"
+msgstr "如果è¡çªï¼Œä½¿ç”¨è¯åˆç‰ˆæœ¬"
+
#: apply.c
msgid "build a temporary index based on embedded index information"
msgstr "組建以嵌入索引資訊為基礎的暫存索引"
@@ -1548,6 +1560,10 @@ msgstr "在所有檔案å稱å‰åŠ ä¸Š <root>"
msgid "don't return error for empty patches"
msgstr "é‡åˆ°ç©ºç™½ä¿®è£œæª”時,ä¸å›žå‚³éŒ¯èª¤"
+#: apply.c
+msgid "--ours, --theirs, and --union require --3way"
+msgstr "--oursã€--theirs å’Œ --union éœ€è¦ --3way"
+
#: archive-tar.c archive-zip.c
#, c-format
msgid "cannot stream blob %s"
@@ -1638,6 +1654,11 @@ msgstr "éžæ¨¹ç‹€ç‰©ä»¶ï¼š%s"
#: archive.c
#, c-format
+msgid "failed to unpack tree object %s"
+msgstr "解包 %s 樹狀物件失敗"
+
+#: archive.c
+#, c-format
msgid "File not found: %s"
msgstr "找ä¸åˆ°æª”案:%s"
@@ -1752,7 +1773,7 @@ msgstr "「%sã€é¸é …需è¦ã€Œ%sã€"
msgid "Unexpected option --output"
msgstr "éžé æœŸé¸é … --output"
-#: archive.c
+#: archive.c t/unit-tests/unit-test.c
#, c-format
msgid "extra command line parameter '%s'"
msgstr "å¤šå‡ºå‘½ä»¤åˆ—åƒæ•¸ã€Œ%sã€"
@@ -1823,7 +1844,7 @@ msgid "unable to stat '%s'"
msgstr "無法統計「%sã€"
#: bisect.c builtin/cat-file.c builtin/index-pack.c builtin/notes.c
-#: builtin/pack-objects.c combine-diff.c rerere.c
+#: builtin/pack-objects.c combine-diff.c object-file.c rerere.c
#, c-format
msgid "unable to read %s"
msgstr "ç„¡æ³•è®€å– %s"
@@ -1958,7 +1979,7 @@ msgstr "--contents å’Œ --reverse ä¸èƒ½æ··ç”¨ã€‚"
msgid "--reverse and --first-parent together require specified latest commit"
msgstr "--reverse å’Œ --first-parent å…±ç”¨ï¼Œéœ€è¦æŒ‡å®šæœ€æ–°çš„æäº¤"
-#: blame.c builtin/commit.c builtin/log.c builtin/merge.c
+#: blame.c builtin/bisect.c builtin/commit.c builtin/log.c builtin/merge.c
#: builtin/pack-objects.c builtin/shortlog.c midx-write.c pack-bitmap.c
#: remote.c sequencer.c submodule.c
msgid "revision walk setup failed"
@@ -2035,12 +2056,10 @@ msgid "not tracking: ambiguous information for ref '%s'"
msgstr "未追蹤:「%sã€å¼•用有歧義"
# 譯者:為ä¿è­‰åœ¨è¼¸å‡ºä¸­å°é½Šï¼Œæ³¨æ„調整å¥ä¸­ç©ºæ ¼ï¼
-#. #-#-#-#-# branch.c.po #-#-#-#-#
#. TRANSLATORS: This is a line listing a remote with duplicate
#. refspecs in the advice message below. For RTL languages you'll
#. probably want to swap the "%s" and leading " " space around.
#.
-#. #-#-#-#-# object-name.c.po #-#-#-#-#
#. TRANSLATORS: This is line item of ambiguous object output
#. from describe_ambiguous_object() above. For RTL languages
#. you'll probably want to swap the "%s" and leading " " space
@@ -2208,7 +2227,7 @@ msgstr "測試執行"
#: builtin/add.c builtin/check-ignore.c builtin/commit.c
#: builtin/count-objects.c builtin/fsck.c builtin/log.c builtin/mv.c
-#: builtin/read-tree.c
+#: builtin/read-tree.c builtin/refs.c
msgid "be verbose"
msgstr "詳細輸出"
@@ -2694,7 +2713,7 @@ msgstr "n"
#: builtin/am.c builtin/branch.c builtin/bugreport.c builtin/cat-file.c
#: builtin/clone.c builtin/diagnose.c builtin/for-each-ref.c builtin/init-db.c
#: builtin/ls-files.c builtin/ls-tree.c builtin/refs.c builtin/replace.c
-#: builtin/tag.c builtin/verify-tag.c
+#: builtin/submodule--helper.c builtin/tag.c builtin/verify-tag.c
msgid "format"
msgstr "format"
@@ -2991,10 +3010,6 @@ msgstr ""
"支æ´çš„é¸é …有:--term-good|--term-old å’Œ --term-bad|--term-new。"
#: builtin/bisect.c
-msgid "revision walk setup failed\n"
-msgstr "ä¿®è¨‚ç‰ˆéæ­·è¨­å®šå¤±æ•—\n"
-
-#: builtin/bisect.c
#, c-format
msgid "could not open '%s' for appending"
msgstr "無法開啟「%sã€é€²è¡Œé™„加"
@@ -4225,9 +4240,16 @@ msgid "also read contacts from stdin"
msgstr "亦從 stdin 讀å–è¯çµ¡åœ°å€"
#: builtin/check-mailmap.c
-#, c-format
-msgid "unable to parse contact: %s"
-msgstr "無法解æžè¯çµ¡åœ°å€ï¼š%s"
+msgid "read additional mailmap entries from file"
+msgstr "從檔案讀å–å…¶ä»– mailmap é …ç›®"
+
+#: builtin/check-mailmap.c
+msgid "blob"
+msgstr "資料物件"
+
+#: builtin/check-mailmap.c
+msgid "read additional mailmap entries from blob"
+msgstr "從 blob 讀å–å…¶ä»– mailmap é …ç›®"
#: builtin/check-mailmap.c
msgid "no contacts specified"
@@ -4636,6 +4658,11 @@ msgstr "「%sã€ä¸èƒ½èˆ‡åˆ‡æ›åˆ†æ”¯åŒæ™‚使用"
#: builtin/checkout.c
#, c-format
+msgid "'%s' needs the paths to check out"
+msgstr "「%sã€éœ€è¦æŒ‡å®šè¦ç°½å‡ºçš„路徑"
+
+#: builtin/checkout.c
+#, c-format
msgid "'%s' cannot be used with '%s'"
msgstr "「%sã€ä¸èƒ½èˆ‡ã€Œ%sã€åŒæ™‚使用"
@@ -5101,7 +5128,7 @@ msgstr "gitdir"
msgid "separate git dir from working tree"
msgstr "git 目錄和工作å€åˆ†é›¢"
-#: builtin/clone.c builtin/init-db.c
+#: builtin/clone.c builtin/init-db.c builtin/submodule--helper.c
msgid "specify the reference format to use"
msgstr "指定è¦ä½¿ç”¨çš„引用格å¼"
@@ -5198,7 +5225,7 @@ msgstr "å»ºç«‹é€£çµ '%s' 失敗"
msgid "failed to copy file to '%s'"
msgstr "複製檔案至 '%s' 失敗"
-#: builtin/clone.c
+#: builtin/clone.c refs/files-backend.c
#, c-format
msgid "failed to iterate over '%s'"
msgstr "無法在 '%s' 上疊代"
@@ -5264,7 +5291,8 @@ msgstr "å¤ªå¤šåƒæ•¸ã€‚"
msgid "You must specify a repository to clone."
msgstr "您必須指定è¦è¤‡è£½çš„版本庫。"
-#: builtin/clone.c builtin/init-db.c builtin/refs.c setup.c
+#: builtin/clone.c builtin/init-db.c builtin/refs.c builtin/submodule--helper.c
+#: setup.c
#, c-format
msgid "unknown ref storage format '%s'"
msgstr "未知的引用儲存格å¼ã€Œ%sã€"
@@ -5602,7 +5630,7 @@ msgstr "git commit-tree:讀å–失敗"
msgid ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]\n"
" [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|"
-"reword):]<commit>)]\n"
+"reword):]<commit>]\n"
" [-F <file> | -m <msg>] [--reset-author] [--allow-empty]\n"
" [--allow-empty-message] [--no-verify] [-e] [--author=<author>]\n"
" [--date=<date>] [--cleanup=<mode>] [--[no-]status]\n"
@@ -5612,7 +5640,7 @@ msgid ""
msgstr ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]\n"
" [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|"
-"reword):]<commit>)]\n"
+"reword):]<commit>]\n"
" [-F <file> | -m <msg>] [--reset-author] [--allow-empty]\n"
" [--allow-empty-message] [--no-verify] [-e] [--author=<author>]\n"
" [--date=<date>] [--cleanup=<mode>] [--[no-]status]\n"
@@ -6211,11 +6239,10 @@ msgstr "git config list [<檔案é¸é …>] [<顯示é¸é …>] [--includes]"
#: builtin/config.c
msgid ""
"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
-"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
-"<name>"
+"regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name>"
msgstr ""
-"git config get [<檔案é¸é …>] [<顯示é¸é …>] [--includes] [--all] [--regexp=<常è¦"
-"表示å¼>] [--value=<值>] [--fixed-value] [--default=<é è¨­å€¼>] <å稱>"
+"git config get [<檔案é¸é …>] [<顯示é¸é …>] [--includes] [--all] [--regexp] [--"
+"value=<值>] [--fixed-value] [--default=<é è¨­å€¼>] <å稱>"
#: builtin/config.c
msgid ""
@@ -6251,6 +6278,15 @@ msgstr "git config [<file-option>] --get-colorbool <name> [<stdout-is-tty>]"
#: builtin/config.c
msgid ""
+"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
+"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
+"<name>"
+msgstr ""
+"git config get [<檔案é¸é …>] [<顯示é¸é …>] [--includes] [--all] [--regexp=<常è¦"
+"表示å¼>] [--value=<值>] [--fixed-value] [--default=<é è¨­å€¼>] <å稱>"
+
+#: builtin/config.c
+msgid ""
"git config set [<file-option>] [--type=<type>] [--comment=<message>] [--all] "
"[--value=<value>] [--fixed-value] <name> <value>"
msgstr ""
@@ -7259,8 +7295,8 @@ msgstr ""
#: builtin/fetch.c
#, c-format
-msgid "%s did not send all necessary objects\n"
-msgstr "%s æœªå‚³é€æ‰€æœ‰å¿…需的物件\n"
+msgid "%s did not send all necessary objects"
+msgstr "%s æœªå‚³é€æ‰€æœ‰å¿…需的物件"
#: builtin/fetch.c
#, c-format
@@ -7308,8 +7344,8 @@ msgstr "é¸é …「%sã€çš„值「%sã€å° %s 無效"
#: builtin/fetch.c
#, c-format
-msgid "option \"%s\" is ignored for %s\n"
-msgstr "é¸é …「%sã€è¢« %s 忽略\n"
+msgid "option \"%s\" is ignored for %s"
+msgstr "é¸é …「%sã€è¢« %s 忽略"
#: builtin/fetch.c object-file.c
#, c-format
@@ -8155,6 +8191,10 @@ msgid "enable auto-gc mode"
msgstr "啟用自動垃圾回收模å¼"
#: builtin/gc.c
+msgid "perform garbage collection in the background"
+msgstr "在背景執行垃圾回收"
+
+#: builtin/gc.c
msgid "force running gc even if there may be another gc running"
msgstr "強制執行 gc å³ä½¿å¦å¤–一個 gc 正在執行"
@@ -8271,6 +8311,10 @@ msgid "run tasks based on the state of the repository"
msgstr "基於版本庫狀態執行作業"
#: builtin/gc.c
+msgid "perform maintenance in the background"
+msgstr "在背景執行維護"
+
+#: builtin/gc.c
msgid "frequency"
msgstr "frequency"
@@ -8434,7 +8478,6 @@ msgstr "grep:無法建立執行緒:%s"
msgid "invalid number of threads specified (%d) for %s"
msgstr "為 %2$s 設定的執行緒數 (%1$d) 無效"
-#. #-#-#-#-# grep.c.po #-#-#-#-#
#. TRANSLATORS: %s is the configuration
#. variable for tweaking threads, currently
#. grep.threads
@@ -9357,10 +9400,6 @@ msgid "Final output: %d %s\n"
msgstr "最終輸出:%d %s\n"
#: builtin/log.c
-msgid "unable to create temporary object directory"
-msgstr "無法建立暫存物件目錄"
-
-#: builtin/log.c
#, c-format
msgid "git show %s: bad file"
msgstr "git show %s: æå£žçš„æª”案"
@@ -10086,18 +10125,6 @@ msgstr "使用基於 diff3 çš„åˆä½µ"
msgid "use a zealous diff3 based merge"
msgstr "使用基於 zealous diff3 çš„åˆä½µ"
-#: builtin/merge-file.c
-msgid "for conflicts, use our version"
-msgstr "如果è¡çªï¼Œä½¿ç”¨æˆ‘們的版本"
-
-#: builtin/merge-file.c
-msgid "for conflicts, use their version"
-msgstr "如果è¡çªï¼Œä½¿ç”¨ä»–們的版本"
-
-#: builtin/merge-file.c
-msgid "for conflicts, use a union version"
-msgstr "如果è¡çªï¼Œä½¿ç”¨è¯åˆç‰ˆæœ¬"
-
#: builtin/merge-file.c diff.c
msgid "<algorithm>"
msgstr "<演算法>"
@@ -10393,7 +10420,7 @@ msgstr "ä¸èƒ½å¯«å…¥ç´¢å¼•。"
msgid "Not handling anything other than two heads merge."
msgstr "未處ç†å…©å€‹é ­åˆä½µä¹‹å¤–的任何動作。"
-#: builtin/merge.c
+#: builtin/merge.c builtin/sparse-checkout.c
#, c-format
msgid "unable to write %s"
msgstr "ä¸èƒ½å¯« %s"
@@ -10685,6 +10712,10 @@ msgid "write multi-pack bitmap"
msgstr "寫入多包ä½åœ–"
#: builtin/multi-pack-index.c
+msgid "write a new incremental MIDX"
+msgstr "å¯«å…¥æ–°çš„å¢žé‡ MIDX"
+
+#: builtin/multi-pack-index.c
msgid "write multi-pack index containing only given indexes"
msgstr "寫入åªåŒ…嫿Œ‡å®šç´¢å¼•的多包索引"
@@ -13091,6 +13122,10 @@ msgid "git refs migrate --ref-format=<format> [--dry-run]"
msgstr "git refs migrate --ref-format=<æ ¼å¼> [--dry-run]"
#: builtin/refs.c
+msgid "git refs verify [--strict] [--verbose]"
+msgstr "git refs verify [--strict] [--verbose]"
+
+#: builtin/refs.c
msgid "specify the reference format to convert to"
msgstr "指定è¦è½‰æ›æˆçš„引用格å¼"
@@ -13107,6 +13142,14 @@ msgstr "缺少 --ref-format=<æ ¼å¼>"
msgid "repository already uses '%s' format"
msgstr "版本庫已經使用 '%s' æ ¼å¼"
+#: builtin/refs.c
+msgid "enable strict checking"
+msgstr "啟用嚴格檢查"
+
+#: builtin/refs.c
+msgid "'git refs verify' takes no arguments"
+msgstr "「git refs verifyã€ä¸æŽ¥å—引數"
+
#: builtin/remote.c
msgid ""
"git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
@@ -14877,12 +14920,12 @@ msgid "failed to look up reference"
msgstr "無法查詢引用"
#: builtin/show-ref.c
-msgid "only show tags (can be combined with branches)"
-msgstr "åªé¡¯ç¤ºæ¨™ç±¤ï¼ˆå¯ä»¥å’Œåˆ†æ”¯å…±ç”¨ï¼‰"
+msgid "only show tags (can be combined with --branches)"
+msgstr "åªé¡¯ç¤ºæ¨™ç±¤ï¼ˆå¯ä»¥å’Œ --branches 共用)"
#: builtin/show-ref.c
-msgid "only show branches (can be combined with tags)"
-msgstr "åªé¡¯ç¤ºåˆ†æ”¯ï¼ˆå¯ä»¥å’Œæ¨™ç±¤å…±ç”¨ï¼‰"
+msgid "only show branches (can be combined with --tags)"
+msgstr "åªé¡¯ç¤ºåˆ†æ”¯ï¼ˆå¯ä»¥å’Œ --tags 共用)"
#: builtin/show-ref.c
msgid "check for reference existence without resolving"
@@ -14945,6 +14988,11 @@ msgid "failed to create directory for sparse-checkout file"
msgstr "無法建立稀ç–簽出檔案的目錄"
#: builtin/sparse-checkout.c
+#, c-format
+msgid "unable to fdopen %s"
+msgstr "無法 fdopen %s"
+
+#: builtin/sparse-checkout.c
msgid "failed to initialize worktree config"
msgstr "無法åˆå§‹åŒ–工作å€çµ„æ…‹"
@@ -15496,8 +15544,8 @@ msgstr "無法雜湊來自 '%s' 的物件"
#: builtin/submodule--helper.c
#, c-format
-msgid "unexpected mode %o\n"
-msgstr "éžé æœŸçš„æ¨¡å¼ %o\n"
+msgid "unexpected mode %o"
+msgstr "éžé æœŸçš„æ¨¡å¼ %o"
#: builtin/submodule--helper.c
msgid "use the commit stored in the index instead of the submodule HEAD"
@@ -18167,7 +18215,7 @@ msgstr "無法寫入正確數é‡çš„基礎圖 ID"
msgid "unable to create temporary graph layer"
msgstr "無法建立暫時性圖層"
-#: commit-graph.c
+#: commit-graph.c midx-write.c
#, c-format
msgid "unable to adjust shared permissions for '%s'"
msgstr "無法調整「%sã€çš„共用權é™"
@@ -19504,7 +19552,7 @@ msgstr "color-moved-ws:allow-indentation-change ä¸èƒ½èˆ‡å…¶å®ƒç©ºç™½å­—元模
msgid "Unknown value for 'diff.submodule' config variable: '%s'"
msgstr "設定變數 'diff.submodule' 未知的å–值:'%s'"
-#: diff.c transport.c
+#: diff.c merge-recursive.c transport.c
#, c-format
msgid "unknown value for config '%s': %s"
msgstr "設定 '%s' çš„å–值未知:%s"
@@ -21100,6 +21148,10 @@ msgstr ""
msgid "Unable to create '%s.lock': %s"
msgstr "ä¸èƒ½å»ºç«‹ '%s.lock':%s"
+#: log-tree.c
+msgid "unable to create temporary object directory"
+msgstr "無法建立暫存物件目錄"
+
#: loose.c
#, c-format
msgid "could not write loose object index %s"
@@ -21107,8 +21159,8 @@ msgstr "無法寫入鬆散物件索引 %s"
#: loose.c
#, c-format
-msgid "failed to write loose object index %s\n"
-msgstr "寫入鬆散物件索引 %s 失敗\n"
+msgid "failed to write loose object index %s"
+msgstr "寫入鬆散物件索引 %s 失敗"
#: ls-refs.c
#, c-format
@@ -21744,6 +21796,20 @@ msgid "could not open index for %s"
msgstr "無法開啟 %s 的索引"
#: midx-write.c
+#, c-format
+msgid "unable to link '%s' to '%s'"
+msgstr "無法將「%sã€link 至「%sã€"
+
+#: midx-write.c midx.c
+#, c-format
+msgid "failed to clear multi-pack-index at %s"
+msgstr "清ç†ä½æ–¼ %s 的多包索引失敗"
+
+#: midx-write.c
+msgid "cannot write incremental MIDX with bitmap"
+msgstr "無法寫入有ä½åœ–çš„å¢žé‡ MIDX"
+
+#: midx-write.c
msgid "ignoring existing multi-pack-index; checksum mismatch"
msgstr "å¿½ç•¥ç¾æœ‰çš„多包索引:總和檢查碼ä¸ç¬¦"
@@ -21780,14 +21846,30 @@ msgid "refusing to write multi-pack .bitmap without any objects"
msgstr "拒絕寫入無任何物件的多包 .bitmap"
#: midx-write.c
+msgid "unable to create temporary MIDX layer"
+msgstr "無法建立暫時的 MIDX 層"
+
+#: midx-write.c
msgid "could not write multi-pack bitmap"
msgstr "無法寫入多包ä½åœ–"
#: midx-write.c
+msgid "unable to open multi-pack-index chain file"
+msgstr "無法開啟多å°è£ç´¢å¼•éˆæª”案"
+
+#: midx-write.c
+msgid "unable to rename new multi-pack-index layer"
+msgstr "無法更改新多å°è£ç´¢å¼•層的å稱"
+
+#: midx-write.c
msgid "could not write multi-pack-index"
msgstr "無法寫入多包索引"
#: midx-write.c
+msgid "cannot expire packs from an incremental multi-pack-index"
+msgstr "無法將一個增é‡å¤šå°è£ç´¢å¼•çš„å¥—ä»¶è¨­ç‚ºéŽæœŸ"
+
+#: midx-write.c
msgid "Counting referenced objects"
msgstr "正在計算引用物件"
@@ -21796,6 +21878,10 @@ msgid "Finding and deleting unreferenced packfiles"
msgstr "正在尋找並刪除沒有引用的 packfile"
#: midx-write.c
+msgid "cannot repack an incremental multi-pack-index"
+msgstr "ç„¡æ³•é‡æ–°å°è£å¢žé‡çš„多å°è£ç´¢å¼•"
+
+#: midx-write.c
msgid "could not start pack-objects"
msgstr "ä¸èƒ½é–‹å§‹ pack-objects"
@@ -21867,6 +21953,33 @@ msgid "multi-pack-index pack names out of order: '%s' before '%s'"
msgstr "多包索引包åç„¡åºï¼š'%s' 在 '%s' 之å‰"
#: midx.c
+msgid "multi-pack-index chain file too small"
+msgstr "多å°è£ç´¢å¼•éˆæª”案éŽå°"
+
+#: midx.c
+#, c-format
+msgid "pack count in base MIDX too high: %<PRIuMAX>"
+msgstr "基礎 MIDX çš„å°è£è¨ˆæ•¸å¤ªé«˜ï¼š%<PRIuMAX>"
+
+#: midx.c
+#, c-format
+msgid "object count in base MIDX too high: %<PRIuMAX>"
+msgstr "基礎 MIDX 的物件計數太高:%<PRIuMAX>"
+
+#: midx.c
+#, c-format
+msgid "invalid multi-pack-index chain: line '%s' not a hash"
+msgstr "無法的多å°è£ç´¢å¼•éˆï¼šã€Œ%sã€åˆ—䏿˜¯é›œæ¹Šå€¼"
+
+#: midx.c
+msgid "unable to find all multi-pack index files"
+msgstr "找ä¸åˆ°æ‰€æœ‰çš„多å°è£ç´¢å¼•檔案"
+
+#: midx.c
+msgid "invalid MIDX object position, MIDX is likely corrupt"
+msgstr "無效的 MIDX 物件ä½ç½®ï¼ŒMIDX 大概有å•題"
+
+#: midx.c
#, c-format
msgid "bad pack-int-id: %u (%u total packs)"
msgstr "錯的 pack-int-id:%u(共有 %u 個包)"
@@ -21889,11 +22002,6 @@ msgid "multi-pack-index large offset out of bounds"
msgstr "多包索引的最大å移超出邊界"
#: midx.c
-#, c-format
-msgid "failed to clear multi-pack-index at %s"
-msgstr "清ç†ä½æ–¼ %s 的多包索引失敗"
-
-#: midx.c
msgid "multi-pack-index file exists, but failed to parse"
msgstr "有 multi-pack-index 檔案,但無法解æž"
@@ -22152,6 +22260,16 @@ msgstr "缺少 %s 到 %s 的映射"
#: object-file.c
#, c-format
+msgid "unable to open %s"
+msgstr "ä¸èƒ½é–‹å•Ÿ %s"
+
+#: object-file.c
+#, c-format
+msgid "files '%s' and '%s' differ in contents"
+msgstr "「%sã€å’Œã€Œ%sã€æª”案內容ä¸åŒ"
+
+#: object-file.c
+#, c-format
msgid "unable to write file %s"
msgstr "無法寫檔案 %s"
@@ -22258,11 +22376,6 @@ msgstr "%s 䏿˜¯ä¸€å€‹æœ‰æ•ˆçš„ '%s' 物件"
#: object-file.c
#, c-format
-msgid "unable to open %s"
-msgstr "ä¸èƒ½é–‹å•Ÿ %s"
-
-#: object-file.c
-#, c-format
msgid "hash mismatch for %s (expected %s)"
msgstr "%s 的雜湊值ä¸ç¬¦åˆï¼ˆé æœŸ %s)"
@@ -23709,6 +23822,11 @@ msgstr "é æœŸæ ¼å¼ï¼š%%(ahead-behind:<committish>)"
#: ref-filter.c
#, c-format
+msgid "expected format: %%(is-base:<committish>)"
+msgstr "é æœŸæ ¼å¼ï¼š%%(is-base:<committish>)"
+
+#: ref-filter.c
+#, c-format
msgid "malformed field name: %.*s"
msgstr "æ ¼å¼éŒ¯èª¤çš„æ¬„ä½å:%.*s"
@@ -23991,6 +24109,15 @@ msgid ""
"cannot lock ref '%s': expected symref with target '%s': but is a regular ref"
msgstr "無法鎖定引用「%sã€ï¼šé æœŸæ˜¯æŒ‡å‘「%sã€çš„符號引用,但這個是一般引用"
+#: refs/files-backend.c
+#, c-format
+msgid "cannot open directory %s"
+msgstr "無法開啟 %s 目錄"
+
+#: refs/files-backend.c
+msgid "Checking references consistency"
+msgstr "正在檢查引用一致性"
+
#: refs/reftable-backend.c
#, c-format
msgid "refname is dangerous: %s"
@@ -24760,12 +24887,16 @@ msgid "create repository within 'src' directory"
msgstr "在「srcã€ç›®éŒ„建立版本庫"
#: scalar.c
+msgid "specify if tags should be fetched during clone"
+msgstr "指定是å¦è¦åœ¨è¤‡è£½éšŽæ®µæŠ“å–æ¨™ç±¤"
+
+#: scalar.c
msgid ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
msgstr ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
#: scalar.c
#, c-format
@@ -24789,6 +24920,11 @@ msgstr "無法設定「%sã€ä¸­çš„é ç«¯"
#: scalar.c
#, c-format
+msgid "could not disable tags in '%s'"
+msgstr "無法åœç”¨ã€Œ%sã€çš„æ¨™ç±¤"
+
+#: scalar.c
+#, c-format
msgid "could not configure '%s'"
msgstr "無法設定「%sã€"
@@ -26061,6 +26197,11 @@ msgstr "å–å¾— '%*s%s%s' 狀態(stat)失敗"
#: setup.c
#, c-format
+msgid "safe.directory '%s' not absolute"
+msgstr "safe.directory「%sã€ä¸æ˜¯çµ•å°è·¯å¾‘"
+
+#: setup.c
+#, c-format
msgid ""
"detected dubious ownership in repository at '%s'\n"
"%sTo add an exception for this directory, call:\n"
@@ -26617,6 +26758,30 @@ msgstr "代符"
msgid "command token to send to the server"
msgstr "è¦å‚³é€è‡³ä¼ºæœå™¨çš„命令代符"
+#: t/unit-tests/unit-test.c
+msgid "unit-test [<options>]"
+msgstr "unit-test [<options>]"
+
+#: t/unit-tests/unit-test.c
+msgid "immediately exit upon the first failed test"
+msgstr "一旦有測試失敗就立刻退出"
+
+#: t/unit-tests/unit-test.c
+msgid "suite[::test]"
+msgstr "suite[::test]"
+
+#: t/unit-tests/unit-test.c
+msgid "run only test suite or individual test <suite[::test]>"
+msgstr "åªåŸ·è¡Œæ¸¬è©¦å¥—件或單ç¨çš„æ¸¬è©¦ <suite[::test]>"
+
+#: t/unit-tests/unit-test.c
+msgid "suite"
+msgstr "suite"
+
+#: t/unit-tests/unit-test.c
+msgid "exclude test suite <suite>"
+msgstr "排除測試套件 <suite>"
+
#: trailer.c
#, c-format
msgid "running trailer command '%s' failed"
@@ -28068,6 +28233,10 @@ msgid "--dump-aliases incompatible with other options\n"
msgstr "--dump-aliases 和其它é¸é …ä¸ç›¸å®¹\n"
#: git-send-email.perl
+msgid "--dump-aliases and --translate-aliases are mutually exclusive\n"
+msgstr "--dump-aliases 和 --translate-aliases 互斥\n"
+
+#: git-send-email.perl
msgid ""
"fatal: found configuration options for 'sendmail'\n"
"git-send-email is configured with the sendemail.* options - note the 'e'.\n"
@@ -28413,6 +28582,13 @@ msgstr "ç•¥éŽ %s å«å‚™ä»½å¾Œç¶´ '%s'。\n"
msgid "Do you really want to send %s? [y|N]: "
msgstr "您真的è¦å‚³é€ %s?[y|N]: "
+#~ msgid "revision walk setup failed\n"
+#~ msgstr "ä¿®è¨‚ç‰ˆéæ­·è¨­å®šå¤±æ•—\n"
+
+#, c-format
+#~ msgid "unable to parse contact: %s"
+#~ msgstr "無法解æžè¯çµ¡åœ°å€ï¼š%s"
+
#~ msgid ""
#~ "the add.interactive.useBuiltin setting has been removed!\n"
#~ "See its entry in 'git help config' for details."
@@ -28434,10 +28610,6 @@ msgstr "您真的è¦å‚³é€ %s?[y|N]: "
#~ msgstr "沒有給é ç«¯ç‰ˆæœ¬åº« '%s' 設定 URL"
#, c-format
-#~ msgid "unable to copy '%s' to '%s'"
-#~ msgstr "無法複製 '%s' 至 '%s'"
-
-#, c-format
#~ msgid "remote '%s' has no configured URL"
#~ msgstr "“%s†é ç«¯æœªè¨­å®š URL"
diff --git a/promisor-remote.c b/promisor-remote.c
index 317e1b127f..9345ae3db2 100644
--- a/promisor-remote.c
+++ b/promisor-remote.c
@@ -154,6 +154,7 @@ static int promisor_remote_config(const char *var, const char *value,
if (!r)
return 0;
+ FREE_AND_NULL(r->partial_clone_filter);
return git_config_string(&r->partial_clone_filter, var, value);
}
@@ -189,6 +190,7 @@ void promisor_remote_clear(struct promisor_remote_config *config)
{
while (config->promisors) {
struct promisor_remote *r = config->promisors;
+ free(r->partial_clone_filter);
config->promisors = config->promisors->next;
free(r);
}
diff --git a/pseudo-merge.c b/pseudo-merge.c
index 10ebd9a4e9..bb59965ed2 100644
--- a/pseudo-merge.c
+++ b/pseudo-merge.c
@@ -87,7 +87,7 @@ static void pseudo_merge_group_init(struct pseudo_merge_group *group)
{
memset(group, 0, sizeof(struct pseudo_merge_group));
- strmap_init_with_options(&group->matches, NULL, 0);
+ strmap_init_with_options(&group->matches, NULL, 1);
group->decay = DEFAULT_PSEUDO_MERGE_DECAY;
group->max_merges = DEFAULT_PSEUDO_MERGE_MAX_MERGES;
@@ -97,6 +97,25 @@ static void pseudo_merge_group_init(struct pseudo_merge_group *group)
group->stable_size = DEFAULT_PSEUDO_MERGE_STABLE_SIZE;
}
+void pseudo_merge_group_release(struct pseudo_merge_group *group)
+{
+ struct hashmap_iter iter;
+ struct strmap_entry *e;
+
+ regfree(group->pattern);
+ free(group->pattern);
+
+ strmap_for_each_entry(&group->matches, &iter, e) {
+ struct pseudo_merge_matches *matches = e->value;
+ free(matches->stable);
+ free(matches->unstable);
+ free(matches);
+ }
+ strmap_clear(&group->matches, 0);
+
+ free(group->merges);
+}
+
static int pseudo_merge_config(const char *var, const char *value,
const struct config_context *ctx,
void *cb_data)
@@ -256,7 +275,7 @@ static int find_pseudo_merge_group_for_ref(const char *refname,
matches = strmap_get(&group->matches, group_name.buf);
if (!matches) {
matches = xcalloc(1, sizeof(*matches));
- strmap_put(&group->matches, strbuf_detach(&group_name, NULL),
+ strmap_put(&group->matches, group_name.buf,
matches);
}
diff --git a/pseudo-merge.h b/pseudo-merge.h
index 4b5febaa63..29df8a32ec 100644
--- a/pseudo-merge.h
+++ b/pseudo-merge.h
@@ -51,6 +51,8 @@ struct pseudo_merge_group {
timestamp_t stable_threshold;
};
+void pseudo_merge_group_release(struct pseudo_merge_group *group);
+
struct pseudo_merge_matches {
struct commit **stable;
struct commit **unstable;
diff --git a/range-diff.c b/range-diff.c
index bbb0952264..10885ba301 100644
--- a/range-diff.c
+++ b/range-diff.c
@@ -480,7 +480,7 @@ static void patch_diff(const char *a, const char *b,
diff_flush(diffopt);
}
-static struct strbuf *output_prefix_cb(struct diff_options *opt UNUSED, void *data)
+static const char *output_prefix_cb(struct diff_options *opt UNUSED, void *data)
{
return data;
}
@@ -508,7 +508,7 @@ static void output(struct string_list *a, struct string_list *b,
opts.flags.suppress_hunk_header_line_count = 1;
opts.output_prefix = output_prefix_cb;
strbuf_addstr(&indent, " ");
- opts.output_prefix_data = &indent;
+ opts.output_prefix_data = indent.buf;
diff_setup_done(&opts);
/*
diff --git a/read-cache.c b/read-cache.c
index 764fdfec46..01d0b3ad22 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -2188,6 +2188,7 @@ static unsigned long load_cache_entries_threaded(struct index_state *istate, con
if (err)
die(_("unable to join load_cache_entries thread: %s"), strerror(err));
mem_pool_combine(istate->ce_mem_pool, p->ce_mem_pool);
+ free(p->ce_mem_pool);
consumed += p->consumed;
}
@@ -3124,6 +3125,7 @@ out:
if (f)
free_hashfile(f);
strbuf_release(&sb);
+ free(eoie_c);
free(ieot);
return ret;
}
@@ -3333,8 +3335,9 @@ int write_locked_index(struct index_state *istate, struct lock_file *lock,
int new_shared_index, ret, test_split_index_env;
struct split_index *si = istate->split_index;
- if (git_env_bool("GIT_TEST_CHECK_CACHE_TREE", 0))
- cache_tree_verify(the_repository, istate);
+ if (git_env_bool("GIT_TEST_CHECK_CACHE_TREE", 0) &&
+ cache_tree_verify(the_repository, istate) < 0)
+ return -1;
if ((flags & SKIP_IF_UNCHANGED) && !istate->cache_changed) {
if (flags & COMMIT_LOCK)
diff --git a/refs/reftable-backend.c b/refs/reftable-backend.c
index f5f957e6de..3c6107c7ce 100644
--- a/refs/reftable-backend.c
+++ b/refs/reftable-backend.c
@@ -260,6 +260,13 @@ static int reftable_be_config(const char *var, const char *value,
if (factor > UINT8_MAX)
die("reftable geometric factor cannot exceed %u", (unsigned)UINT8_MAX);
opts->auto_compaction_factor = factor;
+ } else if (!strcmp(var, "reftable.locktimeout")) {
+ int64_t lock_timeout = git_config_int64(var, value, ctx->kvi);
+ if (lock_timeout > LONG_MAX)
+ die("reftable lock timeout cannot exceed %"PRIdMAX, (intmax_t)LONG_MAX);
+ if (lock_timeout < 0 && lock_timeout != -1)
+ die("reftable lock timeout does not support negative values other than -1");
+ opts->lock_timeout_ms = lock_timeout;
}
return 0;
@@ -286,6 +293,7 @@ static struct ref_store *reftable_be_init(struct repository *repo,
refs->write_options.default_permissions = calc_shared_perm(0666 & ~mask);
refs->write_options.disable_auto_compact =
!git_env_bool("GIT_TEST_REFTABLE_AUTOCOMPACTION", 1);
+ refs->write_options.lock_timeout_ms = 100;
git_config(reftable_be_config, &refs->write_options);
@@ -893,7 +901,8 @@ static int prepare_transaction_update(struct write_transaction_table_arg **out,
if (ret)
return ret;
- ret = reftable_stack_new_addition(&addition, stack);
+ ret = reftable_stack_new_addition(&addition, stack,
+ REFTABLE_STACK_NEW_ADDITION_RELOAD);
if (ret) {
if (ret == REFTABLE_LOCK_ERROR)
strbuf_addstr(err, "cannot lock references");
@@ -1311,7 +1320,9 @@ static int write_transaction_table(struct reftable_writer *writer, void *cb_data
struct reftable_log_record log = {0};
struct reftable_iterator it = {0};
- reftable_stack_init_log_iterator(arg->stack, &it);
+ ret = reftable_stack_init_log_iterator(arg->stack, &it);
+ if (ret < 0)
+ goto done;
/*
* When deleting refs we also delete all reflog entries
@@ -1681,7 +1692,10 @@ static int write_copy_table(struct reftable_writer *writer, void *cb_data)
* copy over all log entries from the old reflog. Last but not least,
* when renaming we also have to delete all the old reflog entries.
*/
- reftable_stack_init_log_iterator(arg->stack, &it);
+ ret = reftable_stack_init_log_iterator(arg->stack, &it);
+ if (ret < 0)
+ goto done;
+
ret = reftable_iterator_seek_log(&it, arg->oldname);
if (ret < 0)
goto done;
@@ -1902,7 +1916,10 @@ static struct reftable_reflog_iterator *reflog_iterator_for_stack(struct reftabl
if (ret < 0)
goto done;
- reftable_stack_init_log_iterator(stack, &iter->iter);
+ ret = reftable_stack_init_log_iterator(stack, &iter->iter);
+ if (ret < 0)
+ goto done;
+
ret = reftable_iterator_seek_log(&iter->iter, "");
if (ret < 0)
goto done;
@@ -1969,7 +1986,10 @@ static int reftable_be_for_each_reflog_ent_reverse(struct ref_store *ref_store,
if (refs->err < 0)
return refs->err;
- reftable_stack_init_log_iterator(stack, &it);
+ ret = reftable_stack_init_log_iterator(stack, &it);
+ if (ret < 0)
+ goto done;
+
ret = reftable_iterator_seek_log(&it, refname);
while (!ret) {
ret = reftable_iterator_next_log(&it, &log);
@@ -1985,6 +2005,7 @@ static int reftable_be_for_each_reflog_ent_reverse(struct ref_store *ref_store,
break;
}
+done:
reftable_log_record_release(&log);
reftable_iterator_destroy(&it);
return ret;
@@ -2006,7 +2027,10 @@ static int reftable_be_for_each_reflog_ent(struct ref_store *ref_store,
if (refs->err < 0)
return refs->err;
- reftable_stack_init_log_iterator(stack, &it);
+ ret = reftable_stack_init_log_iterator(stack, &it);
+ if (ret < 0)
+ goto done;
+
ret = reftable_iterator_seek_log(&it, refname);
while (!ret) {
struct reftable_log_record log = {0};
@@ -2056,7 +2080,10 @@ static int reftable_be_reflog_exists(struct ref_store *ref_store,
if (ret < 0)
goto done;
- reftable_stack_init_log_iterator(stack, &it);
+ ret = reftable_stack_init_log_iterator(stack, &it);
+ if (ret < 0)
+ goto done;
+
ret = reftable_iterator_seek_log(&it, refname);
if (ret < 0)
goto done;
@@ -2162,7 +2189,9 @@ static int write_reflog_delete_table(struct reftable_writer *writer, void *cb_da
reftable_writer_set_limits(writer, ts, ts);
- reftable_stack_init_log_iterator(arg->stack, &it);
+ ret = reftable_stack_init_log_iterator(arg->stack, &it);
+ if (ret < 0)
+ goto out;
/*
* In order to delete a table we need to delete all reflog entries one
@@ -2186,6 +2215,7 @@ static int write_reflog_delete_table(struct reftable_writer *writer, void *cb_da
ret = reftable_writer_add_log(writer, &tombstone);
}
+out:
reftable_log_record_release(&log);
reftable_iterator_destroy(&it);
return ret;
@@ -2324,13 +2354,15 @@ static int reftable_be_reflog_expire(struct ref_store *ref_store,
if (ret < 0)
goto done;
- reftable_stack_init_log_iterator(stack, &it);
+ ret = reftable_stack_init_log_iterator(stack, &it);
+ if (ret < 0)
+ goto done;
ret = reftable_iterator_seek_log(&it, refname);
if (ret < 0)
goto done;
- ret = reftable_stack_new_addition(&add, stack);
+ ret = reftable_stack_new_addition(&add, stack, 0);
if (ret < 0)
goto done;
diff --git a/refspec.c b/refspec.c
index ec90ab349a..c3cf003443 100644
--- a/refspec.c
+++ b/refspec.c
@@ -225,7 +225,7 @@ void refspec_clear(struct refspec *rs)
rs->nr = 0;
for (i = 0; i < rs->raw_nr; i++)
- free((char *)rs->raw[i]);
+ free(rs->raw[i]);
FREE_AND_NULL(rs->raw);
rs->raw_alloc = 0;
rs->raw_nr = 0;
diff --git a/refspec.h b/refspec.h
index 754be45cee..3760fdaf2b 100644
--- a/refspec.h
+++ b/refspec.h
@@ -43,7 +43,7 @@ struct refspec {
int alloc;
int nr;
- const char **raw;
+ char **raw;
int raw_alloc;
int raw_nr;
diff --git a/reftable/basics.c b/reftable/basics.c
index 0058619ca6..9a949e5cf8 100644
--- a/reftable/basics.c
+++ b/reftable/basics.c
@@ -6,7 +6,68 @@ license that can be found in the LICENSE file or at
https://developers.google.com/open-source/licenses/bsd
*/
+#define REFTABLE_ALLOW_BANNED_ALLOCATORS
#include "basics.h"
+#include "reftable-basics.h"
+
+static void *(*reftable_malloc_ptr)(size_t sz);
+static void *(*reftable_realloc_ptr)(void *, size_t);
+static void (*reftable_free_ptr)(void *);
+
+void *reftable_malloc(size_t sz)
+{
+ if (reftable_malloc_ptr)
+ return (*reftable_malloc_ptr)(sz);
+ return malloc(sz);
+}
+
+void *reftable_realloc(void *p, size_t sz)
+{
+ if (reftable_realloc_ptr)
+ return (*reftable_realloc_ptr)(p, sz);
+ return realloc(p, sz);
+}
+
+void reftable_free(void *p)
+{
+ if (reftable_free_ptr)
+ reftable_free_ptr(p);
+ else
+ free(p);
+}
+
+void *reftable_calloc(size_t nelem, size_t elsize)
+{
+ void *p;
+
+ if (nelem && elsize > SIZE_MAX / nelem)
+ return NULL;
+
+ p = reftable_malloc(nelem * elsize);
+ if (!p)
+ return NULL;
+
+ memset(p, 0, nelem * elsize);
+ return p;
+}
+
+char *reftable_strdup(const char *str)
+{
+ size_t len = strlen(str);
+ char *result = reftable_malloc(len + 1);
+ if (!result)
+ return NULL;
+ memcpy(result, str, len + 1);
+ return result;
+}
+
+void reftable_set_alloc(void *(*malloc)(size_t),
+ void *(*realloc)(void *, size_t), void (*free)(void *))
+{
+ reftable_malloc_ptr = malloc;
+ reftable_realloc_ptr = realloc;
+ reftable_free_ptr = free;
+}
void put_be24(uint8_t *out, uint32_t i)
{
@@ -75,14 +136,14 @@ size_t names_length(const char **names)
return p - names;
}
-void parse_names(char *buf, int size, char ***namesp)
+char **parse_names(char *buf, int size)
{
char **names = NULL;
size_t names_cap = 0;
size_t names_len = 0;
-
char *p = buf;
char *end = buf + size;
+
while (p < end) {
char *next = strchr(p, '\n');
if (next && next < end) {
@@ -91,15 +152,29 @@ void parse_names(char *buf, int size, char ***namesp)
next = end;
}
if (p < next) {
- REFTABLE_ALLOC_GROW(names, names_len + 1, names_cap);
- names[names_len++] = xstrdup(p);
+ char **names_grown = names;
+ REFTABLE_ALLOC_GROW(names_grown, names_len + 1, names_cap);
+ if (!names_grown)
+ goto err;
+ names = names_grown;
+
+ names[names_len] = reftable_strdup(p);
+ if (!names[names_len++])
+ goto err;
}
p = next + 1;
}
REFTABLE_REALLOC_ARRAY(names, names_len + 1);
names[names_len] = NULL;
- *namesp = names;
+
+ return names;
+
+err:
+ for (size_t i = 0; i < names_len; i++)
+ reftable_free(names[i]);
+ reftable_free(names);
+ return NULL;
}
int names_equal(const char **a, const char **b)
@@ -121,3 +196,15 @@ int common_prefix_size(struct strbuf *a, struct strbuf *b)
return p;
}
+
+int hash_size(uint32_t id)
+{
+ switch (id) {
+ case 0:
+ case GIT_SHA1_FORMAT_ID:
+ return GIT_SHA1_RAWSZ;
+ case GIT_SHA256_FORMAT_ID:
+ return GIT_SHA256_RAWSZ;
+ }
+ abort();
+}
diff --git a/reftable/basics.h b/reftable/basics.h
index c8fec68d4e..4c9ef0fe6c 100644
--- a/reftable/basics.h
+++ b/reftable/basics.h
@@ -14,6 +14,7 @@ https://developers.google.com/open-source/licenses/bsd
*/
#include "system.h"
+#include "reftable-basics.h"
/* Bigendian en/decoding of integers */
@@ -37,9 +38,12 @@ size_t binsearch(size_t sz, int (*f)(size_t k, void *args), void *args);
*/
void free_names(char **a);
-/* parse a newline separated list of names. `size` is the length of the buffer,
- * without terminating '\0'. Empty names are discarded. */
-void parse_names(char *buf, int size, char ***namesp);
+/*
+ * Parse a newline separated list of names. `size` is the length of the buffer,
+ * without terminating '\0'. Empty names are discarded. Returns a `NULL`
+ * pointer when allocations fail.
+ */
+char **parse_names(char *buf, int size);
/* compares two NULL-terminated arrays of strings. */
int names_equal(const char **a, const char **b);
@@ -53,6 +57,7 @@ void *reftable_malloc(size_t sz);
void *reftable_realloc(void *p, size_t sz);
void reftable_free(void *p);
void *reftable_calloc(size_t nelem, size_t elsize);
+char *reftable_strdup(const char *str);
#define REFTABLE_ALLOC_ARRAY(x, alloc) (x) = reftable_malloc(st_mult(sizeof(*(x)), (alloc)))
#define REFTABLE_CALLOC_ARRAY(x, alloc) (x) = reftable_calloc((alloc), sizeof(*(x)))
@@ -66,9 +71,26 @@ void *reftable_calloc(size_t nelem, size_t elsize);
REFTABLE_REALLOC_ARRAY(x, alloc); \
} \
} while (0)
+#define REFTABLE_FREE_AND_NULL(p) do { reftable_free(p); (p) = NULL; } while (0)
+
+#ifndef REFTABLE_ALLOW_BANNED_ALLOCATORS
+# define REFTABLE_BANNED(func) use_reftable_##func##_instead
+# undef malloc
+# define malloc(sz) REFTABLE_BANNED(malloc)
+# undef realloc
+# define realloc(ptr, sz) REFTABLE_BANNED(realloc)
+# undef free
+# define free(ptr) REFTABLE_BANNED(free)
+# undef calloc
+# define calloc(nelem, elsize) REFTABLE_BANNED(calloc)
+# undef strdup
+# define strdup(str) REFTABLE_BANNED(strdup)
+#endif
/* Find the longest shared prefix size of `a` and `b` */
struct strbuf;
int common_prefix_size(struct strbuf *a, struct strbuf *b);
+int hash_size(uint32_t id);
+
#endif
diff --git a/reftable/block.c b/reftable/block.c
index 00030eee06..8d41a2f99e 100644
--- a/reftable/block.c
+++ b/reftable/block.c
@@ -52,6 +52,8 @@ static int block_writer_register_restart(struct block_writer *w, int n,
return -1;
if (is_restart) {
REFTABLE_ALLOC_GROW(w->restarts, w->restart_len + 1, w->restart_cap);
+ if (!w->restarts)
+ return REFTABLE_OUT_OF_MEMORY_ERROR;
w->restarts[w->restart_len++] = w->next;
}
@@ -63,8 +65,8 @@ static int block_writer_register_restart(struct block_writer *w, int n,
return 0;
}
-void block_writer_init(struct block_writer *bw, uint8_t typ, uint8_t *buf,
- uint32_t block_size, uint32_t header_off, int hash_size)
+int block_writer_init(struct block_writer *bw, uint8_t typ, uint8_t *buf,
+ uint32_t block_size, uint32_t header_off, int hash_size)
{
bw->buf = buf;
bw->hash_size = hash_size;
@@ -78,8 +80,12 @@ void block_writer_init(struct block_writer *bw, uint8_t typ, uint8_t *buf,
bw->last_key.len = 0;
if (!bw->zstream) {
REFTABLE_CALLOC_ARRAY(bw->zstream, 1);
+ if (!bw->zstream)
+ return REFTABLE_OUT_OF_MEMORY_ERROR;
deflateInit(bw->zstream, 9);
}
+
+ return 0;
}
uint8_t block_writer_type(struct block_writer *bw)
@@ -163,6 +169,10 @@ int block_writer_finish(struct block_writer *w)
*/
compressed_len = deflateBound(w->zstream, src_len);
REFTABLE_ALLOC_GROW(w->compressed, compressed_len, w->compressed_cap);
+ if (!w->compressed) {
+ ret = REFTABLE_OUT_OF_MEMORY_ERROR;
+ return ret;
+ }
w->zstream->next_out = w->compressed;
w->zstream->avail_out = compressed_len;
@@ -219,12 +229,21 @@ int block_reader_init(struct block_reader *br, struct reftable_block *block,
/* Log blocks specify the *uncompressed* size in their header. */
REFTABLE_ALLOC_GROW(br->uncompressed_data, sz,
br->uncompressed_cap);
+ if (!br->uncompressed_data) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto done;
+ }
/* Copy over the block header verbatim. It's not compressed. */
memcpy(br->uncompressed_data, block->data, block_header_skip);
if (!br->zstream) {
REFTABLE_CALLOC_ARRAY(br->zstream, 1);
+ if (!br->zstream) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto done;
+ }
+
err = inflateInit(br->zstream);
} else {
err = inflateReset(br->zstream);
@@ -532,9 +551,9 @@ done:
void block_writer_release(struct block_writer *bw)
{
deflateEnd(bw->zstream);
- FREE_AND_NULL(bw->zstream);
- FREE_AND_NULL(bw->restarts);
- FREE_AND_NULL(bw->compressed);
+ REFTABLE_FREE_AND_NULL(bw->zstream);
+ REFTABLE_FREE_AND_NULL(bw->restarts);
+ REFTABLE_FREE_AND_NULL(bw->compressed);
strbuf_release(&bw->last_key);
/* the block is not owned. */
}
diff --git a/reftable/block.h b/reftable/block.h
index 1c8f25ee6e..18d7ea0337 100644
--- a/reftable/block.h
+++ b/reftable/block.h
@@ -45,8 +45,8 @@ struct block_writer {
/*
* initializes the blockwriter to write `typ` entries, using `buf` as temporary
* storage. `buf` is not owned by the block_writer. */
-void block_writer_init(struct block_writer *bw, uint8_t typ, uint8_t *buf,
- uint32_t block_size, uint32_t header_off, int hash_size);
+int block_writer_init(struct block_writer *bw, uint8_t typ, uint8_t *buf,
+ uint32_t block_size, uint32_t header_off, int hash_size);
/* returns the block type (eg. 'r' for ref records. */
uint8_t block_writer_type(struct block_writer *bw);
diff --git a/reftable/blocksource.c b/reftable/blocksource.c
index e93cac9bb6..a2a6a196d5 100644
--- a/reftable/blocksource.c
+++ b/reftable/blocksource.c
@@ -30,6 +30,8 @@ static int strbuf_read_block(void *v, struct reftable_block *dest, uint64_t off,
struct strbuf *b = v;
assert(off + size <= b->len);
REFTABLE_CALLOC_ARRAY(dest->data, size);
+ if (!dest->data)
+ return -1;
memcpy(dest->data, b->buf + off, size);
dest->len = size;
return size;
@@ -98,27 +100,40 @@ int reftable_block_source_from_file(struct reftable_block_source *bs,
{
struct file_block_source *p;
struct stat st;
- int fd;
+ int fd, err;
fd = open(name, O_RDONLY);
if (fd < 0) {
if (errno == ENOENT)
return REFTABLE_NOT_EXIST_ERROR;
- return -1;
+ err = -1;
+ goto out;
}
if (fstat(fd, &st) < 0) {
- close(fd);
- return REFTABLE_IO_ERROR;
+ err = REFTABLE_IO_ERROR;
+ goto out;
}
REFTABLE_CALLOC_ARRAY(p, 1);
+ if (!p) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto out;
+ }
+
p->size = st.st_size;
p->data = xmmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
- close(fd);
assert(!bs->ops);
bs->ops = &file_vtable;
bs->arg = p;
+
+ err = 0;
+
+out:
+ if (fd >= 0)
+ close(fd);
+ if (err < 0)
+ reftable_free(p);
return 0;
}
diff --git a/reftable/error.c b/reftable/error.c
index a25f28a43e..660d029617 100644
--- a/reftable/error.c
+++ b/reftable/error.c
@@ -35,6 +35,8 @@ const char *reftable_error_str(int err)
return "entry too large";
case REFTABLE_OUTDATED_ERROR:
return "data concurrently modified";
+ case REFTABLE_OUT_OF_MEMORY_ERROR:
+ return "out of memory";
case -1:
return "general error";
default:
diff --git a/reftable/iter.c b/reftable/iter.c
index 416a9f6996..d926db653b 100644
--- a/reftable/iter.c
+++ b/reftable/iter.c
@@ -181,14 +181,20 @@ static int indexed_table_ref_iter_next(void *p, struct reftable_record *rec)
}
}
-int new_indexed_table_ref_iter(struct indexed_table_ref_iter **dest,
+int indexed_table_ref_iter_new(struct indexed_table_ref_iter **dest,
struct reftable_reader *r, uint8_t *oid,
int oid_len, uint64_t *offsets, int offset_len)
{
struct indexed_table_ref_iter empty = INDEXED_TABLE_REF_ITER_INIT;
- struct indexed_table_ref_iter *itr = reftable_calloc(1, sizeof(*itr));
+ struct indexed_table_ref_iter *itr;
int err = 0;
+ itr = reftable_calloc(1, sizeof(*itr));
+ if (!itr) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto out;
+ }
+
*itr = empty;
itr->r = r;
strbuf_add(&itr->oid, oid, oid_len);
@@ -197,10 +203,16 @@ int new_indexed_table_ref_iter(struct indexed_table_ref_iter **dest,
itr->offset_len = offset_len;
err = indexed_table_ref_iter_next_block(itr);
+ if (err < 0)
+ goto out;
+
+ *dest = itr;
+ err = 0;
+
+out:
if (err < 0) {
+ *dest = NULL;
reftable_free(itr);
- } else {
- *dest = itr;
}
return err;
}
@@ -225,7 +237,7 @@ void reftable_iterator_destroy(struct reftable_iterator *it)
return;
it->ops->close(it->iter_arg);
it->ops = NULL;
- FREE_AND_NULL(it->iter_arg);
+ REFTABLE_FREE_AND_NULL(it->iter_arg);
}
int reftable_iterator_seek_ref(struct reftable_iterator *it,
diff --git a/reftable/iter.h b/reftable/iter.h
index befc4597df..b3225bc7ad 100644
--- a/reftable/iter.h
+++ b/reftable/iter.h
@@ -82,7 +82,7 @@ void iterator_from_indexed_table_ref_iter(struct reftable_iterator *it,
struct indexed_table_ref_iter *itr);
/* Takes ownership of `offsets` */
-int new_indexed_table_ref_iter(struct indexed_table_ref_iter **dest,
+int indexed_table_ref_iter_new(struct indexed_table_ref_iter **dest,
struct reftable_reader *r, uint8_t *oid,
int oid_len, uint64_t *offsets, int offset_len);
diff --git a/reftable/merged.c b/reftable/merged.c
index 128a810c55..514d6facf4 100644
--- a/reftable/merged.c
+++ b/reftable/merged.c
@@ -30,22 +30,6 @@ struct merged_iter {
ssize_t advance_index;
};
-static void merged_iter_init(struct merged_iter *mi,
- struct reftable_merged_table *mt,
- uint8_t typ)
-{
- memset(mi, 0, sizeof(*mi));
- mi->advance_index = -1;
- mi->suppress_deletions = mt->suppress_deletions;
-
- REFTABLE_CALLOC_ARRAY(mi->subiters, mt->readers_len);
- for (size_t i = 0; i < mt->readers_len; i++) {
- reftable_record_init(&mi->subiters[i].rec, typ);
- reader_init_iter(mt->readers[i], &mi->subiters[i].iter, typ);
- }
- mi->subiters_len = mt->readers_len;
-}
-
static void merged_iter_close(void *p)
{
struct merged_iter *mi = p;
@@ -70,7 +54,10 @@ static int merged_iter_advance_subiter(struct merged_iter *mi, size_t idx)
if (err)
return err;
- merged_iter_pqueue_add(&mi->pq, &e);
+ err = merged_iter_pqueue_add(&mi->pq, &e);
+ if (err)
+ return err;
+
return 0;
}
@@ -216,6 +203,9 @@ int reftable_merged_table_new(struct reftable_merged_table **dest,
}
REFTABLE_CALLOC_ARRAY(m, 1);
+ if (!m)
+ return REFTABLE_OUT_OF_MEMORY_ERROR;
+
m->readers = readers;
m->readers_len = n;
m->min = first_min;
@@ -244,25 +234,63 @@ reftable_merged_table_min_update_index(struct reftable_merged_table *mt)
return mt->min;
}
-void merged_table_init_iter(struct reftable_merged_table *mt,
- struct reftable_iterator *it,
- uint8_t typ)
+int merged_table_init_iter(struct reftable_merged_table *mt,
+ struct reftable_iterator *it,
+ uint8_t typ)
{
- struct merged_iter *mi = reftable_malloc(sizeof(*mi));
- merged_iter_init(mi, mt, typ);
+ struct merged_subiter *subiters;
+ struct merged_iter *mi = NULL;
+ int ret;
+
+ REFTABLE_CALLOC_ARRAY(subiters, mt->readers_len);
+ if (!subiters) {
+ ret = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto out;
+ }
+
+ for (size_t i = 0; i < mt->readers_len; i++) {
+ reftable_record_init(&subiters[i].rec, typ);
+ ret = reader_init_iter(mt->readers[i], &subiters[i].iter, typ);
+ if (ret < 0)
+ goto out;
+ }
+
+ REFTABLE_CALLOC_ARRAY(mi, 1);
+ if (!mi) {
+ ret = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto out;
+ }
+ mi->advance_index = -1;
+ mi->suppress_deletions = mt->suppress_deletions;
+ mi->subiters = subiters;
+ mi->subiters_len = mt->readers_len;
+
iterator_from_merged_iter(it, mi);
+ ret = 0;
+
+out:
+ if (ret < 0) {
+ for (size_t i = 0; subiters && i < mt->readers_len; i++) {
+ reftable_iterator_destroy(&subiters[i].iter);
+ reftable_record_release(&subiters[i].rec);
+ }
+ reftable_free(subiters);
+ reftable_free(mi);
+ }
+
+ return ret;
}
-void reftable_merged_table_init_ref_iterator(struct reftable_merged_table *mt,
- struct reftable_iterator *it)
+int reftable_merged_table_init_ref_iterator(struct reftable_merged_table *mt,
+ struct reftable_iterator *it)
{
- merged_table_init_iter(mt, it, BLOCK_TYPE_REF);
+ return merged_table_init_iter(mt, it, BLOCK_TYPE_REF);
}
-void reftable_merged_table_init_log_iterator(struct reftable_merged_table *mt,
- struct reftable_iterator *it)
+int reftable_merged_table_init_log_iterator(struct reftable_merged_table *mt,
+ struct reftable_iterator *it)
{
- merged_table_init_iter(mt, it, BLOCK_TYPE_LOG);
+ return merged_table_init_iter(mt, it, BLOCK_TYPE_LOG);
}
uint32_t reftable_merged_table_hash_id(struct reftable_merged_table *mt)
diff --git a/reftable/merged.h b/reftable/merged.h
index de5fd33f01..89bd0c4b35 100644
--- a/reftable/merged.h
+++ b/reftable/merged.h
@@ -26,8 +26,8 @@ struct reftable_merged_table {
struct reftable_iterator;
-void merged_table_init_iter(struct reftable_merged_table *mt,
- struct reftable_iterator *it,
- uint8_t typ);
+int merged_table_init_iter(struct reftable_merged_table *mt,
+ struct reftable_iterator *it,
+ uint8_t typ);
#endif
diff --git a/reftable/pq.c b/reftable/pq.c
index 2b5b7d1c0e..6ee1164dd3 100644
--- a/reftable/pq.c
+++ b/reftable/pq.c
@@ -8,6 +8,7 @@ https://developers.google.com/open-source/licenses/bsd
#include "pq.h"
+#include "reftable-error.h"
#include "reftable-record.h"
#include "system.h"
#include "basics.h"
@@ -44,11 +45,13 @@ struct pq_entry merged_iter_pqueue_remove(struct merged_iter_pqueue *pq)
return e;
}
-void merged_iter_pqueue_add(struct merged_iter_pqueue *pq, const struct pq_entry *e)
+int merged_iter_pqueue_add(struct merged_iter_pqueue *pq, const struct pq_entry *e)
{
size_t i = 0;
REFTABLE_ALLOC_GROW(pq->heap, pq->len + 1, pq->cap);
+ if (!pq->heap)
+ return REFTABLE_OUT_OF_MEMORY_ERROR;
pq->heap[pq->len++] = *e;
i = pq->len - 1;
@@ -59,10 +62,12 @@ void merged_iter_pqueue_add(struct merged_iter_pqueue *pq, const struct pq_entry
SWAP(pq->heap[j], pq->heap[i]);
i = j;
}
+
+ return 0;
}
void merged_iter_pqueue_release(struct merged_iter_pqueue *pq)
{
- FREE_AND_NULL(pq->heap);
+ REFTABLE_FREE_AND_NULL(pq->heap);
memset(pq, 0, sizeof(*pq));
}
diff --git a/reftable/pq.h b/reftable/pq.h
index 707bd26767..83c062eeca 100644
--- a/reftable/pq.h
+++ b/reftable/pq.h
@@ -23,7 +23,7 @@ struct merged_iter_pqueue {
};
struct pq_entry merged_iter_pqueue_remove(struct merged_iter_pqueue *pq);
-void merged_iter_pqueue_add(struct merged_iter_pqueue *pq, const struct pq_entry *e);
+int merged_iter_pqueue_add(struct merged_iter_pqueue *pq, const struct pq_entry *e);
void merged_iter_pqueue_release(struct merged_iter_pqueue *pq);
int pq_less(struct pq_entry *a, struct pq_entry *b);
diff --git a/reftable/publicbasics.c b/reftable/publicbasics.c
deleted file mode 100644
index 44b84a125e..0000000000
--- a/reftable/publicbasics.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
-
-#include "system.h"
-#include "reftable-malloc.h"
-
-#include "basics.h"
-
-static void *(*reftable_malloc_ptr)(size_t sz);
-static void *(*reftable_realloc_ptr)(void *, size_t);
-static void (*reftable_free_ptr)(void *);
-
-void *reftable_malloc(size_t sz)
-{
- if (reftable_malloc_ptr)
- return (*reftable_malloc_ptr)(sz);
- return malloc(sz);
-}
-
-void *reftable_realloc(void *p, size_t sz)
-{
- if (reftable_realloc_ptr)
- return (*reftable_realloc_ptr)(p, sz);
- return realloc(p, sz);
-}
-
-void reftable_free(void *p)
-{
- if (reftable_free_ptr)
- reftable_free_ptr(p);
- else
- free(p);
-}
-
-void *reftable_calloc(size_t nelem, size_t elsize)
-{
- size_t sz = st_mult(nelem, elsize);
- void *p = reftable_malloc(sz);
- memset(p, 0, sz);
- return p;
-}
-
-void reftable_set_alloc(void *(*malloc)(size_t),
- void *(*realloc)(void *, size_t), void (*free)(void *))
-{
- reftable_malloc_ptr = malloc;
- reftable_realloc_ptr = realloc;
- reftable_free_ptr = free;
-}
-
-int hash_size(uint32_t id)
-{
- switch (id) {
- case 0:
- case GIT_SHA1_FORMAT_ID:
- return GIT_SHA1_RAWSZ;
- case GIT_SHA256_FORMAT_ID:
- return GIT_SHA256_RAWSZ;
- }
- abort();
-}
diff --git a/reftable/reader.c b/reftable/reader.c
index 6494ce2e32..8d37253922 100644
--- a/reftable/reader.c
+++ b/reftable/reader.c
@@ -554,32 +554,37 @@ static void iterator_from_table_iter(struct reftable_iterator *it,
it->ops = &table_iter_vtable;
}
-void reader_init_iter(struct reftable_reader *r,
- struct reftable_iterator *it,
- uint8_t typ)
+int reader_init_iter(struct reftable_reader *r,
+ struct reftable_iterator *it,
+ uint8_t typ)
{
struct reftable_reader_offsets *offs = reader_offsets_for(r, typ);
if (offs->is_present) {
struct table_iter *ti;
REFTABLE_ALLOC_ARRAY(ti, 1);
+ if (!ti)
+ return REFTABLE_OUT_OF_MEMORY_ERROR;
+
table_iter_init(ti, r);
iterator_from_table_iter(it, ti);
} else {
iterator_set_empty(it);
}
+
+ return 0;
}
-void reftable_reader_init_ref_iterator(struct reftable_reader *r,
- struct reftable_iterator *it)
+int reftable_reader_init_ref_iterator(struct reftable_reader *r,
+ struct reftable_iterator *it)
{
- reader_init_iter(r, it, BLOCK_TYPE_REF);
+ return reader_init_iter(r, it, BLOCK_TYPE_REF);
}
-void reftable_reader_init_log_iterator(struct reftable_reader *r,
- struct reftable_iterator *it)
+int reftable_reader_init_log_iterator(struct reftable_reader *r,
+ struct reftable_iterator *it)
{
- reader_init_iter(r, it, BLOCK_TYPE_LOG);
+ return reader_init_iter(r, it, BLOCK_TYPE_LOG);
}
int reftable_reader_new(struct reftable_reader **out,
@@ -593,6 +598,10 @@ int reftable_reader_new(struct reftable_reader **out,
int err;
REFTABLE_CALLOC_ARRAY(r, 1);
+ if (!r) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto done;
+ }
/*
* We need one extra byte to read the type of first block. We also
@@ -622,7 +631,11 @@ int reftable_reader_new(struct reftable_reader **out,
r->size = file_size - footer_size(r->version);
r->source = *source;
- r->name = xstrdup(name);
+ r->name = reftable_strdup(name);
+ if (!r->name) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto done;
+ }
r->hash_id = 0;
r->refcount = 1;
@@ -665,7 +678,7 @@ void reftable_reader_decref(struct reftable_reader *r)
if (--r->refcount)
return;
block_source_close(&r->source);
- FREE_AND_NULL(r->name);
+ REFTABLE_FREE_AND_NULL(r->name);
reftable_free(r);
}
@@ -689,7 +702,10 @@ static int reftable_reader_refs_for_indexed(struct reftable_reader *r,
struct indexed_table_ref_iter *itr = NULL;
/* Look through the reverse index. */
- reader_init_iter(r, &oit, BLOCK_TYPE_OBJ);
+ err = reader_init_iter(r, &oit, BLOCK_TYPE_OBJ);
+ if (err < 0)
+ goto done;
+
err = iterator_seek(&oit, &want);
if (err != 0)
goto done;
@@ -707,7 +723,7 @@ static int reftable_reader_refs_for_indexed(struct reftable_reader *r,
goto done;
}
- err = new_indexed_table_ref_iter(&itr, r, oid, hash_size(r->hash_id),
+ err = indexed_table_ref_iter_new(&itr, r, oid, hash_size(r->hash_id),
got.u.obj.offsets,
got.u.obj.offset_len);
if (err < 0)
@@ -732,21 +748,37 @@ static int reftable_reader_refs_for_unindexed(struct reftable_reader *r,
int err;
REFTABLE_ALLOC_ARRAY(ti, 1);
+ if (!ti) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto out;
+ }
+
table_iter_init(ti, r);
err = table_iter_seek_start(ti, BLOCK_TYPE_REF, 0);
- if (err < 0) {
- reftable_free(ti);
- return err;
- }
+ if (err < 0)
+ goto out;
- filter = reftable_malloc(sizeof(struct filtering_ref_iterator));
+ filter = reftable_malloc(sizeof(*filter));
+ if (!filter) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto out;
+ }
*filter = empty;
strbuf_add(&filter->oid, oid, oid_len);
iterator_from_table_iter(&filter->it, ti);
iterator_from_filtering_ref_iterator(it, filter);
- return 0;
+
+ err = 0;
+
+out:
+ if (err < 0) {
+ if (ti)
+ table_iter_close(ti);
+ reftable_free(ti);
+ }
+ return err;
}
int reftable_reader_refs_for(struct reftable_reader *r,
diff --git a/reftable/reader.h b/reftable/reader.h
index 3710ee09b4..010fbfe851 100644
--- a/reftable/reader.h
+++ b/reftable/reader.h
@@ -30,7 +30,7 @@ struct reftable_reader_offsets {
/* The state for reading a reftable file. */
struct reftable_reader {
- /* for convience, associate a name with the instance. */
+ /* for convenience, associate a name with the instance. */
char *name;
struct reftable_block_source source;
@@ -56,9 +56,9 @@ struct reftable_reader {
const char *reader_name(struct reftable_reader *r);
-void reader_init_iter(struct reftable_reader *r,
- struct reftable_iterator *it,
- uint8_t typ);
+int reader_init_iter(struct reftable_reader *r,
+ struct reftable_iterator *it,
+ uint8_t typ);
/* initialize a block reader to read from `r` */
int reader_init_block_reader(struct reftable_reader *r, struct block_reader *br,
diff --git a/reftable/record.c b/reftable/record.c
index 6b5a075b92..30d563e16d 100644
--- a/reftable/record.c
+++ b/reftable/record.c
@@ -215,13 +215,14 @@ static void reftable_ref_record_key(const void *r, struct strbuf *dest)
strbuf_addstr(dest, rec->refname);
}
-static void reftable_ref_record_copy_from(void *rec, const void *src_rec,
- int hash_size)
+static int reftable_ref_record_copy_from(void *rec, const void *src_rec,
+ int hash_size)
{
struct reftable_ref_record *ref = rec;
const struct reftable_ref_record *src = src_rec;
char *refname = NULL;
size_t refname_cap = 0;
+ int err;
assert(hash_size > 0);
@@ -236,6 +237,11 @@ static void reftable_ref_record_copy_from(void *rec, const void *src_rec,
REFTABLE_ALLOC_GROW(ref->refname, refname_len + 1,
ref->refname_cap);
+ if (!ref->refname) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto out;
+ }
+
memcpy(ref->refname, src->refname, refname_len);
ref->refname[refname_len] = 0;
}
@@ -254,9 +260,17 @@ static void reftable_ref_record_copy_from(void *rec, const void *src_rec,
src->value.val2.target_value, hash_size);
break;
case REFTABLE_REF_SYMREF:
- ref->value.symref = xstrdup(src->value.symref);
+ ref->value.symref = reftable_strdup(src->value.symref);
+ if (!ref->value.symref) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto out;
+ }
break;
}
+
+ err = 0;
+out:
+ return err;
}
static void reftable_ref_record_release_void(void *rec)
@@ -345,7 +359,7 @@ static int reftable_ref_record_decode(void *rec, struct strbuf key,
uint64_t update_index = 0;
const char *refname = NULL;
size_t refname_cap = 0;
- int n;
+ int n, err;
assert(hash_size > 0);
@@ -361,6 +375,10 @@ static int reftable_ref_record_decode(void *rec, struct strbuf key,
SWAP(r->refname_cap, refname_cap);
REFTABLE_ALLOC_GROW(r->refname, key.len + 1, r->refname_cap);
+ if (!r->refname) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto done;
+ }
memcpy(r->refname, key.buf, key.len);
r->refname[key.len] = 0;
@@ -369,7 +387,8 @@ static int reftable_ref_record_decode(void *rec, struct strbuf key,
switch (val_type) {
case REFTABLE_REF_VAL1:
if (in.len < hash_size) {
- return -1;
+ err = REFTABLE_FORMAT_ERROR;
+ goto done;
}
memcpy(r->value.val1, in.buf, hash_size);
@@ -378,7 +397,8 @@ static int reftable_ref_record_decode(void *rec, struct strbuf key,
case REFTABLE_REF_VAL2:
if (in.len < 2 * hash_size) {
- return -1;
+ err = REFTABLE_FORMAT_ERROR;
+ goto done;
}
memcpy(r->value.val2.value, in.buf, hash_size);
@@ -391,7 +411,8 @@ static int reftable_ref_record_decode(void *rec, struct strbuf key,
case REFTABLE_REF_SYMREF: {
int n = decode_string(scratch, in);
if (n < 0) {
- return -1;
+ err = REFTABLE_FORMAT_ERROR;
+ goto done;
}
string_view_consume(&in, n);
r->value.symref = strbuf_detach(scratch, NULL);
@@ -405,6 +426,9 @@ static int reftable_ref_record_decode(void *rec, struct strbuf key,
}
return start.len - in.len;
+
+done:
+ return err;
}
static int reftable_ref_record_is_deletion_void(const void *p)
@@ -452,28 +476,33 @@ static void reftable_obj_record_key(const void *r, struct strbuf *dest)
static void reftable_obj_record_release(void *rec)
{
struct reftable_obj_record *obj = rec;
- FREE_AND_NULL(obj->hash_prefix);
- FREE_AND_NULL(obj->offsets);
+ REFTABLE_FREE_AND_NULL(obj->hash_prefix);
+ REFTABLE_FREE_AND_NULL(obj->offsets);
memset(obj, 0, sizeof(struct reftable_obj_record));
}
-static void reftable_obj_record_copy_from(void *rec, const void *src_rec,
- int hash_size UNUSED)
+static int reftable_obj_record_copy_from(void *rec, const void *src_rec,
+ int hash_size UNUSED)
{
struct reftable_obj_record *obj = rec;
- const struct reftable_obj_record *src =
- (const struct reftable_obj_record *)src_rec;
+ const struct reftable_obj_record *src = src_rec;
reftable_obj_record_release(obj);
REFTABLE_ALLOC_ARRAY(obj->hash_prefix, src->hash_prefix_len);
+ if (!obj->hash_prefix)
+ return REFTABLE_OUT_OF_MEMORY_ERROR;
obj->hash_prefix_len = src->hash_prefix_len;
if (src->hash_prefix_len)
memcpy(obj->hash_prefix, src->hash_prefix, obj->hash_prefix_len);
REFTABLE_ALLOC_ARRAY(obj->offsets, src->offset_len);
+ if (!obj->offsets)
+ return REFTABLE_OUT_OF_MEMORY_ERROR;
obj->offset_len = src->offset_len;
COPY_ARRAY(obj->offsets, src->offsets, src->offset_len);
+
+ return 0;
}
static uint8_t reftable_obj_record_val_type(const void *rec)
@@ -533,6 +562,8 @@ static int reftable_obj_record_decode(void *rec, struct strbuf key,
reftable_obj_record_release(r);
REFTABLE_ALLOC_ARRAY(r->hash_prefix, key.len);
+ if (!r->hash_prefix)
+ return REFTABLE_OUT_OF_MEMORY_ERROR;
memcpy(r->hash_prefix, key.buf, key.len);
r->hash_prefix_len = key.len;
@@ -551,6 +582,8 @@ static int reftable_obj_record_decode(void *rec, struct strbuf key,
return start.len - in.len;
REFTABLE_ALLOC_ARRAY(r->offsets, count);
+ if (!r->offsets)
+ return REFTABLE_OUT_OF_MEMORY_ERROR;
r->offset_len = count;
n = get_var_int(&r->offsets[0], &in);
@@ -646,33 +679,44 @@ static void reftable_log_record_key(const void *r, struct strbuf *dest)
strbuf_add(dest, i64, sizeof(i64));
}
-static void reftable_log_record_copy_from(void *rec, const void *src_rec,
- int hash_size)
+static int reftable_log_record_copy_from(void *rec, const void *src_rec,
+ int hash_size)
{
struct reftable_log_record *dst = rec;
const struct reftable_log_record *src =
(const struct reftable_log_record *)src_rec;
+ int ret;
reftable_log_record_release(dst);
*dst = *src;
+
if (dst->refname) {
- dst->refname = xstrdup(dst->refname);
+ dst->refname = reftable_strdup(dst->refname);
+ if (!dst->refname) {
+ ret = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto out;
+ }
}
+
switch (dst->value_type) {
case REFTABLE_LOG_DELETION:
break;
case REFTABLE_LOG_UPDATE:
- if (dst->value.update.email) {
+ if (dst->value.update.email)
dst->value.update.email =
- xstrdup(dst->value.update.email);
- }
- if (dst->value.update.name) {
+ reftable_strdup(dst->value.update.email);
+ if (dst->value.update.name)
dst->value.update.name =
- xstrdup(dst->value.update.name);
- }
- if (dst->value.update.message) {
+ reftable_strdup(dst->value.update.name);
+ if (dst->value.update.message)
dst->value.update.message =
- xstrdup(dst->value.update.message);
+ reftable_strdup(dst->value.update.message);
+
+ if (!dst->value.update.email ||
+ !dst->value.update.name ||
+ !dst->value.update.message) {
+ ret = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto out;
}
memcpy(dst->value.update.new_hash,
@@ -681,6 +725,10 @@ static void reftable_log_record_copy_from(void *rec, const void *src_rec,
src->value.update.old_hash, hash_size);
break;
}
+
+ ret = 0;
+out:
+ return ret;
}
static void reftable_log_record_release_void(void *rec)
@@ -767,12 +815,17 @@ static int reftable_log_record_decode(void *rec, struct strbuf key,
struct reftable_log_record *r = rec;
uint64_t max = 0;
uint64_t ts = 0;
- int n;
+ int err, n;
if (key.len <= 9 || key.buf[key.len - 9] != 0)
return REFTABLE_FORMAT_ERROR;
REFTABLE_ALLOC_GROW(r->refname, key.len - 8, r->refname_cap);
+ if (!r->refname) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto done;
+ }
+
memcpy(r->refname, key.buf, key.len - 8);
ts = get_be64(key.buf + key.len - 8);
@@ -781,10 +834,10 @@ static int reftable_log_record_decode(void *rec, struct strbuf key,
if (val_type != r->value_type) {
switch (r->value_type) {
case REFTABLE_LOG_UPDATE:
- FREE_AND_NULL(r->value.update.message);
+ REFTABLE_FREE_AND_NULL(r->value.update.message);
r->value.update.message_cap = 0;
- FREE_AND_NULL(r->value.update.email);
- FREE_AND_NULL(r->value.update.name);
+ REFTABLE_FREE_AND_NULL(r->value.update.email);
+ REFTABLE_FREE_AND_NULL(r->value.update.name);
break;
case REFTABLE_LOG_DELETION:
break;
@@ -795,8 +848,10 @@ static int reftable_log_record_decode(void *rec, struct strbuf key,
if (val_type == REFTABLE_LOG_DELETION)
return 0;
- if (in.len < 2 * hash_size)
- return REFTABLE_FORMAT_ERROR;
+ if (in.len < 2 * hash_size) {
+ err = REFTABLE_FORMAT_ERROR;
+ goto done;
+ }
memcpy(r->value.update.old_hash, in.buf, hash_size);
memcpy(r->value.update.new_hash, in.buf + hash_size, hash_size);
@@ -804,8 +859,10 @@ static int reftable_log_record_decode(void *rec, struct strbuf key,
string_view_consume(&in, 2 * hash_size);
n = decode_string(scratch, in);
- if (n < 0)
+ if (n < 0) {
+ err = REFTABLE_FORMAT_ERROR;
goto done;
+ }
string_view_consume(&in, n);
/*
@@ -816,52 +873,75 @@ static int reftable_log_record_decode(void *rec, struct strbuf key,
*/
if (!r->value.update.name ||
strcmp(r->value.update.name, scratch->buf)) {
- r->value.update.name =
- reftable_realloc(r->value.update.name, scratch->len + 1);
+ char *name = reftable_realloc(r->value.update.name, scratch->len + 1);
+ if (!name) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto done;
+ }
+
+ r->value.update.name = name;
memcpy(r->value.update.name, scratch->buf, scratch->len);
r->value.update.name[scratch->len] = 0;
}
n = decode_string(scratch, in);
- if (n < 0)
+ if (n < 0) {
+ err = REFTABLE_FORMAT_ERROR;
goto done;
+ }
string_view_consume(&in, n);
/* Same as above, but for the reflog email. */
if (!r->value.update.email ||
strcmp(r->value.update.email, scratch->buf)) {
- r->value.update.email =
- reftable_realloc(r->value.update.email, scratch->len + 1);
+ char *email = reftable_realloc(r->value.update.email, scratch->len + 1);
+ if (!email) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto done;
+ }
+
+ r->value.update.email = email;
memcpy(r->value.update.email, scratch->buf, scratch->len);
r->value.update.email[scratch->len] = 0;
}
ts = 0;
n = get_var_int(&ts, &in);
- if (n < 0)
+ if (n < 0) {
+ err = REFTABLE_FORMAT_ERROR;
goto done;
+ }
string_view_consume(&in, n);
r->value.update.time = ts;
- if (in.len < 2)
+ if (in.len < 2) {
+ err = REFTABLE_FORMAT_ERROR;
goto done;
+ }
r->value.update.tz_offset = get_be16(in.buf);
string_view_consume(&in, 2);
n = decode_string(scratch, in);
- if (n < 0)
+ if (n < 0) {
+ err = REFTABLE_FORMAT_ERROR;
goto done;
+ }
string_view_consume(&in, n);
REFTABLE_ALLOC_GROW(r->value.update.message, scratch->len + 1,
r->value.update.message_cap);
+ if (!r->value.update.message) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto done;
+ }
+
memcpy(r->value.update.message, scratch->buf, scratch->len);
r->value.update.message[scratch->len] = 0;
return start.len - in.len;
done:
- return REFTABLE_FORMAT_ERROR;
+ return err;
}
static int null_streq(const char *a, const char *b)
@@ -954,8 +1034,8 @@ static void reftable_index_record_key(const void *r, struct strbuf *dest)
strbuf_addbuf(dest, &rec->last_key);
}
-static void reftable_index_record_copy_from(void *rec, const void *src_rec,
- int hash_size UNUSED)
+static int reftable_index_record_copy_from(void *rec, const void *src_rec,
+ int hash_size UNUSED)
{
struct reftable_index_record *dst = rec;
const struct reftable_index_record *src = src_rec;
@@ -963,6 +1043,8 @@ static void reftable_index_record_copy_from(void *rec, const void *src_rec,
strbuf_reset(&dst->last_key);
strbuf_addbuf(&dst->last_key, &src->last_key);
dst->offset = src->offset;
+
+ return 0;
}
static void reftable_index_record_release(void *rec)
@@ -1054,14 +1136,14 @@ int reftable_record_encode(struct reftable_record *rec, struct string_view dest,
dest, hash_size);
}
-void reftable_record_copy_from(struct reftable_record *rec,
+int reftable_record_copy_from(struct reftable_record *rec,
struct reftable_record *src, int hash_size)
{
assert(src->type == rec->type);
- reftable_record_vtable(rec)->copy_from(reftable_record_data(rec),
- reftable_record_data(src),
- hash_size);
+ return reftable_record_vtable(rec)->copy_from(reftable_record_data(rec),
+ reftable_record_data(src),
+ hash_size);
}
uint8_t reftable_record_val_type(struct reftable_record *rec)
diff --git a/reftable/record.h b/reftable/record.h
index 5003bacdb0..0f53ba5443 100644
--- a/reftable/record.h
+++ b/reftable/record.h
@@ -44,7 +44,7 @@ struct reftable_record_vtable {
/* The record type of ('r' for ref). */
uint8_t type;
- void (*copy_from)(void *dest, const void *src, int hash_size);
+ int (*copy_from)(void *dest, const void *src, int hash_size);
/* a value of [0..7], indicating record subvariants (eg. ref vs. symref
* vs ref deletion) */
@@ -137,8 +137,8 @@ void reftable_record_init(struct reftable_record *rec, uint8_t typ);
int reftable_record_cmp(struct reftable_record *a, struct reftable_record *b);
int reftable_record_equal(struct reftable_record *a, struct reftable_record *b, int hash_size);
void reftable_record_key(struct reftable_record *rec, struct strbuf *dest);
-void reftable_record_copy_from(struct reftable_record *rec,
- struct reftable_record *src, int hash_size);
+int reftable_record_copy_from(struct reftable_record *rec,
+ struct reftable_record *src, int hash_size);
uint8_t reftable_record_val_type(struct reftable_record *rec);
int reftable_record_encode(struct reftable_record *rec, struct string_view dest,
int hash_size);
diff --git a/reftable/reftable-basics.h b/reftable/reftable-basics.h
new file mode 100644
index 0000000000..6e8e636b71
--- /dev/null
+++ b/reftable/reftable-basics.h
@@ -0,0 +1,18 @@
+/*
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+*/
+
+#ifndef REFTABLE_BASICS_H
+#define REFTABLE_BASICS_H
+
+#include <stddef.h>
+
+/* Overrides the functions to use for memory management. */
+void reftable_set_alloc(void *(*malloc)(size_t),
+ void *(*realloc)(void *, size_t), void (*free)(void *));
+
+#endif
diff --git a/reftable/reftable-error.h b/reftable/reftable-error.h
index 6368cd9ed9..f404826562 100644
--- a/reftable/reftable-error.h
+++ b/reftable/reftable-error.h
@@ -57,6 +57,9 @@ enum reftable_error {
/* Trying to write out-of-date data. */
REFTABLE_OUTDATED_ERROR = -12,
+
+ /* An allocation has failed due to an out-of-memory situation. */
+ REFTABLE_OUT_OF_MEMORY_ERROR = -13,
};
/* convert the numeric error code to a string. The string should not be
diff --git a/reftable/reftable-malloc.h b/reftable/reftable-malloc.h
deleted file mode 100644
index 5f2185f1f3..0000000000
--- a/reftable/reftable-malloc.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
-
-#ifndef REFTABLE_H
-#define REFTABLE_H
-
-#include <stddef.h>
-
-/* Overrides the functions to use for memory management. */
-void reftable_set_alloc(void *(*malloc)(size_t),
- void *(*realloc)(void *, size_t), void (*free)(void *));
-
-#endif
diff --git a/reftable/reftable-merged.h b/reftable/reftable-merged.h
index 16d19f8df2..a970d5dd89 100644
--- a/reftable/reftable-merged.h
+++ b/reftable/reftable-merged.h
@@ -37,12 +37,12 @@ int reftable_merged_table_new(struct reftable_merged_table **dest,
uint32_t hash_id);
/* Initialize a merged table iterator for reading refs. */
-void reftable_merged_table_init_ref_iterator(struct reftable_merged_table *mt,
- struct reftable_iterator *it);
+int reftable_merged_table_init_ref_iterator(struct reftable_merged_table *mt,
+ struct reftable_iterator *it);
/* Initialize a merged table iterator for reading logs. */
-void reftable_merged_table_init_log_iterator(struct reftable_merged_table *mt,
- struct reftable_iterator *it);
+int reftable_merged_table_init_log_iterator(struct reftable_merged_table *mt,
+ struct reftable_iterator *it);
/* returns the max update_index covered by this merged table. */
uint64_t
diff --git a/reftable/reftable-reader.h b/reftable/reftable-reader.h
index a600452b56..6a2d0b693f 100644
--- a/reftable/reftable-reader.h
+++ b/reftable/reftable-reader.h
@@ -46,12 +46,12 @@ void reftable_reader_incref(struct reftable_reader *reader);
void reftable_reader_decref(struct reftable_reader *reader);
/* Initialize a reftable iterator for reading refs. */
-void reftable_reader_init_ref_iterator(struct reftable_reader *r,
- struct reftable_iterator *it);
+int reftable_reader_init_ref_iterator(struct reftable_reader *r,
+ struct reftable_iterator *it);
/* Initialize a reftable iterator for reading logs. */
-void reftable_reader_init_log_iterator(struct reftable_reader *r,
- struct reftable_iterator *it);
+int reftable_reader_init_log_iterator(struct reftable_reader *r,
+ struct reftable_iterator *it);
/* returns the hash ID used in this table. */
uint32_t reftable_reader_hash_id(struct reftable_reader *r);
diff --git a/reftable/reftable-stack.h b/reftable/reftable-stack.h
index f4f8cabc7f..54787f2ef5 100644
--- a/reftable/reftable-stack.h
+++ b/reftable/reftable-stack.h
@@ -37,12 +37,21 @@ uint64_t reftable_stack_next_update_index(struct reftable_stack *st);
/* holds a transaction to add tables at the top of a stack. */
struct reftable_addition;
+enum {
+ /*
+ * Reload the stack when the stack is out-of-date after locking it.
+ */
+ REFTABLE_STACK_NEW_ADDITION_RELOAD = (1 << 0),
+};
+
/*
* returns a new transaction to add reftables to the given stack. As a side
- * effect, the ref database is locked.
+ * effect, the ref database is locked. Accepts REFTABLE_STACK_NEW_ADDITION_*
+ * flags.
*/
int reftable_stack_new_addition(struct reftable_addition **dest,
- struct reftable_stack *st);
+ struct reftable_stack *st,
+ unsigned int flags);
/* Adds a reftable to transaction. */
int reftable_addition_add(struct reftable_addition *add,
@@ -73,16 +82,16 @@ struct reftable_iterator;
* be used to iterate through refs. The iterator is valid until the next reload
* or write.
*/
-void reftable_stack_init_ref_iterator(struct reftable_stack *st,
- struct reftable_iterator *it);
+int reftable_stack_init_ref_iterator(struct reftable_stack *st,
+ struct reftable_iterator *it);
/*
* Initialize an iterator for the merged tables contained in the stack that can
* be used to iterate through logs. The iterator is valid until the next reload
* or write.
*/
-void reftable_stack_init_log_iterator(struct reftable_stack *st,
- struct reftable_iterator *it);
+int reftable_stack_init_log_iterator(struct reftable_stack *st,
+ struct reftable_iterator *it);
/* returns the merged_table for seeking. This table is valid until the
* next write or reload, and should not be closed or deleted.
diff --git a/reftable/reftable-writer.h b/reftable/reftable-writer.h
index 189b1f4144..e4fc953788 100644
--- a/reftable/reftable-writer.h
+++ b/reftable/reftable-writer.h
@@ -51,6 +51,17 @@ struct reftable_write_options {
* tables to compact. Defaults to 2 if unset.
*/
uint8_t auto_compaction_factor;
+
+ /*
+ * The number of milliseconds to wait when trying to lock "tables.list".
+ * Note that this does not apply to locking individual tables, as these
+ * should only ever be locked when already holding the "tables.list"
+ * lock.
+ *
+ * Passing 0 will fail immediately when the file is locked, passing a
+ * negative value will cause us to block indefinitely.
+ */
+ long lock_timeout_ms;
};
/* reftable_block_stats holds statistics for a single block type */
@@ -90,11 +101,13 @@ struct reftable_stats {
int object_id_len;
};
-/* reftable_new_writer creates a new writer */
-struct reftable_writer *
-reftable_new_writer(ssize_t (*writer_func)(void *, const void *, size_t),
- int (*flush_func)(void *),
- void *writer_arg, const struct reftable_write_options *opts);
+struct reftable_writer;
+
+/* Create a new writer. */
+int reftable_writer_new(struct reftable_writer **out,
+ ssize_t (*writer_func)(void *, const void *, size_t),
+ int (*flush_func)(void *),
+ void *writer_arg, const struct reftable_write_options *opts);
/* Set the range of update indices for the records we will add. When writing a
table into a stack, the min should be at least
diff --git a/reftable/stack.c b/reftable/stack.c
index ce0a35216b..7e617c2591 100644
--- a/reftable/stack.c
+++ b/reftable/stack.c
@@ -56,10 +56,16 @@ static int reftable_fd_flush(void *arg)
int reftable_new_stack(struct reftable_stack **dest, const char *dir,
const struct reftable_write_options *_opts)
{
- struct reftable_stack *p = reftable_calloc(1, sizeof(*p));
struct strbuf list_file_name = STRBUF_INIT;
- struct reftable_write_options opts = {0};
- int err = 0;
+ struct reftable_write_options opts = { 0 };
+ struct reftable_stack *p;
+ int err;
+
+ p = reftable_calloc(1, sizeof(*p));
+ if (!p) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto out;
+ }
if (_opts)
opts = *_opts;
@@ -74,15 +80,23 @@ int reftable_new_stack(struct reftable_stack **dest, const char *dir,
p->list_file = strbuf_detach(&list_file_name, NULL);
p->list_fd = -1;
- p->reftable_dir = xstrdup(dir);
p->opts = opts;
+ p->reftable_dir = reftable_strdup(dir);
+ if (!p->reftable_dir) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto out;
+ }
err = reftable_stack_reload_maybe_reuse(p, 1);
- if (err < 0) {
+ if (err < 0)
+ goto out;
+
+ *dest = p;
+ err = 0;
+
+out:
+ if (err < 0)
reftable_stack_destroy(p);
- } else {
- *dest = p;
- }
return err;
}
@@ -102,13 +116,22 @@ static int fd_read_lines(int fd, char ***namesp)
}
REFTABLE_ALLOC_ARRAY(buf, size + 1);
+ if (!buf) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto done;
+ }
+
if (read_in_full(fd, buf, size) != size) {
err = REFTABLE_IO_ERROR;
goto done;
}
buf[size] = 0;
- parse_names(buf, size, namesp);
+ *namesp = parse_names(buf, size);
+ if (!*namesp) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto done;
+ }
done:
reftable_free(buf);
@@ -122,6 +145,8 @@ int read_lines(const char *filename, char ***namesp)
if (fd < 0) {
if (errno == ENOENT) {
REFTABLE_CALLOC_ARRAY(*namesp, 1);
+ if (!*namesp)
+ return REFTABLE_OUT_OF_MEMORY_ERROR;
return 0;
}
@@ -132,18 +157,18 @@ int read_lines(const char *filename, char ***namesp)
return err;
}
-void reftable_stack_init_ref_iterator(struct reftable_stack *st,
+int reftable_stack_init_ref_iterator(struct reftable_stack *st,
struct reftable_iterator *it)
{
- merged_table_init_iter(reftable_stack_merged_table(st),
- it, BLOCK_TYPE_REF);
+ return merged_table_init_iter(reftable_stack_merged_table(st),
+ it, BLOCK_TYPE_REF);
}
-void reftable_stack_init_log_iterator(struct reftable_stack *st,
- struct reftable_iterator *it)
+int reftable_stack_init_log_iterator(struct reftable_stack *st,
+ struct reftable_iterator *it)
{
- merged_table_init_iter(reftable_stack_merged_table(st),
- it, BLOCK_TYPE_LOG);
+ return merged_table_init_iter(reftable_stack_merged_table(st),
+ it, BLOCK_TYPE_LOG);
}
struct reftable_merged_table *
@@ -167,6 +192,10 @@ void reftable_stack_destroy(struct reftable_stack *st)
{
char **names = NULL;
int err = 0;
+
+ if (!st)
+ return;
+
if (st->merged) {
reftable_merged_table_free(st->merged);
st->merged = NULL;
@@ -174,7 +203,7 @@ void reftable_stack_destroy(struct reftable_stack *st)
err = read_lines(st->list_file, &names);
if (err < 0) {
- FREE_AND_NULL(names);
+ REFTABLE_FREE_AND_NULL(names);
}
if (st->readers) {
@@ -195,7 +224,7 @@ void reftable_stack_destroy(struct reftable_stack *st)
}
strbuf_release(&filename);
st->readers_len = 0;
- FREE_AND_NULL(st->readers);
+ REFTABLE_FREE_AND_NULL(st->readers);
}
if (st->list_fd >= 0) {
@@ -203,20 +232,20 @@ void reftable_stack_destroy(struct reftable_stack *st)
st->list_fd = -1;
}
- FREE_AND_NULL(st->list_file);
- FREE_AND_NULL(st->reftable_dir);
+ REFTABLE_FREE_AND_NULL(st->list_file);
+ REFTABLE_FREE_AND_NULL(st->reftable_dir);
reftable_free(st);
free_names(names);
}
static struct reftable_reader **stack_copy_readers(struct reftable_stack *st,
- int cur_len)
+ size_t cur_len)
{
struct reftable_reader **cur = reftable_calloc(cur_len, sizeof(*cur));
- int i = 0;
- for (i = 0; i < cur_len; i++) {
+ if (!cur)
+ return NULL;
+ for (size_t i = 0; i < cur_len; i++)
cur[i] = st->readers[i];
- }
return cur;
}
@@ -225,18 +254,30 @@ static int reftable_stack_reload_once(struct reftable_stack *st,
int reuse_open)
{
size_t cur_len = !st->merged ? 0 : st->merged->readers_len;
- struct reftable_reader **cur = stack_copy_readers(st, cur_len);
+ struct reftable_reader **cur;
struct reftable_reader **reused = NULL;
- size_t reused_len = 0, reused_alloc = 0;
- size_t names_len = names_length(names);
- struct reftable_reader **new_readers =
- reftable_calloc(names_len, sizeof(*new_readers));
+ struct reftable_reader **new_readers;
+ size_t reused_len = 0, reused_alloc = 0, names_len;
size_t new_readers_len = 0;
struct reftable_merged_table *new_merged = NULL;
struct strbuf table_path = STRBUF_INIT;
int err = 0;
size_t i;
+ cur = stack_copy_readers(st, cur_len);
+ if (!cur) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto done;
+ }
+
+ names_len = names_length(names);
+
+ new_readers = reftable_calloc(names_len, sizeof(*new_readers));
+ if (!new_readers) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto done;
+ }
+
while (*names) {
struct reftable_reader *rd = NULL;
const char *name = *names++;
@@ -257,6 +298,10 @@ static int reftable_stack_reload_once(struct reftable_stack *st,
* do by bumping their refcount.
*/
REFTABLE_ALLOC_GROW(reused, reused_len + 1, reused_alloc);
+ if (!reused) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto done;
+ }
reused[reused_len++] = rd;
reftable_reader_incref(rd);
break;
@@ -382,6 +427,10 @@ static int reftable_stack_reload_maybe_reuse(struct reftable_stack *st,
}
REFTABLE_CALLOC_ARRAY(names, 1);
+ if (!names) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto out;
+ }
} else {
err = fd_read_lines(fd, &names);
if (err < 0)
@@ -596,15 +645,18 @@ struct reftable_addition {
#define REFTABLE_ADDITION_INIT {0}
static int reftable_stack_init_addition(struct reftable_addition *add,
- struct reftable_stack *st)
+ struct reftable_stack *st,
+ unsigned int flags)
{
struct strbuf lock_file_name = STRBUF_INIT;
int err;
add->stack = st;
- err = hold_lock_file_for_update(&add->tables_list_lock, st->list_file,
- LOCK_NO_DEREF);
+ err = hold_lock_file_for_update_timeout(&add->tables_list_lock,
+ st->list_file,
+ LOCK_NO_DEREF,
+ st->opts.lock_timeout_ms);
if (err < 0) {
if (errno == EEXIST) {
err = REFTABLE_LOCK_ERROR;
@@ -624,6 +676,11 @@ static int reftable_stack_init_addition(struct reftable_addition *add,
err = stack_uptodate(st);
if (err < 0)
goto done;
+ if (err > 0 && flags & REFTABLE_STACK_NEW_ADDITION_RELOAD) {
+ err = reftable_stack_reload_maybe_reuse(add->stack, 1);
+ if (err)
+ goto done;
+ }
if (err > 0) {
err = REFTABLE_OUTDATED_ERROR;
goto done;
@@ -631,9 +688,8 @@ static int reftable_stack_init_addition(struct reftable_addition *add,
add->next_update_index = reftable_stack_next_update_index(st);
done:
- if (err) {
+ if (err)
reftable_addition_close(add);
- }
strbuf_release(&lock_file_name);
return err;
}
@@ -737,13 +793,18 @@ done:
}
int reftable_stack_new_addition(struct reftable_addition **dest,
- struct reftable_stack *st)
+ struct reftable_stack *st,
+ unsigned int flags)
{
int err = 0;
struct reftable_addition empty = REFTABLE_ADDITION_INIT;
+
REFTABLE_CALLOC_ARRAY(*dest, 1);
+ if (!*dest)
+ return REFTABLE_OUT_OF_MEMORY_ERROR;
+
**dest = empty;
- err = reftable_stack_init_addition(*dest, st);
+ err = reftable_stack_init_addition(*dest, st, flags);
if (err) {
reftable_free(*dest);
*dest = NULL;
@@ -757,7 +818,7 @@ static int stack_try_add(struct reftable_stack *st,
void *arg)
{
struct reftable_addition add = REFTABLE_ADDITION_INIT;
- int err = reftable_stack_init_addition(&add, st);
+ int err = reftable_stack_init_addition(&add, st, 0);
if (err < 0)
goto done;
@@ -804,8 +865,11 @@ int reftable_addition_add(struct reftable_addition *add,
}
tab_fd = get_tempfile_fd(tab_file);
- wr = reftable_new_writer(reftable_fd_write, reftable_fd_flush, &tab_fd,
- &add->stack->opts);
+ err = reftable_writer_new(&wr, reftable_fd_write, reftable_fd_flush,
+ &tab_fd, &add->stack->opts);
+ if (err < 0)
+ goto done;
+
err = write_table(wr, arg);
if (err < 0)
goto done;
@@ -845,7 +909,12 @@ int reftable_addition_add(struct reftable_addition *add,
REFTABLE_ALLOC_GROW(add->new_tables, add->new_tables_len + 1,
add->new_tables_cap);
+ if (!add->new_tables) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto done;
+ }
add->new_tables[add->new_tables_len++] = strbuf_detach(&next_name, NULL);
+
done:
delete_tempfile(&tab_file);
strbuf_release(&temp_tab_file_name);
@@ -894,8 +963,11 @@ static int stack_compact_locked(struct reftable_stack *st,
goto done;
}
- wr = reftable_new_writer(reftable_fd_write, reftable_fd_flush,
- &tab_fd, &st->opts);
+ err = reftable_writer_new(&wr, reftable_fd_write, reftable_fd_flush,
+ &tab_fd, &st->opts);
+ if (err < 0)
+ goto done;
+
err = stack_write_compact(st, wr, first, last, config);
if (err < 0)
goto done;
@@ -942,7 +1014,10 @@ static int stack_write_compact(struct reftable_stack *st,
if (err < 0)
goto done;
- merged_table_init_iter(mt, &it, BLOCK_TYPE_REF);
+ err = merged_table_init_iter(mt, &it, BLOCK_TYPE_REF);
+ if (err < 0)
+ goto done;
+
err = reftable_iterator_seek_ref(&it, "");
if (err < 0)
goto done;
@@ -967,7 +1042,10 @@ static int stack_write_compact(struct reftable_stack *st,
}
reftable_iterator_destroy(&it);
- merged_table_init_iter(mt, &it, BLOCK_TYPE_LOG);
+ err = merged_table_init_iter(mt, &it, BLOCK_TYPE_LOG);
+ if (err < 0)
+ goto done;
+
err = reftable_iterator_seek_log(&it, "");
if (err < 0)
goto done;
@@ -1056,8 +1134,10 @@ static int stack_compact_range(struct reftable_stack *st,
* Hold the lock so that we can read "tables.list" and lock all tables
* which are part of the user-specified range.
*/
- err = hold_lock_file_for_update(&tables_list_lock, st->list_file,
- LOCK_NO_DEREF);
+ err = hold_lock_file_for_update_timeout(&tables_list_lock,
+ st->list_file,
+ LOCK_NO_DEREF,
+ st->opts.lock_timeout_ms);
if (err < 0) {
if (errno == EEXIST)
err = REFTABLE_LOCK_ERROR;
@@ -1081,6 +1161,11 @@ static int stack_compact_range(struct reftable_stack *st,
* from the point of view of the newer process.
*/
REFTABLE_CALLOC_ARRAY(table_locks, last - first + 1);
+ if (!table_locks) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto done;
+ }
+
for (i = last + 1; i > first; i--) {
stack_filename(&table_name, st, reader_name(st->readers[i - 1]));
@@ -1156,8 +1241,10 @@ static int stack_compact_range(struct reftable_stack *st,
* "tables.list". We'll then replace the compacted range of tables with
* the new table.
*/
- err = hold_lock_file_for_update(&tables_list_lock, st->list_file,
- LOCK_NO_DEREF);
+ err = hold_lock_file_for_update_timeout(&tables_list_lock,
+ st->list_file,
+ LOCK_NO_DEREF,
+ st->opts.lock_timeout_ms);
if (err < 0) {
if (errno == EEXIST)
err = REFTABLE_LOCK_ERROR;
@@ -1262,8 +1349,18 @@ static int stack_compact_range(struct reftable_stack *st,
* thus have to allocate `readers_len + 1` many entries.
*/
REFTABLE_CALLOC_ARRAY(names, st->merged->readers_len + 1);
- for (size_t i = 0; i < st->merged->readers_len; i++)
- names[i] = xstrdup(st->readers[i]->name);
+ if (!names) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto done;
+ }
+
+ for (size_t i = 0; i < st->merged->readers_len; i++) {
+ names[i] = reftable_strdup(st->readers[i]->name);
+ if (!names[i]) {
+ err = REFTABLE_OUT_OF_MEMORY_ERROR;
+ goto done;
+ }
+ }
first_to_replace = first;
last_to_replace = last;
}
@@ -1336,7 +1433,7 @@ static int stack_compact_range(struct reftable_stack *st,
struct lock_file *table_lock = &table_locks[i];
char *table_path = get_locked_file_path(table_lock);
unlink(table_path);
- free(table_path);
+ reftable_free(table_path);
}
done:
@@ -1453,6 +1550,8 @@ static uint64_t *stack_table_sizes_for_compaction(struct reftable_stack *st)
uint64_t *sizes;
REFTABLE_CALLOC_ARRAY(sizes, st->merged->readers_len);
+ if (!sizes)
+ return NULL;
for (size_t i = 0; i < st->merged->readers_len; i++)
sizes[i] = st->readers[i]->size - overhead;
@@ -1462,11 +1561,17 @@ static uint64_t *stack_table_sizes_for_compaction(struct reftable_stack *st)
int reftable_stack_auto_compact(struct reftable_stack *st)
{
- uint64_t *sizes = stack_table_sizes_for_compaction(st);
- struct segment seg =
- suggest_compaction_segment(sizes, st->merged->readers_len,
- st->opts.auto_compaction_factor);
+ struct segment seg;
+ uint64_t *sizes;
+
+ sizes = stack_table_sizes_for_compaction(st);
+ if (!sizes)
+ return REFTABLE_OUT_OF_MEMORY_ERROR;
+
+ seg = suggest_compaction_segment(sizes, st->merged->readers_len,
+ st->opts.auto_compaction_factor);
reftable_free(sizes);
+
if (segment_size(&seg) > 0)
return stack_compact_range(st, seg.start, seg.end - 1,
NULL, STACK_COMPACT_RANGE_BEST_EFFORT);
@@ -1486,7 +1591,10 @@ int reftable_stack_read_ref(struct reftable_stack *st, const char *refname,
struct reftable_iterator it = { 0 };
int ret;
- reftable_merged_table_init_ref_iterator(st->merged, &it);
+ ret = reftable_merged_table_init_ref_iterator(st->merged, &it);
+ if (ret)
+ goto out;
+
ret = reftable_iterator_seek_ref(&it, refname);
if (ret)
goto out;
@@ -1513,7 +1621,10 @@ int reftable_stack_read_log(struct reftable_stack *st, const char *refname,
struct reftable_iterator it = {0};
int err;
- reftable_stack_init_log_iterator(st, &it);
+ err = reftable_stack_init_log_iterator(st, &it);
+ if (err)
+ goto done;
+
err = reftable_iterator_seek_log(&it, refname);
if (err)
goto done;
@@ -1602,7 +1713,7 @@ static int reftable_stack_clean_locked(struct reftable_stack *st)
int reftable_stack_clean(struct reftable_stack *st)
{
struct reftable_addition *add = NULL;
- int err = reftable_stack_new_addition(&add, st);
+ int err = reftable_stack_new_addition(&add, st, 0);
if (err < 0) {
goto done;
}
diff --git a/reftable/tree.c b/reftable/tree.c
index 5ffb2e0d69..f4dbe72090 100644
--- a/reftable/tree.c
+++ b/reftable/tree.c
@@ -11,28 +11,44 @@ https://developers.google.com/open-source/licenses/bsd
#include "basics.h"
-struct tree_node *tree_search(void *key, struct tree_node **rootp,
- int (*compare)(const void *, const void *),
- int insert)
+struct tree_node *tree_search(struct tree_node *tree,
+ void *key,
+ int (*compare)(const void *, const void *))
{
int res;
+ if (!tree)
+ return NULL;
+ res = compare(key, tree->key);
+ if (res < 0)
+ return tree_search(tree->left, key, compare);
+ else if (res > 0)
+ return tree_search(tree->right, key, compare);
+ return tree;
+}
+
+struct tree_node *tree_insert(struct tree_node **rootp,
+ void *key,
+ int (*compare)(const void *, const void *))
+{
+ int res;
+
if (!*rootp) {
- if (!insert) {
+ struct tree_node *n;
+
+ REFTABLE_CALLOC_ARRAY(n, 1);
+ if (!n)
return NULL;
- } else {
- struct tree_node *n;
- REFTABLE_CALLOC_ARRAY(n, 1);
- n->key = key;
- *rootp = n;
- return *rootp;
- }
+
+ n->key = key;
+ *rootp = n;
+ return *rootp;
}
res = compare(key, (*rootp)->key);
if (res < 0)
- return tree_search(key, &(*rootp)->left, compare, insert);
+ return tree_insert(&(*rootp)->left, key, compare);
else if (res > 0)
- return tree_search(key, &(*rootp)->right, compare, insert);
+ return tree_insert(&(*rootp)->right, key, compare);
return *rootp;
}
diff --git a/reftable/tree.h b/reftable/tree.h
index fbdd002e23..9604453b6d 100644
--- a/reftable/tree.h
+++ b/reftable/tree.h
@@ -15,12 +15,23 @@ struct tree_node {
struct tree_node *left, *right;
};
-/* looks for `key` in `rootp` using `compare` as comparison function. If insert
- * is set, insert the key if it's not found. Else, return NULL.
+/*
+ * Search the tree for the node matching the given key using `compare` as
+ * comparison function. Returns the node whose key matches or `NULL` in case
+ * the key does not exist in the tree.
+ */
+struct tree_node *tree_search(struct tree_node *tree,
+ void *key,
+ int (*compare)(const void *, const void *));
+
+/*
+ * Insert a node into the tree. Returns the newly inserted node if the key does
+ * not yet exist. Otherwise it returns the preexisting node. Returns `NULL`
+ * when allocating the new node fails.
*/
-struct tree_node *tree_search(void *key, struct tree_node **rootp,
- int (*compare)(const void *, const void *),
- int insert);
+struct tree_node *tree_insert(struct tree_node **rootp,
+ void *key,
+ int (*compare)(const void *, const void *));
/* performs an infix walk of the tree. */
void infix_walk(struct tree_node *t, void (*action)(void *arg, void *key),
diff --git a/reftable/writer.c b/reftable/writer.c
index 9d5e6072bc..b032a47dec 100644
--- a/reftable/writer.c
+++ b/reftable/writer.c
@@ -49,8 +49,14 @@ static int padded_write(struct reftable_writer *w, uint8_t *data, size_t len,
{
int n = 0;
if (w->pending_padding > 0) {
- uint8_t *zeroed = reftable_calloc(w->pending_padding, sizeof(*zeroed));
- int n = w->write(w->write_arg, zeroed, w->pending_padding);
+ uint8_t *zeroed;
+ int n;
+
+ zeroed = reftable_calloc(w->pending_padding, sizeof(*zeroed));
+ if (!zeroed)
+ return -1;
+
+ n = w->write(w->write_arg, zeroed, w->pending_padding);
if (n < 0)
return n;
@@ -102,28 +108,37 @@ static int writer_write_header(struct reftable_writer *w, uint8_t *dest)
return header_size(writer_version(w));
}
-static void writer_reinit_block_writer(struct reftable_writer *w, uint8_t typ)
+static int writer_reinit_block_writer(struct reftable_writer *w, uint8_t typ)
{
- int block_start = 0;
- if (w->next == 0) {
+ int block_start = 0, ret;
+
+ if (w->next == 0)
block_start = header_size(writer_version(w));
- }
strbuf_reset(&w->last_key);
- block_writer_init(&w->block_writer_data, typ, w->block,
- w->opts.block_size, block_start,
- hash_size(w->opts.hash_id));
+ ret = block_writer_init(&w->block_writer_data, typ, w->block,
+ w->opts.block_size, block_start,
+ hash_size(w->opts.hash_id));
+ if (ret < 0)
+ return ret;
+
w->block_writer = &w->block_writer_data;
w->block_writer->restart_interval = w->opts.restart_interval;
+
+ return 0;
}
-struct reftable_writer *
-reftable_new_writer(ssize_t (*writer_func)(void *, const void *, size_t),
- int (*flush_func)(void *),
- void *writer_arg, const struct reftable_write_options *_opts)
+int reftable_writer_new(struct reftable_writer **out,
+ ssize_t (*writer_func)(void *, const void *, size_t),
+ int (*flush_func)(void *),
+ void *writer_arg, const struct reftable_write_options *_opts)
{
- struct reftable_writer *wp = reftable_calloc(1, sizeof(*wp));
struct reftable_write_options opts = {0};
+ struct reftable_writer *wp;
+
+ wp = reftable_calloc(1, sizeof(*wp));
+ if (!wp)
+ return REFTABLE_OUT_OF_MEMORY_ERROR;
if (_opts)
opts = *_opts;
@@ -134,13 +149,19 @@ reftable_new_writer(ssize_t (*writer_func)(void *, const void *, size_t),
strbuf_init(&wp->block_writer_data.last_key, 0);
strbuf_init(&wp->last_key, 0);
REFTABLE_CALLOC_ARRAY(wp->block, opts.block_size);
+ if (!wp->block) {
+ reftable_free(wp);
+ return REFTABLE_OUT_OF_MEMORY_ERROR;
+ }
wp->write = writer_func;
wp->write_arg = writer_arg;
wp->opts = opts;
wp->flush = flush_func;
writer_reinit_block_writer(wp, BLOCK_TYPE_REF);
- return wp;
+ *out = wp;
+
+ return 0;
}
void reftable_writer_set_limits(struct reftable_writer *w, uint64_t min,
@@ -186,34 +207,40 @@ static int obj_index_tree_node_compare(const void *a, const void *b)
&((const struct obj_index_tree_node *)b)->hash);
}
-static void writer_index_hash(struct reftable_writer *w, struct strbuf *hash)
+static int writer_index_hash(struct reftable_writer *w, struct strbuf *hash)
{
uint64_t off = w->next;
-
struct obj_index_tree_node want = { .hash = *hash };
+ struct obj_index_tree_node *key;
+ struct tree_node *node;
- struct tree_node *node = tree_search(&want, &w->obj_index_tree,
- &obj_index_tree_node_compare, 0);
- struct obj_index_tree_node *key = NULL;
+ node = tree_search(w->obj_index_tree, &want, &obj_index_tree_node_compare);
if (!node) {
struct obj_index_tree_node empty = OBJ_INDEX_TREE_NODE_INIT;
- key = reftable_malloc(sizeof(struct obj_index_tree_node));
+
+ key = reftable_malloc(sizeof(*key));
+ if (!key)
+ return REFTABLE_OUT_OF_MEMORY_ERROR;
+
*key = empty;
strbuf_reset(&key->hash);
strbuf_addbuf(&key->hash, hash);
- tree_search((void *)key, &w->obj_index_tree,
- &obj_index_tree_node_compare, 1);
+ tree_insert(&w->obj_index_tree, key,
+ &obj_index_tree_node_compare);
} else {
key = node->key;
}
- if (key->offset_len > 0 && key->offsets[key->offset_len - 1] == off) {
- return;
- }
+ if (key->offset_len > 0 && key->offsets[key->offset_len - 1] == off)
+ return 0;
REFTABLE_ALLOC_GROW(key->offsets, key->offset_len + 1, key->offset_cap);
+ if (!key->offsets)
+ return REFTABLE_OUT_OF_MEMORY_ERROR;
key->offsets[key->offset_len++] = off;
+
+ return 0;
}
static int writer_add_record(struct reftable_writer *w,
@@ -230,8 +257,11 @@ static int writer_add_record(struct reftable_writer *w,
strbuf_reset(&w->last_key);
strbuf_addbuf(&w->last_key, &key);
- if (!w->block_writer)
- writer_reinit_block_writer(w, reftable_record_type(rec));
+ if (!w->block_writer) {
+ err = writer_reinit_block_writer(w, reftable_record_type(rec));
+ if (err < 0)
+ goto done;
+ }
if (block_writer_type(w->block_writer) != reftable_record_type(rec))
BUG("record of type %d added to writer of type %d",
@@ -254,7 +284,9 @@ static int writer_add_record(struct reftable_writer *w,
err = writer_flush_block(w);
if (err < 0)
goto done;
- writer_reinit_block_writer(w, reftable_record_type(rec));
+ err = writer_reinit_block_writer(w, reftable_record_type(rec));
+ if (err < 0)
+ goto done;
/*
* Try to add the record to the writer again. If this still fails then
@@ -284,11 +316,11 @@ int reftable_writer_add_ref(struct reftable_writer *w,
.ref = *ref
},
};
- int err = 0;
+ struct strbuf buf = STRBUF_INIT;
+ int err;
- if (!ref->refname)
- return REFTABLE_API_ERROR;
- if (ref->update_index < w->min_update_index ||
+ if (!ref->refname ||
+ ref->update_index < w->min_update_index ||
ref->update_index > w->max_update_index)
return REFTABLE_API_ERROR;
@@ -296,24 +328,32 @@ int reftable_writer_add_ref(struct reftable_writer *w,
err = writer_add_record(w, &rec);
if (err < 0)
- return err;
+ goto out;
if (!w->opts.skip_index_objects && reftable_ref_record_val1(ref)) {
- struct strbuf h = STRBUF_INIT;
- strbuf_add(&h, (char *)reftable_ref_record_val1(ref),
+ strbuf_add(&buf, (char *)reftable_ref_record_val1(ref),
hash_size(w->opts.hash_id));
- writer_index_hash(w, &h);
- strbuf_release(&h);
+
+ err = writer_index_hash(w, &buf);
+ if (err < 0)
+ goto out;
}
if (!w->opts.skip_index_objects && reftable_ref_record_val2(ref)) {
- struct strbuf h = STRBUF_INIT;
- strbuf_add(&h, reftable_ref_record_val2(ref),
+ strbuf_reset(&buf);
+ strbuf_add(&buf, reftable_ref_record_val2(ref),
hash_size(w->opts.hash_id));
- writer_index_hash(w, &h);
- strbuf_release(&h);
+
+ err = writer_index_hash(w, &buf);
+ if (err < 0)
+ goto out;
}
- return 0;
+
+ err = 0;
+
+out:
+ strbuf_release(&buf);
+ return err;
}
int reftable_writer_add_refs(struct reftable_writer *w,
@@ -436,7 +476,9 @@ static int writer_finish_section(struct reftable_writer *w)
max_level++;
index_start = w->next;
- writer_reinit_block_writer(w, BLOCK_TYPE_INDEX);
+ err = writer_reinit_block_writer(w, BLOCK_TYPE_INDEX);
+ if (err < 0)
+ return err;
idx = w->index;
idx_len = w->index_len;
@@ -530,7 +572,10 @@ static void write_object_record(void *void_arg, void *key)
if (arg->err < 0)
goto done;
- writer_reinit_block_writer(arg->w, BLOCK_TYPE_OBJ);
+ arg->err = writer_reinit_block_writer(arg->w, BLOCK_TYPE_OBJ);
+ if (arg->err < 0)
+ goto done;
+
arg->err = block_writer_add(arg->w->block_writer, &rec);
if (arg->err == 0)
goto done;
@@ -548,7 +593,7 @@ static void object_record_free(void *void_arg UNUSED, void *key)
{
struct obj_index_tree_node *entry = key;
- FREE_AND_NULL(entry->offsets);
+ REFTABLE_FREE_AND_NULL(entry->offsets);
strbuf_release(&entry->hash);
reftable_free(entry);
}
@@ -559,16 +604,18 @@ static int writer_dump_object_index(struct reftable_writer *w)
struct common_prefix_arg common = {
.max = 1, /* obj_id_len should be >= 2. */
};
- if (w->obj_index_tree) {
+ int err;
+
+ if (w->obj_index_tree)
infix_walk(w->obj_index_tree, &update_common, &common);
- }
w->stats.object_id_len = common.max + 1;
- writer_reinit_block_writer(w, BLOCK_TYPE_OBJ);
+ err = writer_reinit_block_writer(w, BLOCK_TYPE_OBJ);
+ if (err < 0)
+ return err;
- if (w->obj_index_tree) {
+ if (w->obj_index_tree)
infix_walk(w->obj_index_tree, &write_object_record, &closure);
- }
if (closure.err < 0)
return closure.err;
@@ -662,7 +709,7 @@ static void writer_clear_index(struct reftable_writer *w)
{
for (size_t i = 0; w->index && i < w->index_len; i++)
strbuf_release(&w->index[i].last_key);
- FREE_AND_NULL(w->index);
+ REFTABLE_FREE_AND_NULL(w->index);
w->index_len = 0;
w->index_cap = 0;
}
@@ -726,6 +773,9 @@ static int writer_flush_nonempty_block(struct reftable_writer *w)
* case we will end up with a multi-level index.
*/
REFTABLE_ALLOC_GROW(w->index, w->index_len + 1, w->index_cap);
+ if (!w->index)
+ return REFTABLE_OUT_OF_MEMORY_ERROR;
+
index_record.offset = w->next;
strbuf_reset(&index_record.last_key);
strbuf_addbuf(&index_record.last_key, &w->block_writer->last_key);
diff --git a/remote-curl.c b/remote-curl.c
index 4adcf25ed6..9a71e04301 100644
--- a/remote-curl.c
+++ b/remote-curl.c
@@ -347,7 +347,7 @@ static struct ref *parse_info_refs(struct discovery *heads)
ref->next = refs;
refs = ref;
} else {
- free(ref);
+ free_one_ref(ref);
}
return refs;
diff --git a/remote.c b/remote.c
index 390a03c264..10104d11e3 100644
--- a/remote.c
+++ b/remote.c
@@ -24,6 +24,7 @@
#include "advice.h"
#include "connect.h"
#include "parse-options.h"
+#include "transport.h"
enum map_direction { FROM_SRC, FROM_DST };
@@ -143,6 +144,7 @@ static struct remote *make_remote(struct remote_state *remote_state,
ret->name = xstrndup(name, len);
refspec_init(&ret->push, REFSPEC_PUSH);
refspec_init(&ret->fetch, REFSPEC_FETCH);
+ string_list_init_dup(&ret->server_options);
ALLOC_GROW(remote_state->remotes, remote_state->remotes_nr + 1,
remote_state->remotes_alloc);
@@ -166,6 +168,7 @@ static void remote_clear(struct remote *remote)
free((char *)remote->uploadpack);
FREE_AND_NULL(remote->http_proxy);
FREE_AND_NULL(remote->http_proxy_authmethod);
+ string_list_clear(&remote->server_options, 0);
}
static void add_merge(struct branch *branch, const char *name)
@@ -508,6 +511,9 @@ static int handle_config(const char *key, const char *value,
} else if (!strcmp(subkey, "vcs")) {
FREE_AND_NULL(remote->foreign_vcs);
return git_config_string(&remote->foreign_vcs, key, value);
+ } else if (!strcmp(subkey, "serveroption")) {
+ return parse_transport_option(key, value,
+ &remote->server_options);
}
return 0;
}
@@ -868,6 +874,20 @@ struct strvec *push_url_of_remote(struct remote *remote)
return remote->pushurl.nr ? &remote->pushurl : &remote->url;
}
+void ref_push_report_free(struct ref_push_report *report)
+{
+ while (report) {
+ struct ref_push_report *next = report->next;
+
+ free(report->ref_name);
+ free(report->old_oid);
+ free(report->new_oid);
+ free(report);
+
+ report = next;
+ }
+}
+
static int match_name_with_pattern(const char *key, const char *name,
const char *value, char **result)
{
@@ -1122,6 +1142,7 @@ void free_one_ref(struct ref *ref)
if (!ref)
return;
free_one_ref(ref->peer_ref);
+ ref_push_report_free(ref->report);
free(ref->remote_status);
free(ref->tracking_ref);
free(ref->symref);
@@ -2544,7 +2565,7 @@ struct ref *get_stale_heads(struct refspec *rs, struct ref *fetch_map)
/*
* Compare-and-swap
*/
-static void clear_cas_option(struct push_cas_option *cas)
+void clear_cas_option(struct push_cas_option *cas)
{
int i;
diff --git a/remote.h b/remote.h
index a58713f20a..a7e5c4e07c 100644
--- a/remote.h
+++ b/remote.h
@@ -4,6 +4,7 @@
#include "hash.h"
#include "hashmap.h"
#include "refspec.h"
+#include "string-list.h"
#include "strvec.h"
struct option;
@@ -104,6 +105,8 @@ struct remote {
/* The method used for authenticating against `http_proxy`. */
char *http_proxy_authmethod;
+
+ struct string_list server_options;
};
/**
@@ -126,13 +129,15 @@ int remote_has_url(struct remote *remote, const char *url);
struct strvec *push_url_of_remote(struct remote *remote);
struct ref_push_report {
- const char *ref_name;
+ char *ref_name;
struct object_id *old_oid;
struct object_id *new_oid;
unsigned int forced_update:1;
struct ref_push_report *next;
};
+void ref_push_report_free(struct ref_push_report *);
+
struct ref {
struct ref *next;
struct object_id old_oid;
@@ -409,6 +414,7 @@ struct push_cas_option {
};
int parseopt_push_cas_option(const struct option *, const char *arg, int unset);
+void clear_cas_option(struct push_cas_option *);
int is_empty_cas(const struct push_cas_option *);
void apply_push_cas(struct push_cas_option *, struct remote *, struct ref *);
diff --git a/revision.c b/revision.c
index 2d7ad2bddf..f5f5b84f2b 100644
--- a/revision.c
+++ b/revision.c
@@ -1071,7 +1071,11 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit)
ts->treesame[nth_parent] = 1;
continue;
}
+
+ free_commit_list(parent->next);
parent->next = NULL;
+ while (commit->parents != parent)
+ pop_commit(&commit->parents);
commit->parents = parent;
/*
@@ -1103,6 +1107,7 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit)
die("cannot simplify commit %s (invalid %s)",
oid_to_hex(&commit->object.oid),
oid_to_hex(&p->object.oid));
+ free_commit_list(p->parents);
p->parents = NULL;
}
/* fallthrough */
@@ -3245,6 +3250,7 @@ static int remove_duplicate_parents(struct rev_info *revs, struct commit *commit
struct commit *parent = p->item;
if (parent->object.flags & TMP_MARK) {
*pp = p->next;
+ free(p);
if (ts)
compact_treesame(revs, commit, surviving_parents);
continue;
@@ -4000,6 +4006,7 @@ int rewrite_parents(struct rev_info *revs, struct commit *commit,
break;
case rewrite_one_noparents:
*pp = parent->next;
+ free(parent);
continue;
case rewrite_one_error:
return -1;
@@ -4200,10 +4207,18 @@ static void save_parents(struct rev_info *revs, struct commit *commit)
*pp = EMPTY_PARENT_LIST;
}
+static void free_saved_parent(struct commit_list **parents)
+{
+ if (*parents != EMPTY_PARENT_LIST)
+ free_commit_list(*parents);
+}
+
static void free_saved_parents(struct rev_info *revs)
{
- if (revs->saved_parents_slab)
- clear_saved_parents(revs->saved_parents_slab);
+ if (!revs->saved_parents_slab)
+ return;
+ deep_clear_saved_parents(revs->saved_parents_slab, free_saved_parent);
+ FREE_AND_NULL(revs->saved_parents_slab);
}
struct commit_list *get_saved_parents(struct rev_info *revs, const struct commit *commit)
diff --git a/scalar.c b/scalar.c
index 09560aeab5..ac0cb579d3 100644
--- a/scalar.c
+++ b/scalar.c
@@ -732,6 +732,10 @@ static int cmd_reconfigure(int argc, const char **argv)
succeeded = 1;
the_repository = old_repo;
+ repo_clear(&r);
+
+ if (toggle_maintenance(1) >= 0)
+ succeeded = 1;
loop_end:
if (!succeeded) {
diff --git a/sequencer.c b/sequencer.c
index 8d01cd50ac..353d804999 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -5819,7 +5819,7 @@ static int make_script_with_merges(struct pretty_print_context *pp,
int root_with_onto = flags & TODO_LIST_ROOT_WITH_ONTO;
int skipped_commit = 0;
struct strbuf buf = STRBUF_INIT, oneline = STRBUF_INIT;
- struct strbuf label = STRBUF_INIT;
+ struct strbuf label_from_message = STRBUF_INIT;
struct commit_list *commits = NULL, **tail = &commits, *iter;
struct commit_list *tips = NULL, **tips_tail = &tips;
struct commit *commit;
@@ -5842,6 +5842,7 @@ static int make_script_with_merges(struct pretty_print_context *pp,
oidmap_init(&state.commit2label, 0);
hashmap_init(&state.labels, labels_cmp, NULL, 0);
strbuf_init(&state.buf, 32);
+ load_branch_decorations();
if (revs->cmdline.nr && (revs->cmdline.rev[0].flags & BOTTOM)) {
struct labels_entry *onto_label_entry;
@@ -5902,18 +5903,18 @@ static int make_script_with_merges(struct pretty_print_context *pp,
continue;
}
- /* Create a label */
- strbuf_reset(&label);
+ /* Create a label from the commit message */
+ strbuf_reset(&label_from_message);
if (skip_prefix(oneline.buf, "Merge ", &p1) &&
(p1 = strchr(p1, '\'')) &&
(p2 = strchr(++p1, '\'')))
- strbuf_add(&label, p1, p2 - p1);
+ strbuf_add(&label_from_message, p1, p2 - p1);
else if (skip_prefix(oneline.buf, "Merge pull request ",
&p1) &&
(p1 = strstr(p1, " from ")))
- strbuf_addstr(&label, p1 + strlen(" from "));
+ strbuf_addstr(&label_from_message, p1 + strlen(" from "));
else
- strbuf_addbuf(&label, &oneline);
+ strbuf_addbuf(&label_from_message, &oneline);
strbuf_reset(&buf);
strbuf_addf(&buf, "%s -C %s",
@@ -5921,6 +5922,14 @@ static int make_script_with_merges(struct pretty_print_context *pp,
/* label the tips of merged branches */
for (; to_merge; to_merge = to_merge->next) {
+ const char *label = label_from_message.buf;
+ const struct name_decoration *decoration =
+ get_name_decoration(&to_merge->item->object);
+
+ if (decoration)
+ skip_prefix(decoration->name, "refs/heads/",
+ &label);
+
oid = &to_merge->item->object.oid;
strbuf_addch(&buf, ' ');
@@ -5933,7 +5942,7 @@ static int make_script_with_merges(struct pretty_print_context *pp,
tips_tail = &commit_list_insert(to_merge->item,
tips_tail)->next;
- strbuf_addstr(&buf, label_oid(oid, label.buf, &state));
+ strbuf_addstr(&buf, label_oid(oid, label, &state));
}
strbuf_addf(&buf, " # %s", oneline.buf);
@@ -6041,7 +6050,7 @@ static int make_script_with_merges(struct pretty_print_context *pp,
free_commit_list(commits);
free_commit_list(tips);
- strbuf_release(&label);
+ strbuf_release(&label_from_message);
strbuf_release(&oneline);
strbuf_release(&buf);
@@ -6403,14 +6412,6 @@ static int add_decorations_to_list(const struct commit *commit,
static int todo_list_add_update_ref_commands(struct todo_list *todo_list)
{
int i, res;
- static struct string_list decorate_refs_exclude = STRING_LIST_INIT_NODUP;
- static struct string_list decorate_refs_exclude_config = STRING_LIST_INIT_NODUP;
- static struct string_list decorate_refs_include = STRING_LIST_INIT_NODUP;
- struct decoration_filter decoration_filter = {
- .include_ref_pattern = &decorate_refs_include,
- .exclude_ref_pattern = &decorate_refs_exclude,
- .exclude_ref_config_pattern = &decorate_refs_exclude_config,
- };
struct todo_add_branch_context ctx = {
.buf = &todo_list->buf,
.refs_to_oids = STRING_LIST_INIT_DUP,
@@ -6419,8 +6420,7 @@ static int todo_list_add_update_ref_commands(struct todo_list *todo_list)
ctx.items_alloc = 2 * todo_list->nr + 1;
ALLOC_ARRAY(ctx.items, ctx.items_alloc);
- string_list_append(&decorate_refs_include, "refs/heads/");
- load_ref_decorations(&decoration_filter, 0);
+ load_branch_decorations();
for (i = 0; i < todo_list->nr; ) {
struct todo_item *item = &todo_list->items[i];
diff --git a/setup.c b/setup.c
index 94e79b2e48..7b648de027 100644
--- a/setup.c
+++ b/setup.c
@@ -2420,7 +2420,7 @@ static void separate_git_dir(const char *git_dir, const char *git_link)
if (rename(src, git_dir))
die_errno(_("unable to move %s to %s"), src, git_dir);
- repair_worktrees(NULL, NULL);
+ repair_worktrees_after_gitdir_move(src);
}
write_file(git_link, "gitdir: %s", git_dir);
diff --git a/sha1/openssl.h b/sha1/openssl.h
index 006c1f4ba5..1038af47da 100644
--- a/sha1/openssl.h
+++ b/sha1/openssl.h
@@ -40,10 +40,12 @@ static inline void openssl_SHA1_Clone(struct openssl_SHA1_CTX *dst,
EVP_MD_CTX_copy_ex(dst->ectx, src->ectx);
}
+#ifndef platform_SHA_CTX
#define platform_SHA_CTX openssl_SHA1_CTX
#define platform_SHA1_Init openssl_SHA1_Init
#define platform_SHA1_Clone openssl_SHA1_Clone
#define platform_SHA1_Update openssl_SHA1_Update
#define platform_SHA1_Final openssl_SHA1_Final
+#endif
#endif /* SHA1_OPENSSL_H */
diff --git a/sha1dc_git.h b/sha1dc_git.h
index 60e3ce8439..f6f880cabe 100644
--- a/sha1dc_git.h
+++ b/sha1dc_git.h
@@ -18,7 +18,10 @@ void git_SHA1DCFinal(unsigned char [20], SHA1_CTX *);
void git_SHA1DCUpdate(SHA1_CTX *ctx, const void *data, unsigned long len);
#define platform_SHA_IS_SHA1DC /* used by "test-tool sha1-is-sha1dc" */
+
+#ifndef platform_SHA_CTX
#define platform_SHA_CTX SHA1_CTX
#define platform_SHA1_Init git_SHA1DCInit
#define platform_SHA1_Update git_SHA1DCUpdate
#define platform_SHA1_Final git_SHA1DCFinal
+#endif
diff --git a/shallow.c b/shallow.c
index dcebc263d7..4bb1518dbc 100644
--- a/shallow.c
+++ b/shallow.c
@@ -51,12 +51,11 @@ int unregister_shallow(const struct object_id *oid)
int pos = commit_graft_pos(the_repository, oid);
if (pos < 0)
return -1;
- if (pos + 1 < the_repository->parsed_objects->grafts_nr) {
- free(the_repository->parsed_objects->grafts[pos]);
+ free(the_repository->parsed_objects->grafts[pos]);
+ if (pos + 1 < the_repository->parsed_objects->grafts_nr)
MOVE_ARRAY(the_repository->parsed_objects->grafts + pos,
the_repository->parsed_objects->grafts + pos + 1,
the_repository->parsed_objects->grafts_nr - pos - 1);
- }
the_repository->parsed_objects->grafts_nr--;
return 0;
}
diff --git a/shell.c b/shell.c
index 2ece8b16e2..76333c8068 100644
--- a/shell.c
+++ b/shell.c
@@ -143,6 +143,7 @@ static void run_shell(void)
}
free(argv);
+ free(split_args);
free(rawargs);
} while (!done);
}
@@ -216,9 +217,8 @@ int cmd_main(int argc, const char **argv)
count = split_cmdline(prog, &user_argv);
if (count >= 0) {
if (is_valid_cmd_name(user_argv[0])) {
- prog = make_cmd(user_argv[0]);
- user_argv[0] = prog;
- execv(user_argv[0], (char *const *) user_argv);
+ char *cmd = make_cmd(user_argv[0]);
+ execv(cmd, (char *const *) user_argv);
}
free(prog);
free(user_argv);
diff --git a/simple-ipc.h b/simple-ipc.h
index a849d9f841..3916eaf70d 100644
--- a/simple-ipc.h
+++ b/simple-ipc.h
@@ -179,11 +179,20 @@ struct ipc_server_opts
* When a client IPC message is received, the `application_cb` will be
* called (possibly on a random thread) to handle the message and
* optionally compose a reply message.
+ *
+ * This initializes all threads but no actual work will be done until
+ * ipc_server_start_async() is called.
+ */
+int ipc_server_init_async(struct ipc_server_data **returned_server_data,
+ const char *path, const struct ipc_server_opts *opts,
+ ipc_server_application_cb *application_cb,
+ void *application_data);
+
+/*
+ * Let an async server start running. This needs to be called only once
+ * after initialization.
*/
-int ipc_server_run_async(struct ipc_server_data **returned_server_data,
- const char *path, const struct ipc_server_opts *opts,
- ipc_server_application_cb *application_cb,
- void *application_data);
+void ipc_server_start_async(struct ipc_server_data *server_data);
/*
* Gently signal the IPC server pool to shutdown. No new client
diff --git a/sparse-index.c b/sparse-index.c
index 542ca5f411..3d7f2164e2 100644
--- a/sparse-index.c
+++ b/sparse-index.c
@@ -21,9 +21,10 @@
* advice for advice.sparseIndexExpanded when expanding a sparse index to a full
* one. However, this is sometimes done on purpose, such as in the sparse-checkout
* builtin, even when index.sparse=false. This may be disabled in
- * convert_to_sparse().
+ * convert_to_sparse() or by commands that know they will lead to a full
+ * expansion, but this message is not actionable.
*/
-static int give_advice_on_expansion = 1;
+int give_advice_on_expansion = 1;
#define ADVICE_MSG \
"The sparse index is expanding to a full index, a slow operation.\n" \
"Your working directory likely has contents that are outside of\n" \
diff --git a/sparse-index.h b/sparse-index.h
index a16f3e67d7..727034be7c 100644
--- a/sparse-index.h
+++ b/sparse-index.h
@@ -1,6 +1,13 @@
#ifndef SPARSE_INDEX_H__
#define SPARSE_INDEX_H__
+/*
+ * If performing an operation where the index is supposed to expand to a
+ * full index, then disable the advice message by setting this global to
+ * zero.
+ */
+extern int give_advice_on_expansion;
+
struct index_state;
#define SPARSE_INDEX_MEMORY_ONLY (1 << 0)
int is_sparse_index_allowed(struct index_state *istate, int flags);
diff --git a/submodule-config.c b/submodule-config.c
index c8f2bb2bdd..9c8c37b259 100644
--- a/submodule-config.c
+++ b/submodule-config.c
@@ -95,7 +95,7 @@ static void free_one_config(struct submodule_entry *entry)
free((void *) entry->config->branch);
free((void *) entry->config->url);
free((void *) entry->config->ignore);
- free((void *) entry->config->update_strategy.command);
+ submodule_update_strategy_release(&entry->config->update_strategy);
free(entry->config);
}
@@ -901,8 +901,9 @@ static void traverse_tree_submodules(struct repository *r,
struct submodule_tree_entry *st_entry;
struct name_entry name_entry;
char *tree_path = NULL;
+ char *tree_buf;
- fill_tree_descriptor(r, &tree, treeish_name);
+ tree_buf = fill_tree_descriptor(r, &tree, treeish_name);
while (tree_entry(&tree, &name_entry)) {
if (prefix)
tree_path =
@@ -930,6 +931,8 @@ static void traverse_tree_submodules(struct repository *r,
&name_entry.oid, out);
free(tree_path);
}
+
+ free(tree_buf);
}
void submodules_of_tree(struct repository *r,
@@ -943,6 +946,16 @@ void submodules_of_tree(struct repository *r,
traverse_tree_submodules(r, treeish_name, NULL, treeish_name, out);
}
+void submodule_entry_list_release(struct submodule_entry_list *list)
+{
+ for (size_t i = 0; i < list->entry_nr; i++) {
+ free(list->entries[i].name_entry);
+ repo_clear(list->entries[i].repo);
+ free(list->entries[i].repo);
+ }
+ free(list->entries);
+}
+
void submodule_free(struct repository *r)
{
if (r->submodule_cache)
diff --git a/submodule-config.h b/submodule-config.h
index b6133af71b..f55d4e3b61 100644
--- a/submodule-config.h
+++ b/submodule-config.h
@@ -136,4 +136,7 @@ struct submodule_entry_list {
void submodules_of_tree(struct repository *r,
const struct object_id *treeish_name,
struct submodule_entry_list *ret);
+
+void submodule_entry_list_release(struct submodule_entry_list *list);
+
#endif /* SUBMODULE_CONFIG_H */
diff --git a/submodule.c b/submodule.c
index 4e71ac0dfd..74d5766f07 100644
--- a/submodule.c
+++ b/submodule.c
@@ -175,11 +175,11 @@ void stage_updated_gitmodules(struct index_state *istate)
die(_("staging updated .gitmodules failed"));
}
-static struct string_list added_submodule_odb_paths = STRING_LIST_INIT_NODUP;
+static struct string_list added_submodule_odb_paths = STRING_LIST_INIT_DUP;
void add_submodule_odb_by_path(const char *path)
{
- string_list_insert(&added_submodule_odb_paths, xstrdup(path));
+ string_list_insert(&added_submodule_odb_paths, path);
}
int register_all_submodule_odb_as_alternates(void)
@@ -424,6 +424,11 @@ int parse_submodule_update_strategy(const char *value,
return 0;
}
+void submodule_update_strategy_release(struct submodule_update_strategy *strategy)
+{
+ free((char *) strategy->command);
+}
+
const char *submodule_update_type_to_string(enum submodule_update_type type)
{
switch (type) {
diff --git a/submodule.h b/submodule.h
index b50d29eba4..4deb1b5f84 100644
--- a/submodule.h
+++ b/submodule.h
@@ -41,6 +41,10 @@ struct submodule_update_strategy {
.type = SM_UPDATE_UNSPECIFIED, \
}
+int parse_submodule_update_strategy(const char *value,
+ struct submodule_update_strategy *dst);
+void submodule_update_strategy_release(struct submodule_update_strategy *strategy);
+
int is_gitmodules_unmerged(struct index_state *istate);
int is_writing_gitmodules_ok(void);
int is_staging_gitmodules_ok(struct index_state *istate);
@@ -70,8 +74,6 @@ void die_in_unpopulated_submodule(struct index_state *istate,
void die_path_inside_submodule(struct index_state *istate,
const struct pathspec *ps);
enum submodule_update_type parse_submodule_update_type(const char *value);
-int parse_submodule_update_strategy(const char *value,
- struct submodule_update_strategy *dst);
const char *submodule_update_type_to_string(enum submodule_update_type type);
void handle_ignore_submodules_arg(struct diff_options *, const char *);
void show_submodule_diff_summary(struct diff_options *o, const char *path,
diff --git a/t/README b/t/README
index 8dcb778e26..8c0319b58e 100644
--- a/t/README
+++ b/t/README
@@ -465,8 +465,9 @@ GIT_TEST_DEFAULT_HASH=<hash-algo> specifies which hash algorithm to
use in the test scripts. Recognized values for <hash-algo> are "sha1"
and "sha256".
-GIT_TEST_DEFAULT_REF_FORMAT=<format> specifies which ref storage format
-to use in the test scripts. Recognized values for <format> are "files".
+GIT_TEST_DEFAULT_REF_FORMAT=<format> specifies which ref storage format to use
+in the test scripts. Recognized values for <format> are "files" and
+"reftable".
GIT_TEST_NO_WRITE_REV_INDEX=<boolean>, when true disables the
'pack.writeReverseIndex' setting.
diff --git a/t/helper/test-partial-clone.c b/t/helper/test-partial-clone.c
index 0ead529167..a1af9710c3 100644
--- a/t/helper/test-partial-clone.c
+++ b/t/helper/test-partial-clone.c
@@ -26,6 +26,8 @@ static void object_info(const char *gitdir, const char *oid_hex)
if (oid_object_info_extended(&r, &oid, &oi, 0))
die("could not obtain object info");
printf("%d\n", (int) size);
+
+ repo_clear(&r);
}
int cmd__partial_clone(int argc, const char **argv)
diff --git a/t/helper/test-proc-receive.c b/t/helper/test-proc-receive.c
index 29361c7aab..3703f734f3 100644
--- a/t/helper/test-proc-receive.c
+++ b/t/helper/test-proc-receive.c
@@ -196,5 +196,12 @@ int cmd__proc_receive(int argc, const char **argv)
packet_flush(1);
sigchain_pop(SIGPIPE);
+ while (commands) {
+ struct command *next = commands->next;
+ free(commands);
+ commands = next;
+ }
+ string_list_clear(&push_options, 0);
+
return 0;
}
diff --git a/t/helper/test-reftable.c b/t/helper/test-reftable.c
index 29d4e9a755..5c8849d115 100644
--- a/t/helper/test-reftable.c
+++ b/t/helper/test-reftable.c
@@ -28,7 +28,10 @@ static int dump_table(struct reftable_merged_table *mt)
const struct git_hash_algo *algop;
int err;
- reftable_merged_table_init_ref_iterator(mt, &it);
+ err = reftable_merged_table_init_ref_iterator(mt, &it);
+ if (err < 0)
+ return err;
+
err = reftable_iterator_seek_ref(&it, "");
if (err < 0)
return err;
@@ -63,7 +66,10 @@ static int dump_table(struct reftable_merged_table *mt)
reftable_iterator_destroy(&it);
reftable_ref_record_release(&ref);
- reftable_merged_table_init_log_iterator(mt, &it);
+ err = reftable_merged_table_init_log_iterator(mt, &it);
+ if (err < 0)
+ return err;
+
err = reftable_iterator_seek_log(&it, "");
if (err < 0)
return err;
diff --git a/t/helper/test-rot13-filter.c b/t/helper/test-rot13-filter.c
index 7e1d9e0ee4..ff407b575c 100644
--- a/t/helper/test-rot13-filter.c
+++ b/t/helper/test-rot13-filter.c
@@ -9,7 +9,7 @@
* ("clean", "smudge", etc).
*
* When --always-delay is given all pathnames with the "can-delay" flag
- * that don't appear on the list bellow are delayed with a count of 1
+ * that don't appear on the list below are delayed with a count of 1
* (see more below).
*
* This implementation supports special test cases:
diff --git a/t/helper/test-submodule-nested-repo-config.c b/t/helper/test-submodule-nested-repo-config.c
index 6ca069ce63..6dce957153 100644
--- a/t/helper/test-submodule-nested-repo-config.c
+++ b/t/helper/test-submodule-nested-repo-config.c
@@ -29,6 +29,6 @@ int cmd__submodule_nested_repo_config(int argc, const char **argv)
print_config_from_gitmodules(&subrepo, argv[2]);
submodule_free(the_repository);
-
+ repo_clear(&subrepo);
return 0;
}
diff --git a/t/lib-bundle.sh b/t/lib-bundle.sh
index cf7ed818b2..62b7bb13c8 100644
--- a/t/lib-bundle.sh
+++ b/t/lib-bundle.sh
@@ -11,7 +11,7 @@ convert_bundle_to_pack () {
}
# Check count of objects in a bundle file.
-# We can use "--thin" opiton to check thin pack, which must be fixed by
+# We can use "--thin" option to check thin pack, which must be fixed by
# command `git-index-pack --fix-thin --stdin`.
test_bundle_object_count () {
thin=
diff --git a/t/lib-rebase.sh b/t/lib-rebase.sh
index 11d2dc9fe3..0dd764310d 100644
--- a/t/lib-rebase.sh
+++ b/t/lib-rebase.sh
@@ -187,7 +187,7 @@ set_reword_editor () {
exit 1
fi
fi &&
- # There should be no uncommited changes
+ # There should be no uncommitted changes
git diff --exit-code HEAD &&
# The todo-list should be re-read after a reword
GIT_SEQUENCE_EDITOR="\"$PWD/reword-sequence-editor.sh\"" \
diff --git a/t/lib-sudo.sh b/t/lib-sudo.sh
index b4d7788f4e..477e0fdc04 100644
--- a/t/lib-sudo.sh
+++ b/t/lib-sudo.sh
@@ -6,7 +6,7 @@ run_with_sudo () {
local RUN="$TEST_DIRECTORY/$$.sh"
write_script "$RUN" "$TEST_SHELL_PATH"
# avoid calling "$RUN" directly so sudo doesn't get a chance to
- # override the shell, add aditional restrictions or even reject
+ # override the shell, add additional restrictions or even reject
# running the script because its security policy deem it unsafe
sudo "$TEST_SHELL_PATH" -c "\"$RUN\""
ret=$?
diff --git a/t/lib-unicode-nfc-nfd.sh b/t/lib-unicode-nfc-nfd.sh
index 22232247ef..aed0a4dd44 100755
--- a/t/lib-unicode-nfc-nfd.sh
+++ b/t/lib-unicode-nfc-nfd.sh
@@ -74,7 +74,7 @@ test_lazy_prereq UNICODE_NFD_PRESERVED '
# Yielding: \xcf \x89 + \xcc \x94 + \xcd \x82
#
# Note that I've used the canonical ordering of the
-# combinining characters. It is also possible to
+# combining characters. It is also possible to
# swap them. My testing shows that that non-standard
# ordering also causes a collision in mkdir. However,
# the resulting names don't draw correctly on the
diff --git a/t/perf/p7527-builtin-fsmonitor.sh b/t/perf/p7527-builtin-fsmonitor.sh
index c3f9a4caa4..90164327e8 100755
--- a/t/perf/p7527-builtin-fsmonitor.sh
+++ b/t/perf/p7527-builtin-fsmonitor.sh
@@ -95,7 +95,7 @@ test_expect_success "Setup borrowed repo (fsm+uc)" "
# time is not useful.
#
# Create a temp branch and do all work relative to it so that we don't
-# accidentially alter the real ballast branch.
+# accidentally alter the real ballast branch.
#
test_expect_success "Setup borrowed repo (temp ballast branch)" "
test_might_fail git -C $REPO checkout $BALLAST_BR &&
diff --git a/t/perf/perf-lib.sh b/t/perf/perf-lib.sh
index ab0c763411..8ab6d9c469 100644
--- a/t/perf/perf-lib.sh
+++ b/t/perf/perf-lib.sh
@@ -282,7 +282,7 @@ test_perf_ () {
# Run the performance test script specified in perf-test with
# optional prerequisite and setup steps.
# Options:
-# --prereq prerequisites: Skip the test if prequisites aren't met
+# --prereq prerequisites: Skip the test if prerequisites aren't met
# --setup "setup-steps": Run setup steps prior to each measured iteration
#
test_perf () {
@@ -309,7 +309,7 @@ test_size_ () {
# prerequisites and setup steps. Returns the numeric value
# returned by size-test.
# Options:
-# --prereq prerequisites: Skip the test if prequisites aren't met
+# --prereq prerequisites: Skip the test if prerequisites aren't met
# --setup "setup-steps": Run setup steps prior to the size measurement
test_size () {
diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh
index 98b81e4d63..35c5c2b4f9 100755
--- a/t/t0000-basic.sh
+++ b/t/t0000-basic.sh
@@ -684,7 +684,7 @@ test_expect_success 'subtest: tests respect lazy prerequisites' '
write_and_run_sub_test_lib_test lazy-prereqs <<-\EOF &&
test_lazy_prereq LAZY_TRUE true
- test_expect_success LAZY_TRUE "lazy prereq is satisifed" "true"
+ test_expect_success LAZY_TRUE "lazy prereq is satisfied" "true"
test_expect_success !LAZY_TRUE "negative lazy prereq" "false"
test_lazy_prereq LAZY_FALSE false
@@ -695,7 +695,7 @@ test_expect_success 'subtest: tests respect lazy prerequisites' '
EOF
check_sub_test_lib_test lazy-prereqs <<-\EOF
- ok 1 - lazy prereq is satisifed
+ ok 1 - lazy prereq is satisfied
ok 2 # skip negative lazy prereq (missing !LAZY_TRUE)
ok 3 # skip lazy prereq not satisfied (missing LAZY_FALSE)
ok 4 - negative false prereq
diff --git a/t/t0012-help.sh b/t/t0012-help.sh
index 1d273d91c2..9eae0d8356 100755
--- a/t/t0012-help.sh
+++ b/t/t0012-help.sh
@@ -2,6 +2,7 @@
test_description='help'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
configure_help () {
diff --git a/t/t0021-conversion.sh b/t/t0021-conversion.sh
index eeb2714d9d..9e6c6ee0d4 100755
--- a/t/t0021-conversion.sh
+++ b/t/t0021-conversion.sh
@@ -1116,11 +1116,11 @@ do
test_delayed_checkout_progress test_terminal git checkout $opt
'
- test_expect_success PERL "delayed checkout ommits progress on non-tty ($mode checkout)" '
+ test_expect_success PERL "delayed checkout omits progress on non-tty ($mode checkout)" '
test_delayed_checkout_progress ! git checkout $opt
'
- test_expect_success PERL,TTY "delayed checkout ommits progress with --quiet ($mode checkout)" '
+ test_expect_success PERL,TTY "delayed checkout omits progress with --quiet ($mode checkout)" '
test_delayed_checkout_progress ! test_terminal git checkout --quiet $opt
'
diff --git a/t/t0212/parse_events.perl b/t/t0212/parse_events.perl
index 30a9f51e9f..7146476c69 100644
--- a/t/t0212/parse_events.perl
+++ b/t/t0212/parse_events.perl
@@ -204,7 +204,7 @@ while (<>) {
}
# A series of potentially nested and threaded region and data events
- # is fundamentally incompatibile with the type of summary record we
+ # is fundamentally incompatible with the type of summary record we
# are building in this script. Since they are intended for
# perf-trace-like analysis rather than a result summary, we ignore
# most of them here.
diff --git a/t/t0410-partial-clone.sh b/t/t0410-partial-clone.sh
index 34bdb3ab1f..818700fbec 100755
--- a/t/t0410-partial-clone.sh
+++ b/t/t0410-partial-clone.sh
@@ -2,6 +2,7 @@
test_description='partial clone'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-terminal.sh
diff --git a/t/t0450-txt-doc-vs-help.sh b/t/t0450-txt-doc-vs-help.sh
index 69917d7b84..f99a69ae1b 100755
--- a/t/t0450-txt-doc-vs-help.sh
+++ b/t/t0450-txt-doc-vs-help.sh
@@ -56,14 +56,11 @@ txt_to_synopsis () {
fi &&
b2t="$(builtin_to_txt "$builtin")" &&
sed -n \
- -e '/^\[verse\]$/,/^$/ {
+ -E '/^\[(verse|synopsis)\]$/,/^$/ {
/^$/d;
- /^\[verse\]$/d;
- s/_//g;
- s/++//g;
- s/`//g;
- s/{litdd}/--/g;
- s/'\''\(git[ a-z-]*\)'\''/\1/g;
+ /^\[(verse|synopsis)\]$/d;
+ s/\{litdd\}/--/g;
+ s/'\''(git[ a-z-]*)'\''/\1/g;
p;
}' \
diff --git a/t/t0600-reffiles-backend.sh b/t/t0600-reffiles-backend.sh
index 20df336cc3..bef2b70871 100755
--- a/t/t0600-reffiles-backend.sh
+++ b/t/t0600-reffiles-backend.sh
@@ -271,7 +271,7 @@ test_expect_success 'setup worktree' '
# Some refs (refs/bisect/*, pseudorefs) are kept per worktree, so they should
# only appear in the for-each-reflog output if it is called from the correct
# worktree, which is exercised in this test. This test is poorly written for
-# mulitple reasons: 1) it creates invalidly formatted log entres. 2) it uses
+# multiple reasons: 1) it creates invalidly formatted log entries. 2) it uses
# direct FS access for creating the reflogs. 3) PSEUDO-WT and refs/bisect/random
# do not create reflogs by default, so it is not testing a realistic scenario.
test_expect_success 'for_each_reflog()' '
diff --git a/t/t0610-reftable-basics.sh b/t/t0610-reftable-basics.sh
index 37510c2b2a..babec7993e 100755
--- a/t/t0610-reftable-basics.sh
+++ b/t/t0610-reftable-basics.sh
@@ -423,6 +423,71 @@ test_expect_success 'ref transaction: fails gracefully when auto compaction fail
)
'
+test_expect_success 'ref transaction: timeout acquiring tables.list lock' '
+ test_when_finished "rm -rf repo" &&
+ git init repo &&
+ (
+ cd repo &&
+ test_commit initial &&
+ >.git/reftable/tables.list.lock &&
+ test_must_fail git update-ref refs/heads/branch HEAD 2>err &&
+ test_grep "cannot lock references" err
+ )
+'
+
+test_expect_success 'ref transaction: retry acquiring tables.list lock' '
+ test_when_finished "rm -rf repo" &&
+ git init repo &&
+ (
+ cd repo &&
+ test_commit initial &&
+ LOCK=.git/reftable/tables.list.lock &&
+ >$LOCK &&
+ {
+ ( sleep 1 && rm -f $LOCK ) &
+ } &&
+ git -c reftable.lockTimeout=5000 update-ref refs/heads/branch HEAD
+ )
+'
+
+# This test fails most of the time on Windows systems. The root cause is
+# that Windows does not allow us to rename the "tables.list.lock" file into
+# place when "tables.list" is open for reading by a concurrent process.
+test_expect_success !WINDOWS 'ref transaction: many concurrent writers' '
+ test_when_finished "rm -rf repo" &&
+ git init repo &&
+ (
+ cd repo &&
+ # Set a high timeout. While a couple of seconds should be
+ # plenty, using the address sanitizer will significantly slow
+ # us down here. So we are aiming way higher than you would ever
+ # think is necessary just to keep us from flaking. We could
+ # also lock indefinitely by passing -1, but that could
+ # potentially block CI jobs indefinitely if there was a bug
+ # here.
+ git config set reftable.lockTimeout 300000 &&
+ test_commit --no-tag initial &&
+
+ head=$(git rev-parse HEAD) &&
+ for i in $(test_seq 100)
+ do
+ printf "%s commit\trefs/heads/branch-%s\n" "$head" "$i" ||
+ return 1
+ done >expect &&
+ printf "%s commit\trefs/heads/main\n" "$head" >>expect &&
+
+ for i in $(test_seq 100)
+ do
+ { git update-ref refs/heads/branch-$i HEAD& } ||
+ return 1
+ done &&
+
+ wait &&
+ git for-each-ref --sort=v:refname >actual &&
+ test_cmp expect actual
+ )
+'
+
test_expect_success 'pack-refs: compacts tables' '
test_when_finished "rm -rf repo" &&
git init repo &&
diff --git a/t/t1016-compatObjectFormat.sh b/t/t1016-compatObjectFormat.sh
index be3206a16f..92024fe51d 100755
--- a/t/t1016-compatObjectFormat.sh
+++ b/t/t1016-compatObjectFormat.sh
@@ -117,7 +117,7 @@ do
git config extensions.objectformat $hash &&
git config extensions.compatobjectformat $(compat_hash $hash) &&
git config gpg.program $TEST_DIRECTORY/t1016/gpg &&
- echo "Hellow World!" > hello &&
+ echo "Hello World!" > hello &&
eval hello_${hash}_oid=$(git hash-object hello) &&
git update-index --add hello &&
git commit -m "Initial commit" &&
diff --git a/t/t1092-sparse-checkout-compatibility.sh b/t/t1092-sparse-checkout-compatibility.sh
index eb32da2a7f..2157f37da3 100755
--- a/t/t1092-sparse-checkout-compatibility.sh
+++ b/t/t1092-sparse-checkout-compatibility.sh
@@ -5,6 +5,7 @@ test_description='compare full workdir to sparse workdir'
GIT_TEST_SPLIT_INDEX=0
GIT_TEST_SPARSE_INDEX=
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
test_expect_success 'setup' '
@@ -707,7 +708,7 @@ test_expect_success 'reset with wildcard pathspec' '
test_all_match git ls-files -s -- deep &&
# The following `git reset`s result in updating the index on files with
- # `skip-worktree` enabled. To avoid failing due to discrepencies in reported
+ # `skip-worktree` enabled. To avoid failing due to discrepancies in reported
# "modified" files, `test_sparse_match` reset is performed separately from
# "full-checkout" reset, then the index contents of all repos are verified.
@@ -823,7 +824,7 @@ test_expect_success 'update-index --remove outside sparse definition' '
# Reset the state
test_all_match git reset --hard &&
- # --force-remove supercedes --ignore-skip-worktree-entries, removing
+ # --force-remove supersedes --ignore-skip-worktree-entries, removing
# a skip-worktree file from the index (and disk) when both are specified
# with --remove
test_sparse_match git update-index --force-remove --ignore-skip-worktree-entries folder1/a &&
@@ -2080,7 +2081,7 @@ test_expect_success 'grep is not expanded' '
test_expect_failure 'grep within submodules is not expanded' '
init_repos_as_submodules &&
- # do not use ensure_not_expanded() here, becasue `grep` should be
+ # do not use ensure_not_expanded() here, because `grep` should be
# run in the superproject, not in "./sparse-index"
GIT_TRACE2_EVENT="$(pwd)/trace2.txt" \
git grep --cached --recurse-submodules a -- "*/folder1/*" &&
@@ -2355,7 +2356,10 @@ test_expect_success 'advice.sparseIndexExpanded' '
mkdir -p sparse-index/deep/deeper2/deepest &&
touch sparse-index/deep/deeper2/deepest/bogus &&
git -C sparse-index status 2>err &&
- grep "The sparse index is expanding to a full index" err
+ grep "The sparse index is expanding to a full index" err &&
+
+ git -C sparse-index sparse-checkout disable 2>err &&
+ test_line_count = 0 err
'
test_expect_success 'cat-file -p' '
diff --git a/t/t1305-config-include.sh b/t/t1305-config-include.sh
index 5cde79ef8c..517d6c8693 100755
--- a/t/t1305-config-include.sh
+++ b/t/t1305-config-include.sh
@@ -357,4 +357,44 @@ test_expect_success 'include cycles are detected' '
grep "exceeded maximum include depth" stderr
'
+test_expect_success 'onbranch with unborn branch' '
+ test_when_finished "rm -rf repo" &&
+ git init repo &&
+ (
+ cd repo &&
+ git config set includeIf.onbranch:"*".path config.inc &&
+ git config set -f .git/config.inc foo.bar baz &&
+ git config get foo.bar
+ )
+'
+
+test_expect_success 'onbranch with detached HEAD' '
+ test_when_finished "rm -rf repo" &&
+ git init repo &&
+ (
+ cd repo &&
+ git config set "includeIf.onbranch:*.path" config.inc &&
+ git config set -f .git/config.inc foo.bar baz &&
+ test_commit initial &&
+ git switch --detach HEAD &&
+ test_must_fail git config get foo.bar
+ )
+'
+
+test_expect_success 'onbranch without repository' '
+ test_when_finished "rm -f .gitconfig config.inc" &&
+ git config set -f .gitconfig "includeIf.onbranch:**.path" config.inc &&
+ git config set -f config.inc foo.bar baz &&
+ git config get foo.bar &&
+ test_must_fail nongit git config get foo.bar
+'
+
+test_expect_success 'onbranch without repository but explicit nonexistent Git directory' '
+ test_when_finished "rm -f .gitconfig config.inc" &&
+ git config set -f .gitconfig "includeIf.onbranch:**.path" config.inc &&
+ git config set -f config.inc foo.bar baz &&
+ git config get foo.bar &&
+ test_must_fail nongit git --git-dir=nonexistent config get foo.bar
+'
+
test_done
diff --git a/t/t1400-update-ref.sh b/t/t1400-update-ref.sh
index eb1691860d..bb057596f1 100755
--- a/t/t1400-update-ref.sh
+++ b/t/t1400-update-ref.sh
@@ -1838,10 +1838,10 @@ do
test_expect_success "stdin $type create dangling symref ref works" '
test_when_finished "git symbolic-ref -d refs/heads/symref" &&
- format_command $type "symref-create refs/heads/symref" "refs/heads/unkown" >stdin &&
+ format_command $type "symref-create refs/heads/symref" "refs/heads/unknown" >stdin &&
git update-ref --stdin $type --no-deref <stdin &&
git symbolic-ref refs/heads/symref >expect &&
- echo refs/heads/unkown >actual &&
+ echo refs/heads/unknown >actual &&
test_cmp expect actual
'
diff --git a/t/t1414-reflog-walk.sh b/t/t1414-reflog-walk.sh
index be6c3f472c..49d28166da 100755
--- a/t/t1414-reflog-walk.sh
+++ b/t/t1414-reflog-walk.sh
@@ -4,6 +4,7 @@ test_description='various tests of reflog walk (log -g) behavior'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
test_expect_success 'set up some reflog entries' '
diff --git a/t/t1506-rev-parse-diagnosis.sh b/t/t1506-rev-parse-diagnosis.sh
index ef40511d89..a3464976e3 100755
--- a/t/t1506-rev-parse-diagnosis.sh
+++ b/t/t1506-rev-parse-diagnosis.sh
@@ -195,7 +195,7 @@ test_expect_success 'dotdot is not an empty set' '
'
test_expect_success 'dotdot does not peel endpoints' '
- git tag -a -m "annote" annotated HEAD &&
+ git tag -a -m "annotate" annotated HEAD &&
A=$(git rev-parse annotated) &&
H=$(git rev-parse annotated^0) &&
{
diff --git a/t/t2082-parallel-checkout-attributes.sh b/t/t2082-parallel-checkout-attributes.sh
index aec55496eb..da06cafad7 100755
--- a/t/t2082-parallel-checkout-attributes.sh
+++ b/t/t2082-parallel-checkout-attributes.sh
@@ -91,7 +91,7 @@ test_expect_success 'parallel-checkout with eol conversions' '
# Entries that require an external filter are not eligible for parallel
# checkout. Check that both the parallel-eligible and non-eligible entries are
-# properly writen in a single checkout operation.
+# properly written in a single checkout operation.
#
test_expect_success 'parallel-checkout and external filter' '
set_checkout_config 2 0 &&
diff --git a/t/t2401-worktree-prune.sh b/t/t2401-worktree-prune.sh
index 71aa9bcd62..976d048e3e 100755
--- a/t/t2401-worktree-prune.sh
+++ b/t/t2401-worktree-prune.sh
@@ -120,4 +120,23 @@ test_expect_success 'prune duplicate (main/linked)' '
! test -d .git/worktrees/wt
'
+test_expect_success 'not prune proper worktrees when run inside linked worktree' '
+ test_when_finished rm -rf repo wt_ext &&
+ git init repo &&
+ (
+ cd repo &&
+ echo content >file &&
+ git add file &&
+ git commit -m msg &&
+ git worktree add ../wt_ext &&
+ git worktree add wt_int &&
+ cd wt_int &&
+ git worktree prune -v >out &&
+ test_must_be_empty out &&
+ cd ../../wt_ext &&
+ git worktree prune -v >out &&
+ test_must_be_empty out
+ )
+'
+
test_done
diff --git a/t/t2406-worktree-repair.sh b/t/t2406-worktree-repair.sh
index edbf502ec5..7686e60f6a 100755
--- a/t/t2406-worktree-repair.sh
+++ b/t/t2406-worktree-repair.sh
@@ -197,4 +197,23 @@ test_expect_success 'repair moved main and linked worktrees' '
test_cmp expect-gitfile sidemoved/.git
'
+test_expect_success 'repair copied main and linked worktrees' '
+ test_when_finished "rm -rf orig dup" &&
+ mkdir -p orig &&
+ git -C orig init main &&
+ test_commit -C orig/main nothing &&
+ git -C orig/main worktree add ../linked &&
+ cp orig/main/.git/worktrees/linked/gitdir orig/main.expect &&
+ cp orig/linked/.git orig/linked.expect &&
+ cp -R orig dup &&
+ sed "s,orig/linked/\.git$,dup/linked/.git," orig/main.expect >dup/main.expect &&
+ sed "s,orig/main/\.git/worktrees/linked$,dup/main/.git/worktrees/linked," \
+ orig/linked.expect >dup/linked.expect &&
+ git -C dup/main worktree repair ../linked &&
+ test_cmp orig/main.expect orig/main/.git/worktrees/linked/gitdir &&
+ test_cmp orig/linked.expect orig/linked/.git &&
+ test_cmp dup/main.expect dup/main/.git/worktrees/linked/gitdir &&
+ test_cmp dup/linked.expect dup/linked/.git
+'
+
test_done
diff --git a/t/t2408-worktree-relative.sh b/t/t2408-worktree-relative.sh
new file mode 100755
index 0000000000..a3136db7e2
--- /dev/null
+++ b/t/t2408-worktree-relative.sh
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+test_description='test worktrees linked with relative paths'
+
+TEST_PASSES_SANITIZE_LEAK=true
+. ./test-lib.sh
+
+test_expect_success 'links worktrees with relative paths' '
+ test_when_finished rm -rf repo &&
+ git init repo &&
+ (
+ cd repo &&
+ test_commit initial &&
+ git worktree add wt1 &&
+ echo "../../../wt1/.git" >expected_gitdir &&
+ cat .git/worktrees/wt1/gitdir >actual_gitdir &&
+ echo "gitdir: ../.git/worktrees/wt1" >expected_git &&
+ cat wt1/.git >actual_git &&
+ test_cmp expected_gitdir actual_gitdir &&
+ test_cmp expected_git actual_git
+ )
+'
+
+test_expect_success 'move repo without breaking relative internal links' '
+ test_when_finished rm -rf repo moved &&
+ git init repo &&
+ (
+ cd repo &&
+ test_commit initial &&
+ git worktree add wt1 &&
+ cd .. &&
+ mv repo moved &&
+ cd moved/wt1 &&
+ git status >out 2>err &&
+ test_must_be_empty err
+ )
+'
+
+test_done
diff --git a/t/t3011-common-prefixes-and-directory-traversal.sh b/t/t3011-common-prefixes-and-directory-traversal.sh
index 3da5b2b6e7..69e44c387f 100755
--- a/t/t3011-common-prefixes-and-directory-traversal.sh
+++ b/t/t3011-common-prefixes-and-directory-traversal.sh
@@ -2,6 +2,7 @@
test_description='directory traversal handling, especially with common prefixes'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
test_expect_success 'setup' '
diff --git a/t/t3207-branch-submodule.sh b/t/t3207-branch-submodule.sh
index fe72b24716..904eea7df5 100755
--- a/t/t3207-branch-submodule.sh
+++ b/t/t3207-branch-submodule.sh
@@ -5,6 +5,7 @@ test_description='git branch submodule tests'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-rebase.sh
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index f171af3061..4896a801ee 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -1870,7 +1870,7 @@ test_expect_success '--update-refs adds commands with --rebase-merges' '
pick $(git log -1 --format=%h branch2~1) F
pick $(git log -1 --format=%h branch2) I
update-ref refs/heads/branch2
- label merge
+ label branch2
reset onto
pick $(git log -1 --format=%h refs/heads/second) J
update-ref refs/heads/second
@@ -1881,7 +1881,7 @@ test_expect_success '--update-refs adds commands with --rebase-merges' '
update-ref refs/heads/third
pick $(git log -1 --format=%h HEAD~2) M
update-ref refs/heads/no-conflict-branch
- merge -C $(git log -1 --format=%h HEAD~1) merge # merge
+ merge -C $(git log -1 --format=%h HEAD~1) branch2 # merge
update-ref refs/heads/merge-branch
EOF
diff --git a/t/t3427-rebase-subtree.sh b/t/t3427-rebase-subtree.sh
index 1b3e97c875..5e9046e3df 100755
--- a/t/t3427-rebase-subtree.sh
+++ b/t/t3427-rebase-subtree.sh
@@ -7,6 +7,7 @@ This test runs git rebase and tests the subtree strategy.
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-rebase.sh
diff --git a/t/t3430-rebase-merges.sh b/t/t3430-rebase-merges.sh
index 2aa8593f77..cb891eeb5f 100755
--- a/t/t3430-rebase-merges.sh
+++ b/t/t3430-rebase-merges.sh
@@ -108,19 +108,19 @@ test_expect_success 'generate correct todo list' '
reset onto
pick $b B
- label E
+ label first
reset onto
pick $c C
label branch-point
pick $f F
pick $g G
- label H
+ label second
reset branch-point # C
pick $d D
- merge -C $e E # E
- merge -C $h H # H
+ merge -C $e first # E
+ merge -C $h second # H
EOF
@@ -462,11 +462,11 @@ test_expect_success 'A root commit can be a cousin, treat it that way' '
'
test_expect_success 'labels that are object IDs are rewritten' '
- git checkout -b third B &&
+ git checkout --detach B &&
test_commit I &&
third=$(git rev-parse HEAD) &&
git checkout -b labels main &&
- git merge --no-commit third &&
+ git merge --no-commit $third &&
test_tick &&
git commit -m "Merge commit '\''$third'\'' into labels" &&
echo noop >script-from-scratch &&
diff --git a/t/t3514-cherry-pick-revert-gpg.sh b/t/t3514-cherry-pick-revert-gpg.sh
index 5b2e250eaa..133dc07217 100755
--- a/t/t3514-cherry-pick-revert-gpg.sh
+++ b/t/t3514-cherry-pick-revert-gpg.sh
@@ -5,6 +5,7 @@
test_description='test {cherry-pick,revert} --[no-]gpg-sign'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "$TEST_DIRECTORY/lib-gpg.sh"
diff --git a/t/t3909-stash-pathspec-file.sh b/t/t3909-stash-pathspec-file.sh
index 73f2dbdeb0..83269d0eb4 100755
--- a/t/t3909-stash-pathspec-file.sh
+++ b/t/t3909-stash-pathspec-file.sh
@@ -2,6 +2,7 @@
test_description='stash --pathspec-from-file'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
test_tick
diff --git a/t/t4008-diff-break-rewrite.sh b/t/t4008-diff-break-rewrite.sh
index 562aaf3a2a..b0ef0026e0 100755
--- a/t/t4008-diff-break-rewrite.sh
+++ b/t/t4008-diff-break-rewrite.sh
@@ -21,6 +21,8 @@ With -B, this should be detected as two complete rewrites.
Further, with -B and -M together, these should turn into two renames.
'
+
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-diff.sh ;# test-lib chdir's into trash
diff --git a/t/t4022-diff-rewrite.sh b/t/t4022-diff-rewrite.sh
index 6fed993ea0..77bc36d5d8 100755
--- a/t/t4022-diff-rewrite.sh
+++ b/t/t4022-diff-rewrite.sh
@@ -2,6 +2,7 @@
test_description='rewrite diff'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-diff-data.sh
diff --git a/t/t4023-diff-rename-typechange.sh b/t/t4023-diff-rename-typechange.sh
index 787605ce3f..e6f4fe441e 100755
--- a/t/t4023-diff-rename-typechange.sh
+++ b/t/t4023-diff-rename-typechange.sh
@@ -2,6 +2,7 @@
test_description='typechange rename detection'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-diff.sh
diff --git a/t/t4031-diff-rewrite-binary.sh b/t/t4031-diff-rewrite-binary.sh
index c4394a27b5..1b8cd3e4c9 100755
--- a/t/t4031-diff-rewrite-binary.sh
+++ b/t/t4031-diff-rewrite-binary.sh
@@ -2,6 +2,7 @@
test_description='rewrite diff on binary file'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
# We must be large enough to meet the MINIMUM_BREAK_SIZE
diff --git a/t/t4056-diff-order.sh b/t/t4056-diff-order.sh
index aec1d9d1b4..32c5fcb9a2 100755
--- a/t/t4056-diff-order.sh
+++ b/t/t4056-diff-order.sh
@@ -5,6 +5,7 @@ test_description='diff order & rotate'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
create_files () {
diff --git a/t/t4058-diff-duplicates.sh b/t/t4058-diff-duplicates.sh
index 2501c89c1c..18e5ac88c3 100755
--- a/t/t4058-diff-duplicates.sh
+++ b/t/t4058-diff-duplicates.sh
@@ -10,6 +10,8 @@
# that the diff output isn't wildly unreasonable.
test_description='test tree diff when trees have duplicate entries'
+
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
# make_tree_entry <mode> <mode> <sha1>
@@ -132,22 +134,23 @@ test_expect_success 'create a few commits' '
rm commit_id up final
'
-test_expect_failure 'git read-tree does not segfault' '
- test_when_finished rm .git/index.lock &&
- test_might_fail git read-tree --reset base
+test_expect_success 'git read-tree does not segfault' '
+ test_must_fail git read-tree --reset base 2>err &&
+ test_grep "error: corrupted cache-tree has entries not present in index" err
'
-test_expect_failure 'reset --hard does not segfault' '
- test_when_finished rm .git/index.lock &&
+test_expect_success 'reset --hard does not segfault' '
git checkout base &&
- test_might_fail git reset --hard
+ test_must_fail git reset --hard 2>err &&
+ test_grep "error: corrupted cache-tree has entries not present in index" err
'
-test_expect_failure 'git diff HEAD does not segfault' '
+test_expect_success 'git diff HEAD does not segfault' '
git checkout base &&
GIT_TEST_CHECK_CACHE_TREE=false &&
git reset --hard &&
- test_might_fail git diff HEAD
+ test_must_fail git diff HEAD 2>err &&
+ test_grep "error: corrupted cache-tree has entries not present in index" err
'
test_expect_failure 'can switch to another branch when status is empty' '
diff --git a/t/t4204-patch-id.sh b/t/t4204-patch-id.sh
index 605faea0c7..8e0f283c2b 100755
--- a/t/t4204-patch-id.sh
+++ b/t/t4204-patch-id.sh
@@ -5,6 +5,7 @@ test_description='git patch-id'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
test_expect_success 'setup' '
diff --git a/t/t4211-line-log.sh b/t/t4211-line-log.sh
index 02d76dca28..950451cf6a 100755
--- a/t/t4211-line-log.sh
+++ b/t/t4211-line-log.sh
@@ -337,4 +337,32 @@ test_expect_success 'zero-width regex .* matches any function name' '
test_cmp expect actual
'
+test_expect_success 'show line-log with graph' '
+ qz_to_tab_space >expect <<-EOF &&
+ * $head_oid Modify func2() in file.c
+ |Z
+ | diff --git a/file.c b/file.c
+ | --- a/file.c
+ | +++ b/file.c
+ | @@ -6,4 +6,4 @@
+ | int func2()
+ | {
+ | - return F2;
+ | + return F2 + 2;
+ | }
+ * $root_oid Add func1() and func2() in file.c
+ ZZ
+ diff --git a/file.c b/file.c
+ --- /dev/null
+ +++ b/file.c
+ @@ -0,0 +6,4 @@
+ +int func2()
+ +{
+ + return F2;
+ +}
+ EOF
+ git log --graph --oneline -L:func2:file.c >actual &&
+ test_cmp expect actual
+'
+
test_done
diff --git a/t/t5000-tar-tree.sh b/t/t5000-tar-tree.sh
index 7abba8a4b2..b9fda973f7 100755
--- a/t/t5000-tar-tree.sh
+++ b/t/t5000-tar-tree.sh
@@ -137,6 +137,8 @@ test_expect_success 'end-of-options is correctly eaten' '
test_expect_success 'populate workdir' '
mkdir a &&
+ echo "a files_named_a" >.gitattributes &&
+ git add .gitattributes &&
echo simple textfile >a/a &&
ten=0123456789 &&
hundred="$ten$ten$ten$ten$ten$ten$ten$ten$ten$ten" &&
@@ -450,6 +452,16 @@ test_expect_success 'allow pathspecs that resolve to the current directory' '
test_cmp expect actual
'
+test_expect_success 'attr pathspec in bare repo' '
+ test_expect_code 0 git --git-dir=bare.git archive -v HEAD \
+ ":(attr:files_named_a)" >/dev/null 2>actual &&
+ cat >expect <<-\EOF &&
+ a/
+ a/a
+ EOF
+ test_cmp expect actual
+'
+
# Pull the size and date of each entry in a tarfile using the system tar.
#
# We'll pull out only the year from the date; that avoids any question of
diff --git a/t/t5303-pack-corruption-resilience.sh b/t/t5303-pack-corruption-resilience.sh
index 61469ef4a6..e6a43ec9ae 100755
--- a/t/t5303-pack-corruption-resilience.sh
+++ b/t/t5303-pack-corruption-resilience.sh
@@ -44,9 +44,14 @@ create_new_pack() {
}
do_repack() {
+ for f in $pack.*
+ do
+ mv $f "$(echo $f | sed -e 's/pack-/pack-corrupt-/')" || return 1
+ done &&
pack=$(printf "$blob_1\n$blob_2\n$blob_3\n" |
git pack-objects $@ .git/objects/pack/pack) &&
- pack=".git/objects/pack/pack-${pack}"
+ pack=".git/objects/pack/pack-${pack}" &&
+ rm -f .git/objects/pack/pack-corrupt-*
}
do_corrupt_object() {
diff --git a/t/t5310-pack-bitmaps.sh b/t/t5310-pack-bitmaps.sh
index a6de7c5764..7044c7d7c6 100755
--- a/t/t5310-pack-bitmaps.sh
+++ b/t/t5310-pack-bitmaps.sh
@@ -2,6 +2,7 @@
test_description='exercise basic bitmap functionality'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-bitmap.sh
diff --git a/t/t5323-pack-redundant.sh b/t/t5323-pack-redundant.sh
index 8dbbcc5e51..4e18f5490a 100755
--- a/t/t5323-pack-redundant.sh
+++ b/t/t5323-pack-redundant.sh
@@ -34,6 +34,7 @@ relationship between packs and objects is as follows:
Px2 | s s s x x x
'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
main_repo=main.git
diff --git a/t/t5326-multi-pack-bitmaps.sh b/t/t5326-multi-pack-bitmaps.sh
index 832b92619c..6eaa692f33 100755
--- a/t/t5326-multi-pack-bitmaps.sh
+++ b/t/t5326-multi-pack-bitmaps.sh
@@ -1,6 +1,8 @@
#!/bin/sh
test_description='exercise basic multi-pack bitmap functionality'
+
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "${TEST_DIRECTORY}/lib-bitmap.sh"
diff --git a/t/t5327-multi-pack-bitmaps-rev.sh b/t/t5327-multi-pack-bitmaps-rev.sh
index 9cac03a94b..994a8e6be4 100755
--- a/t/t5327-multi-pack-bitmaps-rev.sh
+++ b/t/t5327-multi-pack-bitmaps-rev.sh
@@ -2,6 +2,7 @@
test_description='exercise basic multi-pack bitmap functionality (.rev files)'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "${TEST_DIRECTORY}/lib-bitmap.sh"
diff --git a/t/t5329-pack-objects-cruft.sh b/t/t5329-pack-objects-cruft.sh
index fc5fedbe9b..445739d06c 100755
--- a/t/t5329-pack-objects-cruft.sh
+++ b/t/t5329-pack-objects-cruft.sh
@@ -1,6 +1,8 @@
#!/bin/sh
test_description='cruft pack related pack-objects tests'
+
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
objdir=.git/objects
diff --git a/t/t5333-pseudo-merge-bitmaps.sh b/t/t5333-pseudo-merge-bitmaps.sh
index 1dd6284756..eca4a1eb8c 100755
--- a/t/t5333-pseudo-merge-bitmaps.sh
+++ b/t/t5333-pseudo-merge-bitmaps.sh
@@ -4,6 +4,7 @@ test_description='pseudo-merge bitmaps'
GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP=0
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
test_pseudo_merges () {
diff --git a/t/t5334-incremental-multi-pack-index.sh b/t/t5334-incremental-multi-pack-index.sh
index c3b08acc73..471994c4bc 100755
--- a/t/t5334-incremental-multi-pack-index.sh
+++ b/t/t5334-incremental-multi-pack-index.sh
@@ -1,6 +1,8 @@
#!/bin/sh
test_description='incremental multi-pack-index'
+
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-midx.sh
diff --git a/t/t5411-proc-receive-hook.sh b/t/t5411-proc-receive-hook.sh
index 92cf52c6d4..13d2d310a9 100755
--- a/t/t5411-proc-receive-hook.sh
+++ b/t/t5411-proc-receive-hook.sh
@@ -8,6 +8,7 @@ test_description='Test proc-receive hook'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "$TEST_DIRECTORY"/t5411/common-functions.sh
diff --git a/t/t5500-fetch-pack.sh b/t/t5500-fetch-pack.sh
index 585ea0ee16..605f17240c 100755
--- a/t/t5500-fetch-pack.sh
+++ b/t/t5500-fetch-pack.sh
@@ -8,6 +8,7 @@ test_description='Testing multi_ack pack fetching'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
# Test fetch-pack/upload-pack pair.
diff --git a/t/t5539-fetch-http-shallow.sh b/t/t5539-fetch-http-shallow.sh
index 3ea75d34ca..82fe09d0a9 100755
--- a/t/t5539-fetch-http-shallow.sh
+++ b/t/t5539-fetch-http-shallow.sh
@@ -5,6 +5,7 @@ test_description='fetch/clone from a shallow clone over http'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-httpd.sh
start_httpd
diff --git a/t/t5540-http-push-webdav.sh b/t/t5540-http-push-webdav.sh
index 37db3dec0c..27389b0908 100755
--- a/t/t5540-http-push-webdav.sh
+++ b/t/t5540-http-push-webdav.sh
@@ -10,6 +10,7 @@ This test runs various sanity checks on http-push.'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
if git http-push > /dev/null 2>&1 || [ $? -eq 128 ]
diff --git a/t/t5541-http-push-smart.sh b/t/t5541-http-push-smart.sh
index 71428f3d5c..3ad514bbd4 100755
--- a/t/t5541-http-push-smart.sh
+++ b/t/t5541-http-push-smart.sh
@@ -7,6 +7,7 @@ test_description='test smart pushing over http via http-backend'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
ROOT_PATH="$PWD"
diff --git a/t/t5542-push-http-shallow.sh b/t/t5542-push-http-shallow.sh
index c2cc83182f..07624a1d7f 100755
--- a/t/t5542-push-http-shallow.sh
+++ b/t/t5542-push-http-shallow.sh
@@ -5,6 +5,7 @@ test_description='push from/to a shallow clone over http'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-httpd.sh
start_httpd
diff --git a/t/t5545-push-options.sh b/t/t5545-push-options.sh
index fb13549da7..64ce56d3aa 100755
--- a/t/t5545-push-options.sh
+++ b/t/t5545-push-options.sh
@@ -8,6 +8,7 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB=1
export GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
mk_repo_pair () {
diff --git a/t/t5550-http-fetch-dumb.sh b/t/t5550-http-fetch-dumb.sh
index ea8e48f627..58189c9f7d 100755
--- a/t/t5550-http-fetch-dumb.sh
+++ b/t/t5550-http-fetch-dumb.sh
@@ -4,6 +4,7 @@ test_description='test dumb fetching over http via static file'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
if test_have_prereq !REFFILES
diff --git a/t/t5551-http-fetch-smart.sh b/t/t5551-http-fetch-smart.sh
index 7b5ab0eae1..2ce88535a6 100755
--- a/t/t5551-http-fetch-smart.sh
+++ b/t/t5551-http-fetch-smart.sh
@@ -5,6 +5,7 @@ test_description="test smart fetching over http via http-backend ($HTTP_PROTO)"
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-httpd.sh
test "$HTTP_PROTO" = "HTTP/2" && enable_http2
@@ -186,6 +187,28 @@ test_expect_success 'clone from password-protected repository' '
test_cmp expect actual
'
+test_expect_success 'credential.interactive=false skips askpass' '
+ set_askpass bogus nonsense &&
+ (
+ GIT_TRACE2_EVENT="$(pwd)/interactive-true" &&
+ export GIT_TRACE2_EVENT &&
+ test_must_fail git clone --bare "$HTTPD_URL/auth/smart/repo.git" interactive-true-dir &&
+ test_region credential interactive interactive-true &&
+
+ GIT_TRACE2_EVENT="$(pwd)/interactive-false" &&
+ export GIT_TRACE2_EVENT &&
+ test_must_fail git -c credential.interactive=false \
+ clone --bare "$HTTPD_URL/auth/smart/repo.git" interactive-false-dir &&
+ test_region ! credential interactive interactive-false &&
+
+ GIT_TRACE2_EVENT="$(pwd)/interactive-never" &&
+ export GIT_TRACE2_EVENT &&
+ test_must_fail git -c credential.interactive=never \
+ clone --bare "$HTTPD_URL/auth/smart/repo.git" interactive-never-dir &&
+ test_region ! credential interactive interactive-never
+ )
+'
+
test_expect_success 'clone from auth-only-for-push repository' '
echo two >expect &&
set_askpass wrong &&
diff --git a/t/t5572-pull-submodule.sh b/t/t5572-pull-submodule.sh
index 916e58c166..9b6cf8d88b 100755
--- a/t/t5572-pull-submodule.sh
+++ b/t/t5572-pull-submodule.sh
@@ -230,6 +230,7 @@ test_expect_success 'branch has no merge base with remote-tracking counterpart'
test_create_repo a-submodule &&
test_commit -C a-submodule foo &&
+ test_commit -C a-submodule bar &&
test_create_repo parent &&
git -C parent submodule add "$(pwd)/a-submodule" &&
@@ -246,4 +247,23 @@ test_expect_success 'branch has no merge base with remote-tracking counterpart'
git -C child pull --recurse-submodules --rebase
'
+test_expect_success 'fetch submodule remote of different name from superproject' '
+ git -C child remote rename origin o1 &&
+ git -C child submodule update --init &&
+
+ # Needs to create unreachable commit from current master branch.
+ git -C a-submodule checkout -b newmain HEAD^ &&
+ test_commit -C a-submodule echo &&
+ test_commit -C a-submodule moreecho &&
+ subc=$(git -C a-submodule rev-parse --short HEAD) &&
+
+ git -C parent/a-submodule fetch &&
+ git -C parent/a-submodule checkout "$subc" &&
+ git -C parent commit -m "update submodule" a-submodule &&
+ git -C a-submodule reset --hard HEAD^^ &&
+
+ git -C child pull --no-recurse-submodules &&
+ git -C child submodule update
+'
+
test_done
diff --git a/t/t5582-fetch-negative-refspec.sh b/t/t5582-fetch-negative-refspec.sh
index 7a80e47c2b..7fa54a4029 100755
--- a/t/t5582-fetch-negative-refspec.sh
+++ b/t/t5582-fetch-negative-refspec.sh
@@ -8,6 +8,7 @@ test_description='"git fetch" with negative refspecs.
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
test_expect_success setup '
diff --git a/t/t5619-clone-local-ambiguous-transport.sh b/t/t5619-clone-local-ambiguous-transport.sh
index cce62bf78d..1d4efe414d 100755
--- a/t/t5619-clone-local-ambiguous-transport.sh
+++ b/t/t5619-clone-local-ambiguous-transport.sh
@@ -2,6 +2,7 @@
test_description='test local clone with ambiguous transport'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "$TEST_DIRECTORY/lib-httpd.sh"
diff --git a/t/t5700-protocol-v1.sh b/t/t5700-protocol-v1.sh
index a73b4d4ff6..985e04d06e 100755
--- a/t/t5700-protocol-v1.sh
+++ b/t/t5700-protocol-v1.sh
@@ -11,6 +11,7 @@ export GIT_TEST_PROTOCOL_VERSION
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
# Test protocol v1 with 'git://' transport
diff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh
index 1ef540f73d..d3df81e785 100755
--- a/t/t5702-protocol-v2.sh
+++ b/t/t5702-protocol-v2.sh
@@ -185,6 +185,43 @@ test_expect_success 'server-options are sent when using ls-remote' '
grep "server-option=world" log
'
+test_expect_success 'server-options from configuration are used by ls-remote' '
+ test_when_finished "rm -rf log myclone" &&
+ git clone "file://$(pwd)/file_parent" myclone &&
+ cat >expect <<-EOF &&
+ $(git -C file_parent rev-parse refs/heads/main)$(printf "\t")refs/heads/main
+ EOF
+
+ # Default server options from configuration are used
+ git -C myclone config --add remote.origin.serverOption foo &&
+ git -C myclone config --add remote.origin.serverOption bar &&
+ GIT_TRACE_PACKET="$(pwd)/log" git -C myclone -c protocol.version=2 \
+ ls-remote origin main >actual &&
+ test_cmp expect actual &&
+ test_grep "ls-remote> server-option=foo" log &&
+ test_grep "ls-remote> server-option=bar" log &&
+ rm -f log &&
+
+ # Empty value of remote.<name>.serverOption clears the list
+ git -C myclone config --add remote.origin.serverOption "" &&
+ git -C myclone config --add remote.origin.serverOption tar &&
+ GIT_TRACE_PACKET="$(pwd)/log" git -C myclone -c protocol.version=2 \
+ ls-remote origin main >actual &&
+ test_cmp expect actual &&
+ test_grep "ls-remote> server-option=tar" log &&
+ test_grep ! "ls-remote> server-option=foo" log &&
+ test_grep ! "ls-remote> server-option=bar" log &&
+ rm -f log &&
+
+ # Server option from command line overrides those from configuration
+ GIT_TRACE_PACKET="$(pwd)/log" git -C myclone -c protocol.version=2 \
+ ls-remote -o hello -o world origin main >actual &&
+ test_cmp expect actual &&
+ test_grep "ls-remote> server-option=hello" log &&
+ test_grep "ls-remote> server-option=world" log &&
+ test_grep ! "ls-remote> server-option=tar" log
+'
+
test_expect_success 'warn if using server-option with ls-remote with legacy protocol' '
test_must_fail env GIT_TEST_PROTOCOL_VERSION=0 git -c protocol.version=0 \
ls-remote -o hello -o world "file://$(pwd)/file_parent" main 2>err &&
@@ -381,6 +418,54 @@ test_expect_success 'server-options are sent when fetching' '
grep "server-option=world" log
'
+test_expect_success 'server-options are sent when fetch multiple remotes' '
+ test_when_finished "rm -f log server_options_sent" &&
+ git clone "file://$(pwd)/file_parent" child_multi_remotes &&
+ git -C child_multi_remotes remote add another "file://$(pwd)/file_parent" &&
+ GIT_TRACE_PACKET="$(pwd)/log" git -C child_multi_remotes -c protocol.version=2 \
+ fetch -o hello --all &&
+ grep "fetch> server-option=hello" log >server_options_sent &&
+ test_line_count = 2 server_options_sent
+'
+
+test_expect_success 'server-options from configuration are used by git-fetch' '
+ test_when_finished "rm -rf log myclone" &&
+ git clone "file://$(pwd)/file_parent" myclone &&
+ git -C file_parent log -1 --format=%s >expect &&
+
+ # Default server options from configuration are used
+ git -C myclone config --add remote.origin.serverOption foo &&
+ git -C myclone config --add remote.origin.serverOption bar &&
+ GIT_TRACE_PACKET="$(pwd)/log" git -C myclone -c protocol.version=2 \
+ fetch origin main &&
+ git -C myclone log -1 --format=%s origin/main >actual &&
+ test_cmp expect actual &&
+ test_grep "fetch> server-option=foo" log &&
+ test_grep "fetch> server-option=bar" log &&
+ rm -f log &&
+
+ # Empty value of remote.<name>.serverOption clears the list
+ git -C myclone config --add remote.origin.serverOption "" &&
+ git -C myclone config --add remote.origin.serverOption tar &&
+ GIT_TRACE_PACKET="$(pwd)/log" git -C myclone -c protocol.version=2 \
+ fetch origin main &&
+ git -C myclone log -1 --format=%s origin/main >actual &&
+ test_cmp expect actual &&
+ test_grep "fetch> server-option=tar" log &&
+ test_grep ! "fetch> server-option=foo" log &&
+ test_grep ! "fetch> server-option=bar" log &&
+ rm -f log &&
+
+ # Server option from command line overrides those from configuration
+ GIT_TRACE_PACKET="$(pwd)/log" git -C myclone -c protocol.version=2 \
+ fetch -o hello -o world origin main &&
+ git -C myclone log -1 --format=%s origin/main >actual &&
+ test_cmp expect actual &&
+ test_grep "fetch> server-option=hello" log &&
+ test_grep "fetch> server-option=world" log &&
+ test_grep ! "fetch> server-option=tar" log
+'
+
test_expect_success 'warn if using server-option with fetch with legacy protocol' '
test_when_finished "rm -rf temp_child" &&
@@ -404,6 +489,37 @@ test_expect_success 'server-options are sent when cloning' '
grep "server-option=world" log
'
+test_expect_success 'server-options from configuration are used by git-clone' '
+ test_when_finished "rm -rf log myclone" &&
+
+ # Default server options from configuration are used
+ GIT_TRACE_PACKET="$(pwd)/log" git -c protocol.version=2 \
+ -c remote.origin.serverOption=foo -c remote.origin.serverOption=bar \
+ clone "file://$(pwd)/file_parent" myclone &&
+ test_grep "clone> server-option=foo" log &&
+ test_grep "clone> server-option=bar" log &&
+ rm -rf log myclone &&
+
+ # Empty value of remote.<name>.serverOption clears the list
+ GIT_TRACE_PACKET="$(pwd)/log" git -c protocol.version=2 \
+ -c remote.origin.serverOption=foo -c remote.origin.serverOption=bar \
+ -c remote.origin.serverOption= -c remote.origin.serverOption=tar \
+ clone "file://$(pwd)/file_parent" myclone &&
+ test_grep "clone> server-option=tar" log &&
+ test_grep ! "clone> server-option=foo" log &&
+ test_grep ! "clone> server-option=bar" log &&
+ rm -rf log myclone &&
+
+ # Server option from command line overrides those from configuration
+ GIT_TRACE_PACKET="$(pwd)/log" git -c protocol.version=2 \
+ -c remote.origin.serverOption=tar \
+ clone --server-option=hello --server-option=world \
+ "file://$(pwd)/file_parent" myclone &&
+ test_grep "clone> server-option=hello" log &&
+ test_grep "clone> server-option=world" log &&
+ test_grep ! "clone> server-option=tar" log
+'
+
test_expect_success 'warn if using server-option with clone with legacy protocol' '
test_when_finished "rm -rf myclone" &&
@@ -415,6 +531,23 @@ test_expect_success 'warn if using server-option with clone with legacy protocol
test_grep "server options require protocol version 2 or later" err
'
+test_expect_success 'server-option configuration with legacy protocol is ok' '
+ test_when_finished "rm -rf myclone" &&
+
+ env GIT_TEST_PROTOCOL_VERSION=0 git -c protocol.version=0 \
+ -c remote.origin.serverOption=foo -c remote.origin.serverOption=bar \
+ clone "file://$(pwd)/file_parent" myclone
+'
+
+test_expect_success 'invalid server-option configuration' '
+ test_when_finished "rm -rf myclone" &&
+
+ test_must_fail git -c protocol.version=2 \
+ -c remote.origin.serverOption \
+ clone "file://$(pwd)/file_parent" myclone 2>err &&
+ test_grep "error: missing value for '\''remote.origin.serveroption'\''" err
+'
+
test_expect_success 'upload-pack respects config using protocol v2' '
git init server &&
write_script server/.git/hook <<-\EOF &&
diff --git a/t/t5730-protocol-v2-bundle-uri-file.sh b/t/t5730-protocol-v2-bundle-uri-file.sh
index 37bdb725bc..38396df95b 100755
--- a/t/t5730-protocol-v2-bundle-uri-file.sh
+++ b/t/t5730-protocol-v2-bundle-uri-file.sh
@@ -7,6 +7,7 @@ TEST_NO_CREATE_REPO=1
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
# Test protocol v2 with 'file://' transport
diff --git a/t/t5731-protocol-v2-bundle-uri-git.sh b/t/t5731-protocol-v2-bundle-uri-git.sh
index 8add1b37ab..c199e955fe 100755
--- a/t/t5731-protocol-v2-bundle-uri-git.sh
+++ b/t/t5731-protocol-v2-bundle-uri-git.sh
@@ -7,6 +7,7 @@ TEST_NO_CREATE_REPO=1
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
# Test protocol v2 with 'git://' transport
diff --git a/t/t5732-protocol-v2-bundle-uri-http.sh b/t/t5732-protocol-v2-bundle-uri-http.sh
index 129daa0226..a9403e94c6 100755
--- a/t/t5732-protocol-v2-bundle-uri-http.sh
+++ b/t/t5732-protocol-v2-bundle-uri-http.sh
@@ -7,6 +7,7 @@ TEST_NO_CREATE_REPO=1
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
# Test protocol v2 with 'http://' transport
diff --git a/t/t6004-rev-list-path-optim.sh b/t/t6004-rev-list-path-optim.sh
index cd4f420e2a..5416241ede 100755
--- a/t/t6004-rev-list-path-optim.sh
+++ b/t/t6004-rev-list-path-optim.sh
@@ -16,6 +16,7 @@ test_description='git rev-list trivial path optimization test
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
test_expect_success setup '
diff --git a/t/t6012-rev-list-simplify.sh b/t/t6012-rev-list-simplify.sh
index de1e87f162..8ed1a215da 100755
--- a/t/t6012-rev-list-simplify.sh
+++ b/t/t6012-rev-list-simplify.sh
@@ -5,6 +5,7 @@ test_description='merge simplification'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
note () {
diff --git a/t/t6016-rev-list-graph-simplify-history.sh b/t/t6016-rev-list-graph-simplify-history.sh
index 54b0a6f5f8..2656d6a6bc 100755
--- a/t/t6016-rev-list-graph-simplify-history.sh
+++ b/t/t6016-rev-list-graph-simplify-history.sh
@@ -10,6 +10,7 @@ test_description='--graph and simplified history'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-log-graph.sh
diff --git a/t/t6019-rev-list-ancestry-path.sh b/t/t6019-rev-list-ancestry-path.sh
index 738da23628..1aabab6956 100755
--- a/t/t6019-rev-list-ancestry-path.sh
+++ b/t/t6019-rev-list-ancestry-path.sh
@@ -29,6 +29,7 @@ test_description='--ancestry-path'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
test_merge () {
diff --git a/t/t6111-rev-list-treesame.sh b/t/t6111-rev-list-treesame.sh
index 90ff141640..f63bc8d3da 100755
--- a/t/t6111-rev-list-treesame.sh
+++ b/t/t6111-rev-list-treesame.sh
@@ -16,6 +16,7 @@ test_description='TREESAME and limiting'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
note () {
diff --git a/t/t7003-filter-branch.sh b/t/t7003-filter-branch.sh
index 5ab4d41ee7..bf3e3f0b67 100755
--- a/t/t7003-filter-branch.sh
+++ b/t/t7003-filter-branch.sh
@@ -4,6 +4,7 @@ test_description='git filter-branch'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "$TEST_DIRECTORY/lib-gpg.sh"
diff --git a/t/t7061-wtstatus-ignore.sh b/t/t7061-wtstatus-ignore.sh
index 2f9bea9793..64145a05b1 100755
--- a/t/t7061-wtstatus-ignore.sh
+++ b/t/t7061-wtstatus-ignore.sh
@@ -2,6 +2,7 @@
test_description='git-status ignored files'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
cat >expected <<\EOF
diff --git a/t/t7300-clean.sh b/t/t7300-clean.sh
index 0aae0dee67..54fed91e39 100755
--- a/t/t7300-clean.sh
+++ b/t/t7300-clean.sh
@@ -29,15 +29,15 @@ test_expect_success 'git clean with skip-worktree .gitignore' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git clean &&
- test -f Makefile &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test ! -f a.out &&
- test ! -f src/part3.c &&
- test -f docs/manual.txt &&
- test -f obj.o &&
- test -f build/lib.so &&
+ test_path_is_file Makefile &&
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_missing a.out &&
+ test_path_is_missing src/part3.c &&
+ test_path_is_file docs/manual.txt &&
+ test_path_is_file obj.o &&
+ test_path_is_file build/lib.so &&
git update-index --no-skip-worktree .gitignore &&
git checkout .gitignore
'
@@ -47,15 +47,15 @@ test_expect_success 'git clean' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git clean &&
- test -f Makefile &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test ! -f a.out &&
- test ! -f src/part3.c &&
- test -f docs/manual.txt &&
- test -f obj.o &&
- test -f build/lib.so
+ test_path_is_file Makefile &&
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_missing a.out &&
+ test_path_is_missing src/part3.c &&
+ test_path_is_file docs/manual.txt &&
+ test_path_is_file obj.o &&
+ test_path_is_file build/lib.so
'
@@ -64,15 +64,15 @@ test_expect_success 'git clean src/' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git clean src/ &&
- test -f Makefile &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test -f a.out &&
- test ! -f src/part3.c &&
- test -f docs/manual.txt &&
- test -f obj.o &&
- test -f build/lib.so
+ test_path_is_file Makefile &&
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_file a.out &&
+ test_path_is_missing src/part3.c &&
+ test_path_is_file docs/manual.txt &&
+ test_path_is_file obj.o &&
+ test_path_is_file build/lib.so
'
@@ -81,15 +81,15 @@ test_expect_success 'git clean src/ src/' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git clean src/ src/ &&
- test -f Makefile &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test -f a.out &&
- test ! -f src/part3.c &&
- test -f docs/manual.txt &&
- test -f obj.o &&
- test -f build/lib.so
+ test_path_is_file Makefile &&
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_file a.out &&
+ test_path_is_missing src/part3.c &&
+ test_path_is_file docs/manual.txt &&
+ test_path_is_file obj.o &&
+ test_path_is_file build/lib.so
'
@@ -98,16 +98,16 @@ test_expect_success 'git clean with prefix' '
mkdir -p build docs src/test &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so src/test/1.c &&
(cd src/ && git clean) &&
- test -f Makefile &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test -f a.out &&
- test ! -f src/part3.c &&
- test -f src/test/1.c &&
- test -f docs/manual.txt &&
- test -f obj.o &&
- test -f build/lib.so
+ test_path_is_file Makefile &&
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_file a.out &&
+ test_path_is_missing src/part3.c &&
+ test_path_is_file src/test/1.c &&
+ test_path_is_file docs/manual.txt &&
+ test_path_is_file obj.o &&
+ test_path_is_file build/lib.so
'
@@ -163,16 +163,16 @@ test_expect_success 'git clean -d with prefix and path' '
mkdir -p build docs src/feature &&
touch a.out src/part3.c src/feature/file.c docs/manual.txt obj.o build/lib.so &&
(cd src/ && git clean -d feature/) &&
- test -f Makefile &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test -f a.out &&
- test -f src/part3.c &&
- test ! -f src/feature/file.c &&
- test -f docs/manual.txt &&
- test -f obj.o &&
- test -f build/lib.so
+ test_path_is_file Makefile &&
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_file a.out &&
+ test_path_is_file src/part3.c &&
+ test_path_is_missing src/feature/file.c &&
+ test_path_is_file docs/manual.txt &&
+ test_path_is_file obj.o &&
+ test_path_is_file build/lib.so
'
@@ -182,16 +182,16 @@ test_expect_success SYMLINKS 'git clean symbolic link' '
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
ln -s docs/manual.txt src/part4.c &&
git clean &&
- test -f Makefile &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test ! -f a.out &&
- test ! -f src/part3.c &&
- test ! -f src/part4.c &&
- test -f docs/manual.txt &&
- test -f obj.o &&
- test -f build/lib.so
+ test_path_is_file Makefile &&
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_missing a.out &&
+ test_path_is_missing src/part3.c &&
+ test_path_is_missing src/part4.c &&
+ test_path_is_file docs/manual.txt &&
+ test_path_is_file obj.o &&
+ test_path_is_file build/lib.so
'
@@ -199,13 +199,13 @@ test_expect_success 'git clean with wildcard' '
touch a.clean b.clean other.c &&
git clean "*.clean" &&
- test -f Makefile &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test ! -f a.clean &&
- test ! -f b.clean &&
- test -f other.c
+ test_path_is_file Makefile &&
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_missing a.clean &&
+ test_path_is_missing b.clean &&
+ test_path_is_file other.c
'
@@ -214,15 +214,15 @@ test_expect_success 'git clean -n' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git clean -n &&
- test -f Makefile &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test -f a.out &&
- test -f src/part3.c &&
- test -f docs/manual.txt &&
- test -f obj.o &&
- test -f build/lib.so
+ test_path_is_file Makefile &&
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_file a.out &&
+ test_path_is_file src/part3.c &&
+ test_path_is_file docs/manual.txt &&
+ test_path_is_file obj.o &&
+ test_path_is_file build/lib.so
'
@@ -231,15 +231,15 @@ test_expect_success 'git clean -d' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git clean -d &&
- test -f Makefile &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test ! -f a.out &&
- test ! -f src/part3.c &&
- test ! -d docs &&
- test -f obj.o &&
- test -f build/lib.so
+ test_path_is_file Makefile &&
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_missing a.out &&
+ test_path_is_missing src/part3.c &&
+ test_path_is_missing docs &&
+ test_path_is_file obj.o &&
+ test_path_is_file build/lib.so
'
@@ -248,16 +248,16 @@ test_expect_success 'git clean -d src/ examples/' '
mkdir -p build docs examples &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so examples/1.c &&
git clean -d src/ examples/ &&
- test -f Makefile &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test -f a.out &&
- test ! -f src/part3.c &&
- test ! -f examples/1.c &&
- test -f docs/manual.txt &&
- test -f obj.o &&
- test -f build/lib.so
+ test_path_is_file Makefile &&
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_file a.out &&
+ test_path_is_missing src/part3.c &&
+ test_path_is_missing examples/1.c &&
+ test_path_is_file docs/manual.txt &&
+ test_path_is_file obj.o &&
+ test_path_is_file build/lib.so
'
@@ -266,15 +266,15 @@ test_expect_success 'git clean -x' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git clean -x &&
- test -f Makefile &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test ! -f a.out &&
- test ! -f src/part3.c &&
- test -f docs/manual.txt &&
- test ! -f obj.o &&
- test -f build/lib.so
+ test_path_is_file Makefile &&
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_missing a.out &&
+ test_path_is_missing src/part3.c &&
+ test_path_is_file docs/manual.txt &&
+ test_path_is_missing obj.o &&
+ test_path_is_file build/lib.so
'
@@ -283,15 +283,15 @@ test_expect_success 'git clean -d -x' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git clean -d -x &&
- test -f Makefile &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test ! -f a.out &&
- test ! -f src/part3.c &&
- test ! -d docs &&
- test ! -f obj.o &&
- test ! -d build
+ test_path_is_file Makefile &&
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_missing a.out &&
+ test_path_is_missing src/part3.c &&
+ test_path_is_missing docs &&
+ test_path_is_missing obj.o &&
+ test_path_is_missing build
'
@@ -300,15 +300,15 @@ test_expect_success 'git clean -d -x with ignored tracked directory' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git clean -d -x -e src &&
- test -f Makefile &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test ! -f a.out &&
- test -f src/part3.c &&
- test ! -d docs &&
- test ! -f obj.o &&
- test ! -d build
+ test_path_is_file Makefile &&
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_missing a.out &&
+ test_path_is_file src/part3.c &&
+ test_path_is_missing docs &&
+ test_path_is_missing obj.o &&
+ test_path_is_missing build
'
@@ -317,15 +317,15 @@ test_expect_success 'git clean -X' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git clean -X &&
- test -f Makefile &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test -f a.out &&
- test -f src/part3.c &&
- test -f docs/manual.txt &&
- test ! -f obj.o &&
- test -f build/lib.so
+ test_path_is_file Makefile &&
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_file a.out &&
+ test_path_is_file src/part3.c &&
+ test_path_is_file docs/manual.txt &&
+ test_path_is_missing obj.o &&
+ test_path_is_file build/lib.so
'
@@ -334,15 +334,15 @@ test_expect_success 'git clean -d -X' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git clean -d -X &&
- test -f Makefile &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test -f a.out &&
- test -f src/part3.c &&
- test -f docs/manual.txt &&
- test ! -f obj.o &&
- test ! -d build
+ test_path_is_file Makefile &&
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_file a.out &&
+ test_path_is_file src/part3.c &&
+ test_path_is_file docs/manual.txt &&
+ test_path_is_missing obj.o &&
+ test_path_is_missing build
'
@@ -351,15 +351,15 @@ test_expect_success 'git clean -d -X with ignored tracked directory' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git clean -d -X -e src &&
- test -f Makefile &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test -f a.out &&
- test ! -f src/part3.c &&
- test -f docs/manual.txt &&
- test ! -f obj.o &&
- test ! -d build
+ test_path_is_file Makefile &&
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_file a.out &&
+ test_path_is_missing src/part3.c &&
+ test_path_is_file docs/manual.txt &&
+ test_path_is_missing obj.o &&
+ test_path_is_missing build
'
@@ -382,29 +382,29 @@ test_expect_success 'clean.requireForce and -n' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
git clean -n &&
- test -f Makefile &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test -f a.out &&
- test -f src/part3.c &&
- test -f docs/manual.txt &&
- test -f obj.o &&
- test -f build/lib.so
+ test_path_is_file Makefile &&
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_file a.out &&
+ test_path_is_file src/part3.c &&
+ test_path_is_file docs/manual.txt &&
+ test_path_is_file obj.o &&
+ test_path_is_file build/lib.so
'
test_expect_success 'clean.requireForce and -f' '
git clean -f &&
- test -f README &&
- test -f src/part1.c &&
- test -f src/part2.c &&
- test ! -f a.out &&
- test ! -f src/part3.c &&
- test -f docs/manual.txt &&
- test -f obj.o &&
- test -f build/lib.so
+ test_path_is_file README &&
+ test_path_is_file src/part1.c &&
+ test_path_is_file src/part2.c &&
+ test_path_is_missing a.out &&
+ test_path_is_missing src/part3.c &&
+ test_path_is_file docs/manual.txt &&
+ test_path_is_file obj.o &&
+ test_path_is_file build/lib.so
'
@@ -453,11 +453,11 @@ test_expect_success 'nested git work tree' '
test_commit deeply.nested deeper.world
) &&
git clean -f -d &&
- test -f foo/.git/index &&
- test -f foo/hello.world &&
- test -f baz/boo/.git/index &&
- test -f baz/boo/deeper.world &&
- ! test -d bar
+ test_path_is_file foo/.git/index &&
+ test_path_is_file foo/hello.world &&
+ test_path_is_file baz/boo/.git/index &&
+ test_path_is_file baz/boo/deeper.world &&
+ test_path_is_missing bar
'
test_expect_success 'should clean things that almost look like git but are not' '
@@ -624,9 +624,9 @@ test_expect_success 'force removal of nested git work tree' '
test_commit deeply.nested deeper.world
) &&
git clean -f -f -d &&
- ! test -d foo &&
- ! test -d bar &&
- ! test -d baz
+ test_path_is_missing foo &&
+ test_path_is_missing bar &&
+ test_path_is_missing baz
'
test_expect_success 'git clean -e' '
@@ -638,10 +638,10 @@ test_expect_success 'git clean -e' '
touch known 1 2 3 &&
git add known &&
git clean -f -e 1 -e 2 &&
- test -e 1 &&
- test -e 2 &&
- ! (test -e 3) &&
- test -e known
+ test_path_exists 1 &&
+ test_path_exists 2 &&
+ test_path_is_missing 3 &&
+ test_path_exists known
)
'
@@ -649,7 +649,7 @@ test_expect_success SANITY 'git clean -d with an unreadable empty directory' '
mkdir foo &&
chmod a= foo &&
git clean -dfx foo &&
- ! test -d foo
+ test_path_is_missing foo
'
test_expect_success 'git clean -d respects pathspecs (dir is prefix of pathspec)' '
@@ -747,7 +747,7 @@ test_expect_success MINGW 'handle clean & core.longpaths = false nicely' '
test_must_fail git clean -xdf 2>.git/err &&
# grepping for a strerror string is unportable but it is OK here with
# MINGW prereq
- test_grep "too long" .git/err
+ test_grep -e "too long" -e "No such file or directory" .git/err
'
test_expect_success 'clean untracked paths by pathspec' '
diff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh
index 297c6c3b5c..0f0c86f9cb 100755
--- a/t/t7406-submodule-update.sh
+++ b/t/t7406-submodule-update.sh
@@ -12,6 +12,7 @@ submodule and "git submodule update --rebase/--merge" does not detach the HEAD.
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
diff --git a/t/t7407-submodule-foreach.sh b/t/t7407-submodule-foreach.sh
index 8d7b234beb..9f68893261 100755
--- a/t/t7407-submodule-foreach.sh
+++ b/t/t7407-submodule-foreach.sh
@@ -12,6 +12,7 @@ that are currently checked out.
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
diff --git a/t/t7408-submodule-reference.sh b/t/t7408-submodule-reference.sh
index d6040e0a33..7e1afa9ce4 100755
--- a/t/t7408-submodule-reference.sh
+++ b/t/t7408-submodule-reference.sh
@@ -4,6 +4,8 @@
#
test_description='test clone --reference'
+
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
base_dir=$(pwd)
diff --git a/t/t7411-submodule-config.sh b/t/t7411-submodule-config.sh
index 31271f8e0a..af0de496e0 100755
--- a/t/t7411-submodule-config.sh
+++ b/t/t7411-submodule-config.sh
@@ -10,6 +10,7 @@ from the database and from the worktree works.
'
TEST_NO_CREATE_REPO=1
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
test_expect_success 'setup' '
diff --git a/t/t7420-submodule-set-url.sh b/t/t7420-submodule-set-url.sh
index bf7f15ee79..d7fe910bbe 100755
--- a/t/t7420-submodule-set-url.sh
+++ b/t/t7420-submodule-set-url.sh
@@ -10,6 +10,7 @@ as expected.
'
TEST_NO_CREATE_REPO=1
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
test_expect_success 'setup' '
diff --git a/t/t7422-submodule-output.sh b/t/t7422-submodule-output.sh
index ab946ec940..c1686d6bb5 100755
--- a/t/t7422-submodule-output.sh
+++ b/t/t7422-submodule-output.sh
@@ -167,4 +167,11 @@ do
'
done
+test_expect_success !MINGW 'git submodule status --recursive propagates SIGPIPE' '
+ { git submodule status --recursive 2>err; echo $?>status; } |
+ grep -q X/S &&
+ test_must_be_empty err &&
+ test_match_signal 13 "$(cat status)"
+'
+
test_done
diff --git a/t/t7521-ignored-mode.sh b/t/t7521-ignored-mode.sh
index a88b02b06e..edce10f998 100755
--- a/t/t7521-ignored-mode.sh
+++ b/t/t7521-ignored-mode.sh
@@ -2,6 +2,7 @@
test_description='git status ignored modes'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
test_expect_success 'setup initial commit and ignore file' '
diff --git a/t/t7524-commit-summary.sh b/t/t7524-commit-summary.sh
index 47b2f1dc22..a8fceb6a47 100755
--- a/t/t7524-commit-summary.sh
+++ b/t/t7524-commit-summary.sh
@@ -1,6 +1,8 @@
#!/bin/sh
test_description='git commit summary'
+
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
test_expect_success 'setup' '
diff --git a/t/t7527-builtin-fsmonitor.sh b/t/t7527-builtin-fsmonitor.sh
index 730f3c7f81..9b15baa02d 100755
--- a/t/t7527-builtin-fsmonitor.sh
+++ b/t/t7527-builtin-fsmonitor.sh
@@ -907,6 +907,57 @@ test_expect_success "submodule absorbgitdirs implicitly starts daemon" '
test_subcommand git fsmonitor--daemon start <super-sub.trace
'
+start_git_in_background () {
+ git "$@" &
+ git_pid=$!
+ git_pgid=$(ps -o pgid= -p $git_pid)
+ nr_tries_left=10
+ while true
+ do
+ if test $nr_tries_left -eq 0
+ then
+ kill -- -$git_pgid
+ exit 1
+ fi
+ sleep 1
+ nr_tries_left=$(($nr_tries_left - 1))
+ done >/dev/null 2>&1 &
+ watchdog_pid=$!
+ wait $git_pid
+}
+
+stop_git () {
+ while kill -0 -- -$git_pgid
+ do
+ kill -- -$git_pgid
+ sleep 1
+ done
+}
+
+stop_watchdog () {
+ while kill -0 $watchdog_pid
+ do
+ kill $watchdog_pid
+ sleep 1
+ done
+}
+
+test_expect_success !MINGW "submodule implicitly starts daemon by pull" '
+ test_atexit "stop_watchdog" &&
+ test_when_finished "stop_git; rm -rf cloned super sub" &&
+
+ create_super super &&
+ create_sub sub &&
+
+ git -C super submodule add ../sub ./dir_1/dir_2/sub &&
+ git -C super commit -m "add sub" &&
+ git clone --recurse-submodules super cloned &&
+
+ git -C cloned/dir_1/dir_2/sub config core.fsmonitor true &&
+ set -m &&
+ start_git_in_background -C cloned pull --recurse-submodules
+'
+
# On a case-insensitive file system, confirm that the daemon
# notices when the .git directory is moved/renamed/deleted
# regardless of how it is spelled in the FS event.
diff --git a/t/t7601-merge-pull-config.sh b/t/t7601-merge-pull-config.sh
index a94387a75f..7fd8c086af 100755
--- a/t/t7601-merge-pull-config.sh
+++ b/t/t7601-merge-pull-config.sh
@@ -4,6 +4,7 @@ test_description='git merge
Testing pull.* configuration parsing and other things.'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
test_expect_success 'setup' '
diff --git a/t/t7700-repack.sh b/t/t7700-repack.sh
index be1188e736..c4c3d1a15d 100755
--- a/t/t7700-repack.sh
+++ b/t/t7700-repack.sh
@@ -2,6 +2,7 @@
test_description='git repack works correctly'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "${TEST_DIRECTORY}/lib-bitmap.sh"
. "${TEST_DIRECTORY}/lib-midx.sh"
diff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh
index cc917b257e..f67b9345b8 100755
--- a/t/t7800-difftool.sh
+++ b/t/t7800-difftool.sh
@@ -11,6 +11,7 @@ Testing basic diff tool invocation
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
difftool_test_setup ()
diff --git a/t/t7814-grep-recurse-submodules.sh b/t/t7814-grep-recurse-submodules.sh
index 167fe66150..55ed630e77 100755
--- a/t/t7814-grep-recurse-submodules.sh
+++ b/t/t7814-grep-recurse-submodules.sh
@@ -7,6 +7,7 @@ submodules.
'
TEST_CREATE_REPO_NO_TEMPLATE=1
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB=1
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
index abae7a9754..c224c8450c 100755
--- a/t/t7900-maintenance.sh
+++ b/t/t7900-maintenance.sh
@@ -2,6 +2,7 @@
test_description='git maintenance builtin'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
GIT_TEST_COMMIT_GRAPH=0
@@ -645,6 +646,22 @@ test_expect_success !MINGW 'register and unregister with regex metacharacters' '
maintenance.repo "$(pwd)/$META"
'
+test_expect_success 'start without GIT_TEST_MAINT_SCHEDULER' '
+ test_when_finished "rm -rf systemctl.log script repo" &&
+ mkdir script &&
+ write_script script/systemctl <<-\EOF &&
+ echo "$*" >>../systemctl.log
+ EOF
+ git init repo &&
+ (
+ cd repo &&
+ sane_unset GIT_TEST_MAINT_SCHEDULER &&
+ PATH="$PWD/../script:$PATH" git maintenance start --scheduler=systemd
+ ) &&
+ test_grep -- "--user list-timers" systemctl.log &&
+ test_grep -- "enable --now git-maintenance@" systemctl.log
+'
+
test_expect_success 'start --scheduler=<scheduler>' '
test_expect_code 129 git maintenance start --scheduler=foo 2>err &&
test_grep "unrecognized --scheduler argument" err &&
@@ -825,6 +842,9 @@ test_expect_success 'start and stop Linux/systemd maintenance' '
test_systemd_analyze_verify "systemd/user/git-maintenance@daily.service" &&
test_systemd_analyze_verify "systemd/user/git-maintenance@weekly.service" &&
+ grep "core.askPass=true" "systemd/user/git-maintenance@.service" &&
+ grep "credential.interactive=false" "systemd/user/git-maintenance@.service" &&
+
printf -- "--user enable --now git-maintenance@%s.timer\n" hourly daily weekly >expect &&
test_cmp expect args &&
diff --git a/t/t8001-annotate.sh b/t/t8001-annotate.sh
index d7167f5539..d434698919 100755
--- a/t/t8001-annotate.sh
+++ b/t/t8001-annotate.sh
@@ -5,6 +5,7 @@ GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
TEST_CREATE_REPO_NO_TEMPLATE=1
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
PROG='git annotate'
diff --git a/t/t9210-scalar.sh b/t/t9210-scalar.sh
index e8613990e1..a30b2c9f70 100755
--- a/t/t9210-scalar.sh
+++ b/t/t9210-scalar.sh
@@ -2,6 +2,7 @@
test_description='test the `scalar` command'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
GIT_TEST_MAINT_SCHEDULER="crontab:test-tool crontab cron.txt,launchctl:true,schtasks:true"
@@ -194,8 +195,11 @@ test_expect_success 'scalar reconfigure' '
scalar reconfigure one &&
test true = "$(git -C one/src config core.preloadIndex)" &&
git -C one/src config core.preloadIndex false &&
- scalar reconfigure -a &&
- test true = "$(git -C one/src config core.preloadIndex)"
+ rm one/src/cron.txt &&
+ GIT_TRACE2_EVENT="$(pwd)/reconfigure" scalar reconfigure -a &&
+ test_path_is_file one/src/cron.txt &&
+ test true = "$(git -C one/src config core.preloadIndex)" &&
+ test_subcommand git maintenance start <reconfigure
'
test_expect_success 'scalar reconfigure --all with includeIf.onbranch' '
diff --git a/t/t9211-scalar-clone.sh b/t/t9211-scalar-clone.sh
index 7869f45ee6..c16ea67c1d 100755
--- a/t/t9211-scalar-clone.sh
+++ b/t/t9211-scalar-clone.sh
@@ -2,6 +2,7 @@
test_description='test the `scalar clone` subcommand'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
. "${TEST_DIRECTORY}/lib-terminal.sh"
diff --git a/t/t9350-fast-export.sh b/t/t9350-fast-export.sh
index 1eb035ee4c..2bdc02b459 100755
--- a/t/t9350-fast-export.sh
+++ b/t/t9350-fast-export.sh
@@ -7,6 +7,7 @@ test_description='git fast-export'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
test_expect_success 'setup' '
diff --git a/t/t9400-git-cvsserver-server.sh b/t/t9400-git-cvsserver-server.sh
index e499c7f955..6da7440e73 100755
--- a/t/t9400-git-cvsserver-server.sh
+++ b/t/t9400-git-cvsserver-server.sh
@@ -11,6 +11,7 @@ cvs CLI client via git-cvsserver server'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
if ! test_have_prereq PERL; then
diff --git a/t/t9402-git-cvsserver-refs.sh b/t/t9402-git-cvsserver-refs.sh
index 2ee41f9443..c847120d52 100755
--- a/t/t9402-git-cvsserver-refs.sh
+++ b/t/t9402-git-cvsserver-refs.sh
@@ -8,6 +8,7 @@ tags, branches and other git refspecs'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
#########
diff --git a/t/t9850-shell.sh b/t/t9850-shell.sh
index cfc71c3bd4..f503f16d1b 100755
--- a/t/t9850-shell.sh
+++ b/t/t9850-shell.sh
@@ -1,6 +1,8 @@
#!/bin/sh
test_description='git shell tests'
+
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
test_expect_success 'shell allows upload-pack' '
diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index fde9bf54fc..78e054ab50 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -926,7 +926,8 @@ test_expect_success () {
test_body_or_stdin test_body "$2"
test -n "$test_skip_test_preamble" ||
say >&3 "expecting success of $TEST_NUMBER.$test_count '$1': $test_body"
- if test_run_ "$test_body"
+ if test_run_ "$test_body" &&
+ check_test_results_san_file_empty_
then
test_ok_ "$1"
else
diff --git a/t/test-lib.sh b/t/test-lib.sh
index e718efe4c6..b1a8ee5c00 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -322,7 +322,6 @@ TEST_RESULTS_SAN_FILE_PFX=trace
TEST_RESULTS_SAN_DIR_SFX=leak
TEST_RESULTS_SAN_FILE=
TEST_RESULTS_SAN_DIR="$TEST_RESULTS_DIR/$TEST_NAME.$TEST_RESULTS_SAN_DIR_SFX"
-TEST_RESULTS_SAN_DIR_NR_LEAKS_STARTUP=
TRASH_DIRECTORY="trash directory.$TEST_NAME$TEST_STRESS_JOB_SFX"
test -n "$root" && TRASH_DIRECTORY="$root/$TRASH_DIRECTORY"
case "$TRASH_DIRECTORY" in
@@ -848,6 +847,7 @@ test_failure_ () {
GIT_EXIT_OK=t
exit 0
fi
+ check_test_results_san_file_ "$test_failure"
_error_exit
fi
finalize_test_case_output failure "$failure_label" "$@"
@@ -1215,42 +1215,16 @@ test_atexit_handler () {
teardown_malloc_check
}
-sanitize_leak_log_message_ () {
- local new="$1" &&
- local old="$2" &&
- local file="$3" &&
-
- printf "With SANITIZE=leak at exit we have %d leak logs, but started with %d
-
-This means that we have a blindspot where git is leaking but we're
-losing the exit code somewhere, or not propagating it appropriately
-upwards!
-
-See the logs at \"%s.*\";
-those logs are reproduced below." \
- "$new" "$old" "$file"
+check_test_results_san_file_empty_ () {
+ test -z "$TEST_RESULTS_SAN_FILE" ||
+ test "$(nr_san_dir_leaks_)" = 0
}
check_test_results_san_file_ () {
- if test -z "$TEST_RESULTS_SAN_FILE"
+ if check_test_results_san_file_empty_
then
return
fi &&
- local old="$TEST_RESULTS_SAN_DIR_NR_LEAKS_STARTUP" &&
- local new="$(nr_san_dir_leaks_)" &&
-
- if test $new -le $old
- then
- return
- fi &&
- local out="$(sanitize_leak_log_message_ "$new" "$old" "$TEST_RESULTS_SAN_FILE")" &&
- say_color error "$out" &&
- if test "$old" != 0
- then
- echo &&
- say_color error "The logs include output from past runs to avoid" &&
- say_color error "that remove 'test-results' between runs."
- fi &&
say_color error "$(cat "$TEST_RESULTS_SAN_FILE".*)" &&
if test -n "$passes_sanitize_leak" && test "$test_failure" = 0
@@ -1586,16 +1560,13 @@ then
test_done
fi
+ rm -rf "$TEST_RESULTS_SAN_DIR"
if ! mkdir -p "$TEST_RESULTS_SAN_DIR"
then
BAIL_OUT "cannot create $TEST_RESULTS_SAN_DIR"
fi &&
TEST_RESULTS_SAN_FILE="$TEST_RESULTS_SAN_DIR/$TEST_RESULTS_SAN_FILE_PFX"
- # In case "test-results" is left over from a previous
- # run: Only report if new leaks show up.
- TEST_RESULTS_SAN_DIR_NR_LEAKS_STARTUP=$(nr_san_dir_leaks_)
-
# Don't litter *.leak dirs if there was nothing to report
test_atexit "rmdir \"$TEST_RESULTS_SAN_DIR\" 2>/dev/null || :"
diff --git a/t/unit-tests/lib-reftable.c b/t/unit-tests/lib-reftable.c
index ab1fa44a28..54c26c43e7 100644
--- a/t/unit-tests/lib-reftable.c
+++ b/t/unit-tests/lib-reftable.c
@@ -22,9 +22,11 @@ static int strbuf_writer_flush(void *arg UNUSED)
struct reftable_writer *t_reftable_strbuf_writer(struct strbuf *buf,
struct reftable_write_options *opts)
{
- return reftable_new_writer(&strbuf_writer_write,
- &strbuf_writer_flush,
- buf, opts);
+ struct reftable_writer *writer;
+ int ret = reftable_writer_new(&writer, &strbuf_writer_write, &strbuf_writer_flush,
+ buf, opts);
+ check(!ret);
+ return writer;
}
void t_reftable_write_to_buf(struct strbuf *buf,
diff --git a/t/unit-tests/t-reftable-basics.c b/t/unit-tests/t-reftable-basics.c
index e5556ebf52..a344b27fa3 100644
--- a/t/unit-tests/t-reftable-basics.c
+++ b/t/unit-tests/t-reftable-basics.c
@@ -54,7 +54,7 @@ int cmd_main(int argc UNUSED, const char *argv[] UNUSED)
}
}
- if_test ("names_length retuns size of a NULL-terminated string array") {
+ if_test ("names_length returns size of a NULL-terminated string array") {
const char *a[] = { "a", "b", NULL };
check_int(names_length(a), ==, 2);
}
@@ -72,13 +72,14 @@ int cmd_main(int argc UNUSED, const char *argv[] UNUSED)
if_test ("parse_names works for basic input") {
char in1[] = "line\n";
char in2[] = "a\nb\nc";
- char **out = NULL;
- parse_names(in1, strlen(in1), &out);
+ char **out = parse_names(in1, strlen(in1));
+ check(out != NULL);
check_str(out[0], "line");
check(!out[1]);
free_names(out);
- parse_names(in2, strlen(in2), &out);
+ out = parse_names(in2, strlen(in2));
+ check(out != NULL);
check_str(out[0], "a");
check_str(out[1], "b");
check_str(out[2], "c");
@@ -88,8 +89,8 @@ int cmd_main(int argc UNUSED, const char *argv[] UNUSED)
if_test ("parse_names drops empty string") {
char in[] = "a\n\nb\n";
- char **out = NULL;
- parse_names(in, strlen(in), &out);
+ char **out = parse_names(in, strlen(in));
+ check(out != NULL);
check_str(out[0], "a");
/* simply '\n' should be dropped as empty string */
check_str(out[1], "b");
diff --git a/t/unit-tests/t-reftable-block.c b/t/unit-tests/t-reftable-block.c
index f1a49485e2..d470060e8b 100644
--- a/t/unit-tests/t-reftable-block.c
+++ b/t/unit-tests/t-reftable-block.c
@@ -32,10 +32,12 @@ static void t_ref_block_read_write(void)
struct strbuf want = STRBUF_INIT, buf = STRBUF_INIT;
REFTABLE_CALLOC_ARRAY(block.data, block_size);
+ check(block.data != NULL);
block.len = block_size;
block_source_from_strbuf(&block.source ,&buf);
- block_writer_init(&bw, BLOCK_TYPE_REF, block.data, block_size,
- header_off, hash_size(GIT_SHA1_FORMAT_ID));
+ ret = block_writer_init(&bw, BLOCK_TYPE_REF, block.data, block_size,
+ header_off, hash_size(GIT_SHA1_FORMAT_ID));
+ check(!ret);
rec.u.ref.refname = (char *) "";
rec.u.ref.value_type = REFTABLE_REF_DELETION;
@@ -124,10 +126,12 @@ static void t_log_block_read_write(void)
struct strbuf want = STRBUF_INIT, buf = STRBUF_INIT;
REFTABLE_CALLOC_ARRAY(block.data, block_size);
+ check(block.data != NULL);
block.len = block_size;
block_source_from_strbuf(&block.source ,&buf);
- block_writer_init(&bw, BLOCK_TYPE_LOG, block.data, block_size,
- header_off, hash_size(GIT_SHA1_FORMAT_ID));
+ ret = block_writer_init(&bw, BLOCK_TYPE_LOG, block.data, block_size,
+ header_off, hash_size(GIT_SHA1_FORMAT_ID));
+ check(!ret);
for (i = 0; i < N; i++) {
rec.u.log.refname = xstrfmt("branch%02"PRIuMAX , (uintmax_t)i);
@@ -212,10 +216,12 @@ static void t_obj_block_read_write(void)
struct strbuf want = STRBUF_INIT, buf = STRBUF_INIT;
REFTABLE_CALLOC_ARRAY(block.data, block_size);
+ check(block.data != NULL);
block.len = block_size;
block_source_from_strbuf(&block.source, &buf);
- block_writer_init(&bw, BLOCK_TYPE_OBJ, block.data, block_size,
- header_off, hash_size(GIT_SHA1_FORMAT_ID));
+ ret = block_writer_init(&bw, BLOCK_TYPE_OBJ, block.data, block_size,
+ header_off, hash_size(GIT_SHA1_FORMAT_ID));
+ check(!ret);
for (i = 0; i < N; i++) {
uint8_t bytes[] = { i, i + 1, i + 2, i + 3, i + 5 }, *allocated;
@@ -294,10 +300,12 @@ static void t_index_block_read_write(void)
struct strbuf want = STRBUF_INIT, buf = STRBUF_INIT;
REFTABLE_CALLOC_ARRAY(block.data, block_size);
+ check(block.data != NULL);
block.len = block_size;
block_source_from_strbuf(&block.source, &buf);
- block_writer_init(&bw, BLOCK_TYPE_INDEX, block.data, block_size,
- header_off, hash_size(GIT_SHA1_FORMAT_ID));
+ ret = block_writer_init(&bw, BLOCK_TYPE_INDEX, block.data, block_size,
+ header_off, hash_size(GIT_SHA1_FORMAT_ID));
+ check(!ret);
for (i = 0; i < N; i++) {
strbuf_init(&recs[i].u.idx.last_key, 9);
diff --git a/t/unit-tests/t-reftable-merged.c b/t/unit-tests/t-reftable-merged.c
index 19e54bdfb8..97d28bffe4 100644
--- a/t/unit-tests/t-reftable-merged.c
+++ b/t/unit-tests/t-reftable-merged.c
@@ -29,7 +29,9 @@ merged_table_from_records(struct reftable_ref_record **refs,
int err;
REFTABLE_CALLOC_ARRAY(*readers, n);
+ check(*readers != NULL);
REFTABLE_CALLOC_ARRAY(*source, n);
+ check(*source != NULL);
for (size_t i = 0; i < n; i++) {
t_reftable_write_to_buf(&buf[i], refs[i], sizes[i], NULL, 0, &opts);
@@ -82,7 +84,8 @@ static void t_merged_single_record(void)
struct reftable_iterator it = { 0 };
int err;
- merged_table_init_iter(mt, &it, BLOCK_TYPE_REF);
+ err = merged_table_init_iter(mt, &it, BLOCK_TYPE_REF);
+ check(!err);
err = reftable_iterator_seek_ref(&it, "a");
check(!err);
@@ -161,7 +164,8 @@ static void t_merged_refs(void)
size_t cap = 0;
size_t i;
- merged_table_init_iter(mt, &it, BLOCK_TYPE_REF);
+ err = merged_table_init_iter(mt, &it, BLOCK_TYPE_REF);
+ check(!err);
err = reftable_iterator_seek_ref(&it, "a");
check(!err);
check_int(reftable_merged_table_hash_id(mt), ==, GIT_SHA1_FORMAT_ID);
@@ -283,7 +287,9 @@ merged_table_from_log_records(struct reftable_log_record **logs,
int err;
REFTABLE_CALLOC_ARRAY(*readers, n);
+ check(*readers != NULL);
REFTABLE_CALLOC_ARRAY(*source, n);
+ check(*source != NULL);
for (size_t i = 0; i < n; i++) {
t_reftable_write_to_buf(&buf[i], NULL, 0, logs[i], sizes[i], &opts);
@@ -367,7 +373,8 @@ static void t_merged_logs(void)
size_t cap = 0;
size_t i;
- merged_table_init_iter(mt, &it, BLOCK_TYPE_LOG);
+ err = merged_table_init_iter(mt, &it, BLOCK_TYPE_LOG);
+ check(!err);
err = reftable_iterator_seek_log(&it, "a");
check(!err);
check_int(reftable_merged_table_hash_id(mt), ==, GIT_SHA1_FORMAT_ID);
@@ -390,7 +397,8 @@ static void t_merged_logs(void)
check(reftable_log_record_equal(want[i], &out[i],
GIT_SHA1_RAWSZ));
- merged_table_init_iter(mt, &it, BLOCK_TYPE_LOG);
+ err = merged_table_init_iter(mt, &it, BLOCK_TYPE_LOG);
+ check(!err);
err = reftable_iterator_seek_log_at(&it, "a", 2);
check(!err);
reftable_log_record_release(&out[0]);
@@ -459,7 +467,7 @@ int cmd_main(int argc UNUSED, const char *argv[] UNUSED)
TEST(t_merged_logs(), "merged table with multiple log updates for same ref");
TEST(t_merged_refs(), "merged table with multiple updates to same ref");
TEST(t_merged_seek_multiple_times(), "merged table can seek multiple times");
- TEST(t_merged_single_record(), "ref ocurring in only one record can be fetched");
+ TEST(t_merged_single_record(), "ref occurring in only one record can be fetched");
return test_done();
}
diff --git a/t/unit-tests/t-reftable-readwrite.c b/t/unit-tests/t-reftable-readwrite.c
index e1b235a5f1..27ce84445e 100644
--- a/t/unit-tests/t-reftable-readwrite.c
+++ b/t/unit-tests/t-reftable-readwrite.c
@@ -52,8 +52,11 @@ static void write_table(char ***names, struct strbuf *buf, int N,
int i;
REFTABLE_CALLOC_ARRAY(*names, N + 1);
+ check(*names != NULL);
REFTABLE_CALLOC_ARRAY(refs, N);
+ check(refs != NULL);
REFTABLE_CALLOC_ARRAY(logs, N);
+ check(logs != NULL);
for (i = 0; i < N; i++) {
refs[i].refname = (*names)[i] = xstrfmt("refs/heads/branch%02d", i);
@@ -73,8 +76,8 @@ static void write_table(char ***names, struct strbuf *buf, int N,
t_reftable_write_to_buf(buf, refs, N, logs, N, &opts);
- free(refs);
- free(logs);
+ reftable_free(refs);
+ reftable_free(logs);
}
static void t_log_buffer_size(void)
@@ -150,23 +153,25 @@ static void t_log_overflow(void)
static void t_log_write_read(void)
{
- int N = 2;
- char **names = reftable_calloc(N + 1, sizeof(*names));
- int err;
struct reftable_write_options opts = {
.block_size = 256,
};
struct reftable_ref_record ref = { 0 };
- int i = 0;
struct reftable_log_record log = { 0 };
- int n;
struct reftable_iterator it = { 0 };
struct reftable_reader *reader;
struct reftable_block_source source = { 0 };
struct strbuf buf = STRBUF_INIT;
struct reftable_writer *w = t_reftable_strbuf_writer(&buf, &opts);
const struct reftable_stats *stats = NULL;
+ int N = 2, err, i, n;
+ char **names;
+
+ names = reftable_calloc(N + 1, sizeof(*names));
+ check(names != NULL);
+
reftable_writer_set_limits(w, 0, N);
+
for (i = 0; i < N; i++) {
char name[256];
struct reftable_ref_record ref = { 0 };
@@ -178,6 +183,7 @@ static void t_log_write_read(void)
err = reftable_writer_add_ref(w, &ref);
check(!err);
}
+
for (i = 0; i < N; i++) {
struct reftable_log_record log = { 0 };
@@ -206,7 +212,8 @@ static void t_log_write_read(void)
err = reftable_reader_new(&reader, &source, "file.log");
check(!err);
- reftable_reader_init_ref_iterator(reader, &it);
+ err = reftable_reader_init_ref_iterator(reader, &it);
+ check(!err);
err = reftable_iterator_seek_ref(&it, names[N - 1]);
check(!err);
@@ -221,8 +228,8 @@ static void t_log_write_read(void)
reftable_iterator_destroy(&it);
reftable_ref_record_release(&ref);
- reftable_reader_init_log_iterator(reader, &it);
-
+ err = reftable_reader_init_log_iterator(reader, &it);
+ check(!err);
err = reftable_iterator_seek_log(&it, "");
check(!err);
@@ -296,7 +303,8 @@ static void t_log_zlib_corruption(void)
err = reftable_reader_new(&reader, &source, "file.log");
check(!err);
- reftable_reader_init_log_iterator(reader, &it);
+ err = reftable_reader_init_log_iterator(reader, &it);
+ check(!err);
err = reftable_iterator_seek_log(&it, "refname");
check_int(err, ==, REFTABLE_ZLIB_ERROR);
@@ -325,7 +333,8 @@ static void t_table_read_write_sequential(void)
err = reftable_reader_new(&reader, &source, "file.ref");
check(!err);
- reftable_reader_init_ref_iterator(reader, &it);
+ err = reftable_reader_init_ref_iterator(reader, &it);
+ check(!err);
err = reftable_iterator_seek_ref(&it, "");
check(!err);
@@ -376,7 +385,8 @@ static void t_table_read_api(void)
err = reftable_reader_new(&reader, &source, "file.ref");
check(!err);
- reftable_reader_init_ref_iterator(reader, &it);
+ err = reftable_reader_init_ref_iterator(reader, &it);
+ check(!err);
err = reftable_iterator_seek_ref(&it, names[0]);
check(!err);
@@ -419,7 +429,8 @@ static void t_table_read_write_seek(int index, int hash_id)
}
for (i = 1; i < N; i++) {
- reftable_reader_init_ref_iterator(reader, &it);
+ err = reftable_reader_init_ref_iterator(reader, &it);
+ check(!err);
err = reftable_iterator_seek_ref(&it, names[i]);
check(!err);
err = reftable_iterator_next_ref(&it, &ref);
@@ -435,7 +446,8 @@ static void t_table_read_write_seek(int index, int hash_id)
strbuf_addstr(&pastLast, names[N - 1]);
strbuf_addstr(&pastLast, "/");
- reftable_reader_init_ref_iterator(reader, &it);
+ err = reftable_reader_init_ref_iterator(reader, &it);
+ check(!err);
err = reftable_iterator_seek_ref(&it, pastLast.buf);
if (err == 0) {
struct reftable_ref_record ref = { 0 };
@@ -470,8 +482,7 @@ static void t_table_read_write_seek_index(void)
static void t_table_refs_for(int indexed)
{
- int N = 50;
- char **want_names = reftable_calloc(N + 1, sizeof(*want_names));
+ char **want_names;
int want_names_len = 0;
uint8_t want_hash[GIT_SHA1_RAWSZ];
@@ -479,15 +490,15 @@ static void t_table_refs_for(int indexed)
.block_size = 256,
};
struct reftable_ref_record ref = { 0 };
- int i = 0;
- int n;
- int err;
struct reftable_reader *reader;
struct reftable_block_source source = { 0 };
struct strbuf buf = STRBUF_INIT;
struct reftable_writer *w = t_reftable_strbuf_writer(&buf, &opts);
struct reftable_iterator it = { 0 };
- int j;
+ int N = 50, n, j, err, i;
+
+ want_names = reftable_calloc(N + 1, sizeof(*want_names));
+ check(want_names != NULL);
t_reftable_set_hash(want_hash, 4, GIT_SHA1_FORMAT_ID);
@@ -534,7 +545,8 @@ static void t_table_refs_for(int indexed)
if (!indexed)
reader->obj_offsets.is_present = 0;
- reftable_reader_init_ref_iterator(reader, &it);
+ err = reftable_reader_init_ref_iterator(reader, &it);
+ check(!err);
err = reftable_iterator_seek_ref(&it, "");
check(!err);
reftable_iterator_destroy(&it);
@@ -593,7 +605,8 @@ static void t_write_empty_table(void)
err = reftable_reader_new(&rd, &source, "filename");
check(!err);
- reftable_reader_init_ref_iterator(rd, &it);
+ err = reftable_reader_init_ref_iterator(rd, &it);
+ check(!err);
err = reftable_iterator_seek_ref(&it, "");
check(!err);
@@ -802,7 +815,8 @@ static void t_write_multiple_indices(void)
* Seeking the log uses the log index now. In case there is any
* confusion regarding indices we would notice here.
*/
- reftable_reader_init_log_iterator(reader, &it);
+ err = reftable_reader_init_log_iterator(reader, &it);
+ check(!err);
err = reftable_iterator_seek_log(&it, "");
check(!err);
@@ -858,7 +872,8 @@ static void t_write_multi_level_index(void)
/*
* Seeking the last ref should work as expected.
*/
- reftable_reader_init_ref_iterator(reader, &it);
+ err = reftable_reader_init_ref_iterator(reader, &it);
+ check(!err);
err = reftable_iterator_seek_ref(&it, "refs/heads/199");
check(!err);
diff --git a/t/unit-tests/t-reftable-stack.c b/t/unit-tests/t-reftable-stack.c
index 65e513d5ec..874095b9ee 100644
--- a/t/unit-tests/t-reftable-stack.c
+++ b/t/unit-tests/t-reftable-stack.c
@@ -267,7 +267,7 @@ static void t_reftable_stack_transaction_api(void)
reftable_addition_destroy(add);
- err = reftable_stack_new_addition(&add, st);
+ err = reftable_stack_new_addition(&add, st, 0);
check(!err);
err = reftable_addition_add(add, write_test_ref, &ref);
@@ -288,6 +288,68 @@ static void t_reftable_stack_transaction_api(void)
clear_dir(dir);
}
+static void t_reftable_stack_transaction_with_reload(void)
+{
+ char *dir = get_tmp_dir(__LINE__);
+ struct reftable_stack *st1 = NULL, *st2 = NULL;
+ int err;
+ struct reftable_addition *add = NULL;
+ struct reftable_ref_record refs[2] = {
+ {
+ .refname = (char *) "refs/heads/a",
+ .update_index = 1,
+ .value_type = REFTABLE_REF_VAL1,
+ .value.val1 = { '1' },
+ },
+ {
+ .refname = (char *) "refs/heads/b",
+ .update_index = 2,
+ .value_type = REFTABLE_REF_VAL1,
+ .value.val1 = { '1' },
+ },
+ };
+ struct reftable_ref_record ref = { 0 };
+
+ err = reftable_new_stack(&st1, dir, NULL);
+ check(!err);
+ err = reftable_new_stack(&st2, dir, NULL);
+ check(!err);
+
+ err = reftable_stack_new_addition(&add, st1, 0);
+ check(!err);
+ err = reftable_addition_add(add, write_test_ref, &refs[0]);
+ check(!err);
+ err = reftable_addition_commit(add);
+ check(!err);
+ reftable_addition_destroy(add);
+
+ /*
+ * The second stack is now outdated, which we should notice. We do not
+ * create the addition and lock the stack by default, but allow the
+ * reload to happen when REFTABLE_STACK_NEW_ADDITION_RELOAD is set.
+ */
+ err = reftable_stack_new_addition(&add, st2, 0);
+ check_int(err, ==, REFTABLE_OUTDATED_ERROR);
+ err = reftable_stack_new_addition(&add, st2, REFTABLE_STACK_NEW_ADDITION_RELOAD);
+ check(!err);
+ err = reftable_addition_add(add, write_test_ref, &refs[1]);
+ check(!err);
+ err = reftable_addition_commit(add);
+ check(!err);
+ reftable_addition_destroy(add);
+
+ for (size_t i = 0; i < ARRAY_SIZE(refs); i++) {
+ err = reftable_stack_read_ref(st2, refs[i].refname, &ref);
+ check(!err);
+ check(reftable_ref_record_equal(&refs[i], &ref, GIT_SHA1_RAWSZ));
+ }
+
+ reftable_ref_record_release(&ref);
+ reftable_stack_destroy(st1);
+ reftable_stack_destroy(st2);
+ clear_dir(dir);
+}
+
static void t_reftable_stack_transaction_api_performs_auto_compaction(void)
{
char *dir = get_tmp_dir(__LINE__);
@@ -318,7 +380,7 @@ static void t_reftable_stack_transaction_api_performs_auto_compaction(void)
*/
st->opts.disable_auto_compact = i != n;
- err = reftable_stack_new_addition(&add, st);
+ err = reftable_stack_new_addition(&add, st, 0);
check(!err);
err = reftable_addition_add(add, write_test_ref, &ref);
@@ -599,7 +661,9 @@ static void t_reftable_stack_iterator(void)
reftable_iterator_destroy(&it);
- reftable_stack_init_log_iterator(st, &it);
+ err = reftable_stack_init_log_iterator(st, &it);
+ check(!err);
+
reftable_iterator_seek_log(&it, logs[0].refname);
for (i = 0; ; i++) {
struct reftable_log_record log = { 0 };
@@ -1147,7 +1211,7 @@ static void unclean_stack_close(struct reftable_stack *st)
for (size_t i = 0; i < st->readers_len; i++)
reftable_reader_decref(st->readers[i]);
st->readers_len = 0;
- FREE_AND_NULL(st->readers);
+ REFTABLE_FREE_AND_NULL(st->readers);
}
static void t_reftable_stack_compaction_concurrent_clean(void)
@@ -1313,6 +1377,7 @@ int cmd_main(int argc UNUSED, const char *argv[] UNUSED)
TEST(t_reftable_stack_reload_with_missing_table(), "stack iteration with garbage tables");
TEST(t_reftable_stack_tombstone(), "'tombstone' refs in stack");
TEST(t_reftable_stack_transaction_api(), "update transaction to stack");
+ TEST(t_reftable_stack_transaction_with_reload(), "transaction with reload");
TEST(t_reftable_stack_transaction_api_performs_auto_compaction(), "update transaction triggers auto-compaction");
TEST(t_reftable_stack_update_index_check(), "update transactions with equal update indices");
TEST(t_reftable_stack_uptodate(), "stack must be reloaded before ref update");
diff --git a/t/unit-tests/t-reftable-tree.c b/t/unit-tests/t-reftable-tree.c
index 700479d34b..79b175a45a 100644
--- a/t/unit-tests/t-reftable-tree.c
+++ b/t/unit-tests/t-reftable-tree.c
@@ -37,16 +37,17 @@ static void t_tree_search(void)
* values[1] and values[10] (inclusive) in the tree.
*/
do {
- nodes[i] = tree_search(&values[i], &root, &t_compare, 1);
+ nodes[i] = tree_insert(&root, &values[i], &t_compare);
+ check(nodes[i] != NULL);
i = (i * 7) % 11;
} while (i != 1);
for (i = 1; i < ARRAY_SIZE(nodes); i++) {
check_pointer_eq(&values[i], nodes[i]->key);
- check_pointer_eq(nodes[i], tree_search(&values[i], &root, &t_compare, 0));
+ check_pointer_eq(nodes[i], tree_search(root, &values[i], &t_compare));
}
- check(!tree_search(values, &root, t_compare, 0));
+ check(!tree_search(root, values, t_compare));
tree_free(root);
}
@@ -62,7 +63,8 @@ static void t_infix_walk(void)
size_t count = 0;
do {
- tree_search(&values[i], &root, t_compare, 1);
+ struct tree_node *node = tree_insert(&root, &values[i], t_compare);
+ check(node != NULL);
i = (i * 7) % 11;
count++;
} while (i != 1);
diff --git a/tmp-objdir.c b/tmp-objdir.c
index c2fb9f9193..9da0071cba 100644
--- a/tmp-objdir.c
+++ b/tmp-objdir.c
@@ -206,9 +206,11 @@ static int read_dir_paths(struct string_list *out, const char *path)
return 0;
}
-static int migrate_paths(struct strbuf *src, struct strbuf *dst);
+static int migrate_paths(struct strbuf *src, struct strbuf *dst,
+ enum finalize_object_file_flags flags);
-static int migrate_one(struct strbuf *src, struct strbuf *dst)
+static int migrate_one(struct strbuf *src, struct strbuf *dst,
+ enum finalize_object_file_flags flags)
{
struct stat st;
@@ -220,12 +222,18 @@ static int migrate_one(struct strbuf *src, struct strbuf *dst)
return -1;
} else if (errno != EEXIST)
return -1;
- return migrate_paths(src, dst);
+ return migrate_paths(src, dst, flags);
}
- return finalize_object_file(src->buf, dst->buf);
+ return finalize_object_file_flags(src->buf, dst->buf, flags);
}
-static int migrate_paths(struct strbuf *src, struct strbuf *dst)
+static int is_loose_object_shard(const char *name)
+{
+ return strlen(name) == 2 && isxdigit(name[0]) && isxdigit(name[1]);
+}
+
+static int migrate_paths(struct strbuf *src, struct strbuf *dst,
+ enum finalize_object_file_flags flags)
{
size_t src_len = src->len, dst_len = dst->len;
struct string_list paths = STRING_LIST_INIT_DUP;
@@ -239,11 +247,15 @@ static int migrate_paths(struct strbuf *src, struct strbuf *dst)
for (i = 0; i < paths.nr; i++) {
const char *name = paths.items[i].string;
+ enum finalize_object_file_flags flags_copy = flags;
strbuf_addf(src, "/%s", name);
strbuf_addf(dst, "/%s", name);
- ret |= migrate_one(src, dst);
+ if (is_loose_object_shard(name))
+ flags_copy |= FOF_SKIP_COLLISION_CHECK;
+
+ ret |= migrate_one(src, dst, flags_copy);
strbuf_setlen(src, src_len);
strbuf_setlen(dst, dst_len);
@@ -271,7 +283,7 @@ int tmp_objdir_migrate(struct tmp_objdir *t)
strbuf_addbuf(&src, &t->path);
strbuf_addstr(&dst, repo_get_object_directory(the_repository));
- ret = migrate_paths(&src, &dst);
+ ret = migrate_paths(&src, &dst, 0);
strbuf_release(&src);
strbuf_release(&dst);
diff --git a/trace2/tr2_ctr.c b/trace2/tr2_ctr.c
index 036b643578..ee17bfa86b 100644
--- a/trace2/tr2_ctr.c
+++ b/trace2/tr2_ctr.c
@@ -4,7 +4,7 @@
#include "trace2/tr2_ctr.h"
/*
- * A global counter block to aggregrate values from the partial sums
+ * A global counter block to aggregate values from the partial sums
* from each thread.
*/
static struct tr2_counter_block final_counter_block; /* access under tr2tls_mutex */
diff --git a/trace2/tr2_tls.c b/trace2/tr2_tls.c
index 4f75392952..7b023c1bfc 100644
--- a/trace2/tr2_tls.c
+++ b/trace2/tr2_tls.c
@@ -152,11 +152,19 @@ uint64_t tr2tls_absolute_elapsed(uint64_t us)
return us - tr2tls_us_start_process;
}
+static void tr2tls_key_destructor(void *payload)
+{
+ struct tr2tls_thread_ctx *ctx = payload;
+ free((char *)ctx->thread_name);
+ free(ctx->array_us_start);
+ free(ctx);
+}
+
void tr2tls_init(void)
{
tr2tls_start_process_clock();
- pthread_key_create(&tr2tls_key, NULL);
+ pthread_key_create(&tr2tls_key, tr2tls_key_destructor);
init_recursive_mutex(&tr2tls_mutex);
tr2tls_thread_main =
diff --git a/trace2/tr2_tls.h b/trace2/tr2_tls.h
index 3dfe6557fc..3bdbf4d275 100644
--- a/trace2/tr2_tls.h
+++ b/trace2/tr2_tls.h
@@ -11,7 +11,7 @@
*/
/*
- * Arbitry limit for thread names for column alignment.
+ * Arbitrary limit for thread names for column alignment.
*/
#define TR2_MAX_THREAD_NAME (24)
diff --git a/transport-helper.c b/transport-helper.c
index c688967b8c..013ec79dc9 100644
--- a/transport-helper.c
+++ b/transport-helper.c
@@ -717,8 +717,14 @@ static int fetch_refs(struct transport *transport,
return -1;
}
- if (!data->get_refs_list_called)
- get_refs_list_using_list(transport, 0);
+ if (!data->get_refs_list_called) {
+ /*
+ * We do not care about the list of refs returned, but only
+ * that the "list" command was sent.
+ */
+ struct ref *dummy = get_refs_list_using_list(transport, 0);
+ free_refs(dummy);
+ }
count = 0;
for (i = 0; i < nr_heads; i++)
@@ -1023,6 +1029,7 @@ static int push_refs_with_push(struct transport *transport,
if (atomic) {
reject_atomic_push(remote_refs, mirror);
string_list_clear(&cas_options, 0);
+ strbuf_release(&buf);
return 0;
} else
continue;
diff --git a/transport.c b/transport.c
index 3c4714581f..47fda6a773 100644
--- a/transport.c
+++ b/transport.c
@@ -334,6 +334,9 @@ static struct ref *handshake(struct transport *transport, int for_push,
data->version = discover_version(&reader);
switch (data->version) {
case protocol_v2:
+ if ((!transport->server_options || !transport->server_options->nr) &&
+ transport->remote->server_options.nr)
+ transport->server_options = &transport->remote->server_options;
if (server_feature_v2("session-id", &server_sid))
trace2_data_string("transfer", NULL, "server-sid", server_sid);
if (must_list_refs)
@@ -414,7 +417,7 @@ static int fetch_refs_via_pack(struct transport *transport,
struct git_transport_data *data = transport->data;
struct ref *refs = NULL;
struct fetch_pack_args args;
- struct ref *refs_tmp = NULL;
+ struct ref *refs_tmp = NULL, **to_fetch_dup = NULL;
memset(&args, 0, sizeof(args));
args.uploadpack = data->options.uploadpack;
@@ -477,6 +480,14 @@ static int fetch_refs_via_pack(struct transport *transport,
goto cleanup;
}
+ /*
+ * Create a shallow copy of `sought` so that we can free all of its entries.
+ * This is because `fetch_pack()` will modify the array to evict some
+ * entries, but won't free those.
+ */
+ DUP_ARRAY(to_fetch_dup, to_fetch, nr_heads);
+ to_fetch = to_fetch_dup;
+
refs = fetch_pack(&args, data->fd,
refs_tmp ? refs_tmp : transport->remote_refs,
to_fetch, nr_heads, &data->shallow,
@@ -500,6 +511,7 @@ cleanup:
ret = -1;
data->conn = NULL;
+ free(to_fetch_dup);
free_refs(refs_tmp);
free_refs(refs);
list_objects_filter_release(&args.filter_options);
@@ -1099,6 +1111,18 @@ int is_transport_allowed(const char *type, int from_user)
BUG("invalid protocol_allow_config type");
}
+int parse_transport_option(const char *var, const char *value,
+ struct string_list *transport_options)
+{
+ if (!value)
+ return config_error_nonbool(var);
+ if (!*value)
+ string_list_clear(transport_options, 0);
+ else
+ string_list_append(transport_options, value);
+ return 0;
+}
+
void transport_check_allowed(const char *type)
{
if (!is_transport_allowed(type, -1))
diff --git a/transport.h b/transport.h
index 6393cd9823..44100fa9b7 100644
--- a/transport.h
+++ b/transport.h
@@ -342,4 +342,8 @@ void transport_print_push_status(const char *dest, struct ref *refs,
/* common method used by transport-helper.c and send-pack.c */
void reject_atomic_push(struct ref *refs, int mirror_mode);
+/* common method to parse push-option or server-option from config */
+int parse_transport_option(const char *var, const char *value,
+ struct string_list *transport_options);
+
#endif
diff --git a/unpack-trees.c b/unpack-trees.c
index 9a55cb6204..e10a9d1209 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -808,6 +808,8 @@ static int traverse_by_cache_tree(int pos, int nr_entries, int nr_names,
if (!o->merge)
BUG("We need cache-tree to do this optimization");
+ if (nr_entries + pos > o->src_index->cache_nr)
+ return error(_("corrupted cache-tree has entries not present in index"));
/*
* Do what unpack_callback() and unpack_single_entry() normally
@@ -2070,9 +2072,13 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
if (o->dst_index) {
move_index_extensions(&o->internal.result, o->src_index);
if (!ret) {
- if (git_env_bool("GIT_TEST_CHECK_CACHE_TREE", 0))
- cache_tree_verify(the_repository,
- &o->internal.result);
+ if (git_env_bool("GIT_TEST_CHECK_CACHE_TREE", 0) &&
+ cache_tree_verify(the_repository,
+ &o->internal.result) < 0) {
+ ret = -1;
+ goto done;
+ }
+
if (!o->skip_cache_tree_update &&
!cache_tree_fully_valid(o->internal.result.cache_tree))
cache_tree_update(&o->internal.result,
diff --git a/utf8.h b/utf8.h
index 35df76086a..cf8ecb0f21 100644
--- a/utf8.h
+++ b/utf8.h
@@ -33,8 +33,9 @@ char *reencode_string_len(const char *in, size_t insz,
const char *in_encoding,
size_t *outsz);
#else
-static inline char *reencode_string_len(const char *a, size_t b,
- const char *c, const char *d, size_t *e)
+static inline char *reencode_string_len(const char *a UNUSED, size_t b UNUSED,
+ const char *c UNUSED,
+ const char *d UNUSED, size_t *e)
{ if (e) *e = 0; return NULL; }
#endif
diff --git a/worktree.c b/worktree.c
index 0f032ccedf..77ff484d3e 100644
--- a/worktree.c
+++ b/worktree.c
@@ -110,6 +110,12 @@ struct worktree *get_linked_worktree(const char *id,
strbuf_rtrim(&worktree_path);
strbuf_strip_suffix(&worktree_path, "/.git");
+ if (!is_absolute_path(worktree_path.buf)) {
+ strbuf_strip_suffix(&path, "gitdir");
+ strbuf_addbuf(&path, &worktree_path);
+ strbuf_realpath_forgiving(&worktree_path, path.buf, 0);
+ }
+
CALLOC_ARRAY(worktree, 1);
worktree->repo = the_repository;
worktree->path = strbuf_detach(&worktree_path, NULL);
@@ -373,18 +379,29 @@ done:
void update_worktree_location(struct worktree *wt, const char *path_)
{
struct strbuf path = STRBUF_INIT;
+ struct strbuf repo = STRBUF_INIT;
+ struct strbuf file = STRBUF_INIT;
+ struct strbuf tmp = STRBUF_INIT;
if (is_main_worktree(wt))
BUG("can't relocate main worktree");
+ strbuf_realpath(&repo, git_common_path("worktrees/%s", wt->id), 1);
strbuf_realpath(&path, path_, 1);
if (fspathcmp(wt->path, path.buf)) {
- write_file(git_common_path("worktrees/%s/gitdir", wt->id),
- "%s/.git", path.buf);
+ strbuf_addf(&file, "%s/gitdir", repo.buf);
+ write_file(file.buf, "%s/.git", relative_path(path.buf, repo.buf, &tmp));
+ strbuf_reset(&file);
+ strbuf_addf(&file, "%s/.git", path.buf);
+ write_file(file.buf, "gitdir: %s", relative_path(repo.buf, path.buf, &tmp));
+
free(wt->path);
wt->path = strbuf_detach(&path, NULL);
}
strbuf_release(&path);
+ strbuf_release(&repo);
+ strbuf_release(&file);
+ strbuf_release(&tmp);
}
int is_worktree_being_rebased(const struct worktree *wt,
@@ -564,38 +581,52 @@ static void repair_gitfile(struct worktree *wt,
{
struct strbuf dotgit = STRBUF_INIT;
struct strbuf repo = STRBUF_INIT;
- char *backlink;
+ struct strbuf backlink = STRBUF_INIT;
+ struct strbuf tmp = STRBUF_INIT;
+ char *dotgit_contents = NULL;
const char *repair = NULL;
int err;
/* missing worktree can't be repaired */
if (!file_exists(wt->path))
- return;
+ goto done;
if (!is_directory(wt->path)) {
fn(1, wt->path, _("not a directory"), cb_data);
- return;
+ goto done;
}
strbuf_realpath(&repo, git_common_path("worktrees/%s", wt->id), 1);
strbuf_addf(&dotgit, "%s/.git", wt->path);
- backlink = xstrdup_or_null(read_gitfile_gently(dotgit.buf, &err));
+ dotgit_contents = xstrdup_or_null(read_gitfile_gently(dotgit.buf, &err));
+
+ if (dotgit_contents) {
+ if (is_absolute_path(dotgit_contents)) {
+ strbuf_addstr(&backlink, dotgit_contents);
+ } else {
+ strbuf_addf(&backlink, "%s/%s", wt->path, dotgit_contents);
+ strbuf_realpath_forgiving(&backlink, backlink.buf, 0);
+ }
+ }
if (err == READ_GITFILE_ERR_NOT_A_FILE)
fn(1, wt->path, _(".git is not a file"), cb_data);
else if (err)
repair = _(".git file broken");
- else if (fspathcmp(backlink, repo.buf))
+ else if (fspathcmp(backlink.buf, repo.buf))
repair = _(".git file incorrect");
if (repair) {
fn(0, wt->path, repair, cb_data);
- write_file(dotgit.buf, "gitdir: %s", repo.buf);
+ write_file(dotgit.buf, "gitdir: %s", relative_path(repo.buf, wt->path, &tmp));
}
- free(backlink);
+done:
+ free(dotgit_contents);
strbuf_release(&repo);
strbuf_release(&dotgit);
+ strbuf_release(&backlink);
+ strbuf_release(&tmp);
}
static void repair_noop(int iserr UNUSED,
@@ -618,6 +649,59 @@ void repair_worktrees(worktree_repair_fn fn, void *cb_data)
free_worktrees(worktrees);
}
+void repair_worktree_after_gitdir_move(struct worktree *wt, const char *old_path)
+{
+ struct strbuf path = STRBUF_INIT;
+ struct strbuf repo = STRBUF_INIT;
+ struct strbuf gitdir = STRBUF_INIT;
+ struct strbuf dotgit = STRBUF_INIT;
+ struct strbuf olddotgit = STRBUF_INIT;
+ struct strbuf tmp = STRBUF_INIT;
+
+ if (is_main_worktree(wt))
+ goto done;
+
+ strbuf_realpath(&repo, git_common_path("worktrees/%s", wt->id), 1);
+ strbuf_addf(&gitdir, "%s/gitdir", repo.buf);
+
+ if (strbuf_read_file(&olddotgit, gitdir.buf, 0) < 0)
+ goto done;
+
+ strbuf_rtrim(&olddotgit);
+ if (is_absolute_path(olddotgit.buf)) {
+ strbuf_addbuf(&dotgit, &olddotgit);
+ } else {
+ strbuf_addf(&dotgit, "%s/worktrees/%s/%s", old_path, wt->id, olddotgit.buf);
+ strbuf_realpath_forgiving(&dotgit, dotgit.buf, 0);
+ }
+
+ if (!file_exists(dotgit.buf))
+ goto done;
+
+ strbuf_addbuf(&path, &dotgit);
+ strbuf_strip_suffix(&path, "/.git");
+
+ write_file(dotgit.buf, "gitdir: %s", relative_path(repo.buf, path.buf, &tmp));
+ write_file(gitdir.buf, "%s", relative_path(dotgit.buf, repo.buf, &tmp));
+done:
+ strbuf_release(&path);
+ strbuf_release(&repo);
+ strbuf_release(&gitdir);
+ strbuf_release(&dotgit);
+ strbuf_release(&olddotgit);
+ strbuf_release(&tmp);
+}
+
+void repair_worktrees_after_gitdir_move(const char *old_path)
+{
+ struct worktree **worktrees = get_worktrees_internal(1);
+ struct worktree **wt = worktrees + 1; /* +1 skips main worktree */
+
+ for (; *wt; wt++)
+ repair_worktree_after_gitdir_move(*wt, old_path);
+ free_worktrees(worktrees);
+}
+
static int is_main_worktree_path(const char *path)
{
struct strbuf target = STRBUF_INIT;
@@ -642,10 +726,9 @@ static int is_main_worktree_path(const char *path)
* be able to infer the gitdir by manually reading /path/to/worktree/.git,
* extracting the <id>, and checking if <repo>/worktrees/<id> exists.
*/
-static char *infer_backlink(const char *gitfile)
+static int infer_backlink(const char *gitfile, struct strbuf *inferred)
{
struct strbuf actual = STRBUF_INIT;
- struct strbuf inferred = STRBUF_INIT;
const char *id;
if (strbuf_read_file(&actual, gitfile, 0) < 0)
@@ -658,17 +741,18 @@ static char *infer_backlink(const char *gitfile)
id++; /* advance past '/' to point at <id> */
if (!*id)
goto error;
- strbuf_git_common_path(&inferred, the_repository, "worktrees/%s", id);
- if (!is_directory(inferred.buf))
+ strbuf_reset(inferred);
+ strbuf_git_common_path(inferred, the_repository, "worktrees/%s", id);
+ if (!is_directory(inferred->buf))
goto error;
strbuf_release(&actual);
- return strbuf_detach(&inferred, NULL);
+ return 1;
error:
strbuf_release(&actual);
- strbuf_release(&inferred);
- return NULL;
+ strbuf_reset(inferred); /* clear invalid path */
+ return 0;
}
/*
@@ -680,9 +764,13 @@ void repair_worktree_at_path(const char *path,
{
struct strbuf dotgit = STRBUF_INIT;
struct strbuf realdotgit = STRBUF_INIT;
+ struct strbuf backlink = STRBUF_INIT;
+ struct strbuf inferred_backlink = STRBUF_INIT;
struct strbuf gitdir = STRBUF_INIT;
struct strbuf olddotgit = STRBUF_INIT;
- char *backlink = NULL;
+ struct strbuf realolddotgit = STRBUF_INIT;
+ struct strbuf tmp = STRBUF_INIT;
+ char *dotgit_contents = NULL;
const char *repair = NULL;
int err;
@@ -698,107 +786,178 @@ void repair_worktree_at_path(const char *path,
goto done;
}
- backlink = xstrdup_or_null(read_gitfile_gently(realdotgit.buf, &err));
- if (err == READ_GITFILE_ERR_NOT_A_FILE) {
+ infer_backlink(realdotgit.buf, &inferred_backlink);
+ strbuf_realpath_forgiving(&inferred_backlink, inferred_backlink.buf, 0);
+ dotgit_contents = xstrdup_or_null(read_gitfile_gently(realdotgit.buf, &err));
+ if (dotgit_contents) {
+ if (is_absolute_path(dotgit_contents)) {
+ strbuf_addstr(&backlink, dotgit_contents);
+ } else {
+ strbuf_addbuf(&backlink, &realdotgit);
+ strbuf_strip_suffix(&backlink, ".git");
+ strbuf_addstr(&backlink, dotgit_contents);
+ strbuf_realpath_forgiving(&backlink, backlink.buf, 0);
+ }
+ } else if (err == READ_GITFILE_ERR_NOT_A_FILE) {
fn(1, realdotgit.buf, _("unable to locate repository; .git is not a file"), cb_data);
goto done;
} else if (err == READ_GITFILE_ERR_NOT_A_REPO) {
- if (!(backlink = infer_backlink(realdotgit.buf))) {
+ if (inferred_backlink.len) {
+ /*
+ * Worktree's .git file does not point at a repository
+ * but we found a .git/worktrees/<id> in this
+ * repository with the same <id> as recorded in the
+ * worktree's .git file so make the worktree point at
+ * the discovered .git/worktrees/<id>.
+ */
+ strbuf_swap(&backlink, &inferred_backlink);
+ } else {
fn(1, realdotgit.buf, _("unable to locate repository; .git file does not reference a repository"), cb_data);
goto done;
}
- } else if (err) {
+ } else {
fn(1, realdotgit.buf, _("unable to locate repository; .git file broken"), cb_data);
goto done;
}
- strbuf_addf(&gitdir, "%s/gitdir", backlink);
+ /*
+ * If we got this far, either the worktree's .git file pointed at a
+ * valid repository (i.e. read_gitfile_gently() returned success) or
+ * the .git file did not point at a repository but we were able to
+ * infer a suitable new value for the .git file by locating a
+ * .git/worktrees/<id> in *this* repository corresponding to the <id>
+ * recorded in the worktree's .git file.
+ *
+ * However, if, at this point, inferred_backlink is non-NULL (i.e. we
+ * found a suitable .git/worktrees/<id> in *this* repository) *and* the
+ * worktree's .git file points at a valid repository *and* those two
+ * paths differ, then that indicates that the user probably *copied*
+ * the main and linked worktrees to a new location as a unit rather
+ * than *moving* them. Thus, the copied worktree's .git file actually
+ * points at the .git/worktrees/<id> in the *original* repository, not
+ * in the "copy" repository. In this case, point the "copy" worktree's
+ * .git file at the "copy" repository.
+ */
+ if (inferred_backlink.len && fspathcmp(backlink.buf, inferred_backlink.buf)) {
+ strbuf_swap(&backlink, &inferred_backlink);
+ }
+
+ strbuf_addf(&gitdir, "%s/gitdir", backlink.buf);
if (strbuf_read_file(&olddotgit, gitdir.buf, 0) < 0)
repair = _("gitdir unreadable");
else {
strbuf_rtrim(&olddotgit);
- if (fspathcmp(olddotgit.buf, realdotgit.buf))
+ if (is_absolute_path(olddotgit.buf)) {
+ strbuf_addbuf(&realolddotgit, &olddotgit);
+ } else {
+ strbuf_addf(&realolddotgit, "%s/%s", backlink.buf, olddotgit.buf);
+ strbuf_realpath_forgiving(&realolddotgit, realolddotgit.buf, 0);
+ }
+ if (fspathcmp(realolddotgit.buf, realdotgit.buf))
repair = _("gitdir incorrect");
}
if (repair) {
fn(0, gitdir.buf, repair, cb_data);
- write_file(gitdir.buf, "%s", realdotgit.buf);
+ write_file(gitdir.buf, "%s", relative_path(realdotgit.buf, backlink.buf, &tmp));
}
done:
- free(backlink);
+ free(dotgit_contents);
strbuf_release(&olddotgit);
+ strbuf_release(&realolddotgit);
+ strbuf_release(&backlink);
+ strbuf_release(&inferred_backlink);
strbuf_release(&gitdir);
strbuf_release(&realdotgit);
strbuf_release(&dotgit);
+ strbuf_release(&tmp);
}
int should_prune_worktree(const char *id, struct strbuf *reason, char **wtpath, timestamp_t expire)
{
struct stat st;
- char *path;
+ struct strbuf dotgit = STRBUF_INIT;
+ struct strbuf gitdir = STRBUF_INIT;
+ struct strbuf repo = STRBUF_INIT;
+ struct strbuf file = STRBUF_INIT;
+ char *path = NULL;
+ int rc = 0;
int fd;
size_t len;
ssize_t read_result;
*wtpath = NULL;
- if (!is_directory(git_path("worktrees/%s", id))) {
+ strbuf_realpath(&repo, git_common_path("worktrees/%s", id), 1);
+ strbuf_addf(&gitdir, "%s/gitdir", repo.buf);
+ if (!is_directory(repo.buf)) {
strbuf_addstr(reason, _("not a valid directory"));
- return 1;
+ rc = 1;
+ goto done;
}
- if (file_exists(git_path("worktrees/%s/locked", id)))
- return 0;
- if (stat(git_path("worktrees/%s/gitdir", id), &st)) {
+ strbuf_addf(&file, "%s/locked", repo.buf);
+ if (file_exists(file.buf)) {
+ goto done;
+ }
+ if (stat(gitdir.buf, &st)) {
strbuf_addstr(reason, _("gitdir file does not exist"));
- return 1;
+ rc = 1;
+ goto done;
}
- fd = open(git_path("worktrees/%s/gitdir", id), O_RDONLY);
+ fd = open(gitdir.buf, O_RDONLY);
if (fd < 0) {
strbuf_addf(reason, _("unable to read gitdir file (%s)"),
strerror(errno));
- return 1;
+ rc = 1;
+ goto done;
}
len = xsize_t(st.st_size);
path = xmallocz(len);
read_result = read_in_full(fd, path, len);
+ close(fd);
if (read_result < 0) {
strbuf_addf(reason, _("unable to read gitdir file (%s)"),
strerror(errno));
- close(fd);
- free(path);
- return 1;
- }
- close(fd);
-
- if (read_result != len) {
+ rc = 1;
+ goto done;
+ } else if (read_result != len) {
strbuf_addf(reason,
_("short read (expected %"PRIuMAX" bytes, read %"PRIuMAX")"),
(uintmax_t)len, (uintmax_t)read_result);
- free(path);
- return 1;
+ rc = 1;
+ goto done;
}
while (len && (path[len - 1] == '\n' || path[len - 1] == '\r'))
len--;
if (!len) {
strbuf_addstr(reason, _("invalid gitdir file"));
- free(path);
- return 1;
+ rc = 1;
+ goto done;
}
path[len] = '\0';
- if (!file_exists(path)) {
- if (stat(git_path("worktrees/%s/index", id), &st) ||
- st.st_mtime <= expire) {
+ if (is_absolute_path(path)) {
+ strbuf_addstr(&dotgit, path);
+ } else {
+ strbuf_addf(&dotgit, "%s/%s", repo.buf, path);
+ strbuf_realpath_forgiving(&dotgit, dotgit.buf, 0);
+ }
+ if (!file_exists(dotgit.buf)) {
+ strbuf_reset(&file);
+ strbuf_addf(&file, "%s/index", repo.buf);
+ if (stat(file.buf, &st) || st.st_mtime <= expire) {
strbuf_addstr(reason, _("gitdir file points to non-existent location"));
- free(path);
- return 1;
- } else {
- *wtpath = path;
- return 0;
+ rc = 1;
+ goto done;
}
}
- *wtpath = path;
- return 0;
+ *wtpath = strbuf_detach(&dotgit, NULL);
+done:
+ free(path);
+ strbuf_release(&dotgit);
+ strbuf_release(&gitdir);
+ strbuf_release(&repo);
+ strbuf_release(&file);
+ return rc;
}
static int move_config_setting(const char *key, const char *value,
diff --git a/worktree.h b/worktree.h
index 11279d0c8f..e961186216 100644
--- a/worktree.h
+++ b/worktree.h
@@ -132,6 +132,16 @@ typedef void (* worktree_repair_fn)(int iserr, const char *path,
void repair_worktrees(worktree_repair_fn, void *cb_data);
/*
+ * Repair the linked worktrees after the gitdir has been moved.
+ */
+void repair_worktrees_after_gitdir_move(const char *old_path);
+
+/*
+ * Repair the linked worktree after the gitdir has been moved.
+ */
+void repair_worktree_after_gitdir_move(struct worktree *wt, const char *old_path);
+
+/*
* Repair administrative files corresponding to the worktree at the given path.
* The worktree's .git file pointing at the repository must be intact for the
* repair to succeed. Useful for re-associating an orphaned worktree with the
diff --git a/wt-status.c b/wt-status.c
index 6a6397ca8f..6a8c05d1cf 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -717,6 +717,7 @@ static int add_file_to_list(const struct object_id *oid,
static void wt_status_collect_changes_initial(struct wt_status *s)
{
struct index_state *istate = s->repo->index;
+ struct strbuf base = STRBUF_INIT;
int i;
for (i = 0; i < istate->cache_nr; i++) {
@@ -735,7 +736,6 @@ static void wt_status_collect_changes_initial(struct wt_status *s)
* expanding the trees to find the elements that are new in this
* tree and marking them with DIFF_STATUS_ADDED.
*/
- struct strbuf base = STRBUF_INIT;
struct pathspec ps = { 0 };
struct tree *tree = lookup_tree(istate->repo, &ce->oid);
@@ -743,9 +743,11 @@ static void wt_status_collect_changes_initial(struct wt_status *s)
ps.has_wildcard = 1;
ps.max_depth = -1;
+ strbuf_reset(&base);
strbuf_add(&base, ce->name, ce->ce_namelen);
read_tree_at(istate->repo, tree, &base, 0, &ps,
add_file_to_list, s);
+
continue;
}
@@ -772,6 +774,8 @@ static void wt_status_collect_changes_initial(struct wt_status *s)
s->committable = 1;
}
}
+
+ strbuf_release(&base);
}
static void wt_status_collect_untracked(struct wt_status *s)