/test-match-trees
/test-parse-options
/test-path-utils
+/test-run-command
/test-sha1
/test-sigchain
/common-cmds.h
--- /dev/null
+Git v1.6.6.2 Release Notes
+==========================
+
+Fixes since v1.6.6.1
+--------------------
+
+ * recursive merge didn't correctly diagnose its own programming errors,
+ and instead caused the caller to segfault.
+
+ * The new "smart http" aware clients probed the web servers to see if
+ they support smart http, but did not fall back to dumb http transport
+ correctly with some servers.
+
+ * Time based reflog syntax e.g. "@{yesterday}" didn't diagnose a misspelled
+ time specification and instead assumed "@{now}".
+
+ * "git archive HEAD -- no-such-directory" produced an empty archive
+ without complaining.
+
+ * "git blame -L start,end -- file" misbehaved when given a start that is
+ larger than the number of lines in the file.
+
+ * "git checkout -m" didn't correctly call custom merge backend supplied
+ by the end user.
+
+ * "git config -f <file>" misbehaved when run from a subdirectory.
+
+ * "git cvsserver" didn't like having regex metacharacters (e.g. '+') in
+ CVSROOT environment.
+
+ * "git fast-import" did not correctly handle large blobs that may
+ bust the pack size limit.
+
+ * "git gui" is supposed to work even when launched from inside a .git
+ directory.
+
+ * "git gui" misbehaved when applying a hunk that ends with deletion.
+
+ * "git imap-send" did not honor imap.preformattedHTML as documented.
+
+ * "git log" family incorrectly showed the commit notes unconditionally by
+ mistake, which was especially irritating when running "git log --oneline".
+
+ * "git status" shouldn't require an write access to the repository.
+
+Other minor documentation updates are included.
--- /dev/null
+Git v1.7.0.1 Release Notes
+==========================
+
+Fixes since v1.7.0
+------------------
+
+ * In a freshly created repository "rev-parse HEAD^0" complained that
+ it is dangling symref, even though "rev-parse HEAD" didn't.
+
+ * Message from "git cherry-pick" was harder to read and use than necessary
+ when it stopped due to conflicting changes.
+
+ * "git diff --output=/path/that/cannot/be/written" did not correctly
+ error out.
+
+ * "git grep -e -pattern-that-begin-with-dash paths..." could not be
+ spelled as "git grep -- -pattern-that-begin-with-dash paths..." which
+ would be a GNU way to use "--" as "end of options".
+
+ * "git grep" compiled with threading support tried to access an
+ uninitialized mutex on boxes with a single CPU.
+
+ * "git stash pop -q --index" failed because the unnecessary --index
+ option was propagated to "git stash drop" that is internally run at the
+ end.
+
+--
+exec >/var/tmp/1
+echo O=$(git describe)
+O=v1.7.0-22-gc69f921
+git shortlog $O..
Notes on behaviour change
-------------------------
- * "git push" into a branch that is currently checked out (i.e. pointed by
+ * "git push" into a branch that is currently checked out (i.e. pointed at by
HEAD in a repository that is not bare) is refused by default.
Similarly, "git push $there :$killed" to delete the branch $killed
patch series with more than two messages. All messages will be sent
as a reply to the first message, i.e. cover letter.
- It has been possible to configure send-email to send "shallow thread"
+ It has been possible already to configure send-email to send "shallow thread"
by setting sendemail.chainreplyto configuration variable to false. The
only thing this release does is to change the default when you haven't
configured that variable.
* "git status" is not "git commit --dry-run" anymore. This change does
- not affect you if you run the command without pathspec.
+ not affect you if you run the command without argument.
* "git diff" traditionally treated various "ignore whitespace" options
only as a way to filter the patch output. "git diff --exit-code -b"
exited with non-zero status even if all changes were about changing the
- ammount of whitespace and nothing else. and "git diff -b" showed the
+ amount of whitespace and nothing else; and "git diff -b" showed the
"diff --git" header line for such a change without patch text.
In this release, the "ignore whitespaces" options affect the semantics
whitespaces is reported with zero exit status when run with
--exit-code, and there is no "diff --git" header for such a change.
+ * External diff and textconv helpers are now executed using the shell.
+ This makes them consistent with other programs executed by git, and
+ allows you to pass command-line parameters to the helpers. Any helper
+ paths containing spaces or other metacharacters now need to be
+ shell-quoted. The affected helpers are GIT_EXTERNAL_DIFF in the
+ environment, and diff.*.command and diff.*.textconv in the config
+ file.
+
+ * The --max-pack-size argument to 'git repack', 'git pack-objects', and
+ 'git fast-import' was assuming the provided size to be expressed in MiB,
+ unlike the corresponding config variable and other similar options accepting
+ a size value. It is now expecting a size expressed in bytes, with a possible
+ unit suffix of 'k', 'm', or 'g'.
Updates since v1.6.6
--------------------
mismatch between fast-import and the frontends that produce the input
stream.
+ * "git svn" support of subversion "merge tickets" and miscellaneous fixes.
+
+ * "gitk" and "git gui" translation updates.
+
+ * "gitweb" updates (code clean-up, load checking etc.)
+
(portability)
* Some more MSVC portability patches for msysgit port.
defaults to the current branch, so "git fetch && git merge @{upstream}"
will be equivalent to "git pull".
- * "git branch --set-upstream" can be used to update the (surprise!) upstream
+ * "git am --resolved" has a synonym "git am --continue".
+
+ * "git branch --set-upstream" can be used to update the (surprise!) upstream,
i.e. where the branch is supposed to pull and merge from (or rebase onto).
* "git checkout A...B" is a way to detach HEAD at the merge base between
* "git fetch --all" can now be used in place of "git remote update".
- * "git grep" does not rely on external grep anymore.
+ * "git grep" does not rely on external grep anymore. It can use more than
+ one thread to accelerate the operation.
- * "git grep" learned "--no-index" option, to search inside contents that
- are not managed by git.
+ * "git grep" learned "--quiet" option.
* "git log" and friends learned "--glob=heads/*" syntax that is a more
flexible way to complement "--branches/--tags/--remotes".
* "git rebase --onto A...B" means the history is replayed on top of the
merge base between A and B.
- * "git rebase -i" learned new action "fixup", that squashes the change
+ * "git rebase -i" learned new action "fixup" that squashes the change
but does not affect existing log message.
- * "git rebase -i" also learned --autosquash option, that is useful
+ * "git rebase -i" also learned --autosquash option that is useful
together with the new "fixup" action.
- * "git remote" learned set-url subcommand, to update (surprise!) url
+ * "git remote" learned set-url subcommand that updates (surprise!) url
for an existing remote nickname.
* "git rerere" learned "forget path" subcommand. Together with "git
* Many more commands are now built-in.
+ * THREADED_DELTA_SEARCH is no more. If you build with threads, delta
+ compression will always take advantage of it.
+
Fixes since v1.6.6
------------------
the branch is fully merged to its upstream branch if it is not merged
to the current branch. It now deletes it in such a case.
- * When "git diff" is asked to compare the work tree with something,
- it used to consider that a checked-out submodule with uncommitted
- changes is not modified; this could cause people to forget committing
- these changes in the submodule before committing in the superproject.
- It now considers such a change as a modification.
-
---
-exec >/var/tmp/1
-O=v1.6.6.1-434-g3521c1b
-echo O=$(git describe master)
-git shortlog --no-merges $O..master ^maint
+ * "fiter-branch" command incorrectly said --prune-empty and --filter-commit
+ were incompatible; the latter should be read as --commit-filter.
+
+ * When using "git status" or asking "git diff" to compare the work tree
+ with something, they used to consider that a checked-out submodule with
+ uncommitted changes is not modified; this could cause people to forget
+ committing these changes in the submodule before committing in the
+ superproject. They now consider such a change as a modification and
+ "git diff" will append a "-dirty" to the work tree side when generating
+ patch output or when used with the --submodule option.
--- /dev/null
+Git v1.7.1 Release Notes
+========================
+
+Updates since v1.7.0
+--------------------
+
+ * "git grep" learned "--no-index" option, to search inside contents that
+ are not managed by git.
+
+Fixes since v1.7.0
+------------------
+
+All of the fixes in v1.7.0.X maintenance series are included in this
+release, unless otherwise noted.
+
+---
+exec >/var/tmp/1
+echo O=$(git describe)
+O=v1.7.0-36-gfaa3b47
+git shortlog --no-merges ^maint $O..
+
Common unit suffixes of 'k', 'm', or 'g' are supported.
+core.bigFileThreshold::
+ Files larger than this size are stored deflated, without
+ attempting delta compression. Storing large files without
+ delta compression avoids excessive memory usage, at the
+ slight expense of increased disk usage.
++
+Default is 512 MiB on all platforms. This should be reasonable
+for most projects as source code and other text files can still
+be delta compressed, but larger binary media files won't be.
++
+Common unit suffixes of 'k', 'm', or 'g' are supported.
++
+Currently only linkgit:git-fast-import[1] honors this setting.
+
core.excludesfile::
In addition to '.gitignore' (per-directory) and
'.git/info/exclude', git looks into this file for patterns
the `{asterisk}.idx` file.
pack.packSizeLimit::
- The default maximum size of a pack. This setting only affects
- packing to a file, i.e. the git:// protocol is unaffected. It
- can be overridden by the `\--max-pack-size` option of
- linkgit:git-repack[1].
+ The maximum size of a pack. This setting only affects
+ packing to a file when repacking, i.e. the git:// protocol
+ is unaffected. It can be overridden by the `\--max-pack-size`
+ option of linkgit:git-repack[1]. The minimum size allowed is
+ limited to 1 MiB. The default is unlimited.
+ Common unit suffixes of 'k', 'm', or 'g' are
+ supported.
pager.<cmd>::
Allows turning on or off pagination of the output of a
git-diff-files [<pattern>...]::
compares the index and the files on the filesystem.
-The "git-diff-tree" command begins its ouput by printing the hash of
+The "git-diff-tree" command begins its output by printing the hash of
what is being compared. After that, all the commands print one output
line per changed file.
and its subdirectories:
+
------------
-$ git add Documentation/\\*.txt
+$ git add Documentation/\*.txt
------------
+
Note that the asterisk `\*` is quoted from the shell in this
[--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>]
[--reject] [-q | --quiet] [--scissors | --no-scissors]
[<mbox> | <Maildir>...]
-'git am' (--skip | --resolved | --abort)
+'git am' (--continue | --skip | --abort)
DESCRIPTION
-----------
Skip the current patch. This is only meaningful when
restarting an aborted patch.
+--continue::
-r::
--resolved::
After a patch failure (e.g. attempting to apply
expand several placeholders when adding this file to an archive.
See linkgit:gitattributes[5] for details.
+Note that attributes are by default taken from the `.gitattributes` files
+in the tree that is being archived. If you want to tweak the way the
+output is generated after the fact (e.g. you committed without adding an
+appropriate export-ignore in its `.gitattributes`), adjust the checked out
+`.gitattributes` file as necessary and use `--work-tree-attributes`
+option. Alternatively you can keep necessary attributes that should apply
+while archiving any tree in your `$GIT_DIR/info/attributes` file.
+
EXAMPLES
--------
git archive --format=tar --prefix=junk/ HEAD | (cd /var/tmp/ && tar xf -)::
The result of such a bisection would be that we would find that H is
the first bad commit, when in fact it's B. So that would be wrong!
-And yes it's can happen in practice that people working on one branch
+And yes it can happen in practice that people working on one branch
are not aware that people working on another branch fixed a bug! It
could also happen that F fixed more than one bug or that it is a
revert of some big development effort that was not ready to be
A reference is used in git to specify branches and tags. A
branch head is stored under the `$GIT_DIR/refs/heads` directory, and
-a tag is stored under the `$GIT_DIR/refs/tags` directory. git
-imposes the following rules on how references are named:
+a tag is stored under the `$GIT_DIR/refs/tags` directory (or, if refs
+are packed by `git gc`, as entries in the `$GIT_DIR/packed-refs` file).
+git imposes the following rules on how references are named:
. They can include slash `/` for hierarchical (directory)
grouping, but no slash-separated component can begin with a
. They cannot contain a sequence `@{`.
-- They cannot contain a `\\`.
+. They cannot contain a `\`.
These rules make it easy for shell script based tools to parse
reference names, pathname expansion by the shell when a reference name is used
-f::
--force::
- If the git configuration specifies clean.requireForce as true,
- 'git clean' will refuse to run unless given -f or -n.
+ If the git configuration variable clean.requireForce is not set
+ to false, 'git clean' will refuse to run unless given -f or -n.
-n::
--dry-run::
current master branch, if any.
This default configuration is achieved by creating references to
-the remote branch heads under `$GIT_DIR/refs/remotes/origin` and
+the remote branch heads under `refs/remotes/origin` and
by initializing `remote.origin.url` and `remote.origin.fetch`
configuration variables.
Show untracked files (Default: 'all').
+
The mode parameter is optional, and is used to specify
-the handling of untracked files. The possible options are:
+the handling of untracked files.
++
+The possible options are:
+
---
- 'no' - Show no untracked files
- 'normal' - Shows untracked files and directories
- 'all' - Also shows individual files in untracked directories.
---
+
See linkgit:git-config[1] for configuration variable
used to change the default for when the option is not
and with 'warn', they will be exported, but you will see a warning.
--tag-of-filtered-object=(abort|drop|rewrite)::
- Specify how to handle tags whose tagged objectis filtered out.
+ Specify how to handle tags whose tagged object is filtered out.
Since revisions and files to export can be limited by path,
tagged objects may be filtered completely.
+
not contain the old commit).
--max-pack-size=<n>::
- Maximum size of each output packfile, expressed in MiB.
- The default is 4096 (4 GiB) as that is the maximum allowed
- packfile size (due to file format limitations). Some
- importers may wish to lower this, such as to ensure the
- resulting packfiles fit on CDs.
+ Maximum size of each output packfile.
+ The default is unlimited.
+
+--big-file-threshold=<n>::
+ Maximum size of a blob that fast-import will attempt to
+ create a delta for, expressed in bytes. The default is 512m
+ (512 MiB). Some importers may wish to lower this on systems
+ with constrained memory.
--depth=<n>::
Maximum delta depth, for blob and tree deltification.
prints a warning message. fast-import will always attempt to update all
branch refs, and does not stop on the first failure.
-Branch updates can be forced with \--force, but its recommended that
+Branch updates can be forced with \--force, but it's recommended that
this only be used on an otherwise quiet repository. Using \--force
is not necessary for an initial import into an empty repository.
created by fast-import. There is no way to specify a different time or
timezone.
+
-This particular format is supplied as its short to implement and
+This particular format is supplied as it's short to implement and
may be useful to a process that wants to create a new commit
right now, without needing to use a working directory or
'git update-index'.
Here `<committish>` is any of the following:
* The name of an existing branch already in fast-import's internal branch
- table. If fast-import doesn't know the name, its treated as a SHA-1
+ table. If fast-import doesn't know the name, it's treated as a SHA-1
expression.
* A mark reference, `:<idnum>`, where `<idnum>` is the mark number.
The mark command is optional here as some frontends have chosen
to generate the Git SHA-1 for the blob on their own, and feed that
-directly to `commit`. This is typically more work than its worth
+directly to `commit`. This is typically more work than it's worth
however, as marks are inexpensive to store and easy to use.
`data`
Invokes 'git-upload-pack' on a possibly remote repository
and asks it to send objects missing from this repository, to
update the named heads. The list of commits available locally
-is found out by scanning local $GIT_DIR/refs/ and sent to
+is found out by scanning the local refs/ hierarchy and sent to
'git-upload-pack' running on the other end.
This command degenerates to download everything to complete the
locked against repacking.
--thin::
- Spend extra cycles to minimize the number of objects to be sent.
- Use it on slower connection.
+ Fetch a "thin" pack, which records objects in deltified form based
+ on objects not included in the pack to reduce network traffic.
--include-tag::
If the remote side supports it, annotated tags objects will
---------------------------------------------------------------
git filter-branch --index-filter \
- 'git ls-files -s | sed "s-\t-&newsubdir/-" |
+ 'git ls-files -s | sed "s-\t\"*-&newsubdir/-" |
GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
git update-index --index-info &&
mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD
[-F | --fixed-strings] [-n]
[-l | --files-with-matches] [-L | --files-without-match]
[-z | --null]
- [-c | --count] [--all-match]
+ [-c | --count] [--all-match] [-q | --quiet]
[--max-depth <depth>]
[--color | --no-color]
[-A <post-context>] [-B <pre-context>] [-C <context>]
this flag is specified to limit the match to files that
have lines to match all of them.
+-q::
+--quiet::
+ Do not output matched lines; instead, exit with status 0 when
+ there is a match and with non-zero status when there isn't.
+
`<tree>...`::
Search blobs in the trees for specified patterns.
-----------
A simple CGI program to serve the contents of a Git repository to Git
clients accessing the repository over http:// and https:// protocols.
-The program supports clients fetching using both the smart HTTP protcol
+The program supports clients fetching using both the smart HTTP protocol
and the backwards-compatible dumb HTTP protocol, as well as clients
pushing using the smart HTTP protocol.
'git repack'.
--fix-thin::
- It is possible for 'git pack-objects' to build
- "thin" pack, which records objects in deltified form based on
- objects not included in the pack to reduce network traffic.
- Those objects are expected to be present on the receiving end
- and they must be included in the pack for that pack to be self
- contained and indexable. Without this option any attempt to
- index a thin pack will fail. This option only makes sense in
- conjunction with --stdin.
+ Fix a "thin" pack produced by `git pack-objects --thin` (see
+ linkgit:git-pack-objects[1] for details) by adding the
+ excluded objects the deltified objects are based on to the
+ pack. This option only makes sense in conjunction with --stdin.
--keep::
Before moving the index into its final destination
Reads list of objects from the standard input, and writes a packed
archive with specified base-name, or to the standard output.
-A packed archive is an efficient way to transfer set of objects
-between two repositories, and also is an archival format which
-is efficient to access. The packed archive format (.pack) is
-designed to be self contained so that it can be unpacked without
-any further information, but for fast, random access to the objects
-in the pack, a pack index file (.idx) will be generated.
-
-Placing both in the pack/ subdirectory of $GIT_OBJECT_DIRECTORY (or
+A packed archive is an efficient way to transfer a set of objects
+between two repositories as well as an access efficient archival
+format. In a packed archive, an object is either stored as a
+compressed whole or as a difference from some other object.
+The latter is often called a delta.
+
+The packed archive format (.pack) is designed to be self-contained
+so that it can be unpacked without any further information. Therefore,
+each object that a delta depends upon must be present within the pack.
+
+A pack index file (.idx) is generated for fast, random access to the
+objects in the pack. Placing both the index file (.idx) and the packed
+archive (.pack) in the pack/ subdirectory of $GIT_OBJECT_DIRECTORY (or
any of the directories on $GIT_ALTERNATE_OBJECT_DIRECTORIES)
-enables git to read from such an archive.
+enables git to read from the pack archive.
The 'git unpack-objects' command can read the packed archive and
expand the objects contained in the pack into "one-file
commands when a pack is created on-the-fly for efficient network
transport by their peers.
-In a packed archive, an object is either stored as a compressed
-whole, or as a difference from some other object. The latter is
-often called a delta.
-
OPTIONS
-------
--all::
This implies `--revs`. In addition to the list of
revision arguments read from the standard input, pretend
- as if all refs under `$GIT_DIR/refs` are specified to be
+ as if all refs under `refs/` are specified to be
included.
--include-tag::
`--window-memory=0` makes memory usage unlimited, which is the
default.
---max-pack-size=<n>::
- Maximum size of each output packfile, expressed in MiB.
+--max-pack-size=[N]::
+ Maximum size of each output pack file. The size can be suffixed with
+ "k", "m", or "g". The minimum size allowed is limited to 1 MiB.
If specified, multiple packfiles may be created.
The default is unlimited, unless the config variable
`pack.packSizeLimit` is set.
Add --no-reuse-object if you want to force a uniform compression
level on all data no matter the source.
+--thin::
+ Create a "thin" pack by omitting the common objects between a
+ sender and a receiver in order to reduce network transfer. This
+ option only makes sense in conjunction with --stdout.
++
+Note: A thin pack violates the packed archive format by omitting
+required objects and is thus unusable by git without making it
+self-contained. Use `git index-pack --fix-thin`
+(see linkgit:git-index-pack[1]) to restore the self-contained property.
+
--delta-base-offset::
A packed archive can express base object of a delta as
either 20-byte object name or as an offset in the
'git prune'. See the section "NOTES", below.
This runs 'git fsck --unreachable' using all the refs
-available in `$GIT_DIR/refs`, optionally with additional set of
+available in `refs/`, optionally with additional set of
objects specified on the command line, and prunes all unpacked
objects unreachable from any of these head objects from the object database.
In addition, it
--all::
Instead of naming each ref to push, specifies that all
- refs under `$GIT_DIR/refs/heads/` be pushed.
+ refs under `refs/heads/` be pushed.
--mirror::
Instead of naming each ref to push, specifies that all
- refs under `$GIT_DIR/refs/` (which includes but is not
+ refs under `refs/` (which includes but is not
limited to `refs/heads/`, `refs/remotes/`, and `refs/tags/`)
be mirrored to the remote repository. Newly created local
refs will be pushed to the remote end, locally updated refs
the same as prefixing all refs with a colon.
--tags::
- All refs under `$GIT_DIR/refs/tags` are pushed, in
+ All refs under `refs/tags` are pushed, in
addition to refspecs explicitly listed on the command
line.
--thin::
--no-thin::
- These options are passed to 'git send-pack'. Thin
- transfer spends extra cycles to minimize the number of
- objects to be sent and meant to be used on slower connection.
+ These options are passed to linkgit:git-send-pack[1]. A thin transfer
+ significantly reduces the amount of sent data when the sender and
+ receiver share many of the same objects in common. The default is
+ \--thin.
-v::
--verbose::
<flag> \t <from>:<to> \t <summary> (<reason>)
-------------------------------
+The status of up-to-date refs is shown only if --porcelain or --verbose
+option is used.
+
flag::
- A single character indicating the status of the ref. This is
- blank for a successfully pushed ref, `!` for a ref that was
- rejected or failed to push, and '=' for a ref that was up to
- date and did not need pushing (note that the status of up to
- date refs is shown only when `git push` is running verbosely).
+ A single character indicating the status of the ref:
+(space);; for a successfully pushed fast-forward;
+`{plus}`;; for a successful forced update;
+`-`;; for a successfully deleted ref;
+`*`;; for a successfully pushed new ref;
+`!`;; for a ref that was rejected or failed to push; and
+`=`;; for a ref that was up to date and did not need pushing.
summary::
For a successfully pushed ref, the summary shows the old and new
'capabilities'::
Lists the capabilities of the helper, one per line, ending
- with a blank line. Each capability may be preceeded with '*'.
+ with a blank line. Each capability may be preceded with '*'.
This marks them mandatory for git version using the remote
helper to understand (unknown mandatory capability is fatal
error).
`--window-memory=0` makes memory usage unlimited, which is the
default.
---max-pack-size=<n>::
- Maximum size of each output packfile, expressed in MiB.
+--max-pack-size=[N]::
+ Maximum size of each output pack file. The size can be suffixed with
+ "k", "m", or "g". The minimum size allowed is limited to 1 MiB.
If specified, multiple packfiles may be created.
- The default is unlimited.
+ The default is unlimited, unless the config variable
+ `pack.packSizeLimit` is set.
Configuration
-------------
-When configuration variable `repack.UseDeltaBaseOffset` is set
-for the repository, the command passes `--delta-base-offset`
-option to 'git pack-objects'; this typically results in slightly
-smaller packs, but the generated packs are incompatible with
-versions of git older than (and including) v1.4.3; do not set
-the variable in a repository that older version of git needs to
-be able to read (this includes repositories from which packs can
-be copied out over http or rsync, and people who obtained packs
-that way can try to use older git with it).
+By default, the command passes `--delta-base-offset` option to
+'git pack-objects'; this typically results in slightly smaller packs,
+but the generated packs are incompatible with versions of Git older than
+version 1.4.4. If you need to share your repository with such ancient Git
+versions, either directly or via the dumb http or rsync protocol, then you
+need to set the configuration variable `repack.UseDeltaBaseOffset` to
+"false" and repack. Access from old Git versions over the native protocol
+is unaffected by this option as the conversion is performed on the fly
+as needed in that case.
Author
--stop-at-non-option::
Only meaningful in `--parseopt` mode. Lets the option parser stop at
the first non-option argument. This can be used to parse sub-commands
- that take options themself.
+ that take options themselves.
--sq-quote::
Use 'git rev-parse' in shell quoting mode (see SQ-QUOTE
abbreviation mode.
--all::
- Show all refs found in `$GIT_DIR/refs`.
+ Show all refs found in `refs/`.
--branches[=pattern]::
--tags[=pattern]::
--remotes[=pattern]::
Show all branches, tags, or remote-tracking branches,
- respectively (i.e., refs found in `$GIT_DIR/refs/heads`,
- `$GIT_DIR/refs/tags`, or `$GIT_DIR/refs/remotes`,
- respectively).
+ respectively (i.e., refs found in `refs/heads`,
+ `refs/tags`, or `refs/remotes`, respectively).
+
If a `pattern` is given, only refs matching the given shell glob are
shown. If the pattern does not contain a globbing character (`?`,
`g`, and an abbreviated object name.
* A symbolic ref name. E.g. 'master' typically means the commit
- object referenced by $GIT_DIR/refs/heads/master. If you
+ object referenced by refs/heads/master. If you
happen to have both heads/master and tags/master, you can
explicitly say 'heads/master' to tell git which one you mean.
When ambiguous, a `<name>` is disambiguated by taking the
. if `$GIT_DIR/<name>` exists, that is what you mean (this is usually
useful only for `HEAD`, `FETCH_HEAD`, `ORIG_HEAD` and `MERGE_HEAD`);
- . otherwise, `$GIT_DIR/refs/<name>` if exists;
+ . otherwise, `refs/<name>` if exists;
- . otherwise, `$GIT_DIR/refs/tags/<name>` if exists;
+ . otherwise, `refs/tags/<name>` if exists;
- . otherwise, `$GIT_DIR/refs/heads/<name>` if exists;
+ . otherwise, `refs/heads/<name>` if exists;
- . otherwise, `$GIT_DIR/refs/remotes/<name>` if exists;
+ . otherwise, `refs/remotes/<name>` if exists;
- . otherwise, `$GIT_DIR/refs/remotes/<name>/HEAD` if exists.
+ . otherwise, `refs/remotes/<name>/HEAD` if exists.
+
HEAD names the commit your changes in the working tree is based on.
FETCH_HEAD records the branch you fetched from a remote repository
them easily.
MERGE_HEAD records the commit(s) you are merging into your branch
when you run 'git merge'.
++
+Note that any of the `refs/*` cases above may come either from
+the `$GIT_DIR/refs` directory or from the `$GIT_DIR/packed-refs` file.
* A ref followed by the suffix '@' with a date specification
enclosed in a brace
* The special construct '@\{-<n>\}' means the <n>th branch checked out
before the current one.
-* The suffix '@{upstream}' to a ref (short form 'ref@{u}') refers to
+* The suffix '@\{upstream\}' to a ref (short form 'ref@\{u\}') refers to
the branch the ref is set to build on top of. Missing ref defaults
to the current branch.
Run verbosely.
--thin::
- Spend extra cycles to minimize the number of objects to be sent.
- Use it on slower connection.
+ Send a "thin" pack, which records objects in deltified form based
+ on objects not included in the pack to reduce network traffic.
<host>::
A remote host to house the repository. When this
-----------
Shows the commit ancestry graph starting from the commits named
-with <rev>s or <globs>s (or all refs under $GIT_DIR/refs/heads
-and/or $GIT_DIR/refs/tags) semi-visually.
+with <rev>s or <globs>s (or all refs under refs/heads
+and/or refs/tags) semi-visually.
It cannot show more than 29 branches and commits at a time.
<glob>::
A glob pattern that matches branch or tag names under
- $GIT_DIR/refs. For example, if you have many topic
- branches under $GIT_DIR/refs/heads/topic, giving
+ refs/. For example, if you have many topic
+ branches under refs/heads/topic, giving
`topic/*` would show all of them.
-r::
-------
If you keep your primary branches immediately under
-`$GIT_DIR/refs/heads`, and topic branches in subdirectories of
+`refs/heads`, and topic branches in subdirectories of
it, having the following in the configuration file may help:
------------
you can give a more descriptive message on the command line when
you create one.
-The latest stash you created is stored in `$GIT_DIR/refs/stash`; older
+The latest stash you created is stored in `refs/stash`; older
stashes are found in the reflog of this reference and can be named using
the usual reflog syntax (e.g. `stash@\{0}` is the most recently
created stash, `stash@\{1}` is the one before it, `stash@\{2.hours.ago}`
This option is only valid for the update command.
Rebase the current branch onto the commit recorded in the
superproject. If this option is given, the submodule's HEAD will not
- be detached. If a a merge failure prevents this process, you will have
+ be detached. If a merge failure prevents this process, you will have
to resolve these failures with linkgit:git-rebase[1].
If the key `submodule.$name.update` is set to `rebase`, this option is
implicit.
branch of the `git.git` repository.
Documentation for older releases are available here:
-* link:v1.6.6.1/git.html[documentation for release 1.6.6.1]
+* link:v1.7.0/git.html[documentation for release 1.7.0]
* release notes for
+ link:RelNotes-1.7.0.txt[1.7.0].
+
+* link:v1.6.6.2/git.html[documentation for release 1.6.6.2]
+
+* release notes for
+ link:RelNotes-1.6.6.2.txt[1.6.6.2],
link:RelNotes-1.6.6.1.txt[1.6.6.1],
link:RelNotes-1.6.6.txt[1.6.6].
--all::
- Pretend as if all the refs in `$GIT_DIR/refs/` are listed on the
+ Pretend as if all the refs in `refs/` are listed on the
command line as '<commit>'.
--branches[=pattern]::
- Pretend as if all the refs in `$GIT_DIR/refs/heads` are listed
+ Pretend as if all the refs in `refs/heads` are listed
on the command line as '<commit>'. If `pattern` is given, limit
branches to ones matching given shell glob. If pattern lacks '?',
- '*', or '[', '/*' at the end is impiled.
+ '*', or '[', '/*' at the end is implied.
--tags[=pattern]::
- Pretend as if all the refs in `$GIT_DIR/refs/tags` are listed
+ Pretend as if all the refs in `refs/tags` are listed
on the command line as '<commit>'. If `pattern` is given, limit
tags to ones matching given shell glob. If pattern lacks '?', '*',
- or '[', '/*' at the end is impiled.
+ or '[', '/*' at the end is implied.
--remotes[=pattern]::
- Pretend as if all the refs in `$GIT_DIR/refs/remotes` are listed
+ Pretend as if all the refs in `refs/remotes` are listed
on the command line as '<commit>'. If `pattern`is given, limit
remote tracking branches to ones matching given shell glob.
- If pattern lacks '?', '*', or '[', '/*' at the end is impiled.
+ If pattern lacks '?', '*', or '[', '/*' at the end is implied.
--glob=glob-pattern::
Pretend as if all the refs matching shell glob `glob-pattern`
are listed on the command line as '<commit>'. Leading 'refs/',
is automatically prepended if missing. If pattern lacks '?', '*',
- or '[', '/*' at the end is impiled.
+ or '[', '/*' at the end is implied.
ifndef::git-rev-list[]
--bisect::
- Pretend as if the bad bisection ref `$GIT_DIR/refs/bisect/bad`
+ Pretend as if the bad bisection ref `refs/bisect/bad`
was listed and as if it was followed by `--not` and the good
- bisection refs `$GIT_DIR/refs/bisect/good-*` on the command
+ bisection refs `refs/bisect/good-*` on the command
line.
endif::git-rev-list[]
Limit output to the one commit object which is roughly halfway between
included and excluded commits. Note that the bad bisection ref
-`$GIT_DIR/refs/bisect/bad` is added to the included commits (if it
-exists) and the good bisection refs `$GIT_DIR/refs/bisect/good-*` are
+`refs/bisect/bad` is added to the included commits (if it
+exists) and the good bisection refs `refs/bisect/good-*` are
added to the excluded commits (if they exist). Thus, supposing there
-are no refs in `$GIT_DIR/refs/bisect/`, if
+are no refs in `refs/bisect/`, if
-----------------------------------------------------------------------
$ git rev-list --bisect foo ^bar ^baz
--bisect-vars::
This calculates the same as `--bisect`, except that refs in
-`$GIT_DIR/refs/bisect/` are not used, and except that this outputs
+`refs/bisect/` are not used, and except that this outputs
text ready to be eval'ed by the shell. These lines will assign the
name of the midpoint revision to the variable `bisect_rev`, and the
expected number of commits to be tested after `bisect_rev` is tested
This outputs all the commit objects between the included and excluded
commits, ordered by their distance to the included and excluded
-commits. Refs in `$GIT_DIR/refs/bisect/` are not used. The farthest
+commits. Refs in `refs/bisect/` are not used. The farthest
from them is displayed first. (This is the only one displayed by
`--bisect`.)
+
ENOENT; a diagnostic is printed only if .silent_exec_failure is 0.
. Otherwise, the program is run. If it terminates regularly, its exit
- code is returned. No diagnistic is printed, even if the exit code is
+ code is returned. No diagnostic is printed, even if the exit code is
non-zero.
. If the program terminated due to a signal, then the return value is the
The stream MUST include capability declarations behind a NUL on the
first ref. The peeled value of a ref (that is "ref^{}") MUST be
immediately after the ref itself, if presented. A conforming server
-MUST peel the ref if its an annotated tag.
+MUST peel the ref if it's an annotated tag.
----
advertised-refs = (no-refs / list-of-refs)
* upload-pack sends "NAK" on a flush-pkt if no common object
has been found yet. If one has been found, and thus an ACK
- was already sent, its silent on the flush-pkt.
+ was already sent, it's silent on the flush-pkt.
After the client has gotten enough ACK responses that it can determine
that the server has enough information to send an efficient packfile
client determines that it wants to give up (in the canonical implementation,
this is determined when the client sends 256 'have' lines without getting
any of them ACKed by the server - meaning there is nothing in common and
-the server should just send all it's objects), then the client will send
+the server should just send all of its objects), then the client will send
a 'done' command. The 'done' command signals to the server that the client
-is ready to receive it's packfile data.
+is ready to receive its packfile data.
However, the 256 limit *only* turns on in the canonical client
implementation if we have received at least one "ACK %s continue"
multi_ack_detailed is enabled. The server always sends NAK after 'done'
if there is no common base found.
-Then the server will start sending it's packfile data.
+Then the server will start sending its packfile data.
----
server-response = *ack_multi ack / nak
If the client wants x,y and starts out by saying have F,S, the server
doesn't know what F,S is. Eventually the client says "have d" and
the server sends "ACK d continue" to let the client know to stop
-walking down that line (so don't send c-b-a), but its not done yet,
+walking down that line (so don't send c-b-a), but it's not done yet,
it needs a base for x. The client keeps going with S-R-Q, until a
gets reached, at which point the server has a clear base and it all
ends.
-----------
If the server sends back the 'delete-refs' capability, it means that
-it is capable of accepting an zero-id value as the target
+it is capable of accepting a zero-id value as the target
value of a reference update. It is not sent back by the client, it
simply informs the client that it can be sent zero-id values
to delete references.
and if you don't, then linkgit:git-stash[1] can take these changes
away while you're doing the merge, and reapply them afterwards.
-If the changes are independant enough, Git will automatically complete
+If the changes are independent enough, Git will automatically complete
the merge and commit the result (or reuse an existing commit in case
of <<fast-forwards,fast-forward>>, see below). On the other hand,
if there are conflicts--for example, if the same file is
Unable to checkout '261dfac35cb99d380eb966e102c1197139f7fa24' in submodule path 'a'
-------------------------------------------------
+In older git versions it could be easily forgotten to commit new or modified
+files in a submodule, which silently leads to similar problems as not pushing
+the submodule changes. Starting with git 1.7.0 both "git status" and "git diff"
+in the superproject show submodules as modified when they contain new or
+modified files to protect against accidentally committing such a state. "git
+diff" will also add a "-dirty" to the work tree side when generating patch
+output or used with the --submodule option:
+
+-------------------------------------------------
+$ git diff
+diff --git a/sub b/sub
+--- a/sub
++++ b/sub
+@@ -1 +1 @@
+-Subproject commit 3f356705649b5d566d97ff843cf193359229a453
++Subproject commit 3f356705649b5d566d97ff843cf193359229a453-dirty
+$ git diff --submodule
+Submodule sub 3f35670..3f35670-dirty:
+-------------------------------------------------
+
You also should not rewind branches in a submodule beyond commits that were
ever recorded in any superproject.
#!/bin/sh
GVF=GIT-VERSION-FILE
-DEF_VER=v1.6.6.GIT
+DEF_VER=v1.7.0.GIT
LF='
'
# If not set it defaults to the bare 'wish'. If it is set to the empty
# string then NO_TCLTK will be forced (this is used by configure script).
#
-# Define THREADED_DELTA_SEARCH if you have pthreads and wish to exploit
-# parallel delta searching when packing objects.
-#
# Define INTERNAL_QSORT to use Git's implementation of qsort(), which
# is a simplified version of the merge sort used in glibc. This is
# recommended if Git triggers O(n^2) behavior in your platform's qsort().
# JavaScript minifier invocation that can function as filter
JSMIN =
-# default configuration for gitweb
-GITWEB_CONFIG = gitweb_config.perl
-GITWEB_CONFIG_SYSTEM = /etc/gitweb.conf
-GITWEB_HOME_LINK_STR = projects
-GITWEB_SITENAME =
-GITWEB_PROJECTROOT = /pub/git
-GITWEB_PROJECT_MAXDEPTH = 2007
-GITWEB_EXPORT_OK =
-GITWEB_STRICT_EXPORT =
-GITWEB_BASE_URL =
-GITWEB_LIST =
-GITWEB_HOMETEXT = indextext.html
-GITWEB_CSS = gitweb.css
-GITWEB_LOGO = git-logo.png
-GITWEB_FAVICON = git-favicon.png
-ifdef JSMIN
-GITWEB_JS = gitweb.min.js
-else
-GITWEB_JS = gitweb.js
-endif
-GITWEB_SITE_HEADER =
-GITWEB_SITE_FOOTER =
-
export prefix bindir sharedir sysconfdir
CC = gcc
SCRIPT_PERL =
SCRIPT_PYTHON =
SCRIPT_SH =
+SCRIPT_LIB =
TEST_PROGRAMS =
SCRIPT_SH += git-am.sh
SCRIPT_SH += git-merge-one-file.sh
SCRIPT_SH += git-merge-resolve.sh
SCRIPT_SH += git-mergetool.sh
-SCRIPT_SH += git-mergetool--lib.sh
SCRIPT_SH += git-notes.sh
-SCRIPT_SH += git-parse-remote.sh
SCRIPT_SH += git-pull.sh
SCRIPT_SH += git-quiltimport.sh
SCRIPT_SH += git-rebase--interactive.sh
SCRIPT_SH += git-rebase.sh
SCRIPT_SH += git-repack.sh
SCRIPT_SH += git-request-pull.sh
-SCRIPT_SH += git-sh-setup.sh
SCRIPT_SH += git-stash.sh
SCRIPT_SH += git-submodule.sh
SCRIPT_SH += git-web--browse.sh
+SCRIPT_LIB += git-mergetool--lib
+SCRIPT_LIB += git-parse-remote
+SCRIPT_LIB += git-sh-setup
+
SCRIPT_PERL += git-add--interactive.perl
SCRIPT_PERL += git-difftool.perl
SCRIPT_PERL += git-archimport.perl
ifeq ($(uname_S),Linux)
NO_STRLCPY = YesPlease
NO_MKSTEMPS = YesPlease
- THREADED_DELTA_SEARCH = YesPlease
endif
ifeq ($(uname_S),GNU/kFreeBSD)
NO_STRLCPY = YesPlease
NO_MKSTEMPS = YesPlease
- THREADED_DELTA_SEARCH = YesPlease
endif
ifeq ($(uname_S),UnixWare)
CC = cc
NO_STRLCPY = YesPlease
endif
NO_MEMMEM = YesPlease
- THREADED_DELTA_SEARCH = YesPlease
USE_ST_TIMESPEC = YesPlease
endif
ifeq ($(uname_S),SunOS)
NO_MKDTEMP = YesPlease
NO_MKSTEMPS = YesPlease
NO_REGEX = YesPlease
- THREADED_DELTA_SEARCH = YesPlease
ifeq ($(uname_R),5.7)
NEEDS_RESOLV = YesPlease
NO_IPV6 = YesPlease
BASIC_LDFLAGS += -L/usr/local/lib
DIR_HAS_BSD_GROUP_SEMANTICS = YesPlease
USE_ST_TIMESPEC = YesPlease
- THREADED_DELTA_SEARCH = YesPlease
ifeq ($(shell expr "$(uname_R)" : '4\.'),2)
PTHREAD_LIBS = -pthread
NO_UINTMAX_T = YesPlease
NEEDS_LIBICONV = YesPlease
BASIC_CFLAGS += -I/usr/local/include
BASIC_LDFLAGS += -L/usr/local/lib
- THREADED_DELTA_SEARCH = YesPlease
endif
ifeq ($(uname_S),NetBSD)
ifeq ($(shell expr "$(uname_R)" : '[01]\.'),2)
endif
BASIC_CFLAGS += -I/usr/pkg/include
BASIC_LDFLAGS += -L/usr/pkg/lib $(CC_LD_DYNPATH)/usr/pkg/lib
- THREADED_DELTA_SEARCH = YesPlease
USE_ST_TIMESPEC = YesPlease
NO_MKSTEMPS = YesPlease
endif
INTERNAL_QSORT = UnfortunatelyYes
NEEDS_LIBICONV=YesPlease
BASIC_CFLAGS += -D_LARGE_FILES
- ifneq ($(shell expr "$(uname_V)" : '[1234]'),1)
- THREADED_DELTA_SEARCH = YesPlease
- else
+ ifeq ($(shell expr "$(uname_V)" : '[1234]'),1)
NO_PTHREADS = YesPlease
endif
endif
SNPRINTF_RETURNS_BOGUS = YesPlease
SHELL_PATH = /usr/gnu/bin/bash
NEEDS_LIBGEN = YesPlease
- THREADED_DELTA_SEARCH = YesPlease
endif
ifeq ($(uname_S),IRIX64)
NO_SETENV=YesPlease
SNPRINTF_RETURNS_BOGUS = YesPlease
SHELL_PATH=/usr/gnu/bin/bash
NEEDS_LIBGEN = YesPlease
- THREADED_DELTA_SEARCH = YesPlease
endif
ifeq ($(uname_S),HP-UX)
NO_IPV6=YesPlease
NO_CURL = YesPlease
NO_PYTHON = YesPlease
BLK_SHA1 = YesPlease
- THREADED_DELTA_SEARCH = YesPlease
CC = compat/vcbuild/scripts/clink.pl
AR = compat/vcbuild/scripts/lib.pl
NO_REGEX = YesPlease
NO_PYTHON = YesPlease
BLK_SHA1 = YesPlease
- THREADED_DELTA_SEARCH = YesPlease
COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -DNOGDI -Icompat -Icompat/fnmatch -Icompat/win32
COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\"
COMPAT_OBJS += compat/mingw.o compat/fnmatch/fnmatch.o compat/winansi.o \
endif
ifdef NO_PTHREADS
- THREADED_DELTA_SEARCH =
BASIC_CFLAGS += -DNO_PTHREADS
else
EXTLIBS += $(PTHREAD_LIBS)
-endif
-
-ifdef THREADED_DELTA_SEARCH
- BASIC_CFLAGS += -DTHREADED_DELTA_SEARCH
LIB_OBJS += thread-utils.o
endif
+
ifdef DIR_HAS_BSD_GROUP_SEMANTICS
COMPAT_CFLAGS += -DDIR_HAS_BSD_GROUP_SEMANTICS
endif
SHELL = $(SHELL_PATH)
-all:: shell_compatibility_test $(ALL_PROGRAMS) $(BUILT_INS) $(OTHER_PROGRAMS) GIT-BUILD-OPTIONS
+all:: shell_compatibility_test $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) $(OTHER_PROGRAMS) GIT-BUILD-OPTIONS
ifneq (,$X)
$(QUIET_BUILT_IN)$(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) git$X)), test -d '$p' -o '$p' -ef '$p$X' || $(RM) '$p';)
endif
common-cmds.h: $(wildcard Documentation/git-*.txt)
$(QUIET_GEN)./generate-cmdlist.sh > $@+ && mv $@+ $@
+define cmd_munge_script
+$(RM) $@ $@+ && \
+sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
+ -e 's|@SHELL_PATH@|$(SHELL_PATH_SQ)|' \
+ -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
+ -e 's/@@NO_CURL@@/$(NO_CURL)/g' \
+ -e $(BROKEN_PATH_FIX) \
+ $@.sh >$@+
+endef
+
$(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh
- $(QUIET_GEN)$(RM) $@ $@+ && \
- sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
- -e 's|@SHELL_PATH@|$(SHELL_PATH_SQ)|' \
- -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
- -e 's/@@NO_CURL@@/$(NO_CURL)/g' \
- -e $(BROKEN_PATH_FIX) \
- $@.sh >$@+ && \
+ $(QUIET_GEN)$(cmd_munge_script) && \
chmod +x $@+ && \
mv $@+ $@
+$(SCRIPT_LIB) : % : %.sh
+ $(QUIET_GEN)$(cmd_munge_script) && \
+ mv $@+ $@
+
ifndef NO_PERL
$(patsubst %.perl,%,$(SCRIPT_PERL)): perl/perl.mak
chmod +x $@+ && \
mv $@+ $@
+
+.PHONY: gitweb
+gitweb:
+ $(QUIET_SUBDIR0)gitweb $(QUIET_SUBDIR1) all
+
ifdef JSMIN
OTHER_PROGRAMS += gitweb/gitweb.cgi gitweb/gitweb.min.js
gitweb/gitweb.cgi: gitweb/gitweb.perl gitweb/gitweb.min.js
OTHER_PROGRAMS += gitweb/gitweb.cgi
gitweb/gitweb.cgi: gitweb/gitweb.perl
endif
- $(QUIET_GEN)$(RM) $@ $@+ && \
- sed -e '1s|#!.*perl|#!$(PERL_PATH_SQ)|' \
- -e 's|++GIT_VERSION++|$(GIT_VERSION)|g' \
- -e 's|++GIT_BINDIR++|$(bindir)|g' \
- -e 's|++GITWEB_CONFIG++|$(GITWEB_CONFIG)|g' \
- -e 's|++GITWEB_CONFIG_SYSTEM++|$(GITWEB_CONFIG_SYSTEM)|g' \
- -e 's|++GITWEB_HOME_LINK_STR++|$(GITWEB_HOME_LINK_STR)|g' \
- -e 's|++GITWEB_SITENAME++|$(GITWEB_SITENAME)|g' \
- -e 's|++GITWEB_PROJECTROOT++|$(GITWEB_PROJECTROOT)|g' \
- -e 's|"++GITWEB_PROJECT_MAXDEPTH++"|$(GITWEB_PROJECT_MAXDEPTH)|g' \
- -e 's|++GITWEB_EXPORT_OK++|$(GITWEB_EXPORT_OK)|g' \
- -e 's|++GITWEB_STRICT_EXPORT++|$(GITWEB_STRICT_EXPORT)|g' \
- -e 's|++GITWEB_BASE_URL++|$(GITWEB_BASE_URL)|g' \
- -e 's|++GITWEB_LIST++|$(GITWEB_LIST)|g' \
- -e 's|++GITWEB_HOMETEXT++|$(GITWEB_HOMETEXT)|g' \
- -e 's|++GITWEB_CSS++|$(GITWEB_CSS)|g' \
- -e 's|++GITWEB_LOGO++|$(GITWEB_LOGO)|g' \
- -e 's|++GITWEB_FAVICON++|$(GITWEB_FAVICON)|g' \
- -e 's|++GITWEB_JS++|$(GITWEB_JS)|g' \
- -e 's|++GITWEB_SITE_HEADER++|$(GITWEB_SITE_HEADER)|g' \
- -e 's|++GITWEB_SITE_FOOTER++|$(GITWEB_SITE_FOOTER)|g' \
- $< >$@+ && \
- chmod +x $@+ && \
- mv $@+ $@
+ $(QUIET_SUBDIR0)gitweb $(QUIET_SUBDIR1) $(patsubst gitweb/%,%,$@)
+
+ifdef JSMIN
+gitweb/gitweb.min.js: gitweb/gitweb.js
+ $(QUIET_SUBDIR0)gitweb $(QUIET_SUBDIR1) $(patsubst gitweb/%,%,$@)
+endif # JSMIN
+
git-instaweb: git-instaweb.sh gitweb/gitweb.cgi gitweb/gitweb.css gitweb/gitweb.js
$(QUIET_GEN)$(RM) $@ $@+ && \
mv $@+ $@
endif # NO_PERL
-
-ifdef JSMIN
-gitweb/gitweb.min.js: gitweb/gitweb.js
- $(QUIET_GEN)$(JSMIN) <$< >$@
-endif # JSMIN
-
ifndef NO_PYTHON
$(patsubst %.py,%,$(SCRIPT_PYTHON)): GIT-CFLAGS
$(patsubst %.py,%,$(SCRIPT_PYTHON)): % : %.py
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)'
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
$(INSTALL) $(ALL_PROGRAMS) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
+ $(INSTALL) -m 644 $(SCRIPT_LIB) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
$(INSTALL) $(install_bindir_programs) '$(DESTDIR_SQ)$(bindir_SQ)'
$(MAKE) -C templates DESTDIR='$(DESTDIR_SQ)' install
ifndef NO_PERL
clean:
$(RM) *.o block-sha1/*.o ppc/*.o compat/*.o compat/*/*.o xdiff/*.o \
$(LIB_FILE) $(XDIFF_LIB)
- $(RM) $(ALL_PROGRAMS) $(BUILT_INS) git$X
+ $(RM) $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) git$X
$(RM) $(TEST_PROGRAMS)
$(RM) -r bin-wrappers
$(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo common-cmds.h TAGS tags cscope*
### Check documentation
#
check-docs::
- @(for v in $(ALL_PROGRAMS) $(BUILT_INS) git gitk; \
+ @(for v in $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) git gitk; \
do \
case "$$v" in \
git-merge-octopus | git-merge-ours | git-merge-recursive | \
documented,gitrepository-layout | \
documented,gittutorial | \
documented,gittutorial-2 | \
+ documented,git-bisect-lk2009 | \
+ documented.git-remote-helpers | \
+ documented,gitworkflows | \
sentinel,not,matching,is,ok ) continue ;; \
esac; \
- case " $(ALL_PROGRAMS) $(BUILT_INS) git gitk " in \
+ case " $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) git gitk " in \
*" $$cmd "*) ;; \
*) echo "removed but $$how: $$cmd" ;; \
esac; \
-Documentation/RelNotes-1.7.0.txt
\ No newline at end of file
+Documentation/RelNotes-1.7.1.txt
\ No newline at end of file
return -1;
/*
- * If match_begining or match_end is specified, there is no
+ * If match_beginning or match_end is specified, there is no
* point starting from a wrong line that will never match and
* wander around and wait for a match at the specified end.
*/
return NULL;
ext++;
if (!strcasecmp(ext, "zip"))
- return "zip";
+ return "--format=zip";
return NULL;
}
const char *exec = "git-upload-archive";
const char *output = NULL;
const char *remote = NULL;
- const char *format = NULL;
+ const char *format_option = NULL;
struct option local_opts[] = {
OPT_STRING('o', "output", &output, "file",
"write the archive to this file"),
"retrieve the archive from remote repository <repo>"),
OPT_STRING(0, "exec", &exec, "cmd",
"path to the remote git-upload-archive command"),
- OPT_STRING(0, "format", &format, "fmt", "archive format"),
OPT_END()
};
- char fmt_opt[32];
argc = parse_options(argc, argv, prefix, local_opts, NULL,
PARSE_OPT_KEEP_ALL);
if (output) {
create_output_file(output);
- if (!format)
- format = format_from_name(output);
+ format_option = format_from_name(output);
}
- if (format) {
- sprintf(fmt_opt, "--format=%s", format);
- /*
- * We have enough room in argv[] to muck it in place,
- * because either --format and/or --output must have
- * been given on the original command line if we get
- * to this point, and parse_options() must have eaten
- * it, i.e. we can add back one element to the array.
- * But argv[] may contain "--"; we should make it the
- * first option.
- */
+ /*
+ * We have enough room in argv[] to muck it in place, because
+ * --output must have been given on the original command line
+ * if we get to this point, and parse_options() must have eaten
+ * it, i.e. we can add back one element to the array.
+ *
+ * We add a fake --format option at the beginning, with the
+ * format inferred from our output filename. This way explicit
+ * --format options can override it, and the fake option is
+ * inserted before any "--" that might have been given.
+ */
+ if (format_option) {
memmove(argv + 2, argv + 1, sizeof(*argv) * argc);
- argv[1] = fmt_opt;
+ argv[1] = format_option;
argv[++argc] = NULL;
}
if (top < 1)
top = lno;
bottom--;
- if (lno < top)
+ if (lno < top || lno < bottom)
die("file %s has only %lu lines", path, lno);
ent = xcalloc(1, sizeof(*ent));
"exit with zero when there's no error", 'e'),
OPT_SET_INT('p', NULL, &opt, "pretty-print object's content", 'p'),
OPT_SET_INT(0, "batch", &batch,
- "show info and content of objects feeded on stdin", BATCH),
+ "show info and content of objects fed from the standard input",
+ BATCH),
OPT_SET_INT(0, "batch-check", &batch,
- "show info about objects feeded on stdin",
+ "show info about objects fed from the standard input",
BATCH_CHECK),
OPT_END()
};
die("-x and -X cannot be used together");
if (!show_only && !force)
- die("clean.requireForce%s set and -n or -f not given; "
- "refusing to clean", config_set ? "" : " not");
+ die("clean.requireForce %s to true and neither -n nor -f given; "
+ "refusing to clean", config_set ? "set" : "defaults");
if (force > 1)
rm_flags = 0;
#include "builtin.h"
#include "utf8.h"
-#define BLOCKING (1ul << 14)
-
/*
* FIXME! Share the code with "write-tree.c"
*/
if (!is_absolute_path(given_config_file) && prefix)
config_exclusive_filename = prefix_filename(prefix,
strlen(prefix),
- argv[2]);
+ given_config_file);
else
config_exclusive_filename = given_config_file;
}
OPT_BOOLEAN(0, "root", &show_root, "report root nodes"),
OPT_BOOLEAN(0, "cache", &keep_cache_objects, "make index objects head nodes"),
OPT_BOOLEAN(0, "reflogs", &include_reflogs, "make reflogs head nodes (default)"),
- OPT_BOOLEAN(0, "full", &check_full, "also consider alternate objects"),
+ OPT_BOOLEAN(0, "full", &check_full, "also consider packs and alternate objects"),
OPT_BOOLEAN(0, "strict", &check_strict, "enable more strict checking"),
OPT_BOOLEAN(0, "lost-found", &write_lost_and_found,
"write dangling objects in .git/lost-found"),
#include "quote.h"
#include "dir.h"
+#ifndef NO_PTHREADS
+#include "thread-utils.h"
+#include <pthread.h>
+#endif
+
static char const * const grep_usage[] = {
"git grep [options] [-e] <pattern> [<rev>...] [[--] path...]",
NULL
};
+static int use_threads = 1;
+
+#ifndef NO_PTHREADS
+#define THREADS 8
+static pthread_t threads[THREADS];
+
+static void *load_sha1(const unsigned char *sha1, unsigned long *size,
+ const char *name);
+static void *load_file(const char *filename, size_t *sz);
+
+enum work_type {WORK_SHA1, WORK_FILE};
+
+/* We use one producer thread and THREADS consumer
+ * threads. The producer adds struct work_items to 'todo' and the
+ * consumers pick work items from the same array.
+ */
+struct work_item
+{
+ enum work_type type;
+ char *name;
+
+ /* if type == WORK_SHA1, then 'identifier' is a SHA1,
+ * otherwise type == WORK_FILE, and 'identifier' is a NUL
+ * terminated filename.
+ */
+ void *identifier;
+ char done;
+ struct strbuf out;
+};
+
+/* In the range [todo_done, todo_start) in 'todo' we have work_items
+ * that have been or are processed by a consumer thread. We haven't
+ * written the result for these to stdout yet.
+ *
+ * The work_items in [todo_start, todo_end) are waiting to be picked
+ * up by a consumer thread.
+ *
+ * The ranges are modulo TODO_SIZE.
+ */
+#define TODO_SIZE 128
+static struct work_item todo[TODO_SIZE];
+static int todo_start;
+static int todo_end;
+static int todo_done;
+
+/* Has all work items been added? */
+static int all_work_added;
+
+/* This lock protects all the variables above. */
+static pthread_mutex_t grep_mutex;
+
+/* Used to serialize calls to read_sha1_file. */
+static pthread_mutex_t read_sha1_mutex;
+
+#define grep_lock() pthread_mutex_lock(&grep_mutex)
+#define grep_unlock() pthread_mutex_unlock(&grep_mutex)
+#define read_sha1_lock() pthread_mutex_lock(&read_sha1_mutex)
+#define read_sha1_unlock() pthread_mutex_unlock(&read_sha1_mutex)
+
+/* Signalled when a new work_item is added to todo. */
+static pthread_cond_t cond_add;
+
+/* Signalled when the result from one work_item is written to
+ * stdout.
+ */
+static pthread_cond_t cond_write;
+
+/* Signalled when we are finished with everything. */
+static pthread_cond_t cond_result;
+
+static void add_work(enum work_type type, char *name, void *id)
+{
+ grep_lock();
+
+ while ((todo_end+1) % ARRAY_SIZE(todo) == todo_done) {
+ pthread_cond_wait(&cond_write, &grep_mutex);
+ }
+
+ todo[todo_end].type = type;
+ todo[todo_end].name = name;
+ todo[todo_end].identifier = id;
+ todo[todo_end].done = 0;
+ strbuf_reset(&todo[todo_end].out);
+ todo_end = (todo_end + 1) % ARRAY_SIZE(todo);
+
+ pthread_cond_signal(&cond_add);
+ grep_unlock();
+}
+
+static struct work_item *get_work(void)
+{
+ struct work_item *ret;
+
+ grep_lock();
+ while (todo_start == todo_end && !all_work_added) {
+ pthread_cond_wait(&cond_add, &grep_mutex);
+ }
+
+ if (todo_start == todo_end && all_work_added) {
+ ret = NULL;
+ } else {
+ ret = &todo[todo_start];
+ todo_start = (todo_start + 1) % ARRAY_SIZE(todo);
+ }
+ grep_unlock();
+ return ret;
+}
+
+static void grep_sha1_async(struct grep_opt *opt, char *name,
+ const unsigned char *sha1)
+{
+ unsigned char *s;
+ s = xmalloc(20);
+ memcpy(s, sha1, 20);
+ add_work(WORK_SHA1, name, s);
+}
+
+static void grep_file_async(struct grep_opt *opt, char *name,
+ const char *filename)
+{
+ add_work(WORK_FILE, name, xstrdup(filename));
+}
+
+static void work_done(struct work_item *w)
+{
+ int old_done;
+
+ grep_lock();
+ w->done = 1;
+ old_done = todo_done;
+ for(; todo[todo_done].done && todo_done != todo_start;
+ todo_done = (todo_done+1) % ARRAY_SIZE(todo)) {
+ w = &todo[todo_done];
+ write_or_die(1, w->out.buf, w->out.len);
+ free(w->name);
+ free(w->identifier);
+ }
+
+ if (old_done != todo_done)
+ pthread_cond_signal(&cond_write);
+
+ if (all_work_added && todo_done == todo_end)
+ pthread_cond_signal(&cond_result);
+
+ grep_unlock();
+}
+
+static void *run(void *arg)
+{
+ int hit = 0;
+ struct grep_opt *opt = arg;
+
+ while (1) {
+ struct work_item *w = get_work();
+ if (!w)
+ break;
+
+ opt->output_priv = w;
+ if (w->type == WORK_SHA1) {
+ unsigned long sz;
+ void* data = load_sha1(w->identifier, &sz, w->name);
+
+ if (data) {
+ hit |= grep_buffer(opt, w->name, data, sz);
+ free(data);
+ }
+ } else if (w->type == WORK_FILE) {
+ size_t sz;
+ void* data = load_file(w->identifier, &sz);
+ if (data) {
+ hit |= grep_buffer(opt, w->name, data, sz);
+ free(data);
+ }
+ } else {
+ assert(0);
+ }
+
+ work_done(w);
+ }
+ free_grep_patterns(arg);
+ free(arg);
+
+ return (void*) (intptr_t) hit;
+}
+
+static void strbuf_out(struct grep_opt *opt, const void *buf, size_t size)
+{
+ struct work_item *w = opt->output_priv;
+ strbuf_add(&w->out, buf, size);
+}
+
+static void start_threads(struct grep_opt *opt)
+{
+ int i;
+
+ pthread_mutex_init(&grep_mutex, NULL);
+ pthread_mutex_init(&read_sha1_mutex, NULL);
+ pthread_cond_init(&cond_add, NULL);
+ pthread_cond_init(&cond_write, NULL);
+ pthread_cond_init(&cond_result, NULL);
+
+ for (i = 0; i < ARRAY_SIZE(todo); i++) {
+ strbuf_init(&todo[i].out, 0);
+ }
+
+ for (i = 0; i < ARRAY_SIZE(threads); i++) {
+ int err;
+ struct grep_opt *o = grep_opt_dup(opt);
+ o->output = strbuf_out;
+ compile_grep_patterns(o);
+ err = pthread_create(&threads[i], NULL, run, o);
+
+ if (err)
+ die("grep: failed to create thread: %s",
+ strerror(err));
+ }
+}
+
+static int wait_all(void)
+{
+ int hit = 0;
+ int i;
+
+ grep_lock();
+ all_work_added = 1;
+
+ /* Wait until all work is done. */
+ while (todo_done != todo_end)
+ pthread_cond_wait(&cond_result, &grep_mutex);
+
+ /* Wake up all the consumer threads so they can see that there
+ * is no more work to do.
+ */
+ pthread_cond_broadcast(&cond_add);
+ grep_unlock();
+
+ for (i = 0; i < ARRAY_SIZE(threads); i++) {
+ void *h;
+ pthread_join(threads[i], &h);
+ hit |= (int) (intptr_t) h;
+ }
+
+ pthread_mutex_destroy(&grep_mutex);
+ pthread_mutex_destroy(&read_sha1_mutex);
+ pthread_cond_destroy(&cond_add);
+ pthread_cond_destroy(&cond_write);
+ pthread_cond_destroy(&cond_result);
+
+ return hit;
+}
+#else /* !NO_PTHREADS */
+#define read_sha1_lock()
+#define read_sha1_unlock()
+
+static int wait_all(void)
+{
+ return 0;
+}
+#endif
+
static int grep_config(const char *var, const char *value, void *cb)
{
struct grep_opt *opt = cb;
return 0;
}
-static int grep_sha1(struct grep_opt *opt, const unsigned char *sha1, const char *name, int tree_name_len)
+static void *lock_and_read_sha1_file(const unsigned char *sha1, enum object_type *type, unsigned long *size)
+{
+ void *data;
+
+ if (use_threads) {
+ read_sha1_lock();
+ data = read_sha1_file(sha1, type, size);
+ read_sha1_unlock();
+ } else {
+ data = read_sha1_file(sha1, type, size);
+ }
+ return data;
+}
+
+static void *load_sha1(const unsigned char *sha1, unsigned long *size,
+ const char *name)
{
- unsigned long size;
- char *data;
enum object_type type;
- int hit;
- struct strbuf pathbuf = STRBUF_INIT;
+ void *data = lock_and_read_sha1_file(sha1, &type, size);
- data = read_sha1_file(sha1, &type, &size);
- if (!data) {
+ if (!data)
error("'%s': unable to read %s", name, sha1_to_hex(sha1));
- return 0;
- }
+
+ return data;
+}
+
+static int grep_sha1(struct grep_opt *opt, const unsigned char *sha1,
+ const char *filename, int tree_name_len)
+{
+ struct strbuf pathbuf = STRBUF_INIT;
+ char *name;
+
if (opt->relative && opt->prefix_length) {
- quote_path_relative(name + tree_name_len, -1, &pathbuf, opt->prefix);
- strbuf_insert(&pathbuf, 0, name, tree_name_len);
- name = pathbuf.buf;
+ quote_path_relative(filename + tree_name_len, -1, &pathbuf,
+ opt->prefix);
+ strbuf_insert(&pathbuf, 0, filename, tree_name_len);
+ } else {
+ strbuf_addstr(&pathbuf, filename);
+ }
+
+ name = strbuf_detach(&pathbuf, NULL);
+
+#ifndef NO_PTHREADS
+ if (use_threads) {
+ grep_sha1_async(opt, name, sha1);
+ return 0;
+ } else
+#endif
+ {
+ int hit;
+ unsigned long sz;
+ void *data = load_sha1(sha1, &sz, name);
+ if (!data)
+ hit = 0;
+ else
+ hit = grep_buffer(opt, name, data, sz);
+
+ free(data);
+ free(name);
+ return hit;
}
- hit = grep_buffer(opt, name, data, size);
- strbuf_release(&pathbuf);
- free(data);
- return hit;
}
-static int grep_file(struct grep_opt *opt, const char *filename)
+static void *load_file(const char *filename, size_t *sz)
{
struct stat st;
- int i;
char *data;
- size_t sz;
- struct strbuf buf = STRBUF_INIT;
+ int i;
if (lstat(filename, &st) < 0) {
err_ret:
}
if (!S_ISREG(st.st_mode))
return 0;
- sz = xsize_t(st.st_size);
+ *sz = xsize_t(st.st_size);
i = open(filename, O_RDONLY);
if (i < 0)
goto err_ret;
- data = xmalloc(sz + 1);
- if (st.st_size != read_in_full(i, data, sz)) {
+ data = xmalloc(*sz + 1);
+ if (st.st_size != read_in_full(i, data, *sz)) {
error("'%s': short read %s", filename, strerror(errno));
close(i);
free(data);
return 0;
}
close(i);
- data[sz] = 0;
+ data[*sz] = 0;
+ return data;
+}
+
+static int grep_file(struct grep_opt *opt, const char *filename)
+{
+ struct strbuf buf = STRBUF_INIT;
+ char *name;
+
if (opt->relative && opt->prefix_length)
- filename = quote_path_relative(filename, -1, &buf, opt->prefix);
- i = grep_buffer(opt, filename, data, sz);
- strbuf_release(&buf);
- free(data);
- return i;
+ quote_path_relative(filename, -1, &buf, opt->prefix);
+ else
+ strbuf_addstr(&buf, filename);
+ name = strbuf_detach(&buf, NULL);
+
+#ifndef NO_PTHREADS
+ if (use_threads) {
+ grep_file_async(opt, name, filename);
+ return 0;
+ } else
+#endif
+ {
+ int hit;
+ size_t sz;
+ void *data = load_file(filename, &sz);
+ if (!data)
+ hit = 0;
+ else
+ hit = grep_buffer(opt, name, data, sz);
+
+ free(data);
+ free(name);
+ return hit;
+ }
}
static int grep_cache(struct grep_opt *opt, const char **paths, int cached)
!strcmp(ce->name, active_cache[nr]->name));
nr--; /* compensate for loop control */
}
+ if (hit && opt->status_only)
+ break;
}
free_grep_patterns(opt);
return hit;
void *data;
unsigned long size;
- data = read_sha1_file(entry.sha1, &type, &size);
+ data = lock_and_read_sha1_file(entry.sha1, &type, &size);
if (!data)
die("unable to read tree (%s)",
sha1_to_hex(entry.sha1));
hit |= grep_tree(opt, paths, &sub, tree_name, down);
free(data);
}
+ if (hit && opt->status_only)
+ break;
}
strbuf_release(&pathbuf);
return hit;
setup_standard_excludes(&dir);
fill_directory(&dir, paths);
- for (i = 0; i < dir.nr; i++)
+ for (i = 0; i < dir.nr; i++) {
hit |= grep_file(opt, dir.entries[i]->name);
+ if (hit && opt->status_only)
+ break;
+ }
free_grep_patterns(opt);
return hit;
}
{ OPTION_CALLBACK, ')', NULL, &opt, NULL, "",
PARSE_OPT_NOARG | PARSE_OPT_NONEG | PARSE_OPT_NODASH,
close_callback },
+ OPT_BOOLEAN('q', "quiet", &opt.status_only,
+ "indicate hit with exit status without output"),
OPT_BOOLEAN(0, "all-match", &opt.all_match,
"show only matches from files that match all patterns"),
OPT_GROUP(""),
/* die the same way as if we did it at the beginning */
setup_git_directory();
+ /*
+ * skip a -- separator; we know it cannot be
+ * separating revisions from pathnames if
+ * we haven't even had any patterns yet
+ */
+ if (argc > 0 && !opt.pattern_list && !strcmp(argv[0], "--")) {
+ argv++;
+ argc--;
+ }
+
/* First unrecognized non-option token */
if (argc > 0 && !opt.pattern_list) {
append_grep_pattern(&opt, argv[0], "command line", 0,
opt.regflags |= REG_ICASE;
if ((opt.regflags != REG_NEWLINE) && opt.fixed)
die("cannot mix --fixed-strings and regexp");
+
+#ifndef NO_PTHREADS
+ if (online_cpus() == 1 || !grep_threads_ok(&opt))
+ use_threads = 0;
+
+ if (use_threads)
+ start_threads(&opt);
+#else
+ use_threads = 0;
+#endif
+
compile_grep_patterns(&opt);
/* Check revs and then paths */
}
if (!use_index) {
+ int hit;
if (cached)
die("--cached cannot be used with --no-index.");
if (list.nr)
die("--no-index cannot be used with revs.");
- return !grep_directory(&opt, paths);
+ hit = grep_directory(&opt, paths);
+ if (use_threads)
+ hit |= wait_all();
+ return !hit;
}
if (!list.nr) {
+ int hit;
if (!cached)
setup_work_tree();
- return !grep_cache(&opt, paths, cached);
+
+ hit = grep_cache(&opt, paths, cached);
+ if (use_threads)
+ hit |= wait_all();
+ return !hit;
}
if (cached)
for (i = 0; i < list.nr; i++) {
struct object *real_obj;
real_obj = deref_tag(list.objects[i].item, NULL, 0);
- if (grep_object(&opt, paths, real_obj, list.objects[i].name))
+ if (grep_object(&opt, paths, real_obj, list.objects[i].name)) {
hit = 1;
+ if (opt.status_only)
+ break;
+ }
}
+
+ if (use_threads)
+ hit |= wait_all();
free_grep_patterns(&opt);
return !hit;
}
/*
* We cannot move this anywhere earlier because we do want to
- * know if --root was given explicitly from the comand line.
+ * know if --root was given explicitly from the command line.
*/
rev.show_root_diff = 1;
#include "progress.h"
#include "refs.h"
-#ifdef THREADED_DELTA_SEARCH
+#ifndef NO_PTHREADS
#include "thread-utils.h"
#include <pthread.h>
#endif
static const char *base_name;
static int progress = 1;
static int window = 10;
-static uint32_t pack_size_limit, pack_size_limit_cfg;
+static unsigned long pack_size_limit, pack_size_limit_cfg;
static int depth = 50;
static int delta_search_threads;
static int pack_to_stdout;
type = entry->type;
- /* write limit if limited packsize and not first object */
+ /* apply size limit if limited packsize and not first object */
if (!pack_size_limit || !nr_written)
limit = 0;
else if (pack_size_limit <= write_offset)
/* offset is non zero if object is written already. */
if (e->idx.offset || e->preferred_base)
- return 1;
+ return -1;
/* if we are deltified, write out base object first. */
if (e->delta && !write_one(f, e->delta, offset))
if (written != nr_result)
die("wrote %"PRIu32" objects while expecting %"PRIu32,
written, nr_result);
- /*
- * We have scanned through [0 ... i). Since we have written
- * the correct number of objects, the remaining [i ... nr_objects)
- * items must be either already written (due to out-of-order delta base)
- * or a preferred base. Count those which are neither and complain if any.
- */
- for (j = 0; i < nr_objects; i++) {
- struct object_entry *e = objects + i;
- j += !e->idx.offset && !e->preferred_base;
- }
- if (j)
- die("wrote %"PRIu32" objects as expected but %"PRIu32
- " unwritten", written, j);
}
static int locate_object_entry_hash(const unsigned char *sha1)
return 0;
}
-#ifdef THREADED_DELTA_SEARCH
+#ifndef NO_PTHREADS
static pthread_mutex_t read_mutex;
#define read_lock() pthread_mutex_lock(&read_mutex)
/*
* Handle memory allocation outside of the cache
* accounting lock. Compiler will optimize the strangeness
- * away when THREADED_DELTA_SEARCH is not defined.
+ * away when NO_PTHREADS is defined.
*/
free(trg_entry->delta_data);
cache_lock();
free(array);
}
-#ifdef THREADED_DELTA_SEARCH
+#ifndef NO_PTHREADS
/*
* The main thread waits on the condition that (at least) one of the workers
if (delta_search_threads < 0)
die("invalid number of threads specified (%d)",
delta_search_threads);
-#ifndef THREADED_DELTA_SEARCH
+#ifdef NO_PTHREADS
if (delta_search_threads != 1)
warning("no threads support, ignoring %s", k);
#endif
continue;
}
if (!prefixcmp(arg, "--max-pack-size=")) {
- char *end;
pack_size_limit_cfg = 0;
- pack_size_limit = strtoul(arg+16, &end, 0) * 1024 * 1024;
- if (!arg[16] || *end)
+ if (!git_parse_ulong(arg+16, &pack_size_limit))
usage(pack_usage);
continue;
}
delta_search_threads = strtoul(arg+10, &end, 0);
if (!arg[10] || *end || delta_search_threads < 0)
usage(pack_usage);
-#ifndef THREADED_DELTA_SEARCH
+#ifdef NO_PTHREADS
if (delta_search_threads != 1)
warning("no threads support, "
"ignoring %s", arg);
if (!pack_to_stdout && !pack_size_limit)
pack_size_limit = pack_size_limit_cfg;
-
if (pack_to_stdout && pack_size_limit)
die("--max-pack-size cannot be used to build a pack for transfer.");
+ if (pack_size_limit && pack_size_limit < 1024*1024) {
+ warning("minimum pack size limit is 1 MiB");
+ pack_size_limit = 1024*1024;
+ }
if (!pack_to_stdout && thin)
die("--thin cannot be used to build an indexable pack.");
/*
* Write errors (particularly out of space) can result in
* failed temporary packs (and more rarely indexes and other
- * files begining with "tmp_") accumulating in the object
+ * files beginning with "tmp_") accumulating in the object
* and the pack directories.
*/
static void remove_temporary_files(const char *path)
} else if (deleterefs && !strchr(ref, ':')) {
char *delref;
int len = strlen(ref)+1;
- delref = xmalloc(len);
+ delref = xmalloc(len+1);
strcpy(delref, ":");
strcat(delref, ref);
ref = delref;
static int edit, no_replay, no_commit, mainline, signoff;
static enum { REVERT, CHERRY_PICK } action;
static struct commit *commit;
+static const char *commit_name;
static int allow_rerere_auto;
static const char *me;
const char * const * usage_str =
action == REVERT ? revert_usage : cherry_pick_usage;
unsigned char sha1[20];
- const char *arg;
int noop;
struct option options[] = {
OPT_BOOLEAN('n', "no-commit", &no_commit, "don't automatically commit"),
if (parse_options(argc, argv, NULL, options, usage_str, 0) != 1)
usage_with_options(usage_str, options);
- arg = argv[0];
- if (get_sha1(arg, sha1))
- die ("Cannot find '%s'", arg);
- commit = (struct commit *)parse_object(sha1);
+ commit_name = argv[0];
+ if (get_sha1(commit_name, sha1))
+ die ("Cannot find '%s'", commit_name);
+ commit = lookup_commit_reference(sha1);
if (!commit)
- die ("Could not find %s", sha1_to_hex(sha1));
- if (commit->object.type == OBJ_TAG) {
- commit = (struct commit *)
- deref_tag((struct object *)commit, arg, strlen(arg));
- }
- if (commit->object.type != OBJ_COMMIT)
- die ("'%s' does not point to a commit", arg);
+ exit(1);
}
static char *get_oneline(const char *message)
sha1_to_hex(commit->object.sha1));
}
-static char *help_msg(const unsigned char *sha1)
+static char *help_msg(const char *name)
{
- static char helpbuf[1024];
+ struct strbuf helpbuf = STRBUF_INIT;
char *msg = getenv("GIT_CHERRY_PICK_HELP");
if (msg)
return msg;
- strcpy(helpbuf, " After resolving the conflicts,\n"
- "mark the corrected paths with 'git add <paths>' "
- "or 'git rm <paths>' and commit the result.");
+ strbuf_addstr(&helpbuf, " After resolving the conflicts,\n"
+ "mark the corrected paths with 'git add <paths>' or 'git rm <paths>'\n"
+ "and commit the result");
if (action == CHERRY_PICK) {
- sprintf(helpbuf + strlen(helpbuf),
- "\nWhen commiting, use the option "
- "'-c %s' to retain authorship and message.",
- find_unique_abbrev(sha1, DEFAULT_ABBREV));
+ strbuf_addf(&helpbuf, " with: \n"
+ "\n"
+ " git commit -c %s\n",
+ name);
}
- return helpbuf;
+ else
+ strbuf_addch(&helpbuf, '.');
+ return strbuf_detach(&helpbuf, NULL);
}
static struct tree *empty_tree(void)
if (commit_lock_file(&msg_file) < 0)
die ("Error wrapping up %s", defmsg);
fprintf(stderr, "Automatic %s failed.%s\n",
- me, help_msg(commit->object.sha1));
+ me, help_msg(commit_name));
rerere(allow_rerere_auto);
exit(1);
}
return config_error_nonbool(var);
/*
* default_arg is now passed to parse_options(), so we need to
- * mimick the real argv a bit better.
+ * mimic the real argv a bit better.
*/
if (!default_num) {
default_alloc = 20;
size_t timebuf_size);
int parse_date(const char *date, char *buf, int bufsize);
void datestamp(char *buf, int bufsize);
-unsigned long approxidate(const char *);
+#define approxidate(s) approxidate_careful((s), NULL)
+unsigned long approxidate_careful(const char *, int *);
unsigned long approxidate_relative(const char *date, const struct timeval *now);
enum date_mode parse_date_format(const char *format);
if (pos < 0)
return -1;
if (pos + 1 < commit_graft_nr)
- memcpy(commit_graft + pos, commit_graft + pos + 1,
+ memmove(commit_graft + pos, commit_graft + pos + 1,
sizeof(struct commit_graft *)
* (commit_graft_nr - pos - 1));
commit_graft_nr--;
/*
* Copyright (C) 2009 Andrzej K. Haczewski <ahaczewski@gmail.com>
*
- * DISCLAMER: The implementation is Git-specific, it is subset of original
+ * DISCLAIMER: The implementation is Git-specific, it is subset of original
* Pthreads API, without lots of other features that Git doesn't use.
* Git also makes sure that the passed arguments are valid, so there's
* no need for double-checking.
int pthread_cond_init(pthread_cond_t *cond, const void *unused)
{
cond->waiters = 0;
+ cond->was_broadcast = 0;
+ InitializeCriticalSection(&cond->waiters_lock);
cond->sema = CreateSemaphore(NULL, 0, LONG_MAX, NULL);
if (!cond->sema)
die("CreateSemaphore() failed");
+
+ cond->continue_broadcast = CreateEvent(NULL, /* security */
+ FALSE, /* auto-reset */
+ FALSE, /* not signaled */
+ NULL); /* name */
+ if (!cond->continue_broadcast)
+ die("CreateEvent() failed");
+
return 0;
}
int pthread_cond_destroy(pthread_cond_t *cond)
{
CloseHandle(cond->sema);
- cond->sema = NULL;
-
+ CloseHandle(cond->continue_broadcast);
+ DeleteCriticalSection(&cond->waiters_lock);
return 0;
}
int pthread_cond_wait(pthread_cond_t *cond, CRITICAL_SECTION *mutex)
{
- InterlockedIncrement(&cond->waiters);
+ int last_waiter;
+
+ EnterCriticalSection(&cond->waiters_lock);
+ cond->waiters++;
+ LeaveCriticalSection(&cond->waiters_lock);
/*
* Unlock external mutex and wait for signal.
/* let's wait - ignore return value */
WaitForSingleObject(cond->sema, INFINITE);
- /* we're done waiting, so make sure we decrease waiters count */
- InterlockedDecrement(&cond->waiters);
-
+ /*
+ * Decrease waiters count. If we are the last waiter, then we must
+ * notify the broadcasting thread that it can continue.
+ * But if we continued due to cond_signal, we do not have to do that
+ * because the signaling thread knows that only one waiter continued.
+ */
+ EnterCriticalSection(&cond->waiters_lock);
+ cond->waiters--;
+ last_waiter = cond->was_broadcast && cond->waiters == 0;
+ LeaveCriticalSection(&cond->waiters_lock);
+
+ if (last_waiter) {
+ /*
+ * cond_broadcast was issued while mutex was held. This means
+ * that all other waiters have continued, but are contending
+ * for the mutex at the end of this function because the
+ * broadcasting thread did not leave cond_broadcast, yet.
+ * (This is so that it can be sure that each waiter has
+ * consumed exactly one slice of the semaphor.)
+ * The last waiter must tell the broadcasting thread that it
+ * can go on.
+ */
+ SetEvent(cond->continue_broadcast);
+ /*
+ * Now we go on to contend with all other waiters for
+ * the mutex. Auf in den Kampf!
+ */
+ }
/* lock external mutex again */
EnterCriticalSection(mutex);
return 0;
}
+/*
+ * IMPORTANT: This implementation requires that pthread_cond_signal
+ * is called while the mutex is held that is used in the corresponding
+ * pthread_cond_wait calls!
+ */
int pthread_cond_signal(pthread_cond_t *cond)
{
- /*
- * Access to waiters count is atomic; see "Interlocked Variable Access"
- * http://msdn.microsoft.com/en-us/library/ms684122(VS.85).aspx
- */
- int have_waiters = cond->waiters > 0;
+ int have_waiters;
+
+ EnterCriticalSection(&cond->waiters_lock);
+ have_waiters = cond->waiters > 0;
+ LeaveCriticalSection(&cond->waiters_lock);
/*
* Signal only when there are waiters
else
return 0;
}
+
+/*
+ * DOUBLY IMPORTANT: This implementation requires that pthread_cond_broadcast
+ * is called while the mutex is held that is used in the corresponding
+ * pthread_cond_wait calls!
+ */
+int pthread_cond_broadcast(pthread_cond_t *cond)
+{
+ EnterCriticalSection(&cond->waiters_lock);
+
+ if ((cond->was_broadcast = cond->waiters > 0)) {
+ /* wake up all waiters */
+ ReleaseSemaphore(cond->sema, cond->waiters, NULL);
+ LeaveCriticalSection(&cond->waiters_lock);
+ /*
+ * At this point all waiters continue. Each one takes its
+ * slice of the semaphor. Now it's our turn to wait: Since
+ * the external mutex is held, no thread can leave cond_wait,
+ * yet. For this reason, we can be sure that no thread gets
+ * a chance to eat *more* than one slice. OTOH, it means
+ * that the last waiter must send us a wake-up.
+ */
+ WaitForSingleObject(cond->continue_broadcast, INFINITE);
+ /*
+ * Since the external mutex is held, no thread can enter
+ * cond_wait, and, hence, it is safe to reset this flag
+ * without cond->waiters_lock held.
+ */
+ cond->was_broadcast = 0;
+ } else {
+ LeaveCriticalSection(&cond->waiters_lock);
+ }
+ return 0;
+}
* See also: http://www.cse.wustl.edu/~schmidt/win32-cv-1.html
*/
typedef struct {
- volatile LONG waiters;
+ LONG waiters;
+ int was_broadcast;
+ CRITICAL_SECTION waiters_lock;
HANDLE sema;
+ HANDLE continue_broadcast;
} pthread_cond_t;
extern int pthread_cond_init(pthread_cond_t *cond, const void *unused);
-
extern int pthread_cond_destroy(pthread_cond_t *cond);
-
extern int pthread_cond_wait(pthread_cond_t *cond, CRITICAL_SECTION *mutex);
-
extern int pthread_cond_signal(pthread_cond_t *cond);
+extern int pthread_cond_broadcast(pthread_cond_t *cond);
/*
* Simple thread creation implementation using pthread API
FREAD_READS_DIRECTORIES=@FREAD_READS_DIRECTORIES@
SNPRINTF_RETURNS_BOGUS=@SNPRINTF_RETURNS_BOGUS@
NO_PTHREADS=@NO_PTHREADS@
-THREADED_DELTA_SEARCH=@THREADED_DELTA_SEARCH@
PTHREAD_LIBS=@PTHREAD_LIBS@
# GIT_ARG_SET_PATH(PROGRAM)
# -------------------------
# Provide --with-PROGRAM=PATH option to set PATH to PROGRAM
+# Optional second argument allows setting NO_PROGRAM=YesPlease if
+# --without-PROGRAM version used.
AC_DEFUN([GIT_ARG_SET_PATH],
[AC_ARG_WITH([$1],
[AS_HELP_STRING([--with-$1=PATH],
[provide PATH to $1])],
- [GIT_CONF_APPEND_PATH($1)],[])
+ [GIT_CONF_APPEND_PATH($1,$2)],[])
])# GIT_ARG_SET_PATH
#
# GIT_CONF_APPEND_PATH(PROGRAM)
# ------------------------------
# Parse --with-PROGRAM=PATH option to set PROGRAM_PATH=PATH
# Used by GIT_ARG_SET_PATH(PROGRAM)
+# Optional second argument allows setting NO_PROGRAM=YesPlease if
+# --without-PROGRAM is used.
AC_DEFUN([GIT_CONF_APPEND_PATH],
[PROGRAM=m4_toupper($1); \
if test "$withval" = "no"; then \
- AC_MSG_ERROR([You cannot use git without $1]); \
+ if test -n "$2"; then \
+ m4_toupper($1)_PATH=$withval; \
+ AC_MSG_NOTICE([Disabling use of ${PROGRAM}]); \
+ GIT_CONF_APPEND_LINE(NO_${PROGRAM}=YesPlease); \
+ GIT_CONF_APPEND_LINE(${PROGRAM}_PATH=); \
+ else \
+ AC_MSG_ERROR([You cannot use git without $1]); \
+ fi; \
else \
if test "$withval" = "yes"; then \
AC_MSG_WARN([You should provide path for --with-$1=PATH]); \
GIT_ARG_SET_PATH(perl)
#
# Define PYTHON_PATH to provide path to Python.
-GIT_ARG_SET_PATH(python)
+GIT_ARG_SET_PATH(python, allow-without)
#
# Define ZLIB_PATH to provide path to zlib.
GIT_ARG_SET_PATH(zlib)
# Define NO_SYMLINK_HEAD if you never want .git/HEAD to be a symbolic link.
# Enable it on Windows. By default, symrefs are still used.
#
-# Define NO_PTHREADS if we do not have pthreads
+# Define NO_PTHREADS if we do not have pthreads.
#
-# Define PTHREAD_LIBS to the linker flag used for Pthread support and define
-# THREADED_DELTA_SEARCH if Pthreads are available.
+# Define PTHREAD_LIBS to the linker flag used for Pthread support.
AC_DEFUN([PTHREADTEST_SRC], [
#include <pthread.h>
dnl )])
NO_PTHREADS=UnfortunatelyYes
-THREADED_DELTA_SEARCH=
PTHREAD_LIBS=
if test -n "$USER_NOPTHREAD"; then
[AC_MSG_RESULT([yes])
NO_PTHREADS=
PTHREAD_LIBS="$opt"
- THREADED_DELTA_SEARCH=YesPlease
break
],
[AC_MSG_RESULT([no])])
[AC_MSG_RESULT([yes])
NO_PTHREADS=
PTHREAD_LIBS="$PTHREAD_CFLAGS"
- THREADED_DELTA_SEARCH=YesPlease
],
[AC_MSG_RESULT([no])])
AC_SUBST(PTHREAD_LIBS)
AC_SUBST(NO_PTHREADS)
-AC_SUBST(THREADED_DELTA_SEARCH)
## Output files
AC_CONFIG_FILES(["${config_file}":"${config_in}":"${config_append}"])
c = ':';
}
+ /*
+ * Don't do destructive transforms with git:// as that
+ * protocol code does '[]' unwrapping of its own.
+ */
if (host[0] == '[') {
end = strchr(host + 1, ']');
if (end) {
- *end = 0;
+ if (protocol != PROTO_GIT) {
+ *end = 0;
+ host++;
+ }
end++;
- host++;
} else
end = host;
} else
NULL
};
conn->env = env;
- *arg++ = "sh";
- *arg++ = "-c";
+ conn->use_shell = 1;
}
*arg++ = cmd.buf;
*arg = NULL;
read-tree) : plumbing;;
receive-pack) : plumbing;;
reflog) : plumbing;;
+ remote-*) : transport;;
repo-config) : deprecated;;
rerere) : plumbing;;
rev-list) : plumbing;;
{
local cur="${COMP_WORDS[COMP_CWORD]}" dir="$(__gitdir)"
if [ -d "$dir"/rebase-apply ]; then
- __gitcomp "--skip --resolved --abort"
+ __gitcomp "--skip --continue --resolved --abort"
return
fi
case "$cur" in
__gitcomp "--tags --all --stdin"
}
+_git_notes ()
+{
+ local subcommands="edit show"
+ if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then
+ __gitcomp "$subcommands"
+ return
+ fi
+
+ case "${COMP_WORDS[COMP_CWORD-1]}" in
+ -m|-F)
+ COMPREPLY=()
+ ;;
+ *)
+ __gitcomp "$(__git_refs)"
+ ;;
+ esac
+}
+
_git_pull ()
{
__git_complete_strategy && return
--preserve-merges --stat --no-stat
--committer-date-is-author-date --ignore-date
--ignore-whitespace --whitespace=
+ --autosquash
"
return
merge-base) _git_merge_base ;;
mv) _git_mv ;;
name-rev) _git_name_rev ;;
+ notes) _git_notes ;;
pull) _git_pull ;;
push) _git_push ;;
rebase) _git_rebase ;;
elif file["type"] == "symlink":
mode = "120000"
# p4 print on a symlink contains "target\n", so strip it off
- last = contents.pop()
- last = last[:-1]
- contents.append(last)
+ data = ''.join(contents)
+ contents = [data[:-1]]
if self.isWindows and file["type"].endswith("text"):
mangled = []
if includeFile:
filesForCommit.append(f)
- if f['action'] not in ('delete', 'purge'):
+ if f['action'] not in ('delete', 'move/delete', 'purge'):
filesToRead.append(f)
else:
filesToDelete.append(f)
Key and value strings may be enclosed in quotes, in which case
whitespace inside the quotes is preserved. Additionally, an equal
-sign may be included in the key by preceeding it with a backslash.
+sign may be included in the key by preceding it with a backslash.
For example:
"key1 "=value1
return dup;
}
+static void parse_host_and_port(char *hostport, char **host,
+ char **port)
+{
+ if (*hostport == '[') {
+ char *end;
+
+ end = strchr(hostport, ']');
+ if (!end)
+ die("Invalid request ('[' without ']')");
+ *end = '\0';
+ *host = hostport + 1;
+ if (!end[1])
+ *port = NULL;
+ else if (end[1] == ':')
+ *port = end + 2;
+ else
+ die("Garbage after end of host part");
+ } else {
+ *host = hostport;
+ *port = strrchr(hostport, ':');
+ if (*port) {
+ *port = '\0';
+ ++*port;
+ }
+ }
+}
+
/*
* Read the host as supplied by the client connection.
*/
vallen = strlen(val) + 1;
if (*val) {
/* Split <host>:<port> at colon. */
- char *host = val;
- char *port = strrchr(host, ':');
+ char *host;
+ char *port;
+ parse_host_and_port(val, &host, &port);
if (port) {
- *port = 0;
- port++;
free(tcp_port);
tcp_port = xstrdup(port);
}
return n;
}
+static void date_now(struct tm *tm, struct tm *now, int *num)
+{
+ update_tm(tm, now, 0);
+}
+
static void date_yesterday(struct tm *tm, struct tm *now, int *num)
{
update_tm(tm, now, 24*60*60);
{ "PM", date_pm },
{ "AM", date_am },
{ "never", date_never },
+ { "now", date_now },
{ NULL }
};
{ NULL }
};
-static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm *now, int *num)
+static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm *now, int *num, int *touched)
{
const struct typelen *tl;
const struct special *s;
int match = match_string(date, month_names[i]);
if (match >= 3) {
tm->tm_mon = i;
+ *touched = 1;
return end;
}
}
int len = strlen(s->name);
if (match_string(date, s->name) == len) {
s->fn(tm, now, num);
+ *touched = 1;
return end;
}
}
int len = strlen(number_name[i]);
if (match_string(date, number_name[i]) == len) {
*num = i;
+ *touched = 1;
return end;
}
}
- if (match_string(date, "last") == 4)
+ if (match_string(date, "last") == 4) {
*num = 1;
+ *touched = 1;
+ }
return end;
}
if (match_string(date, tl->type) >= len-1) {
update_tm(tm, now, tl->length * *num);
*num = 0;
+ *touched = 1;
return end;
}
tl++;
diff += 7*n;
update_tm(tm, now, diff * 24 * 60 * 60);
+ *touched = 1;
return end;
}
}
tm->tm_year--;
}
tm->tm_mon = n;
+ *touched = 1;
return end;
}
update_tm(tm, now, 0); /* fill in date fields if needed */
tm->tm_year -= *num;
*num = 0;
+ *touched = 1;
return end;
}
}
}
-static unsigned long approxidate_str(const char *date, const struct timeval *tv)
+static unsigned long approxidate_str(const char *date,
+ const struct timeval *tv,
+ int *error_ret)
{
int number = 0;
+ int touched = 0;
struct tm tm, now;
time_t time_sec;
if (isdigit(c)) {
pending_number(&tm, &number);
date = approxidate_digit(date-1, &tm, &number);
+ touched = 1;
continue;
}
if (isalpha(c))
- date = approxidate_alpha(date-1, &tm, &now, &number);
+ date = approxidate_alpha(date-1, &tm, &now, &number, &touched);
}
pending_number(&tm, &number);
+ if (!touched)
+ *error_ret = 1;
return update_tm(&tm, &now, 0);
}
unsigned long approxidate_relative(const char *date, const struct timeval *tv)
{
char buffer[50];
+ int errors = 0;
if (parse_date(date, buffer, sizeof(buffer)) > 0)
return strtoul(buffer, NULL, 0);
- return approxidate_str(date, tv);
+ return approxidate_str(date, tv, &errors);
}
-unsigned long approxidate(const char *date)
+unsigned long approxidate_careful(const char *date, int *error_ret)
{
struct timeval tv;
char buffer[50];
+ int dummy = 0;
+ if (!error_ret)
+ error_ret = &dummy;
- if (parse_date(date, buffer, sizeof(buffer)) > 0)
+ if (parse_date(date, buffer, sizeof(buffer)) > 0) {
+ *error_ret = 0;
return strtoul(buffer, NULL, 0);
+ }
gettimeofday(&tv, NULL);
- return approxidate_str(date, &tv);
+ return approxidate_str(date, &tv, error_ret);
}
continue;
}
- if ((ce_uptodate(ce) && !S_ISGITLINK(ce->ce_mode)) || ce_skip_worktree(ce))
+ if (ce_uptodate(ce) || ce_skip_worktree(ce))
continue;
/* If CE_VALID is set, don't look at workdir for file removal */
}
changed = ce_match_stat(ce, &st, ce_option);
if (S_ISGITLINK(ce->ce_mode)
+ && !DIFF_OPT_TST(&revs->diffopt, IGNORE_SUBMODULES)
&& (!changed || (revs->diffopt.output_format & DIFF_FORMAT_PATCH))
&& is_submodule_modified(ce->name)) {
changed = 1;
const unsigned char **sha1p,
unsigned int *modep,
int cached, int match_missing,
- unsigned *dirty_submodule, int output_format)
+ unsigned *dirty_submodule, struct diff_options *diffopt)
{
const unsigned char *sha1 = ce->sha1;
unsigned int mode = ce->ce_mode;
}
changed = ce_match_stat(ce, &st, 0);
if (S_ISGITLINK(ce->ce_mode)
- && (!changed || (output_format & DIFF_FORMAT_PATCH))
+ && !DIFF_OPT_TST(diffopt, IGNORE_SUBMODULES)
+ && (!changed || (diffopt->output_format & DIFF_FORMAT_PATCH))
&& is_submodule_modified(ce->name)) {
changed = 1;
*dirty_submodule = 1;
* the working copy.
*/
if (get_stat_data(new, &sha1, &mode, cached, match_missing,
- &dirty_submodule, revs->diffopt.output_format) < 0)
+ &dirty_submodule, &revs->diffopt) < 0)
return;
diff_index_show_file(revs, "+", new, sha1, mode, dirty_submodule);
unsigned dirty_submodule = 0;
if (get_stat_data(new, &sha1, &mode, cached, match_missing,
- &dirty_submodule, revs->diffopt.output_format) < 0) {
+ &dirty_submodule, &revs->diffopt) < 0) {
if (report_missing)
diff_index_show_file(revs, "-", old,
old->sha1, old->ce_mode, 0);
const char *del = diff_get_color_opt(o, DIFF_FILE_OLD);
const char *add = diff_get_color_opt(o, DIFF_FILE_NEW);
show_submodule_summary(o->file, one ? one->path : two->path,
- one->sha1, two->sha1,
+ one->sha1, two->sha1, two->dirty_submodule,
del, add, reset);
return;
}
;
else if (!prefixcmp(arg, "--output=")) {
options->file = fopen(arg + strlen("--output="), "w");
+ if (!options->file)
+ die_errno("Could not open '%s'", arg + strlen("--output="));
options->close_file = 1;
} else
return 0;
struct diff_filepair *p = q->queue[i];
/*
- * 1. Entries that come from stat info dirtyness
+ * 1. Entries that come from stat info dirtiness
* always have both sides (iow, not create/delete),
* one side of the object name is unknown, with
* the same mode and size. Keep the ones that
slash = dirs + (slash - name);
do {
*slash = '\0';
- } while (rmdir(dirs) && (slash = strrchr(dirs, '/')));
+ } while (rmdir(dirs) == 0 && (slash = strrchr(dirs, '/')));
free(dirs);
}
return 0;
struct object_entry
{
+ struct pack_idx_entry idx;
struct object_entry *next;
- uint32_t offset;
uint32_t type : TYPE_BITS,
pack_id : PACK_ID_BITS,
depth : DEPTH_BITS;
- unsigned char sha1[20];
};
struct object_entry_pool
struct last_object
{
struct strbuf data;
- uint32_t offset;
+ off_t offset;
unsigned int depth;
unsigned no_swap : 1;
};
/* Configured limits on output */
static unsigned long max_depth = 10;
-static off_t max_packsize = (1LL << 32) - 1;
+static off_t max_packsize;
+static uintmax_t big_file_threshold = 512 * 1024 * 1024;
static int force_update;
static int pack_compression_level = Z_DEFAULT_COMPRESSION;
static int pack_compression_seen;
/* The .pack file being generated */
static unsigned int pack_id;
+static struct sha1file *pack_file;
static struct packed_git *pack_data;
static struct packed_git **all_packs;
-static unsigned long pack_size;
+static off_t pack_size;
/* Table of objects we've written. */
static unsigned int object_entry_alloc = 5000;
alloc_objects(object_entry_alloc);
e = blocks->next_free++;
- hashcpy(e->sha1, sha1);
+ hashcpy(e->idx.sha1, sha1);
return e;
}
unsigned int h = sha1[0] << 8 | sha1[1];
struct object_entry *e;
for (e = object_table[h]; e; e = e->next)
- if (!hashcmp(sha1, e->sha1))
+ if (!hashcmp(sha1, e->idx.sha1))
return e;
return NULL;
}
struct object_entry *p = NULL;
while (e) {
- if (!hashcmp(sha1, e->sha1))
+ if (!hashcmp(sha1, e->idx.sha1))
return e;
p = e;
e = e->next;
e = new_object(sha1);
e->next = NULL;
- e->offset = 0;
+ e->idx.offset = 0;
if (p)
p->next = e;
else
p = xcalloc(1, sizeof(*p) + strlen(tmpfile) + 2);
strcpy(p->pack_name, tmpfile);
p->pack_fd = pack_fd;
+ pack_file = sha1fd(pack_fd, p->pack_name);
hdr.hdr_signature = htonl(PACK_SIGNATURE);
hdr.hdr_version = htonl(2);
hdr.hdr_entries = 0;
- write_or_die(p->pack_fd, &hdr, sizeof(hdr));
+ sha1write(pack_file, &hdr, sizeof(hdr));
pack_data = p;
pack_size = sizeof(hdr);
all_packs[pack_id] = p;
}
-static int oecmp (const void *a_, const void *b_)
-{
- struct object_entry *a = *((struct object_entry**)a_);
- struct object_entry *b = *((struct object_entry**)b_);
- return hashcmp(a->sha1, b->sha1);
-}
-
-static char *create_index(void)
+static const char *create_index(void)
{
- static char tmpfile[PATH_MAX];
- git_SHA_CTX ctx;
- struct sha1file *f;
- struct object_entry **idx, **c, **last, *e;
+ const char *tmpfile;
+ struct pack_idx_entry **idx, **c, **last;
+ struct object_entry *e;
struct object_entry_pool *o;
- uint32_t array[256];
- int i, idx_fd;
- /* Build the sorted table of object IDs. */
- idx = xmalloc(object_count * sizeof(struct object_entry*));
+ /* Build the table of object IDs. */
+ idx = xmalloc(object_count * sizeof(*idx));
c = idx;
for (o = blocks; o; o = o->next_pool)
for (e = o->next_free; e-- != o->entries;)
if (pack_id == e->pack_id)
- *c++ = e;
+ *c++ = &e->idx;
last = idx + object_count;
if (c != last)
die("internal consistency error creating the index");
- qsort(idx, object_count, sizeof(struct object_entry*), oecmp);
- /* Generate the fan-out array. */
- c = idx;
- for (i = 0; i < 256; i++) {
- struct object_entry **next = c;
- while (next < last) {
- if ((*next)->sha1[0] != i)
- break;
- next++;
- }
- array[i] = htonl(next - idx);
- c = next;
- }
-
- idx_fd = odb_mkstemp(tmpfile, sizeof(tmpfile),
- "pack/tmp_idx_XXXXXX");
- f = sha1fd(idx_fd, tmpfile);
- sha1write(f, array, 256 * sizeof(int));
- git_SHA1_Init(&ctx);
- for (c = idx; c != last; c++) {
- uint32_t offset = htonl((*c)->offset);
- sha1write(f, &offset, 4);
- sha1write(f, (*c)->sha1, sizeof((*c)->sha1));
- git_SHA1_Update(&ctx, (*c)->sha1, 20);
- }
- sha1write(f, pack_data->sha1, sizeof(pack_data->sha1));
- sha1close(f, NULL, CSUM_FSYNC);
+ tmpfile = write_idx_file(NULL, idx, object_count, pack_data->sha1);
free(idx);
- git_SHA1_Final(pack_data->sha1, &ctx);
return tmpfile;
}
-static char *keep_pack(char *curr_index_name)
+static char *keep_pack(const char *curr_index_name)
{
static char name[PATH_MAX];
static const char *keep_msg = "fast-import";
get_object_directory(), sha1_to_hex(pack_data->sha1));
if (move_temp_to_file(curr_index_name, name))
die("cannot store index file");
+ free((void *)curr_index_name);
return name;
}
clear_delta_base_cache();
if (object_count) {
+ unsigned char cur_pack_sha1[20];
char *idx_name;
int i;
struct branch *b;
struct tag *t;
close_pack_windows(pack_data);
+ sha1close(pack_file, cur_pack_sha1, 0);
fixup_pack_header_footer(pack_data->pack_fd, pack_data->sha1,
pack_data->pack_name, object_count,
- NULL, 0);
+ cur_pack_sha1, pack_size);
close(pack_data->pack_fd);
idx_name = keep_pack(create_index());
static size_t encode_header(
enum object_type type,
- size_t size,
+ uintmax_t size,
unsigned char *hdr)
{
int n = 1;
e = insert_object(sha1);
if (mark)
insert_mark(mark, e);
- if (e->offset) {
+ if (e->idx.offset) {
duplicate_count_by_type[type]++;
return 1;
} else if (find_sha1_pack(sha1, packed_git)) {
e->type = type;
e->pack_id = MAX_PACK_ID;
- e->offset = 1; /* just not zero! */
+ e->idx.offset = 1; /* just not zero! */
duplicate_count_by_type[type]++;
return 1;
}
- if (last && last->data.buf && last->depth < max_depth) {
+ if (last && last->data.buf && last->depth < max_depth && dat->len > 20) {
delta = diff_delta(last->data.buf, last->data.len,
dat->buf, dat->len,
- &deltalen, 0);
- if (delta && deltalen >= dat->len) {
- free(delta);
- delta = NULL;
- }
+ &deltalen, dat->len - 20);
} else
delta = NULL;
deflateEnd(&s);
/* Determine if we should auto-checkpoint. */
- if ((pack_size + 60 + s.total_out) > max_packsize
+ if ((max_packsize && (pack_size + 60 + s.total_out) > max_packsize)
|| (pack_size + 60 + s.total_out) < pack_size) {
/* This new object needs to *not* have the current pack_id. */
e->type = type;
e->pack_id = pack_id;
- e->offset = pack_size;
+ e->idx.offset = pack_size;
object_count++;
object_count_by_type[type]++;
+ crc32_begin(pack_file);
+
if (delta) {
- unsigned long ofs = e->offset - last->offset;
+ off_t ofs = e->idx.offset - last->offset;
unsigned pos = sizeof(hdr) - 1;
delta_count_by_type[type]++;
e->depth = last->depth + 1;
hdrlen = encode_header(OBJ_OFS_DELTA, deltalen, hdr);
- write_or_die(pack_data->pack_fd, hdr, hdrlen);
+ sha1write(pack_file, hdr, hdrlen);
pack_size += hdrlen;
hdr[pos] = ofs & 127;
while (ofs >>= 7)
hdr[--pos] = 128 | (--ofs & 127);
- write_or_die(pack_data->pack_fd, hdr + pos, sizeof(hdr) - pos);
+ sha1write(pack_file, hdr + pos, sizeof(hdr) - pos);
pack_size += sizeof(hdr) - pos;
} else {
e->depth = 0;
hdrlen = encode_header(type, dat->len, hdr);
- write_or_die(pack_data->pack_fd, hdr, hdrlen);
+ sha1write(pack_file, hdr, hdrlen);
pack_size += hdrlen;
}
- write_or_die(pack_data->pack_fd, out, s.total_out);
+ sha1write(pack_file, out, s.total_out);
pack_size += s.total_out;
+ e->idx.crc32 = crc32_end(pack_file);
+
free(out);
free(delta);
if (last) {
} else {
strbuf_swap(&last->data, dat);
}
- last->offset = e->offset;
+ last->offset = e->idx.offset;
last->depth = e->depth;
}
return 0;
}
+static void truncate_pack(off_t to, git_SHA_CTX *ctx)
+{
+ if (ftruncate(pack_data->pack_fd, to)
+ || lseek(pack_data->pack_fd, to, SEEK_SET) != to)
+ die_errno("cannot truncate pack to skip duplicate");
+ pack_size = to;
+
+ /* yes this is a layering violation */
+ pack_file->total = to;
+ pack_file->offset = 0;
+ pack_file->ctx = *ctx;
+}
+
+static void stream_blob(uintmax_t len, unsigned char *sha1out, uintmax_t mark)
+{
+ size_t in_sz = 64 * 1024, out_sz = 64 * 1024;
+ unsigned char *in_buf = xmalloc(in_sz);
+ unsigned char *out_buf = xmalloc(out_sz);
+ struct object_entry *e;
+ unsigned char sha1[20];
+ unsigned long hdrlen;
+ off_t offset;
+ git_SHA_CTX c;
+ git_SHA_CTX pack_file_ctx;
+ z_stream s;
+ int status = Z_OK;
+
+ /* Determine if we should auto-checkpoint. */
+ if ((max_packsize && (pack_size + 60 + len) > max_packsize)
+ || (pack_size + 60 + len) < pack_size)
+ cycle_packfile();
+
+ offset = pack_size;
+
+ /* preserve the pack_file SHA1 ctx in case we have to truncate later */
+ sha1flush(pack_file);
+ pack_file_ctx = pack_file->ctx;
+
+ hdrlen = snprintf((char *)out_buf, out_sz, "blob %" PRIuMAX, len) + 1;
+ if (out_sz <= hdrlen)
+ die("impossibly large object header");
+
+ git_SHA1_Init(&c);
+ git_SHA1_Update(&c, out_buf, hdrlen);
+
+ crc32_begin(pack_file);
+
+ memset(&s, 0, sizeof(s));
+ deflateInit(&s, pack_compression_level);
+
+ hdrlen = encode_header(OBJ_BLOB, len, out_buf);
+ if (out_sz <= hdrlen)
+ die("impossibly large object header");
+
+ s.next_out = out_buf + hdrlen;
+ s.avail_out = out_sz - hdrlen;
+
+ while (status != Z_STREAM_END) {
+ if (0 < len && !s.avail_in) {
+ size_t cnt = in_sz < len ? in_sz : (size_t)len;
+ size_t n = fread(in_buf, 1, cnt, stdin);
+ if (!n && feof(stdin))
+ die("EOF in data (%" PRIuMAX " bytes remaining)", len);
+
+ git_SHA1_Update(&c, in_buf, n);
+ s.next_in = in_buf;
+ s.avail_in = n;
+ len -= n;
+ }
+
+ status = deflate(&s, len ? 0 : Z_FINISH);
+
+ if (!s.avail_out || status == Z_STREAM_END) {
+ size_t n = s.next_out - out_buf;
+ sha1write(pack_file, out_buf, n);
+ pack_size += n;
+ s.next_out = out_buf;
+ s.avail_out = out_sz;
+ }
+
+ switch (status) {
+ case Z_OK:
+ case Z_BUF_ERROR:
+ case Z_STREAM_END:
+ continue;
+ default:
+ die("unexpected deflate failure: %d", status);
+ }
+ }
+ deflateEnd(&s);
+ git_SHA1_Final(sha1, &c);
+
+ if (sha1out)
+ hashcpy(sha1out, sha1);
+
+ e = insert_object(sha1);
+
+ if (mark)
+ insert_mark(mark, e);
+
+ if (e->idx.offset) {
+ duplicate_count_by_type[OBJ_BLOB]++;
+ truncate_pack(offset, &pack_file_ctx);
+
+ } else if (find_sha1_pack(sha1, packed_git)) {
+ e->type = OBJ_BLOB;
+ e->pack_id = MAX_PACK_ID;
+ e->idx.offset = 1; /* just not zero! */
+ duplicate_count_by_type[OBJ_BLOB]++;
+ truncate_pack(offset, &pack_file_ctx);
+
+ } else {
+ e->depth = 0;
+ e->type = OBJ_BLOB;
+ e->pack_id = pack_id;
+ e->idx.offset = offset;
+ e->idx.crc32 = crc32_end(pack_file);
+ object_count++;
+ object_count_by_type[OBJ_BLOB]++;
+ }
+
+ free(in_buf);
+ free(out_buf);
+}
+
/* All calls must be guarded by find_object() or find_mark() to
* ensure the 'struct object_entry' passed was written by this
* process instance. We unpack the entry by the offset, avoiding
* the newly written data.
*/
close_pack_windows(p);
+ sha1flush(pack_file);
/* We have to offer 20 bytes additional on the end of
* the packfile as the core unpacker code assumes the
*/
p->pack_size = pack_size + 20;
}
- return unpack_entry(p, oe->offset, &type, sizep);
+ return unpack_entry(p, oe->idx.offset, &type, sizep);
}
static const char *get_mode(const char *str, uint16_t *modep)
if (S_ISDIR(root->versions[0].mode) && le && le->pack_id == pack_id) {
mktree(t, 0, &old_tree);
lo.data = old_tree;
- lo.offset = le->offset;
+ lo.offset = le->idx.offset;
lo.depth = t->delta_depth;
}
for (k = 0; k < 1024; k++) {
if (m->data.marked[k])
fprintf(f, ":%" PRIuMAX " %s\n", base + k,
- sha1_to_hex(m->data.marked[k]->sha1));
+ sha1_to_hex(m->data.marked[k]->idx.sha1));
}
}
}
e = insert_object(sha1);
e->type = type;
e->pack_id = MAX_PACK_ID;
- e->offset = 1; /* just not zero! */
+ e->idx.offset = 1; /* just not zero! */
}
insert_mark(mark, e);
}
next_mark = 0;
}
-static void parse_data(struct strbuf *sb)
+static int parse_data(struct strbuf *sb, uintmax_t limit, uintmax_t *len_res)
{
strbuf_reset(sb);
free(term);
}
else {
- size_t n = 0, length;
+ uintmax_t len = strtoumax(command_buf.buf + 5, NULL, 10);
+ size_t n = 0, length = (size_t)len;
- length = strtoul(command_buf.buf + 5, NULL, 10);
+ if (limit && limit < len) {
+ *len_res = len;
+ return 0;
+ }
+ if (length < len)
+ die("data is too large to use in this context");
while (n < length) {
size_t s = strbuf_fread(sb, length - n, stdin);
}
skip_optional_lf();
+ return 1;
}
static int validate_raw_date(const char *src, char *result, int maxlen)
return ident;
}
-static void parse_new_blob(void)
+static void parse_and_store_blob(
+ struct last_object *last,
+ unsigned char *sha1out,
+ uintmax_t mark)
{
static struct strbuf buf = STRBUF_INIT;
+ uintmax_t len;
+
+ if (parse_data(&buf, big_file_threshold, &len))
+ store_object(OBJ_BLOB, &buf, last, sha1out, mark);
+ else {
+ if (last) {
+ strbuf_release(&last->data);
+ last->offset = 0;
+ last->depth = 0;
+ }
+ stream_blob(len, sha1out, mark);
+ skip_optional_lf();
+ }
+}
+static void parse_new_blob(void)
+{
read_next_command();
parse_mark();
- parse_data(&buf);
- store_object(OBJ_BLOB, &buf, &last_blob, NULL, next_mark);
+ parse_and_store_blob(&last_blob, NULL, next_mark);
}
static void unload_one_branch(void)
if (*p == ':') {
char *x;
oe = find_mark(strtoumax(p + 1, &x, 10));
- hashcpy(sha1, oe->sha1);
+ hashcpy(sha1, oe->idx.sha1);
p = x;
} else if (!prefixcmp(p, "inline")) {
inline_data = 1;
* another repository.
*/
} else if (inline_data) {
- static struct strbuf buf = STRBUF_INIT;
-
if (p != uq.buf) {
strbuf_addstr(&uq, p);
p = uq.buf;
}
read_next_command();
- parse_data(&buf);
- store_object(OBJ_BLOB, &buf, &last_blob, sha1, 0);
+ parse_and_store_blob(&last_blob, sha1, 0);
} else if (oe) {
if (oe->type != OBJ_BLOB)
die("Not a blob (actually a %s): %s",
if (*p == ':') {
char *x;
oe = find_mark(strtoumax(p + 1, &x, 10));
- hashcpy(sha1, oe->sha1);
+ hashcpy(sha1, oe->idx.sha1);
p = x;
} else if (!prefixcmp(p, "inline")) {
inline_data = 1;
struct object_entry *commit_oe = find_mark(commit_mark);
if (commit_oe->type != OBJ_COMMIT)
die("Mark :%" PRIuMAX " not a commit", commit_mark);
- hashcpy(commit_sha1, commit_oe->sha1);
+ hashcpy(commit_sha1, commit_oe->idx.sha1);
} else if (!get_sha1(p, commit_sha1)) {
unsigned long size;
char *buf = read_object_with_reference(commit_sha1,
die("Invalid ref name or SHA1 expression: %s", p);
if (inline_data) {
- static struct strbuf buf = STRBUF_INIT;
-
if (p != uq.buf) {
strbuf_addstr(&uq, p);
p = uq.buf;
}
read_next_command();
- parse_data(&buf);
- store_object(OBJ_BLOB, &buf, &last_blob, sha1, 0);
+ parse_and_store_blob(&last_blob, sha1, 0);
} else if (oe) {
if (oe->type != OBJ_BLOB)
die("Not a blob (actually a %s): %s",
struct object_entry *oe = find_mark(idnum);
if (oe->type != OBJ_COMMIT)
die("Mark :%" PRIuMAX " not a commit", idnum);
- hashcpy(b->sha1, oe->sha1);
+ hashcpy(b->sha1, oe->idx.sha1);
if (oe->pack_id != MAX_PACK_ID) {
unsigned long size;
char *buf = gfi_unpack_entry(oe, &size);
struct object_entry *oe = find_mark(idnum);
if (oe->type != OBJ_COMMIT)
die("Mark :%" PRIuMAX " not a commit", idnum);
- hashcpy(n->sha1, oe->sha1);
+ hashcpy(n->sha1, oe->idx.sha1);
} else if (!get_sha1(from, n->sha1)) {
unsigned long size;
char *buf = read_object_with_reference(n->sha1,
}
if (!committer)
die("Expected committer but didn't get one");
- parse_data(&msg);
+ parse_data(&msg, 0, NULL);
read_next_command();
parse_from(b);
merge_list = parse_merge(&merge_count);
from_mark = strtoumax(from + 1, NULL, 10);
oe = find_mark(from_mark);
type = oe->type;
- hashcpy(sha1, oe->sha1);
+ hashcpy(sha1, oe->idx.sha1);
} else if (!get_sha1(from, sha1)) {
unsigned long size;
char *buf;
tagger = NULL;
/* tag payload/message */
- parse_data(&msg);
+ parse_data(&msg, 0, NULL);
/* build the tag object */
strbuf_reset(&new_data);
die("unknown --date-format argument %s", fmt);
}
-static void option_max_pack_size(const char *packsize)
-{
- max_packsize = strtoumax(packsize, NULL, 0) * 1024 * 1024;
-}
-
static void option_depth(const char *depth)
{
max_depth = strtoul(depth, NULL, 0);
static int parse_one_option(const char *option)
{
if (!prefixcmp(option, "max-pack-size=")) {
- option_max_pack_size(option + 14);
+ unsigned long v;
+ if (!git_parse_ulong(option + 14, &v))
+ return 0;
+ if (v < 8192) {
+ warning("max-pack-size is now in bytes, assuming --max-pack-size=%lum", v);
+ v *= 1024 * 1024;
+ } else if (v < 1024 * 1024) {
+ warning("minimum max-pack-size is 1 MiB");
+ v = 1024 * 1024;
+ }
+ max_packsize = v;
+ } else if (!prefixcmp(option, "big-file-threshold=")) {
+ unsigned long v;
+ if (!git_parse_ulong(option + 19, &v))
+ return 0;
+ big_file_threshold = v;
} else if (!prefixcmp(option, "depth=")) {
option_depth(option + 6);
} else if (!prefixcmp(option, "active-branches=")) {
pack_compression_seen = 1;
return 0;
}
+ if (!strcmp(k, "pack.indexversion")) {
+ pack_idx_default_version = git_config_int(k, v);
+ if (pack_idx_default_version > 2)
+ die("bad pack.indexversion=%"PRIu32,
+ pack_idx_default_version);
+ return 0;
+ }
+ if (!strcmp(k, "pack.packsizelimit")) {
+ max_packsize = git_config_ulong(k, v);
+ return 0;
+ }
+ if (!strcmp(k, "core.bigfilethreshold")) {
+ long n = git_config_int(k, v);
+ big_file_threshold = 0 < n ? n : 0;
+ }
return git_default_config(k, v, cb);
}
static const char fast_import_usage[] =
-"git fast-import [--date-format=f] [--max-pack-size=n] [--depth=n] [--active-branches=n] [--export-marks=marks.file]";
+"git fast-import [--date-format=f] [--max-pack-size=n] [--big-file-threshold=n] [--depth=n] [--active-branches=n] [--export-marks=marks.file]";
static void parse_argv(void)
{
patch-format= format the patch(es) are in
reject pass it through git-apply
resolvemsg= override error message when patch failure occurs
-r,resolved to be used after a patch failure
+continue continue applying patches after resolving a conflict
+r,resolved synonyms for --continue
skip skip the current patch
abort restore the original branch and abort the patching operation.
committer-date-is-author-date lie about committer date
# discarding the indented remainder of folded lines,
# and see if it looks like that they all begin with the
# header field names...
- sed -n -e '/^$/q' -e '/^[ ]/d' -e p "$1" |
+ tr -d '\015' <"$1" |
+ sed -n -e '/^$/q' -e '/^[ ]/d' -e p |
sane_egrep -v '^[!-9;-~]+:' >/dev/null ||
patch_format=mbox
fi
scissors=t ;;
--no-scissors)
scissors=f ;;
- -r|--resolved)
+ -r|--resolved|--continue)
resolved=t ;;
--skip)
skip=t ;;
extern char *xstrdup(const char *str);
extern void *xmalloc(size_t size);
+extern void *xmallocz(size_t size);
extern void *xmemdupz(const void *data, size_t len);
extern char *xstrndup(const char *str, size_t len);
extern void *xrealloc(void *ptr, size_t size);
$state->{localdir} = $data;
$state->{repository} = $repository;
$state->{path} = $repository;
- $state->{path} =~ s/^$state->{CVSROOT}\///;
+ $state->{path} =~ s/^\Q$state->{CVSROOT}\E\///;
$state->{module} = $1 if ($state->{path} =~ s/^(.*?)(\/|$)//);
$state->{path} .= "/" if ( $state->{path} =~ /\S/ );
,*)
;;
*)
- die "Cannot set --prune-empty and --filter-commit at the same time"
+ die "Cannot set --prune-empty and --commit-filter at the same time"
esac
case "$force" in
die "tree filter failed: $filter_tree"
(
- git diff-index -r --name-only $commit &&
+ git diff-index -r --name-only --ignore-submodules $commit &&
git ls-files --others
) > "$tempdir"/tree-state || exit
git update-index --add --replace --remove --stdin \
"$new_sha1" "$new_ref"
git cat-file tag "$ref" |
sed -n \
- -e "1,/^$/{
+ -e '1,/^$/{
/^object /d
/^type /d
/^tag /d
- }" \
+ }' \
-e '/^-----BEGIN PGP SIGNATURE-----/q' \
-e 'p' ) |
git mktag) ||
set _appname {Git Gui}
set _gitdir {}
+set _gitworktree {}
+set _isbare {}
set _gitexec {}
set _githtmldir {}
set _reponame {}
}
}
+proc is_bare {} {
+ global _isbare
+ global _gitdir
+ global _gitworktree
+
+ if {$_isbare eq {}} {
+ if {[catch {
+ set _bare [git rev-parse --is-bare-repository]
+ switch -- $_bare {
+ true { set _isbare 1 }
+ false { set _isbare 0}
+ default { throw }
+ }
+ }]} {
+ if {[is_config_true core.bare]
+ || ($_gitworktree eq {}
+ && [lindex [file split $_gitdir] end] ne {.git})} {
+ set _isbare 1
+ } else {
+ set _isbare 0
+ }
+ }
+ }
+ return $_isbare
+}
+
######################################################################
##
## handy utils
## config defaults
set cursor_ptr arrow
-font create font_diff -family Courier -size 10
font create font_ui
-catch {
- label .dummy
- eval font configure font_ui [font actual [.dummy cget -font]]
- destroy .dummy
+if {[lsearch -exact [font names] TkDefaultFont] != -1} {
+ eval [linsert [font actual TkDefaultFont] 0 font configure font_ui]
+ eval [linsert [font actual TkFixedFont] 0 font create font_diff]
+} else {
+ font create font_diff -family Courier -size 10
+ catch {
+ label .dummy
+ eval font configure font_ui [font actual [.dummy cget -font]]
+ destroy .dummy
+ }
}
font create font_uiitalic
}
if {![is_MacOSX]} {
option add *Menu.font font_ui
+ option add *Entry.borderWidth 1 startupFile
+ option add *Entry.relief sunken startupFile
+ option add *RadioButton.anchor w startupFile
}
unset class
font configure ${font}bold -weight bold
font configure ${font}italic -slant italic
}
+
+ global use_ttk NS
+ set use_ttk 0
+ set NS {}
+ if {$repo_config(gui.usettk)} {
+ set use_ttk [package vsatisfies [package provide Tk] 8.5]
+ if {$use_ttk} {
+ set NS ttk
+ bind [winfo class .] <<ThemeChanged>> [list InitTheme]
+ pave_toplevel .
+ }
+ }
}
set default_config(branch.autosetupmerge) true
set default_config(gui.fontdiff) [font configure font_diff]
# TODO: this option should be added to the git-config documentation
set default_config(gui.maxfilesdisplayed) 5000
+set default_config(gui.usettk) 1
set font_descs {
{fontui font_ui {mc "Main Font"}}
{fontdiff font_diff {mc "Diff/Console Font"}}
error_popup [strcat [mc "Git directory not found:"] "\n\n$_gitdir"]
exit 1
}
+# _gitdir exists, so try loading the config
+load_config 0
+apply_config
+# try to set work tree from environment, falling back to core.worktree
+if {[catch { set _gitworktree $env(GIT_WORK_TREE) }]} {
+ set _gitworktree [get_config core.worktree]
+}
if {$_prefix ne {}} {
- regsub -all {[^/]+/} $_prefix ../ cdup
+ if {$_gitworktree eq {}} {
+ regsub -all {[^/]+/} $_prefix ../ cdup
+ } else {
+ set cdup $_gitworktree
+ }
if {[catch {cd $cdup} err]} {
catch {wm withdraw .}
error_popup [strcat [mc "Cannot move to top of working directory:"] "\n\n$err"]
exit 1
}
+ set _gitworktree [pwd]
unset cdup
} elseif {![is_enabled bare]} {
- if {[lindex [file split $_gitdir] end] ne {.git}} {
+ if {[is_bare]} {
catch {wm withdraw .}
- error_popup [strcat [mc "Cannot use funny .git directory:"] "\n\n$_gitdir"]
+ error_popup [strcat [mc "Cannot use bare repository:"] "\n\n$_gitdir"]
exit 1
}
- if {[catch {cd [file dirname $_gitdir]} err]} {
+ if {$_gitworktree eq {}} {
+ set _gitworktree [file dirname $_gitdir]
+ }
+ if {[catch {cd $_gitworktree} err]} {
catch {wm withdraw .}
- error_popup [strcat [mc "No working directory"] " [file dirname $_gitdir]:\n\n$err"]
+ error_popup [strcat [mc "No working directory"] " $_gitworktree:\n\n$err"]
exit 1
}
+ set _gitworktree [pwd]
}
set _reponame [file split [file normalize $_gitdir]]
if {[lindex $_reponame end] eq {.git}} {
set _reponame [lindex $_reponame end]
}
+set env(GIT_DIR) $_gitdir
+set env(GIT_WORK_TREE) $_gitworktree
+
######################################################################
##
## global init
0x62, 0x10, 0x02, 0x10, 0xfe, 0x1f};
} -maskdata $filemask
-image create bitmap file_parttick -background white -foreground "#005050" -data {
-#define parttick_width 14
-#define parttick_height 15
-static unsigned char parttick_bits[] = {
- 0xfe, 0x01, 0x02, 0x03, 0x7a, 0x05, 0x02, 0x09, 0x7a, 0x1f, 0x02, 0x10,
- 0x7a, 0x14, 0x02, 0x16, 0x02, 0x13, 0x8a, 0x11, 0xda, 0x10, 0x72, 0x10,
- 0x22, 0x10, 0x02, 0x10, 0xfe, 0x1f};
-} -maskdata $filemask
-
image create bitmap file_question -background white -foreground black -data {
#define file_question_width 14
#define file_question_height 15
set ui_workdir .vpane.files.workdir.list
set all_icons(_$ui_index) file_plain
-set all_icons(A$ui_index) file_fulltick
+set all_icons(A$ui_index) file_plain
set all_icons(M$ui_index) file_fulltick
set all_icons(D$ui_index) file_removed
set all_icons(U$ui_index) file_merge
set starting_gitk_msg [mc "Starting gitk... please wait..."]
-proc do_gitk {revs} {
+proc do_gitk {revs {is_submodule false}} {
+ global current_diff_path file_states current_diff_side ui_index
+ global _gitdir _gitworktree
+
# -- Always start gitk through whatever we were loaded with. This
# lets us bypass using shell process on Windows systems.
#
} else {
global env
- if {[info exists env(GIT_DIR)]} {
- set old_GIT_DIR $env(GIT_DIR)
+ set pwd [pwd]
+
+ if {!$is_submodule} {
+ if {![is_bare]} {
+ cd $_gitworktree
+ }
} else {
- set old_GIT_DIR {}
+ cd $current_diff_path
+ if {$revs eq {--}} {
+ set s $file_states($current_diff_path)
+ set old_sha1 {}
+ set new_sha1 {}
+ switch -glob -- [lindex $s 0] {
+ M_ { set old_sha1 [lindex [lindex $s 2] 1] }
+ _M { set old_sha1 [lindex [lindex $s 3] 1] }
+ MM {
+ if {$current_diff_side eq $ui_index} {
+ set old_sha1 [lindex [lindex $s 2] 1]
+ set new_sha1 [lindex [lindex $s 3] 1]
+ } else {
+ set old_sha1 [lindex [lindex $s 3] 1]
+ }
+ }
+ }
+ set revs $old_sha1...$new_sha1
+ }
+ # GIT_DIR and GIT_WORK_TREE for the submodule are not the ones
+ # we've been using for the main repository, so unset them.
+ # TODO we could make life easier (start up faster?) for gitk
+ # by setting these to the appropriate values to allow gitk
+ # to skip the heuristics to find their proper value
+ unset env(GIT_DIR)
+ unset env(GIT_WORK_TREE)
+ }
+ eval exec $cmd $revs "--" "--" &
+
+ set env(GIT_DIR) $_gitdir
+ set env(GIT_WORK_TREE) $_gitworktree
+ cd $pwd
+
+ ui_status $::starting_gitk_msg
+ after 10000 {
+ ui_ready $starting_gitk_msg
}
+ }
+}
+
+proc do_git_gui {} {
+ global current_diff_path
+
+ # -- Always start git gui through whatever we were loaded with. This
+ # lets us bypass using shell process on Windows systems.
+ #
+ set exe [list [_which git]]
+ if {$exe eq {}} {
+ error_popup [mc "Couldn't find git gui in PATH"]
+ } else {
+ global env
+ global _gitdir _gitworktree
+
+ # see note in do_gitk about unsetting these vars when
+ # running tools in a submodule
+ unset env(GIT_DIR)
+ unset env(GIT_WORK_TREE)
set pwd [pwd]
- cd [file dirname [gitdir]]
- set env(GIT_DIR) [file tail [gitdir]]
+ cd $current_diff_path
- eval exec $cmd $revs "--" "--" &
+ eval exec $exe gui &
- if {$old_GIT_DIR eq {}} {
- unset env(GIT_DIR)
- } else {
- set env(GIT_DIR) $old_GIT_DIR
- }
+ set env(GIT_DIR) $_gitdir
+ set env(GIT_WORK_TREE) $_gitworktree
cd $pwd
ui_status $::starting_gitk_msg
}
proc do_explore {} {
+ global _gitworktree
set explorer {}
if {[is_Cygwin] || [is_Windows]} {
set explorer "explorer.exe"
# freedesktop.org-conforming system is our best shot
set explorer "xdg-open"
}
- eval exec $explorer [list [file nativename [file dirname [gitdir]]]] &
+ eval exec $explorer $_gitworktree &
}
set is_quitting 0
global ui_comm is_quitting repo_config commit_type
global GITGUI_BCK_exists GITGUI_BCK_i
global ui_comm_spell
- global ret_code
+ global ret_code use_ttk
if {$is_quitting} return
set is_quitting 1
}
set cfg_geometry [list]
lappend cfg_geometry [wm geometry .]
- lappend cfg_geometry [lindex [.vpane sash coord 0] 0]
- lappend cfg_geometry [lindex [.vpane.files sash coord 0] 1]
+ if {$use_ttk} {
+ lappend cfg_geometry [.vpane sashpos 0]
+ lappend cfg_geometry [.vpane.files sashpos 0]
+ } else {
+ lappend cfg_geometry [lindex [.vpane sash coord 0] 0]
+ lappend cfg_geometry [lindex [.vpane.files sash coord 0] 1]
+ }
if {[catch {set rc_geometry $repo_config(gui.geometry)}]} {
set rc_geometry {}
}
##
## ui construction
-load_config 0
-apply_config
set ui_comm {}
# -- Menu Bar
#
menu .mbar.repository
-.mbar.repository add command \
- -label [mc "Explore Working Copy"] \
- -command {do_explore}
-.mbar.repository add separator
+if {![is_bare]} {
+ .mbar.repository add command \
+ -label [mc "Explore Working Copy"] \
+ -command {do_explore}
+ .mbar.repository add separator
+}
.mbar.repository add command \
-label [mc "Browse Current Branch's Files"] \
# -- Branch Control
#
-frame .branch \
- -borderwidth 1 \
- -relief sunken
-label .branch.l1 \
+${NS}::frame .branch
+if {!$use_ttk} {.branch configure -borderwidth 1 -relief sunken}
+${NS}::label .branch.l1 \
-text [mc "Current Branch:"] \
-anchor w \
-justify left
-label .branch.cb \
+${NS}::label .branch.cb \
-textvariable current_branch \
-anchor w \
-justify left
# -- Main Window Layout
#
-panedwindow .vpane -orient horizontal
-panedwindow .vpane.files -orient vertical
-.vpane add .vpane.files -sticky nsew -height 100 -width 200
+${NS}::panedwindow .vpane -orient horizontal
+${NS}::panedwindow .vpane.files -orient vertical
+if {$use_ttk} {
+ .vpane add .vpane.files
+} else {
+ .vpane add .vpane.files -sticky nsew -height 100 -width 200
+}
pack .vpane -anchor n -side top -fill both -expand 1
# -- Index File List
#
-frame .vpane.files.index -height 100 -width 200
-label .vpane.files.index.title -text [mc "Staged Changes (Will Commit)"] \
+${NS}::frame .vpane.files.index -height 100 -width 200
+tlabel .vpane.files.index.title \
+ -text [mc "Staged Changes (Will Commit)"] \
-background lightgreen -foreground black
text $ui_index -background white -foreground black \
-borderwidth 0 \
-xscrollcommand {.vpane.files.index.sx set} \
-yscrollcommand {.vpane.files.index.sy set} \
-state disabled
-scrollbar .vpane.files.index.sx -orient h -command [list $ui_index xview]
-scrollbar .vpane.files.index.sy -orient v -command [list $ui_index yview]
+${NS}::scrollbar .vpane.files.index.sx -orient h -command [list $ui_index xview]
+${NS}::scrollbar .vpane.files.index.sy -orient v -command [list $ui_index yview]
pack .vpane.files.index.title -side top -fill x
pack .vpane.files.index.sx -side bottom -fill x
pack .vpane.files.index.sy -side right -fill y
# -- Working Directory File List
#
-frame .vpane.files.workdir -height 100 -width 200
-label .vpane.files.workdir.title -text [mc "Unstaged Changes"] \
+${NS}::frame .vpane.files.workdir -height 100 -width 200
+tlabel .vpane.files.workdir.title -text [mc "Unstaged Changes"] \
-background lightsalmon -foreground black
text $ui_workdir -background white -foreground black \
-borderwidth 0 \
-xscrollcommand {.vpane.files.workdir.sx set} \
-yscrollcommand {.vpane.files.workdir.sy set} \
-state disabled
-scrollbar .vpane.files.workdir.sx -orient h -command [list $ui_workdir xview]
-scrollbar .vpane.files.workdir.sy -orient v -command [list $ui_workdir yview]
+${NS}::scrollbar .vpane.files.workdir.sx -orient h -command [list $ui_workdir xview]
+${NS}::scrollbar .vpane.files.workdir.sy -orient v -command [list $ui_workdir yview]
pack .vpane.files.workdir.title -side top -fill x
pack .vpane.files.workdir.sx -side bottom -fill x
pack .vpane.files.workdir.sy -side right -fill y
pack $ui_workdir -side left -fill both -expand 1
-.vpane.files add .vpane.files.workdir -sticky nsew
-.vpane.files add .vpane.files.index -sticky nsew
+.vpane.files add .vpane.files.workdir
+.vpane.files add .vpane.files.index
+if {!$use_ttk} {
+ .vpane.files paneconfigure .vpane.files.workdir -sticky news
+ .vpane.files paneconfigure .vpane.files.index -sticky news
+}
foreach i [list $ui_index $ui_workdir] {
rmsel_tag $i
# -- Diff and Commit Area
#
-frame .vpane.lower -height 300 -width 400
-frame .vpane.lower.commarea
-frame .vpane.lower.diff -relief sunken -borderwidth 1
+${NS}::frame .vpane.lower -height 300 -width 400
+${NS}::frame .vpane.lower.commarea
+${NS}::frame .vpane.lower.diff -relief sunken -borderwidth 1
pack .vpane.lower.diff -fill both -expand 1
pack .vpane.lower.commarea -side bottom -fill x
-.vpane add .vpane.lower -sticky nsew
+.vpane add .vpane.lower
+if {!$use_ttk} {.vpane paneconfigure .vpane.lower -sticky nsew}
# -- Commit Area Buttons
#
-frame .vpane.lower.commarea.buttons
-label .vpane.lower.commarea.buttons.l -text {} \
+${NS}::frame .vpane.lower.commarea.buttons
+${NS}::label .vpane.lower.commarea.buttons.l -text {} \
-anchor w \
-justify left
pack .vpane.lower.commarea.buttons.l -side top -fill x
pack .vpane.lower.commarea.buttons -side left -fill y
-button .vpane.lower.commarea.buttons.rescan -text [mc Rescan] \
+${NS}::button .vpane.lower.commarea.buttons.rescan -text [mc Rescan] \
-command ui_do_rescan
pack .vpane.lower.commarea.buttons.rescan -side top -fill x
lappend disable_on_lock \
{.vpane.lower.commarea.buttons.rescan conf -state}
-button .vpane.lower.commarea.buttons.incall -text [mc "Stage Changed"] \
+${NS}::button .vpane.lower.commarea.buttons.incall -text [mc "Stage Changed"] \
-command do_add_all
pack .vpane.lower.commarea.buttons.incall -side top -fill x
lappend disable_on_lock \
{.vpane.lower.commarea.buttons.incall conf -state}
if {![is_enabled nocommitmsg]} {
- button .vpane.lower.commarea.buttons.signoff -text [mc "Sign Off"] \
+ ${NS}::button .vpane.lower.commarea.buttons.signoff -text [mc "Sign Off"] \
-command do_signoff
pack .vpane.lower.commarea.buttons.signoff -side top -fill x
}
-button .vpane.lower.commarea.buttons.commit -text [commit_btn_caption] \
+${NS}::button .vpane.lower.commarea.buttons.commit -text [commit_btn_caption] \
-command do_commit
pack .vpane.lower.commarea.buttons.commit -side top -fill x
lappend disable_on_lock \
{.vpane.lower.commarea.buttons.commit conf -state}
if {![is_enabled nocommit]} {
- button .vpane.lower.commarea.buttons.push -text [mc Push] \
+ ${NS}::button .vpane.lower.commarea.buttons.push -text [mc Push] \
-command do_push_anywhere
pack .vpane.lower.commarea.buttons.push -side top -fill x
}
# -- Commit Message Buffer
#
-frame .vpane.lower.commarea.buffer
-frame .vpane.lower.commarea.buffer.header
+${NS}::frame .vpane.lower.commarea.buffer
+${NS}::frame .vpane.lower.commarea.buffer.header
set ui_comm .vpane.lower.commarea.buffer.t
set ui_coml .vpane.lower.commarea.buffer.header.l
if {![is_enabled nocommit]} {
- radiobutton .vpane.lower.commarea.buffer.header.new \
+ ${NS}::radiobutton .vpane.lower.commarea.buffer.header.new \
-text [mc "New Commit"] \
-command do_select_commit_type \
-variable selected_commit_type \
-value new
lappend disable_on_lock \
[list .vpane.lower.commarea.buffer.header.new conf -state]
- radiobutton .vpane.lower.commarea.buffer.header.amend \
+ ${NS}::radiobutton .vpane.lower.commarea.buffer.header.amend \
-text [mc "Amend Last Commit"] \
-command do_select_commit_type \
-variable selected_commit_type \
[list .vpane.lower.commarea.buffer.header.amend conf -state]
}
-label $ui_coml \
+${NS}::label $ui_coml \
-anchor w \
-justify left
proc trace_commit_type {varname args} {
-width $repo_config(gui.commitmsgwidth) -height 9 -wrap none \
-font font_diff \
-yscrollcommand {.vpane.lower.commarea.buffer.sby set}
-scrollbar .vpane.lower.commarea.buffer.sby \
+${NS}::scrollbar .vpane.lower.commarea.buffer.sby \
-command [list $ui_comm yview]
pack .vpane.lower.commarea.buffer.header -side top -fill x
pack .vpane.lower.commarea.buffer.sby -side right -fill y
}
trace add variable current_diff_path write trace_current_diff_path
-frame .vpane.lower.diff.header -background gold
-label .vpane.lower.diff.header.status \
+gold_frame .vpane.lower.diff.header
+tlabel .vpane.lower.diff.header.status \
-background gold \
-foreground black \
-width $max_status_desc \
-anchor w \
-justify left
-label .vpane.lower.diff.header.file \
+tlabel .vpane.lower.diff.header.file \
-background gold \
-foreground black \
-anchor w \
-justify left
-label .vpane.lower.diff.header.path \
+tlabel .vpane.lower.diff.header.path \
-background gold \
-foreground black \
-anchor w \
# -- Diff Body
#
-frame .vpane.lower.diff.body
+${NS}::frame .vpane.lower.diff.body
set ui_diff .vpane.lower.diff.body.t
text $ui_diff -background white -foreground black \
-borderwidth 0 \
-xscrollcommand {.vpane.lower.diff.body.sbx set} \
-yscrollcommand {.vpane.lower.diff.body.sby set} \
-state disabled
-scrollbar .vpane.lower.diff.body.sbx -orient horizontal \
+${NS}::scrollbar .vpane.lower.diff.body.sbx -orient horizontal \
-command [list $ui_diff xview]
-scrollbar .vpane.lower.diff.body.sby -orient vertical \
+${NS}::scrollbar .vpane.lower.diff.body.sby -orient vertical \
-command [list $ui_diff yview]
pack .vpane.lower.diff.body.sbx -side bottom -fill x
pack .vpane.lower.diff.body.sby -side right -fill y
#
proc create_common_diff_popup {ctxm} {
- $ctxm add command \
- -label [mc "Show Less Context"] \
- -command show_less_context
- lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
- $ctxm add command \
- -label [mc "Show More Context"] \
- -command show_more_context
- lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
- $ctxm add separator
$ctxm add command \
-label [mc Refresh] \
-command reshow_diff
lappend diff_actions [list $ctxm entryconf $ui_diff_applyhunk -state]
$ctxm add command \
-label [mc "Apply/Reverse Line"] \
- -command {apply_line $cursorX $cursorY; do_rescan}
+ -command {apply_range_or_line $cursorX $cursorY; do_rescan}
set ui_diff_applyline [$ctxm index last]
lappend diff_actions [list $ctxm entryconf $ui_diff_applyline -state]
$ctxm add separator
+$ctxm add command \
+ -label [mc "Show Less Context"] \
+ -command show_less_context
+lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
+$ctxm add command \
+ -label [mc "Show More Context"] \
+ -command show_more_context
+lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
+$ctxm add separator
create_common_diff_popup $ctxm
set ctxmmg .vpane.lower.diff.body.ctxmmg
-command {merge_resolve_one 1}
lappend diff_actions [list $ctxmmg entryconf [$ctxmmg index last] -state]
$ctxmmg add separator
+$ctxmmg add command \
+ -label [mc "Show Less Context"] \
+ -command show_less_context
+lappend diff_actions [list $ctxmmg entryconf [$ctxmmg index last] -state]
+$ctxmmg add command \
+ -label [mc "Show More Context"] \
+ -command show_more_context
+lappend diff_actions [list $ctxmmg entryconf [$ctxmmg index last] -state]
+$ctxmmg add separator
create_common_diff_popup $ctxmmg
-proc popup_diff_menu {ctxm ctxmmg x y X Y} {
+set ctxmsm .vpane.lower.diff.body.ctxmsm
+menu $ctxmsm -tearoff 0
+$ctxmsm add command \
+ -label [mc "Visualize These Changes In The Submodule"] \
+ -command {do_gitk -- true}
+lappend diff_actions [list $ctxmsm entryconf [$ctxmsm index last] -state]
+$ctxmsm add command \
+ -label [mc "Visualize Current Branch History In The Submodule"] \
+ -command {do_gitk {} true}
+lappend diff_actions [list $ctxmsm entryconf [$ctxmsm index last] -state]
+$ctxmsm add command \
+ -label [mc "Visualize All Branch History In The Submodule"] \
+ -command {do_gitk --all true}
+lappend diff_actions [list $ctxmsm entryconf [$ctxmsm index last] -state]
+$ctxmsm add separator
+$ctxmsm add command \
+ -label [mc "Start git gui In The Submodule"] \
+ -command {do_git_gui}
+lappend diff_actions [list $ctxmsm entryconf [$ctxmsm index last] -state]
+$ctxmsm add separator
+create_common_diff_popup $ctxmsm
+
+proc popup_diff_menu {ctxm ctxmmg ctxmsm x y X Y} {
global current_diff_path file_states
set ::cursorX $x
set ::cursorY $y
}
if {[string first {U} $state] >= 0} {
tk_popup $ctxmmg $X $Y
+ } elseif {$::is_submodule_diff} {
+ tk_popup $ctxmsm $X $Y
} else {
+ set has_range [expr {[$::ui_diff tag nextrange sel 0.0] != {}}]
if {$::ui_index eq $::current_diff_side} {
set l [mc "Unstage Hunk From Commit"]
- set t [mc "Unstage Line From Commit"]
+ if {$has_range} {
+ set t [mc "Unstage Lines From Commit"]
+ } else {
+ set t [mc "Unstage Line From Commit"]
+ }
} else {
set l [mc "Stage Hunk For Commit"]
- set t [mc "Stage Line For Commit"]
+ if {$has_range} {
+ set t [mc "Stage Lines For Commit"]
+ } else {
+ set t [mc "Stage Line For Commit"]
+ }
}
- if {$::is_3way_diff || $::is_submodule_diff
+ if {$::is_3way_diff
|| $current_diff_path eq {}
|| {__} eq $state
|| {_O} eq $state
tk_popup $ctxm $X $Y
}
}
-bind_button3 $ui_diff [list popup_diff_menu $ctxm $ctxmmg %x %y %X %Y]
+bind_button3 $ui_diff [list popup_diff_menu $ctxm $ctxmmg $ctxmsm %x %y %X %Y]
# -- Status Bar
#
catch {
set gm $repo_config(gui.geometry)
wm geometry . [lindex $gm 0]
-.vpane sash place 0 \
- [lindex $gm 1] \
- [lindex [.vpane sash coord 0] 1]
-.vpane.files sash place 0 \
- [lindex [.vpane.files sash coord 0] 0] \
- [lindex $gm 2]
+if {$use_ttk} {
+ .vpane sashpos 0 [lindex $gm 1]
+ .vpane.files sashpos 0 [lindex $gm 2]
+} else {
+ .vpane sash place 0 \
+ [lindex $gm 1] \
+ [lindex [.vpane sash coord 0] 1]
+ .vpane.files sash place 0 \
+ [lindex [.vpane.files sash coord 0] 0] \
+ [lindex $gm 2]
+}
unset gm
}
bind . <$M1B-Key-S> do_signoff
bind . <$M1B-Key-t> do_add_selection
bind . <$M1B-Key-T> do_add_selection
+bind . <$M1B-Key-j> do_revert_selection
+bind . <$M1B-Key-J> do_revert_selection
bind . <$M1B-Key-i> do_add_all
bind . <$M1B-Key-I> do_add_all
bind . <$M1B-Key-minus> {show_less_context;break}
set file_lists($ui_index) [list]
set file_lists($ui_workdir) [list]
-wm title . "[appname] ([reponame]) [file normalize [file dirname [gitdir]]]"
+wm title . "[appname] ([reponame]) [file normalize $_gitworktree]"
focus -force $ui_comm
# -- Warn the user about environmental problems. Cygwin's Tcl
if {$picked && [is_config_true gui.autoexplore]} {
do_explore
}
+
+# Local variables:
+# mode: tcl
+# indent-tabs-mode: t
+# tab-width: 4
+# End:
proc do_about {} {
global appvers copyright oguilib
global tcl_patchLevel tk_patchLevel
- global ui_comm_spell
+ global ui_comm_spell NS use_ttk
set w .about_dialog
- toplevel $w
+ Dialog $w
wm geometry $w "+[winfo rootx .]+[winfo rooty .]"
pack [git_logo $w.git_logo] -side left -fill y -padx 10 -pady 10
- label $w.header -text [mc "About %s" [appname]] \
- -font font_uibold
+ ${NS}::label $w.header -text [mc "About %s" [appname]] \
+ -font font_uibold -anchor center
pack $w.header -side top -fill x
- frame $w.buttons
- button $w.buttons.close -text {Close} \
+ ${NS}::frame $w.buttons
+ ${NS}::button $w.buttons.close -text {Close} \
-default active \
-command [list destroy $w]
pack $w.buttons.close -side right
pack $w.buttons -side bottom -fill x -pady 10 -padx 10
- label $w.desc \
- -text "[mc "git-gui - a graphical user interface for Git."]\n$copyright" \
- -padx 5 -pady 5 \
- -justify left \
- -anchor w \
- -borderwidth 1 \
- -relief solid
+ paddedlabel $w.desc \
+ -text "[mc "git-gui - a graphical user interface for Git."]\n$copyright"
pack $w.desc -side top -fill x -padx 5 -pady 5
set v {}
append d "git exec dir: [gitexec]\n"
append d "git-gui lib: $oguilib"
- label $w.vers \
- -text $v \
- -padx 5 -pady 5 \
- -justify left \
- -anchor w \
- -borderwidth 1 \
- -relief solid
+ paddedlabel $w.vers -text $v
pack $w.vers -side top -fill x -padx 5 -pady 5
- label $w.dirs \
- -text $d \
- -padx 5 -pady 5 \
- -justify left \
- -anchor w \
- -borderwidth 1 \
- -relief solid
+ paddedlabel $w.dirs -text $d
pack $w.dirs -side top -fill x -padx 5 -pady 5
menu $w.ctxm -tearoff 0
field tooltip_commit {} ; # Commit(s) in tooltip
constructor new {i_commit i_path i_jump} {
- global cursor_ptr M1B M1T have_tk85
+ global cursor_ptr M1B M1T have_tk85 use_ttk NS
variable active_color
variable group_colors
set font_w [font measure font_diff "0"]
- frame $w.header -background gold
- label $w.header.commit_l \
+ gold_frame $w.header
+ tlabel $w.header.commit_l \
-text [mc "Commit:"] \
-background gold \
-foreground black \
-anchor w \
-justify left
set w_back $w.header.commit_b
- label $w_back \
+ tlabel $w_back \
-image ::blame::img_back_arrow \
-borderwidth 0 \
-relief flat \
[cb _history_menu]
}
"
- label $w.header.commit \
+ tlabel $w.header.commit \
-textvariable @commit \
-background gold \
-foreground black \
-anchor w \
-justify left
- label $w.header.path_l \
+ tlabel $w.header.path_l \
-text [mc "File:"] \
-background gold \
-foreground black \
-anchor w \
-justify left
set w_path $w.header.path
- label $w_path \
+ tlabel $w_path \
-background gold \
-foreground black \
-anchor w \
set w_columns [list $w_amov $w_asim $w_line $w_file]
- scrollbar $w.file_pane.out.sbx \
+ ${NS}::scrollbar $w.file_pane.out.sbx \
-orient h \
-command [list $w_file xview]
- scrollbar $w.file_pane.out.sby \
+ ${NS}::scrollbar $w.file_pane.out.sby \
-orient v \
-command [list scrollbar2many $w_columns yview]
eval grid $w_columns $w.file_pane.out.sby -sticky nsew
-background $active_color \
-font font_ui
$w_cviewer tag raise sel
- scrollbar $w.file_pane.cm.sbx \
+ ${NS}::scrollbar $w.file_pane.cm.sbx \
-orient h \
-command [list $w_cviewer xview]
- scrollbar $w.file_pane.cm.sby \
+ ${NS}::scrollbar $w.file_pane.cm.sby \
-orient v \
-command [list $w_cviewer yview]
pack $w.file_pane.cm.sby -side right -fill y
field opt_detach 0; # force a detached head case?
constructor dialog {} {
- make_toplevel top w
+ global use_ttk NS
+ make_dialog top w
+ wm withdraw $w
wm title $top [append "[appname] ([reponame]): " [mc "Checkout Branch"]]
if {$top ne {.}} {
wm geometry $top "+[winfo rootx .]+[winfo rooty .]"
}
- label $w.header -text [mc "Checkout Branch"] -font font_uibold
+ ${NS}::label $w.header -text [mc "Checkout Branch"] \
+ -font font_uibold -anchor center
pack $w.header -side top -fill x
- frame $w.buttons
- button $w.buttons.create -text [mc Checkout] \
+ ${NS}::frame $w.buttons
+ ${NS}::button $w.buttons.create -text [mc Checkout] \
-default active \
-command [cb _checkout]
pack $w.buttons.create -side right
- button $w.buttons.cancel -text [mc Cancel] \
+ ${NS}::button $w.buttons.cancel -text [mc Cancel] \
-command [list destroy $w]
pack $w.buttons.cancel -side right -padx 5
pack $w.buttons -side bottom -fill x -pady 10 -padx 10
$w_rev bind_listbox <Double-Button-1> [cb _checkout]
pack $w.rev -anchor nw -fill both -expand 1 -pady 5 -padx 5
- labelframe $w.options -text [mc Options]
+ ${NS}::labelframe $w.options -text [mc Options]
- checkbutton $w.options.fetch \
+ ${NS}::checkbutton $w.options.fetch \
-text [mc "Fetch Tracking Branch"] \
-variable @opt_fetch
pack $w.options.fetch -anchor nw
- checkbutton $w.options.detach \
+ ${NS}::checkbutton $w.options.detach \
-text [mc "Detach From Local Branch"] \
-variable @opt_detach
pack $w.options.detach -anchor nw
bind $w <Visibility> [cb _visible]
bind $w <Key-Escape> [list destroy $w]
bind $w <Key-Return> [cb _checkout]\;break
+ wm deiconify $w
tkwait window $w
}
field reset_ok 0; # did the user agree to reset?
constructor dialog {} {
- global repo_config
+ global repo_config use_ttk NS
- make_toplevel top w
+ make_dialog top w
+ wm withdraw $w
wm title $top [append "[appname] ([reponame]): " [mc "Create Branch"]]
if {$top ne {.}} {
wm geometry $top "+[winfo rootx .]+[winfo rooty .]"
}
- label $w.header -text [mc "Create New Branch"] -font font_uibold
+ ${NS}::label $w.header -text [mc "Create New Branch"] \
+ -font font_uibold -anchor center
pack $w.header -side top -fill x
- frame $w.buttons
- button $w.buttons.create -text [mc Create] \
+ ${NS}::frame $w.buttons
+ ${NS}::button $w.buttons.create -text [mc Create] \
-default active \
-command [cb _create]
pack $w.buttons.create -side right
- button $w.buttons.cancel -text [mc Cancel] \
+ ${NS}::button $w.buttons.cancel -text [mc Cancel] \
-command [list destroy $w]
pack $w.buttons.cancel -side right -padx 5
pack $w.buttons -side bottom -fill x -pady 10 -padx 10
- labelframe $w.desc -text [mc "Branch Name"]
- radiobutton $w.desc.name_r \
- -anchor w \
+ ${NS}::labelframe $w.desc -text [mc "Branch Name"]
+ ${NS}::radiobutton $w.desc.name_r \
-text [mc "Name:"] \
-value user \
-variable @name_type
+ if {!$use_ttk} {$w.desc.name_r configure -anchor w}
set w_name $w.desc.name_t
- entry $w_name \
- -borderwidth 1 \
- -relief sunken \
+ ${NS}::entry $w_name \
-width 40 \
-textvariable @name \
-validate key \
-validatecommand [cb _validate %d %S]
grid $w.desc.name_r $w_name -sticky we -padx {0 5}
- radiobutton $w.desc.match_r \
- -anchor w \
+ ${NS}::radiobutton $w.desc.match_r \
-text [mc "Match Tracking Branch Name"] \
-value match \
-variable @name_type
+ if {!$use_ttk} {$w.desc.match_r configure -anchor w}
grid $w.desc.match_r -sticky we -padx {0 5} -columnspan 2
grid columnconfigure $w.desc 1 -weight 1
set w_rev [::choose_rev::new $w.rev [mc "Starting Revision"]]
pack $w.rev -anchor nw -fill both -expand 1 -pady 5 -padx 5
- labelframe $w.options -text [mc Options]
+ ${NS}::labelframe $w.options -text [mc Options]
- frame $w.options.merge
- label $w.options.merge.l -text [mc "Update Existing Branch:"]
+ ${NS}::frame $w.options.merge
+ ${NS}::label $w.options.merge.l -text [mc "Update Existing Branch:"]
pack $w.options.merge.l -side left
- radiobutton $w.options.merge.no \
+ ${NS}::radiobutton $w.options.merge.no \
-text [mc No] \
-value none \
-variable @opt_merge
pack $w.options.merge.no -side left
- radiobutton $w.options.merge.ff \
+ ${NS}::radiobutton $w.options.merge.ff \
-text [mc "Fast Forward Only"] \
-value ff \
-variable @opt_merge
pack $w.options.merge.ff -side left
- radiobutton $w.options.merge.reset \
+ ${NS}::radiobutton $w.options.merge.reset \
-text [mc Reset] \
-value reset \
-variable @opt_merge
pack $w.options.merge.reset -side left
pack $w.options.merge -anchor nw
- checkbutton $w.options.fetch \
+ ${NS}::checkbutton $w.options.fetch \
-text [mc "Fetch Tracking Branch"] \
-variable @opt_fetch
pack $w.options.fetch -anchor nw
- checkbutton $w.options.checkout \
+ ${NS}::checkbutton $w.options.checkout \
-text [mc "Checkout After Creation"] \
-variable @opt_checkout
pack $w.options.checkout -anchor nw
bind $w <Visibility> [cb _visible]
bind $w <Key-Escape> [list destroy $w]
bind $w <Key-Return> [cb _create]\;break
+ wm deiconify $w
tkwait window $w
}
field w_delete ; # delete button
constructor dialog {} {
- global current_branch
+ global current_branch use_ttk NS
- make_toplevel top w
+ make_dialog top w
+ wm withdraw $w
wm title $top [append "[appname] ([reponame]): " [mc "Delete Branch"]]
if {$top ne {.}} {
wm geometry $top "+[winfo rootx .]+[winfo rooty .]"
}
- label $w.header -text [mc "Delete Local Branch"] -font font_uibold
+ ${NS}::label $w.header -text [mc "Delete Local Branch"] \
+ -font font_uibold -anchor center
pack $w.header -side top -fill x
- frame $w.buttons
+ ${NS}::frame $w.buttons
set w_delete $w.buttons.delete
- button $w_delete \
+ ${NS}::button $w_delete \
-text [mc Delete] \
-default active \
-state disabled \
-command [cb _delete]
pack $w_delete -side right
- button $w.buttons.cancel \
+ ${NS}::button $w.buttons.cancel \
-text [mc Cancel] \
-command [list destroy $w]
pack $w.buttons.cancel -side right -padx 5
pack $w.buttons -side bottom -fill x -pady 10 -padx 10
- labelframe $w.list -text [mc "Local Branches"]
+ ${NS}::labelframe $w.list -text [mc "Local Branches"]
set w_heads $w.list.l
- listbox $w_heads \
+ slistbox $w_heads \
-height 10 \
-width 70 \
-selectmode extended \
- -exportselection false \
- -yscrollcommand [list $w.list.sby set]
- scrollbar $w.list.sby -command [list $w.list.l yview]
- pack $w.list.sby -side right -fill y
+ -exportselection false
pack $w.list.l -side left -fill both -expand 1
pack $w.list -fill both -expand 1 -pady 5 -padx 5
"
bind $w <Key-Escape> [list destroy $w]
bind $w <Key-Return> [cb _delete]\;break
+ wm deiconify $w
tkwait window $w
}
field newname
constructor dialog {} {
- global current_branch
+ global current_branch use_ttk NS
- make_toplevel top w
+ make_dialog top w
+ wm withdraw $w
wm title $top [append "[appname] ([reponame]): " [mc "Rename Branch"]]
if {$top ne {.}} {
wm geometry $top "+[winfo rootx .]+[winfo rooty .]"
set oldname $current_branch
set newname [get_config gui.newbranchtemplate]
- label $w.header -text [mc "Rename Branch"] -font font_uibold
+ ${NS}::label $w.header -text [mc "Rename Branch"]\
+ -font font_uibold -anchor center
pack $w.header -side top -fill x
- frame $w.buttons
- button $w.buttons.rename -text [mc Rename] \
+ ${NS}::frame $w.buttons
+ ${NS}::button $w.buttons.rename -text [mc Rename] \
-default active \
-command [cb _rename]
pack $w.buttons.rename -side right
- button $w.buttons.cancel -text [mc Cancel] \
+ ${NS}::button $w.buttons.cancel -text [mc Cancel] \
-command [list destroy $w]
pack $w.buttons.cancel -side right -padx 5
pack $w.buttons -side bottom -fill x -pady 10 -padx 10
- frame $w.rename
- label $w.rename.oldname_l -text [mc "Branch:"]
- eval tk_optionMenu $w.rename.oldname_m @oldname [load_all_heads]
+ ${NS}::frame $w.rename
+ ${NS}::label $w.rename.oldname_l -text [mc "Branch:"]
+ if {$use_ttk} {
+ ttk::combobox $w.rename.oldname_m -textvariable @oldname \
+ -values [load_all_heads] -state readonly
+ } else {
+ eval tk_optionMenu $w.rename.oldname_m @oldname [load_all_heads]
+ }
- label $w.rename.newname_l -text [mc "New Name:"]
- entry $w.rename.newname_t \
- -borderwidth 1 \
- -relief sunken \
+ ${NS}::label $w.rename.newname_l -text [mc "New Name:"]
+ ${NS}::entry $w.rename.newname_t \
-width 40 \
-textvariable @newname \
-validate key \
$w.rename.newname_t icursor end
focus $w.rename.newname_t
"
+ wm deiconify $w
tkwait window $w
}
field ls_buf {}; # Buffered record output from ls-tree
constructor new {commit {path {}}} {
- global cursor_ptr M1B
- make_toplevel top w
+ global cursor_ptr M1B use_ttk NS
+ make_dialog top w
+ wm withdraw $top
wm title $top [append "[appname] ([reponame]): " [mc "File Browser"]]
set browser_commit $commit
set browser_path $browser_commit:$path
- label $w.path \
+ ${NS}::label $w.path \
-textvariable @browser_path \
-anchor w \
-justify left \
- -borderwidth 1 \
- -relief sunken \
-font font_uibold
+ if {!$use_ttk} { $w.path configure -borderwidth 1 -relief sunken}
pack $w.path -anchor w -side top -fill x
- frame $w.list
+ ${NS}::frame $w.list
set w_list $w.list.l
text $w_list -background white -foreground black \
-borderwidth 0 \
-xscrollcommand [list $w.list.sbx set] \
-yscrollcommand [list $w.list.sby set]
rmsel_tag $w_list
- scrollbar $w.list.sbx -orient h -command [list $w_list xview]
- scrollbar $w.list.sby -orient v -command [list $w_list yview]
+ ${NS}::scrollbar $w.list.sbx -orient h -command [list $w_list xview]
+ ${NS}::scrollbar $w.list.sby -orient v -command [list $w_list yview]
pack $w.list.sbx -side bottom -fill x
pack $w.list.sby -side right -fill y
pack $w_list -side left -fill both -expand 1
pack $w.list -side top -fill both -expand 1
- label $w.status \
+ ${NS}::label $w.status \
-textvariable @browser_status \
-anchor w \
- -justify left \
- -borderwidth 1 \
- -relief sunken
+ -justify left
+ if {!$use_ttk} { $w.status configure -borderwidth 1 -relief sunken}
pack $w.status -anchor w -side bottom -fill x
bind $w_list <Button-1> "[cb _click 0 @%x,%y];break"
bind $w_list <Right> break
bind $w_list <Visibility> [list focus $w_list]
+ wm deiconify $top
set w $w_list
if {$path ne {}} {
_ls $this $browser_commit:$path $path
field w_rev ; # mega-widget to pick the initial revision
constructor dialog {} {
- make_toplevel top w
+ global use_ttk NS
+ make_dialog top w
+ wm withdraw $top
wm title $top [append "[appname] ([reponame]): " [mc "Browse Branch Files"]]
if {$top ne {.}} {
wm geometry $top "+[winfo rootx .]+[winfo rooty .]"
+ wm transient $top .
}
- label $w.header \
+ ${NS}::label $w.header \
-text [mc "Browse Branch Files"] \
- -font font_uibold
+ -font font_uibold \
+ -anchor center
pack $w.header -side top -fill x
- frame $w.buttons
- button $w.buttons.browse -text [mc Browse] \
+ ${NS}::frame $w.buttons
+ ${NS}::button $w.buttons.browse -text [mc Browse] \
-default active \
-command [cb _open]
pack $w.buttons.browse -side right
- button $w.buttons.cancel -text [mc Cancel] \
+ ${NS}::button $w.buttons.cancel -text [mc Cancel] \
-command [list destroy $w]
pack $w.buttons.cancel -side right -padx 5
pack $w.buttons -side bottom -fill x -pady 10 -padx 10
bind $w <Visibility> [cb _visible]
bind $w <Key-Escape> [list destroy $w]
bind $w <Key-Return> [cb _open]\;break
+ wm deiconify $top
tkwait window $w
}
constructor pick {path title a_family a_size} {
variable all_families
+ global use_ttk NS
set v_family $a_family
set v_size $a_size
set f_family $pv_family
set f_size $pv_size
- make_toplevel top w
+ make_dialog top w
+ wm withdraw $top
wm title $top "[appname] ([reponame]): $title"
wm geometry $top "+[winfo rootx $path]+[winfo rooty $path]"
- label $w.header -text $title -font font_uibold
+ ${NS}::label $w.header -text $title -font font_uibold -anchor center
pack $w.header -side top -fill x
- frame $w.buttons
- button $w.buttons.select \
+ ${NS}::frame $w.buttons
+ ${NS}::button $w.buttons.select \
-text [mc Select] \
-default active \
-command [cb _select]
- button $w.buttons.cancel \
+ ${NS}::button $w.buttons.cancel \
-text [mc Cancel] \
-command [list destroy $w]
pack $w.buttons.select -side right
pack $w.buttons.cancel -side right -padx 5
pack $w.buttons -side bottom -fill x -pady 10 -padx 10
- frame $w.inner
+ ${NS}::frame $w.inner
- frame $w.inner.family
- label $w.inner.family.l \
+ ${NS}::frame $w.inner.family
+ ${NS}::label $w.inner.family.l \
-text [mc "Font Family"] \
-anchor w
set w_family $w.inner.family.v
-height 10 \
-yscrollcommand [list $w.inner.family.sby set]
rmsel_tag $w_family
- scrollbar $w.inner.family.sby -command [list $w_family yview]
+ ${NS}::scrollbar $w.inner.family.sby -command [list $w_family yview]
pack $w.inner.family.l -side top -fill x
pack $w.inner.family.sby -side right -fill y
pack $w_family -fill both -expand 1
- frame $w.inner.size
- label $w.inner.size.l \
+ ${NS}::frame $w.inner.size
+ ${NS}::label $w.inner.size.l \
-text [mc "Font Size"] \
-anchor w
- spinbox $w.inner.size.v \
+ tspinbox $w.inner.size.v \
-textvariable @f_size \
-from 2 -to 80 -increment 1 \
-width 3
grid columnconfigure $w.inner 0 -weight 1
pack $w.inner -fill both -expand 1 -padx 5 -pady 5
- frame $w.example
- label $w.example.l \
+ ${NS}::frame $w.example
+ ${NS}::label $w.example.l \
-text [mc "Font Example"] \
-anchor w
set w_example $w.example.t
grab $w
focus $w
"
+ wm deiconify $w
tkwait window $w
}
field sorted_recent ; # recent repositories (sorted)
constructor pick {} {
- global M1T M1B
+ global M1T M1B use_ttk NS
- make_toplevel top w
+ make_dialog top w
wm title $top [mc "Git Gui"]
if {$top eq {.}} {
set w_body $w.body
set opts $w_body.options
- frame $w_body
+ ${NS}::frame $w_body
text $opts \
-cursor $::cursor_ptr \
-relief flat \
- -background [$w_body cget -background] \
+ -background [get_bg_color $w_body] \
-wrap none \
-spacing1 5 \
-width 50 \
-label [mc "Recent Repositories"]
}
- label $w_body.space
- label $w_body.recentlabel \
+ ${NS}::label $w_body.space
+ ${NS}::label $w_body.recentlabel \
-anchor w \
-text [mc "Open Recent Repository:"]
set w_recentlist $w_body.recentlist
text $w_recentlist \
-cursor $::cursor_ptr \
-relief flat \
- -background [$w_body.recentlabel cget -background] \
+ -background [get_bg_color $w_body.recentlabel] \
-wrap none \
-width 50 \
-height 10
}
pack $w_body -fill x -padx 10 -pady 10
- frame $w.buttons
+ ${NS}::frame $w.buttons
set w_next $w.buttons.next
set w_quit $w.buttons.quit
- button $w_quit \
+ ${NS}::button $w_quit \
-text [mc "Quit"] \
-command exit
pack $w_quit -side right -padx 5
wm deiconify $top
tkwait variable @done
+ grab release $top
if {$top eq {.}} {
eval destroy [winfo children $top]
}
}
method _next {action} {
+ global NS
destroy $w_body
if {![winfo exists $w_next]} {
- button $w_next -default active
+ ${NS}::button $w_next -default active
pack $w_next -side right -padx 5 -before $w_quit
}
_do_$action $this
## Create New Repository
method _do_new {} {
+ global use_ttk NS
$w_next conf \
-state disabled \
-command [cb _do_new2] \
-text [mc "Create"]
- frame $w_body
- label $w_body.h \
- -font font_uibold \
+ ${NS}::frame $w_body
+ ${NS}::label $w_body.h \
+ -font font_uibold -anchor center \
-text [mc "Create New Repository"]
pack $w_body.h -side top -fill x -pady 10
pack $w_body -fill x -padx 10
- frame $w_body.where
- label $w_body.where.l -text [mc "Directory:"]
- entry $w_body.where.t \
+ ${NS}::frame $w_body.where
+ ${NS}::label $w_body.where.l -text [mc "Directory:"]
+ ${NS}::entry $w_body.where.t \
-textvariable @local_path \
- -borderwidth 1 \
- -relief sunken \
-width 50
- button $w_body.where.b \
+ ${NS}::button $w_body.where.b \
-text [mc "Browse"] \
-command [cb _new_local_path]
set w_localpath $w_body.where.t
## Clone Existing Repository
method _do_clone {} {
+ global use_ttk NS
$w_next conf \
-state disabled \
-command [cb _do_clone2] \
-text [mc "Clone"]
- frame $w_body
- label $w_body.h \
- -font font_uibold \
+ ${NS}::frame $w_body
+ ${NS}::label $w_body.h \
+ -font font_uibold -anchor center \
-text [mc "Clone Existing Repository"]
pack $w_body.h -side top -fill x -pady 10
pack $w_body -fill x -padx 10
set args $w_body.args
- frame $w_body.args
+ ${NS}::frame $w_body.args
pack $args -fill both
- label $args.origin_l -text [mc "Source Location:"]
- entry $args.origin_t \
+ ${NS}::label $args.origin_l -text [mc "Source Location:"]
+ ${NS}::entry $args.origin_t \
-textvariable @origin_url \
- -borderwidth 1 \
- -relief sunken \
-width 50
- button $args.origin_b \
+ ${NS}::button $args.origin_b \
-text [mc "Browse"] \
-command [cb _open_origin]
grid $args.origin_l $args.origin_t $args.origin_b -sticky ew
- label $args.where_l -text [mc "Target Directory:"]
- entry $args.where_t \
+ ${NS}::label $args.where_l -text [mc "Target Directory:"]
+ ${NS}::entry $args.where_t \
-textvariable @local_path \
- -borderwidth 1 \
- -relief sunken \
-width 50
- button $args.where_b \
+ ${NS}::button $args.where_b \
-text [mc "Browse"] \
-command [cb _new_local_path]
grid $args.where_l $args.where_t $args.where_b -sticky ew
set w_localpath $args.where_t
- label $args.type_l -text [mc "Clone Type:"]
- frame $args.type_f
+ ${NS}::label $args.type_l -text [mc "Clone Type:"]
+ ${NS}::frame $args.type_f
set w_types [list]
- lappend w_types [radiobutton $args.type_f.hardlink \
+ lappend w_types [${NS}::radiobutton $args.type_f.hardlink \
-state disabled \
- -anchor w \
-text [mc "Standard (Fast, Semi-Redundant, Hardlinks)"] \
-variable @clone_type \
-value hardlink]
- lappend w_types [radiobutton $args.type_f.full \
+ lappend w_types [${NS}::radiobutton $args.type_f.full \
-state disabled \
- -anchor w \
-text [mc "Full Copy (Slower, Redundant Backup)"] \
-variable @clone_type \
-value full]
- lappend w_types [radiobutton $args.type_f.shared \
+ lappend w_types [${NS}::radiobutton $args.type_f.shared \
-state disabled \
- -anchor w \
-text [mc "Shared (Fastest, Not Recommended, No Backup)"] \
-variable @clone_type \
-value shared]
## Open Existing Repository
method _do_open {} {
+ global NS
$w_next conf \
-state disabled \
-command [cb _do_open2] \
-text [mc "Open"]
- frame $w_body
- label $w_body.h \
- -font font_uibold \
+ ${NS}::frame $w_body
+ ${NS}::label $w_body.h \
+ -font font_uibold -anchor center \
-text [mc "Open Existing Repository"]
pack $w_body.h -side top -fill x -pady 10
pack $w_body -fill x -padx 10
- frame $w_body.where
- label $w_body.where.l -text [mc "Repository:"]
- entry $w_body.where.t \
+ ${NS}::frame $w_body.where
+ ${NS}::label $w_body.where.l -text [mc "Repository:"]
+ ${NS}::entry $w_body.where.t \
-textvariable @local_path \
- -borderwidth 1 \
- -relief sunken \
-width 50
- button $w_body.where.b \
+ ${NS}::button $w_body.where.b \
-text [mc "Browse"] \
-command [cb _open_local_path]
field w_filter ; # filter entry for $w_list
field c_expr {}; # current revision expression
-field filter ; # current filter string
+field filter ""; # current filter string
field revtype head; # type of revision chosen
field cur_specs [list]; # list of specs for $revtype
field spec_head ; # list of all head specs
}
constructor _new {path unmerged_only title} {
- global current_branch is_detached
+ global current_branch is_detached use_ttk NS
if {![info exists ::all_remotes]} {
load_all_remotes
set w $path
if {$title ne {}} {
- labelframe $w -text $title
+ ${NS}::labelframe $w -text $title
} else {
- frame $w
+ ${NS}::frame $w
}
bind $w <Destroy> [cb _delete %W]
if {$is_detached} {
- radiobutton $w.detachedhead_r \
- -anchor w \
+ ${NS}::radiobutton $w.detachedhead_r \
-text [mc "This Detached Checkout"] \
-value HEAD \
-variable @revtype
+ if {!$use_ttk} {$w.detachedhead_r configure -anchor w}
grid $w.detachedhead_r -sticky we -padx {0 5} -columnspan 2
}
- radiobutton $w.expr_r \
+ ${NS}::radiobutton $w.expr_r \
-text [mc "Revision Expression:"] \
-value expr \
-variable @revtype
- entry $w.expr_t \
- -borderwidth 1 \
- -relief sunken \
+ ${NS}::entry $w.expr_t \
-width 50 \
-textvariable @c_expr \
-validate key \
-validatecommand [cb _validate %d %S]
grid $w.expr_r $w.expr_t -sticky we -padx {0 5}
- frame $w.types
- radiobutton $w.types.head_r \
+ ${NS}::frame $w.types
+ ${NS}::radiobutton $w.types.head_r \
-text [mc "Local Branch"] \
-value head \
-variable @revtype
pack $w.types.head_r -side left
- radiobutton $w.types.trck_r \
+ ${NS}::radiobutton $w.types.trck_r \
-text [mc "Tracking Branch"] \
-value trck \
-variable @revtype
pack $w.types.trck_r -side left
- radiobutton $w.types.tag_r \
+ ${NS}::radiobutton $w.types.tag_r \
-text [mc "Tag"] \
-value tag \
-variable @revtype
pack $w.types.tag_r -side left
set w_filter $w.types.filter
- entry $w_filter \
- -borderwidth 1 \
- -relief sunken \
+ ${NS}::entry $w_filter \
-width 12 \
-textvariable @filter \
-validate key \
-validatecommand [cb _filter %P]
pack $w_filter -side right
- pack [label $w.types.filter_icon \
+ pack [${NS}::label $w.types.filter_icon \
-image ::choose_rev::img_find \
] -side right
grid $w.types -sticky we -padx {0 5} -columnspan 2
- frame $w.list
+ if {$use_ttk} {
+ ttk::frame $w.list -style SListbox.TFrame -padding 2
+ } else {
+ frame $w.list
+ }
set w_list $w.list.l
listbox $w_list \
-font font_diff \
-exportselection false \
-xscrollcommand [cb _sb_set $w.list.sbx h] \
-yscrollcommand [cb _sb_set $w.list.sby v]
+ if {$use_ttk} {
+ $w_list configure -relief flat -highlightthickness 0 -borderwidth 0
+ }
pack $w_list -fill both -expand 1
grid $w.list -sticky nswe -padx {20 5} -columnspan 2
bind $w_list <Any-Motion> [cb _show_tooltip @%x,%y]
}
method none {text} {
+ global NS use_ttk
if {![winfo exists $w.none_r]} {
- radiobutton $w.none_r \
- -anchor w \
+ ${NS}::radiobutton $w.none_r \
-value none \
-variable @revtype
+ if {!$use_ttk} {$w.none_r configure -anchor w}
grid $w.none_r -sticky we -padx {0 5} -columnspan 2
}
$w.none_r configure -text $text
}
method _sb_set {sb orient first last} {
+ global NS
set old_focus [focus -lastfor $w]
if {$first == 0 && $last == 1} {
if {![winfo exists $sb]} {
if {$orient eq {h}} {
- scrollbar $sb -orient h -command [list $w_list xview]
+ ${NS}::scrollbar $sb -orient h -command [list $w_list xview]
pack $sb -fill x -side bottom -before $w_list
} else {
- scrollbar $sb -orient v -command [list $w_list yview]
+ ${NS}::scrollbar $sb -orient v -command [list $w_list yview]
pack $sb -fill y -side right -before $w_list
}
if {$old_focus ne {}} {
if {[namespace exists $t]} {namespace delete $t}
}
+proc make_dialog {t w args} {
+ upvar $t top $w pfx this this
+ global use_ttk
+ uplevel [linsert $args 0 make_toplevel $t $w]
+ pave_toplevel $pfx
+}
+
proc make_toplevel {t w args} {
upvar $t top $w pfx this this
}
method _init {} {
- global M1B
+ global M1B use_ttk NS
if {$is_toplevel} {
- make_toplevel top w -autodelete 0
+ make_dialog top w -autodelete 0
wm title $top "[appname] ([reponame]): $t_short"
} else {
- frame $w
+ ${NS}::frame $w
}
set console_cr 1.0
set w_t $w.m.t
- frame $w.m
- label $w.m.l1 \
+ ${NS}::frame $w.m
+ ${NS}::label $w.m.l1 \
-textvariable @t_long \
-anchor w \
-justify left \
"
if {$is_toplevel} {
- button $w.ok -text [mc "Close"] \
+ ${NS}::button $w.ok -text [mc "Close"] \
-state disabled \
-command [list destroy $w]
pack $w.ok -side bottom -anchor e -pady 10 -padx 10
}
method _sb_set {sb orient first last} {
+ global NS
if {![winfo exists $sb]} {
if {$first == $last || ($first == 0 && $last == 1)} return
if {$orient eq {h}} {
- scrollbar $sb -orient h -command [list $w_t xview]
+ ${NS}::scrollbar $sb -orient h -command [list $w_t xview]
pack $sb -fill x -side bottom -before $w_t
} else {
- scrollbar $sb -orient v -command [list $w_t yview]
+ ${NS}::scrollbar $sb -orient v -command [list $w_t yview]
pack $sb -fill y -side right -before $w_t
}
}
# Copyright (C) 2006, 2007 Shawn Pearce
proc do_stats {} {
+ global use_ttk NS
set fd [git_read count-objects -v]
while {[gets $fd line] > 0} {
if {[regexp {^([^:]+): (\d+)$} $line _ name value]} {
}
set w .stats_view
- toplevel $w
+ Dialog $w
+ wm withdraw $w
wm geometry $w "+[winfo rootx .]+[winfo rooty .]"
- label $w.header -text [mc "Database Statistics"]
- pack $w.header -side top -fill x
-
- frame $w.buttons -border 1
- button $w.buttons.close -text [mc Close] \
+ ${NS}::frame $w.buttons
+ ${NS}::button $w.buttons.close -text [mc Close] \
-default active \
-command [list destroy $w]
- button $w.buttons.gc -text [mc "Compress Database"] \
+ ${NS}::button $w.buttons.gc -text [mc "Compress Database"] \
-default normal \
-command "destroy $w;do_gc"
pack $w.buttons.close -side right
pack $w.buttons.gc -side left
pack $w.buttons -side bottom -fill x -pady 10 -padx 10
- frame $w.stat -borderwidth 1 -relief solid
+ ${NS}::labelframe $w.stat -text [mc "Database Statistics"]
foreach s {
{count {mc "Number of loose objects"}}
{size {mc "Disk space used by loose objects"} { KiB}}
set value "$value[lindex $s 2]"
}
- label $w.stat.l_$name -text "$label:" -anchor w
- label $w.stat.v_$name -text $value -anchor w
+ ${NS}::label $w.stat.l_$name -text "$label:" -anchor w
+ ${NS}::label $w.stat.v_$name -text $value -anchor w
grid $w.stat.l_$name $w.stat.v_$name -sticky we -padx {0 5}
}
pack $w.stat -pady 10 -padx 10
bind $w <Key-Escape> [list destroy $w]
bind $w <Key-Return> [list destroy $w]
wm title $w [append "[appname] ([reponame]): " [mc "Database Statistics"]]
+ wm deiconify $w
tkwait window $w
}
}
}
+ if {[string match {160000 *} [lindex $s 2]]
+ || [string match {160000 *} [lindex $s 3]]} {
+ set is_submodule_diff 1
+
+ if {[git-version >= "1.6.6"]} {
+ lappend cmd --submodule
+ }
+ }
+
lappend cmd -p
lappend cmd --no-color
if {$repo_config(gui.diffcontext) >= 1} {
lappend cmd $path
}
- if {[string match {160000 *} [lindex $s 2]]
- || [string match {160000 *} [lindex $s 3]]} {
- set is_submodule_diff 1
+ if {$is_submodule_diff && [git-version < "1.6.6"]} {
if {$w eq $ui_index} {
set cmd [list submodule summary --cached -- $path]
} else {
}
} elseif {$is_submodule_diff} {
if {$line == ""} continue
- if {[regexp {^\* } $line]} {
+ if {[regexp {^Submodule } $line]} {
+ set tags d_@
+ } elseif {[regexp {^\* } $line]} {
set line [string replace $line 0 1 {Submodule }]
set tags d_@
} else {
}
}
-proc apply_line {x y} {
+proc apply_range_or_line {x y} {
global current_diff_path current_diff_header current_diff_side
global ui_diff ui_index file_states
+ set selected [$ui_diff tag nextrange sel 0.0]
+
+ if {$selected == {}} {
+ set first [$ui_diff index "@$x,$y"]
+ set last $first
+ } else {
+ set first [lindex $selected 0]
+ set last [lindex $selected 1]
+ }
+
+ set first_l [$ui_diff index "$first linestart"]
+ set last_l [$ui_diff index "$last lineend"]
+
if {$current_diff_path eq {} || $current_diff_header eq {}} return
if {![lock_index apply_hunk]} return
}
}
- set the_l [$ui_diff index @$x,$y]
+ set wholepatch {}
- # operate only on change lines
- set c1 [$ui_diff get "$the_l linestart"]
- if {$c1 ne {+} && $c1 ne {-}} {
- unlock_index
- return
- }
- set sign $c1
-
- set i_l [$ui_diff search -backwards -regexp ^@@ $the_l 0.0]
- if {$i_l eq {}} {
- unlock_index
- return
- }
- # $i_l is now at the beginning of a line
+ while {$first_l < $last_l} {
+ set i_l [$ui_diff search -backwards -regexp ^@@ $first_l 0.0]
+ if {$i_l eq {}} {
+ # If there's not a @@ above, then the selected range
+ # must have come before the first_l @@
+ set i_l [$ui_diff search -regexp ^@@ $first_l $last_l]
+ }
+ if {$i_l eq {}} {
+ unlock_index
+ return
+ }
+ # $i_l is now at the beginning of a line
- # pick start line number from hunk header
- set hh [$ui_diff get $i_l "$i_l + 1 lines"]
- set hh [lindex [split $hh ,] 0]
- set hln [lindex [split $hh -] 1]
+ # pick start line number from hunk header
+ set hh [$ui_diff get $i_l "$i_l + 1 lines"]
+ set hh [lindex [split $hh ,] 0]
+ set hln [lindex [split $hh -] 1]
- # There is a special situation to take care of. Consider this hunk:
- #
- # @@ -10,4 +10,4 @@
- # context before
- # -old 1
- # -old 2
- # +new 1
- # +new 2
- # context after
- #
- # We used to keep the context lines in the order they appear in the
- # hunk. But then it is not possible to correctly stage only
- # "-old 1" and "+new 1" - it would result in this staged text:
- #
- # context before
- # old 2
- # new 1
- # context after
- #
- # (By symmetry it is not possible to *un*stage "old 2" and "new 2".)
- #
- # We resolve the problem by introducing an asymmetry, namely, when
- # a "+" line is *staged*, it is moved in front of the context lines
- # that are generated from the "-" lines that are immediately before
- # the "+" block. That is, we construct this patch:
- #
- # @@ -10,4 +10,5 @@
- # context before
- # +new 1
- # old 1
- # old 2
- # context after
- #
- # But we do *not* treat "-" lines that are *un*staged in a special
- # way.
- #
- # With this asymmetry it is possible to stage the change
- # "old 1" -> "new 1" directly, and to stage the change
- # "old 2" -> "new 2" by first staging the entire hunk and
- # then unstaging the change "old 1" -> "new 1".
-
- # This is non-empty if and only if we are _staging_ changes;
- # then it accumulates the consecutive "-" lines (after converting
- # them to context lines) in order to be moved after the "+" change
- # line.
- set pre_context {}
-
- set n 0
- set i_l [$ui_diff index "$i_l + 1 lines"]
- set patch {}
- while {[$ui_diff compare $i_l < "end - 1 chars"] &&
- [$ui_diff get $i_l "$i_l + 2 chars"] ne {@@}} {
- set next_l [$ui_diff index "$i_l + 1 lines"]
- set c1 [$ui_diff get $i_l]
- if {[$ui_diff compare $i_l <= $the_l] &&
- [$ui_diff compare $the_l < $next_l]} {
- # the line to stage/unstage
- set ln [$ui_diff get $i_l $next_l]
- if {$c1 eq {-}} {
- set n [expr $n+1]
+ # There is a special situation to take care of. Consider this
+ # hunk:
+ #
+ # @@ -10,4 +10,4 @@
+ # context before
+ # -old 1
+ # -old 2
+ # +new 1
+ # +new 2
+ # context after
+ #
+ # We used to keep the context lines in the order they appear in
+ # the hunk. But then it is not possible to correctly stage only
+ # "-old 1" and "+new 1" - it would result in this staged text:
+ #
+ # context before
+ # old 2
+ # new 1
+ # context after
+ #
+ # (By symmetry it is not possible to *un*stage "old 2" and "new
+ # 2".)
+ #
+ # We resolve the problem by introducing an asymmetry, namely,
+ # when a "+" line is *staged*, it is moved in front of the
+ # context lines that are generated from the "-" lines that are
+ # immediately before the "+" block. That is, we construct this
+ # patch:
+ #
+ # @@ -10,4 +10,5 @@
+ # context before
+ # +new 1
+ # old 1
+ # old 2
+ # context after
+ #
+ # But we do *not* treat "-" lines that are *un*staged in a
+ # special way.
+ #
+ # With this asymmetry it is possible to stage the change "old
+ # 1" -> "new 1" directly, and to stage the change "old 2" ->
+ # "new 2" by first staging the entire hunk and then unstaging
+ # the change "old 1" -> "new 1".
+ #
+ # Applying multiple lines adds complexity to the special
+ # situation. The pre_context must be moved after the entire
+ # first block of consecutive staged "+" lines, so that
+ # staging both additions gives the following patch:
+ #
+ # @@ -10,4 +10,6 @@
+ # context before
+ # +new 1
+ # +new 2
+ # old 1
+ # old 2
+ # context after
+
+ # This is non-empty if and only if we are _staging_ changes;
+ # then it accumulates the consecutive "-" lines (after
+ # converting them to context lines) in order to be moved after
+ # "+" change lines.
+ set pre_context {}
+
+ set n 0
+ set m 0
+ set i_l [$ui_diff index "$i_l + 1 lines"]
+ set patch {}
+ while {[$ui_diff compare $i_l < "end - 1 chars"] &&
+ [$ui_diff get $i_l "$i_l + 2 chars"] ne {@@}} {
+ set next_l [$ui_diff index "$i_l + 1 lines"]
+ set c1 [$ui_diff get $i_l]
+ if {[$ui_diff compare $first_l <= $i_l] &&
+ [$ui_diff compare $i_l < $last_l] &&
+ ($c1 eq {-} || $c1 eq {+})} {
+ # a line to stage/unstage
+ set ln [$ui_diff get $i_l $next_l]
+ if {$c1 eq {-}} {
+ set n [expr $n+1]
+ set patch "$patch$pre_context$ln"
+ set pre_context {}
+ } else {
+ set m [expr $m+1]
+ set patch "$patch$ln"
+ }
+ } elseif {$c1 ne {-} && $c1 ne {+}} {
+ # context line
+ set ln [$ui_diff get $i_l $next_l]
set patch "$patch$pre_context$ln"
+ set n [expr $n+1]
+ set m [expr $m+1]
+ set pre_context {}
+ } elseif {$c1 eq $to_context} {
+ # turn change line into context line
+ set ln [$ui_diff get "$i_l + 1 chars" $next_l]
+ if {$c1 eq {-}} {
+ set pre_context "$pre_context $ln"
+ } else {
+ set patch "$patch $ln"
+ }
+ set n [expr $n+1]
+ set m [expr $m+1]
} else {
- set patch "$patch$ln$pre_context"
- }
- set pre_context {}
- } elseif {$c1 ne {-} && $c1 ne {+}} {
- # context line
- set ln [$ui_diff get $i_l $next_l]
- set patch "$patch$pre_context$ln"
- set n [expr $n+1]
- set pre_context {}
- } elseif {$c1 eq $to_context} {
- # turn change line into context line
- set ln [$ui_diff get "$i_l + 1 chars" $next_l]
- if {$c1 eq {-}} {
- set pre_context "$pre_context $ln"
- } else {
- set patch "$patch $ln"
+ # a change in the opposite direction of
+ # to_context which is outside the range of
+ # lines to apply.
+ set patch "$patch$pre_context"
+ set pre_context {}
}
- set n [expr $n+1]
+ set i_l $next_l
}
- set i_l $next_l
+ set patch "$patch$pre_context"
+ set wholepatch "$wholepatch@@ -$hln,$n +$hln,$m @@\n$patch"
+ set first_l [$ui_diff index "$next_l + 1 lines"]
}
- set patch "$patch$pre_context"
- set patch "@@ -$hln,$n +$hln,[eval expr $n $sign 1] @@\n$patch"
if {[catch {
set enc [get_path_encoding $current_diff_path]
set p [eval git_write $apply_cmd]
fconfigure $p -translation binary -encoding $enc
puts -nonewline $p $current_diff_header
- puts -nonewline $p $patch
+ puts -nonewline $p $wholepatch
close $p} err]} {
error_popup [append $failed_msg "\n\n$err"]
}
}
proc hook_failed_popup {hook msg {is_fatal 1}} {
+ global use_ttk NS
set w .hookfail
- toplevel $w
+ Dialog $w
+ wm withdraw $w
- frame $w.m
- label $w.m.l1 -text "$hook hook failed:" \
+ ${NS}::frame $w.m
+ ${NS}::label $w.m.l1 -text "$hook hook failed:" \
-anchor w \
-justify left \
-font font_uibold
-width 80 -height 10 \
-font font_diff \
-yscrollcommand [list $w.m.sby set]
- scrollbar $w.m.sby -command [list $w.m.t yview]
+ ${NS}::scrollbar $w.m.sby -command [list $w.m.t yview]
pack $w.m.l1 -side top -fill x
if {$is_fatal} {
- label $w.m.l2 \
+ ${NS}::label $w.m.l2 \
-text [mc "You must correct the above errors before committing."] \
-anchor w \
-justify left \
$w.m.t insert 1.0 $msg
$w.m.t conf -state disabled
- button $w.ok -text OK \
+ ${NS}::button $w.ok -text OK \
-width 15 \
-command "destroy $w"
pack $w.ok -side bottom -anchor e -pady 10 -padx 10
bind $w <Visibility> "grab $w; focus $w"
bind $w <Key-Return> "destroy $w"
wm title $w [strcat "[appname] ([reponame]): " [mc "error"]]
+ wm deiconify $w
tkwait window $w
}
}
proc _close_updateindex {fd after} {
+ global use_ttk NS
fconfigure $fd -blocking 1
if {[catch {close $fd} err]} {
set w .indexfried
- toplevel $w
+ Dialog $w
+ wm withdraw $w
wm title $w [strcat "[appname] ([reponame]): " [mc "Index Error"]]
wm geometry $w "+[winfo rootx .]+[winfo rooty .]"
set s [mc "Updating the Git index failed. A rescan will be automatically started to resynchronize git-gui."]
text $w.msg -yscrollcommand [list $w.vs set] \
-width [string length $s] -relief flat \
-borderwidth 0 -highlightthickness 0 \
- -background [$w cget -background]
+ -background [get_bg_color $w]
$w.msg tag configure bold -font font_uibold -justify center
- scrollbar $w.vs -command [list $w.msg yview]
+ ${NS}::scrollbar $w.vs -command [list $w.msg yview]
$w.msg insert end $s bold \n\n$err {}
$w.msg configure -state disabled
- button $w.continue \
+ ${NS}::button $w.continue \
-text [mc "Continue"] \
-command [list destroy $w]
- button $w.unlock \
+ ${NS}::button $w.unlock \
-text [mc "Unlock Index"] \
-command "destroy $w; _delete_indexlock"
grid $w.msg - $w.vs -sticky news
grab $w
focus %W
"
+ wm deiconify $w
tkwait window $w
$::main_status stop
constructor dialog {} {
global current_branch
- global M1B
+ global M1B use_ttk NS
if {![_can_merge $this]} {
delete_this
return
}
- make_toplevel top w
+ make_dialog top w
wm title $top [append "[appname] ([reponame]): " [mc "Merge"]]
if {$top ne {.}} {
wm geometry $top "+[winfo rootx .]+[winfo rooty .]"
set _start [cb _start]
- label $w.header \
+ ${NS}::label $w.header \
-text [mc "Merge Into %s" $current_branch] \
-font font_uibold
pack $w.header -side top -fill x
- frame $w.buttons
- button $w.buttons.visualize \
+ ${NS}::frame $w.buttons
+ ${NS}::button $w.buttons.visualize \
-text [mc Visualize] \
-command [cb _visualize]
pack $w.buttons.visualize -side left
- button $w.buttons.merge \
+ ${NS}::button $w.buttons.merge \
-text [mc Merge] \
-command $_start
pack $w.buttons.merge -side right
- button $w.buttons.cancel \
+ ${NS}::button $w.buttons.cancel \
-text [mc "Cancel"] \
-command [cb _cancel]
pack $w.buttons.cancel -side right -padx 5
proc do_options {} {
global repo_config global_config font_descs
global repo_config_new global_config_new
- global ui_comm_spell
+ global ui_comm_spell use_ttk NS
array unset repo_config_new
array unset global_config_new
}
set w .options_editor
- toplevel $w
+ Dialog $w
+ wm withdraw $w
+ wm transient $w [winfo parent $w]
wm geometry $w "+[winfo rootx .]+[winfo rooty .]"
- frame $w.buttons
- button $w.buttons.restore -text [mc "Restore Defaults"] \
+ ${NS}::frame $w.buttons
+ ${NS}::button $w.buttons.restore -text [mc "Restore Defaults"] \
-default normal \
-command do_restore_defaults
pack $w.buttons.restore -side left
- button $w.buttons.save -text [mc Save] \
+ ${NS}::button $w.buttons.save -text [mc Save] \
-default active \
-command [list do_save_config $w]
pack $w.buttons.save -side right
- button $w.buttons.cancel -text [mc "Cancel"] \
+ ${NS}::button $w.buttons.cancel -text [mc "Cancel"] \
-default normal \
-command [list destroy $w]
pack $w.buttons.cancel -side right -padx 5
pack $w.buttons -side bottom -fill x -pady 10 -padx 10
- labelframe $w.repo -text [mc "%s Repository" [reponame]]
- labelframe $w.global -text [mc "Global (All Repositories)"]
+ ${NS}::labelframe $w.repo -text [mc "%s Repository" [reponame]]
+ ${NS}::labelframe $w.global -text [mc "Global (All Repositories)"]
pack $w.repo -side left -fill both -expand 1 -pady 5 -padx 5
pack $w.global -side right -fill both -expand 1 -pady 5 -padx 5
foreach f {repo global} {
switch -glob -- $type {
b {
- checkbutton $w.$f.$optid -text $text \
+ ${NS}::checkbutton $w.$f.$optid -text $text \
-variable ${f}_config_new($name) \
-onvalue true \
-offvalue false
}
i-* {
regexp -- {-(\d+)\.\.(\d+)$} $type _junk min max
- frame $w.$f.$optid
- label $w.$f.$optid.l -text "$text:"
+ ${NS}::frame $w.$f.$optid
+ ${NS}::label $w.$f.$optid.l -text "$text:"
pack $w.$f.$optid.l -side left -anchor w -fill x
- spinbox $w.$f.$optid.v \
+ tspinbox $w.$f.$optid.v \
-textvariable ${f}_config_new($name) \
-from $min \
-to $max \
}
c -
t {
- frame $w.$f.$optid
- label $w.$f.$optid.l -text "$text:"
- entry $w.$f.$optid.v \
- -borderwidth 1 \
- -relief sunken \
+ ${NS}::frame $w.$f.$optid
+ ${NS}::label $w.$f.$optid.l -text "$text:"
+ ${NS}::entry $w.$f.$optid.v \
-width 20 \
-textvariable ${f}_config_new($name)
pack $w.$f.$optid.l -side left -anchor w
menu $w.$f.$optid.m
build_encoding_menu $w.$f.$optid.m \
[list set ${f}_config_new($name)] 1
- button $w.$f.$optid.b \
+ ${NS}::button $w.$f.$optid.b \
-text [mc "Change"] \
-command [list popup_btn_menu \
$w.$f.$optid.m $w.$f.$optid.b]
set ${f}_config_new(gui.spellingdictionary) $value
}
- frame $w.$f.$optid
- label $w.$f.$optid.l -text [mc "Spelling Dictionary:"]
- eval tk_optionMenu $w.$f.$optid.v \
- ${f}_config_new(gui.spellingdictionary) \
- $all_dicts
+ ${NS}::frame $w.$f.$optid
+ ${NS}::label $w.$f.$optid.l -text [mc "Spelling Dictionary:"]
+ if {$use_ttk} {
+ ttk::combobox $w.$f.$optid.v \
+ -textvariable ${f}_config_new(gui.spellingdictionary) \
+ -values $all_dicts -state readonly
+ } else {
+ eval tk_optionMenu $w.$f.$optid.v \
+ ${f}_config_new(gui.spellingdictionary) \
+ $all_dicts
+ }
pack $w.$f.$optid.l -side left -anchor w -fill x
pack $w.$f.$optid.v -side right -anchor e -padx 5
pack $w.$f.$optid -side top -anchor w -fill x
set global_config_new(gui.$font^^size) \
[font configure $font -size]
- frame $w.global.$name
- label $w.global.$name.l -text "$text:"
- button $w.global.$name.b \
+ ${NS}::frame $w.global.$name
+ ${NS}::label $w.global.$name.l -text "$text:"
+ ${NS}::button $w.global.$name.b \
-text [mc "Change Font"] \
-command [list \
- choose_font::pick \
+ tchoosefont \
$w \
[mc "Choose %s" $text] \
global_config_new(gui.$font^^family) \
global_config_new(gui.$font^^size) \
]
- label $w.global.$name.f -textvariable global_config_new(gui.$font^^family)
- label $w.global.$name.s -textvariable global_config_new(gui.$font^^size)
- label $w.global.$name.pt -text [mc "pt."]
+ ${NS}::label $w.global.$name.f -textvariable global_config_new(gui.$font^^family)
+ ${NS}::label $w.global.$name.s -textvariable global_config_new(gui.$font^^size)
+ ${NS}::label $w.global.$name.pt -text [mc "pt."]
pack $w.global.$name.l -side left -anchor w
pack $w.global.$name.b -side right -anchor e
pack $w.global.$name.pt -side right -anchor w
set t [mc "Options"]
}
wm title $w "[appname] ([reponame]): $t"
+ wm deiconify $w
tkwait window $w
}
field opt_action fetch; # action to do after registering the remote locally
constructor dialog {} {
- global repo_config
+ global repo_config use_ttk NS
- make_toplevel top w
+ make_dialog top w
+ wm withdraw $top
wm title $top [append "[appname] ([reponame]): " [mc "Add Remote"]]
if {$top ne {.}} {
wm geometry $top "+[winfo rootx .]+[winfo rooty .]"
}
- label $w.header -text [mc "Add New Remote"] -font font_uibold
+ ${NS}::label $w.header -text [mc "Add New Remote"] \
+ -font font_uibold -anchor center
pack $w.header -side top -fill x
- frame $w.buttons
- button $w.buttons.create -text [mc Add] \
+ ${NS}::frame $w.buttons
+ ${NS}::button $w.buttons.create -text [mc Add] \
-default active \
-command [cb _add]
pack $w.buttons.create -side right
- button $w.buttons.cancel -text [mc Cancel] \
+ ${NS}::button $w.buttons.cancel -text [mc Cancel] \
-command [list destroy $w]
pack $w.buttons.cancel -side right -padx 5
pack $w.buttons -side bottom -fill x -pady 10 -padx 10
- labelframe $w.desc -text [mc "Remote Details"]
+ ${NS}::labelframe $w.desc -text [mc "Remote Details"]
- label $w.desc.name_l -text [mc "Name:"]
+ ${NS}::label $w.desc.name_l -text [mc "Name:"]
set w_name $w.desc.name_t
- entry $w_name \
- -borderwidth 1 \
- -relief sunken \
+ ${NS}::entry $w_name \
-width 40 \
-textvariable @name \
-validate key \
-validatecommand [cb _validate_name %d %S]
grid $w.desc.name_l $w_name -sticky we -padx {0 5}
- label $w.desc.loc_l -text [mc "Location:"]
+ ${NS}::label $w.desc.loc_l -text [mc "Location:"]
set w_loc $w.desc.loc_t
- entry $w_loc \
- -borderwidth 1 \
- -relief sunken \
+ ${NS}::entry $w_loc \
-width 40 \
-textvariable @location
grid $w.desc.loc_l $w_loc -sticky we -padx {0 5}
grid columnconfigure $w.desc 1 -weight 1
pack $w.desc -anchor nw -fill x -pady 5 -padx 5
- labelframe $w.action -text [mc "Further Action"]
+ ${NS}::labelframe $w.action -text [mc "Further Action"]
- radiobutton $w.action.fetch \
+ ${NS}::radiobutton $w.action.fetch \
-text [mc "Fetch Immediately"] \
-value fetch \
-variable @opt_action
pack $w.action.fetch -anchor nw
- radiobutton $w.action.push \
+ ${NS}::radiobutton $w.action.push \
-text [mc "Initialize Remote Repository and Push"] \
-value push \
-variable @opt_action
pack $w.action.push -anchor nw
- radiobutton $w.action.none \
+ ${NS}::radiobutton $w.action.none \
-text [mc "Do Nothing Else Now"] \
-value none \
-variable @opt_action
bind $w <Visibility> [cb _visible]
bind $w <Key-Escape> [list destroy $w]
bind $w <Key-Return> [cb _add]\;break
+ wm deiconify $top
tkwait window $w
}
field cached
constructor dialog {} {
- global all_remotes M1B
+ global all_remotes M1B use_ttk NS
- make_toplevel top w
+ make_dialog top w
wm title $top [append "[appname] ([reponame]): " [mc "Delete Branch Remotely"]]
if {$top ne {.}} {
wm geometry $top "+[winfo rootx .]+[winfo rooty .]"
}
- label $w.header -text [mc "Delete Branch Remotely"] -font font_uibold
+ ${NS}::label $w.header -text [mc "Delete Branch Remotely"] \
+ -font font_uibold -anchor center
pack $w.header -side top -fill x
- frame $w.buttons
- button $w.buttons.delete -text [mc Delete] \
+ ${NS}::frame $w.buttons
+ ${NS}::button $w.buttons.delete -text [mc Delete] \
-default active \
-command [cb _delete]
pack $w.buttons.delete -side right
- button $w.buttons.cancel -text [mc "Cancel"] \
+ ${NS}::button $w.buttons.cancel -text [mc "Cancel"] \
-command [list destroy $w]
pack $w.buttons.cancel -side right -padx 5
pack $w.buttons -side bottom -fill x -pady 10 -padx 10
- labelframe $w.dest -text [mc "From Repository"]
+ ${NS}::labelframe $w.dest -text [mc "From Repository"]
if {$all_remotes ne {}} {
- radiobutton $w.dest.remote_r \
+ ${NS}::radiobutton $w.dest.remote_r \
-text [mc "Remote:"] \
-value remote \
-variable @urltype
- eval tk_optionMenu $w.dest.remote_m @remote $all_remotes
+ if {$use_ttk} {
+ ttk::combobox $w.dest.remote_m -textvariable @remote \
+ -values $all_remotes -state readonly
+ } else {
+ eval tk_optionMenu $w.dest.remote_m @remote $all_remotes
+ }
grid $w.dest.remote_r $w.dest.remote_m -sticky w
if {[lsearch -sorted -exact $all_remotes origin] != -1} {
set remote origin
} else {
set urltype url
}
- radiobutton $w.dest.url_r \
+ ${NS}::radiobutton $w.dest.url_r \
-text [mc "Arbitrary Location:"] \
-value url \
-variable @urltype
- entry $w.dest.url_t \
- -borderwidth 1 \
- -relief sunken \
+ ${NS}::entry $w.dest.url_t \
-width 50 \
-textvariable @url \
-validate key \
grid columnconfigure $w.dest 1 -weight 1
pack $w.dest -anchor nw -fill x -pady 5 -padx 5
- labelframe $w.heads -text [mc "Branches"]
- listbox $w.heads.l \
+ ${NS}::labelframe $w.heads -text [mc "Branches"]
+ slistbox $w.heads.l \
-height 10 \
-width 70 \
-listvariable @head_list \
- -selectmode extended \
- -yscrollcommand [list $w.heads.sby set]
- scrollbar $w.heads.sby -command [list $w.heads.l yview]
+ -selectmode extended
- frame $w.heads.footer
- label $w.heads.footer.status \
+ ${NS}::frame $w.heads.footer
+ ${NS}::label $w.heads.footer.status \
-textvariable @status \
-anchor w \
-justify left
- button $w.heads.footer.rescan \
+ ${NS}::button $w.heads.footer.rescan \
-text [mc "Rescan"] \
-command [cb _rescan]
pack $w.heads.footer.status -side left -fill x
pack $w.heads.footer.rescan -side right
pack $w.heads.footer -side bottom -fill x
- pack $w.heads.sby -side right -fill y
pack $w.heads.l -side left -fill both -expand 1
pack $w.heads -fill both -expand 1 -pady 5 -padx 5
- labelframe $w.validate -text [mc "Delete Only If"]
- radiobutton $w.validate.head_r \
+ ${NS}::labelframe $w.validate -text [mc "Delete Only If"]
+ ${NS}::radiobutton $w.validate.head_r \
-text [mc "Merged Into:"] \
-value head \
-variable @checktype
trace add variable @head_list write [cb _write_head_list]
trace add variable @check_head write [cb _write_check_head]
grid $w.validate.head_r $w.validate.head_m -sticky w
- radiobutton $w.validate.always_r \
+ ${NS}::radiobutton $w.validate.always_r \
-text [mc "Always (Do not perform merge checks)"] \
-value always \
-variable @checktype
field smarkbot
constructor new {i_w i_text args} {
+ global use_ttk NS
set w $i_w
set ctext $i_text
- frame $w
- label $w.l -text [mc Find:]
+ ${NS}::frame $w
+ ${NS}::label $w.l -text [mc Find:]
entry $w.ent -textvariable ${__this}::searchstring -background lightgreen
- button $w.bn -text [mc Next] -command [cb find_next]
- button $w.bp -text [mc Prev] -command [cb find_prev]
- checkbutton $w.cs -text [mc Case-Sensitive] \
+ ${NS}::button $w.bn -text [mc Next] -command [cb find_next]
+ ${NS}::button $w.bp -text [mc Prev] -command [cb find_prev]
+ ${NS}::checkbutton $w.cs -text [mc Case-Sensitive] \
-variable ${__this}::casesensitive -command [cb _incrsearch]
pack $w.l -side left
pack $w.cs -side right
# Copyright (C) 2006, 2007 Shawn Pearce
proc do_windows_shortcut {} {
+ global _gitworktree
set fn [tk_getSaveFile \
-parent . \
-title [append "[appname] ([reponame]): " [mc "Create Desktop Icon"]] \
[info nameofexecutable] \
[file normalize $::argv0] \
] \
- [file dirname [file normalize [gitdir]]]
+ [file normalize [$_gitworktree]]
} err]} {
error_popup [strcat [mc "Cannot write shortcut:"] "\n\n$err"]
}
}
proc do_cygwin_shortcut {} {
- global argv0
+ global argv0 _gitworktree
if {[catch {
set desktop [exec cygpath \
$sh -c \
"CHERE_INVOKING=1 source /etc/profile;[sq $me] &" \
] \
- [file dirname [file normalize [gitdir]]]
+ [file normalize [$_gitworktree]]
} err]} {
error_popup [strcat [mc "Cannot write shortcut:"] "\n\n$err"]
}
}
proc do_ssh_key {} {
- global sshkey_title have_tk85 sshkey_fd
+ global sshkey_title have_tk85 sshkey_fd use_ttk NS
set w .sshkey_dialog
if {[winfo exists $w]} {
return
}
- toplevel $w
+ Dialog $w
wm transient $w .
set finfo [find_ssh_key]
set gen_state disabled
}
- frame $w.header -relief flat
- label $w.header.lbl -textvariable sshkey_title -anchor w
- button $w.header.gen -text [mc "Generate Key"] \
+ ${NS}::frame $w.header
+ ${NS}::label $w.header.lbl -textvariable sshkey_title -anchor w
+ ${NS}::button $w.header.gen -text [mc "Generate Key"] \
-command [list make_ssh_key $w] -state $gen_state
pack $w.header.lbl -side left -expand 1 -fill x
pack $w.header.gen -side right
text $w.contents -width 60 -height 10 -wrap char -relief sunken
pack $w.contents -fill both -expand 1
if {$have_tk85} {
- $w.contents configure -inactiveselectbackground darkblue
+ set clr darkblue
+ if {$use_ttk} { set clr [ttk::style lookup . -selectbackground] }
+ $w.contents configure -inactiveselectbackground $clr
}
- frame $w.buttons
- button $w.buttons.close -text [mc Close] \
+ ${NS}::frame $w.buttons
+ ${NS}::button $w.buttons.close -text [mc Close] \
-default active -command [list destroy $w]
pack $w.buttons.close -side right
- button $w.buttons.copy -text [mc "Copy To Clipboard"] \
+ ${NS}::button $w.buttons.copy -text [mc "Copy To Clipboard"] \
-command [list tk_textCopy $w.contents]
pack $w.buttons.copy -side left
pack $w.buttons -side bottom -fill x -pady 5 -padx 5
field meter {}; # current core git progress meter (if active)
constructor new {path} {
+ global use_ttk NS
set w $path
set w_l $w.l
set w_c $w.c
- frame $w \
- -borderwidth 1 \
- -relief sunken
- label $w_l \
+ ${NS}::frame $w
+ if {!$use_ttk} {
+ $w configure -borderwidth 1 -relief sunken
+ }
+ ${NS}::label $w_l \
-textvariable @status \
-anchor w \
-justify left
set w_l $w.l
set w_c $w.c
- frame $w
- label $w_l \
+ ${NS}::frame $w
+ ${NS}::label $w_l \
-textvariable @status \
-anchor w \
-justify left
--- /dev/null
+# Functions for supporting the use of themed Tk widgets in git-gui.
+# Copyright (C) 2009 Pat Thoyts <patthoyts@users.sourceforge.net>
+
+proc InitTheme {} {
+ # Create a color label style (bg can be overridden by widget option)
+ ttk::style layout Color.TLabel {
+ Color.Label.border -sticky news -children {
+ Color.label.fill -sticky news -children {
+ Color.Label.padding -sticky news -children {
+ Color.Label.label -sticky news}}}}
+ eval [linsert [ttk::style configure TLabel] 0 \
+ ttk::style configure Color.TLabel]
+ ttk::style configure Color.TLabel \
+ -borderwidth 0 -relief flat -padding 2
+ ttk::style map Color.TLabel -background {{} gold}
+ # We also need a padded label.
+ ttk::style configure Padded.TLabel \
+ -padding {5 5} -borderwidth 1 -relief solid
+ # We need a gold frame.
+ ttk::style layout Gold.TFrame {
+ Gold.Frame.border -sticky nswe -children {
+ Gold.Frame.fill -sticky nswe}}
+ ttk::style configure Gold.TFrame -background gold -relief flat
+ # listboxes should have a theme border so embed in ttk::frame
+ ttk::style layout SListbox.TFrame {
+ SListbox.Frame.Entry.field -sticky news -border true -children {
+ SListbox.Frame.padding -sticky news
+ }
+ }
+}
+
+proc gold_frame {w args} {
+ global use_ttk
+ if {$use_ttk} {
+ eval [linsert $args 0 ttk::frame $w -style Gold.TFrame]
+ } else {
+ eval [linsert $args 0 frame $w -background gold]
+ }
+}
+
+proc tlabel {w args} {
+ global use_ttk
+ if {$use_ttk} {
+ set cmd [list ttk::label $w -style Color.TLabel]
+ foreach {k v} $args {
+ switch -glob -- $k {
+ -activebackground {}
+ default { lappend cmd $k $v }
+ }
+ }
+ eval $cmd
+ } else {
+ eval [linsert $args 0 label $w]
+ }
+}
+
+# The padded label gets used in the about class.
+proc paddedlabel {w args} {
+ global use_ttk
+ if {$use_ttk} {
+ eval [linsert $args 0 ttk::label $w -style Padded.TLabel]
+ } else {
+ eval [linsert $args 0 label $w \
+ -padx 5 -pady 5 \
+ -justify left \
+ -anchor w \
+ -borderwidth 1 \
+ -relief solid]
+ }
+}
+
+# Create a toplevel for use as a dialog.
+# If available, sets the EWMH dialog hint and if ttk is enabled
+# place a themed frame over the surface.
+proc Dialog {w args} {
+ eval [linsert $args 0 toplevel $w -class Dialog]
+ pave_toplevel $w
+ return $w
+}
+
+# Tk toplevels are not themed - so pave it over with a themed frame to get
+# the base color correct per theme.
+proc pave_toplevel {w} {
+ global use_ttk
+ if {$use_ttk && ![winfo exists $w.!paving]} {
+ set paving [ttk::frame $w.!paving]
+ place $paving -x 0 -y 0 -relwidth 1 -relheight 1
+ lower $paving
+ }
+}
+
+# Create a scrolled listbox with appropriate border for the current theme.
+# On many themes the border for a scrolled listbox needs to go around the
+# listbox and the scrollbar.
+proc slistbox {w args} {
+ global use_ttk NS
+ if {$use_ttk} {
+ set f [ttk::frame $w -style SListbox.TFrame -padding 2]
+ } else {
+ set f [frame $w -relief flat]
+ }
+ if {[catch {
+ if {$use_ttk} {
+ eval [linsert $args 0 listbox $f.list -relief flat \
+ -highlightthickness 0 -borderwidth 0]
+ } else {
+ eval [linsert $args 0 listbox $f.list]
+ }
+ ${NS}::scrollbar $f.vs -command [list $f.list yview]
+ $f.list configure -yscrollcommand [list $f.vs set]
+ grid $f.list $f.vs -sticky news
+ grid rowconfigure $f 0 -weight 1
+ grid columnconfigure $f 0 -weight 1
+ bind $f.list <<ListboxSelect>> \
+ [list event generate $w <<ListboxSelect>>]
+ interp hide {} $w
+ interp alias {} $w {} $f.list
+ } err]} {
+ destroy $f
+ return -code error $err
+ }
+ return $w
+}
+
+# fetch the background color from a widget.
+proc get_bg_color {w} {
+ global use_ttk
+ if {$use_ttk} {
+ set bg [ttk::style lookup [winfo class $w] -background]
+ } else {
+ set bg [$w cget -background]
+ }
+ return $bg
+}
+
+# ttk::spinbox didn't get added until 8.6
+proc tspinbox {w args} {
+ global use_ttk
+ if {$use_ttk && [llength [info commands ttk::spinbox]] > 0} {
+ eval [linsert $args 0 ttk::spinbox $w]
+ } else {
+ eval [linsert $args 0 spinbox $w]
+ }
+}
+
+# Tk 8.6 provides a standard font selection dialog. This uses the native
+# dialogs on Windows and MacOSX or a standard Tk dialog on X11.
+proc tchoosefont {w title familyvar sizevar} {
+ if {[package vsatisfies [package provide Tk] 8.6]} {
+ upvar #0 $familyvar family
+ upvar #0 $sizevar size
+ tk fontchooser configure -parent $w -title $title \
+ -font [list $family $size] \
+ -command [list on_choosefont $familyvar $sizevar]
+ tk fontchooser show
+ } else {
+ choose_font::pick $w $title $familyvar $sizevar
+ }
+}
+
+# Called when the Tk 8.6 fontchooser selects a font.
+proc on_choosefont {familyvar sizevar font} {
+ upvar #0 $familyvar family
+ upvar #0 $sizevar size
+ set font [font actual $font]
+ set family [dict get $font -family]
+ set size [dict get $font -size]
+}
+
+# Local variables:
+# mode: tcl
+# indent-tabs-mode: t
+# tab-width: 4
+# End:
field ask_args 0; # ask for additional args
constructor dialog {} {
- global repo_config
+ global repo_config use_ttk NS
- make_toplevel top w
+ make_dialog top w
wm title $top [append "[appname] ([reponame]): " [mc "Add Tool"]]
if {$top ne {.}} {
wm geometry $top "+[winfo rootx .]+[winfo rooty .]"
wm transient $top .
}
- label $w.header -text [mc "Add New Tool Command"] -font font_uibold
+ ${NS}::label $w.header -text [mc "Add New Tool Command"] \
+ -font font_uibold -anchor center
pack $w.header -side top -fill x
- frame $w.buttons
- checkbutton $w.buttons.global \
+ ${NS}::frame $w.buttons
+ ${NS}::checkbutton $w.buttons.global \
-text [mc "Add globally"] \
-variable @add_global
pack $w.buttons.global -side left -padx 5
- button $w.buttons.create -text [mc Add] \
+ ${NS}::button $w.buttons.create -text [mc Add] \
-default active \
-command [cb _add]
pack $w.buttons.create -side right
- button $w.buttons.cancel -text [mc Cancel] \
+ ${NS}::button $w.buttons.cancel -text [mc Cancel] \
-command [list destroy $w]
pack $w.buttons.cancel -side right -padx 5
pack $w.buttons -side bottom -fill x -pady 10 -padx 10
- labelframe $w.desc -text [mc "Tool Details"]
+ ${NS}::labelframe $w.desc -text [mc "Tool Details"]
- label $w.desc.name_cmnt -anchor w\
+ ${NS}::label $w.desc.name_cmnt -anchor w\
-text [mc "Use '/' separators to create a submenu tree:"]
grid x $w.desc.name_cmnt -sticky we -padx {0 5} -pady {0 2}
- label $w.desc.name_l -text [mc "Name:"]
+ ${NS}::label $w.desc.name_l -text [mc "Name:"]
set w_name $w.desc.name_t
- entry $w_name \
- -borderwidth 1 \
- -relief sunken \
+ ${NS}::entry $w_name \
-width 40 \
-textvariable @name \
-validate key \
-validatecommand [cb _validate_name %d %S]
grid $w.desc.name_l $w_name -sticky we -padx {0 5}
- label $w.desc.cmd_l -text [mc "Command:"]
+ ${NS}::label $w.desc.cmd_l -text [mc "Command:"]
set w_cmd $w.desc.cmd_t
- entry $w_cmd \
- -borderwidth 1 \
- -relief sunken \
+ ${NS}::entry $w_cmd \
-width 40 \
-textvariable @command
grid $w.desc.cmd_l $w_cmd -sticky we -padx {0 5} -pady {0 3}
grid columnconfigure $w.desc 1 -weight 1
pack $w.desc -anchor nw -fill x -pady 5 -padx 5
- checkbutton $w.confirm \
+ ${NS}::checkbutton $w.confirm \
-text [mc "Show a dialog before running"] \
-variable @confirm -command [cb _check_enable_dlg]
- labelframe $w.dlg -labelwidget $w.confirm
+ ${NS}::labelframe $w.dlg -labelwidget $w.confirm
- checkbutton $w.dlg.askbranch \
+ ${NS}::checkbutton $w.dlg.askbranch \
-text [mc "Ask the user to select a revision (sets \$REVISION)"] \
-variable @ask_branch -state disabled
pack $w.dlg.askbranch -anchor w -padx 15
- checkbutton $w.dlg.askargs \
+ ${NS}::checkbutton $w.dlg.askargs \
-text [mc "Ask the user for additional arguments (sets \$ARGS)"] \
-variable @ask_args -state disabled
pack $w.dlg.askargs -anchor w -padx 15
pack $w.dlg -anchor nw -fill x -pady {0 8} -padx 5
- checkbutton $w.noconsole \
+ ${NS}::checkbutton $w.noconsole \
-text [mc "Don't show the command output window"] \
-variable @no_console
pack $w.noconsole -anchor w -padx 5
- checkbutton $w.needsfile \
+ ${NS}::checkbutton $w.needsfile \
-text [mc "Run only if a diff is selected (\$FILENAME not empty)"] \
-variable @needs_file
pack $w.needsfile -anchor w -padx 5
field w_names ; # name list
constructor dialog {} {
- global repo_config global_config system_config
+ global repo_config global_config system_config use_ttk NS
load_config 1
- make_toplevel top w
+ make_dialog top w
wm title $top [append "[appname] ([reponame]): " [mc "Remove Tool"]]
if {$top ne {.}} {
wm geometry $top "+[winfo rootx .]+[winfo rooty .]"
wm transient $top .
}
- label $w.header -text [mc "Remove Tool Commands"] -font font_uibold
+ ${NS}::label $w.header -text [mc "Remove Tool Commands"] \
+ -font font_uibold -anchor center
pack $w.header -side top -fill x
- frame $w.buttons
- button $w.buttons.create -text [mc Remove] \
+ ${NS}::frame $w.buttons
+ ${NS}::button $w.buttons.create -text [mc Remove] \
-default active \
-command [cb _remove]
pack $w.buttons.create -side right
- button $w.buttons.cancel -text [mc Cancel] \
+ ${NS}::button $w.buttons.cancel -text [mc Cancel] \
-command [list destroy $w]
pack $w.buttons.cancel -side right -padx 5
pack $w.buttons -side bottom -fill x -pady 10 -padx 10
- frame $w.list
+ ${NS}::frame $w.list
set w_names $w.list.l
- listbox $w_names \
+ slistbox $w_names \
-height 10 \
-width 30 \
-selectmode extended \
- -exportselection false \
- -yscrollcommand [list $w.list.sby set]
- scrollbar $w.list.sby -command [list $w.list.l yview]
- pack $w.list.sby -side right -fill y
+ -exportselection false
pack $w.list.l -side left -fill both -expand 1
pack $w.list -fill both -expand 1 -pady 5 -padx 5
}
if {$local_cnt > 0} {
- label $w.colorlbl -foreground blue \
+ ${NS}::label $w.colorlbl -foreground blue \
-text [mc "(Blue denotes repository-local tools)"]
pack $w.colorlbl -fill x -pady 5 -padx 5
}
field argstr {}; # arguments
constructor dialog {fullname} {
- global M1B
+ global M1B use_ttk NS
set title [get_config "guitool.$fullname.title"]
if {$title eq {}} {
regsub {/} $fullname { / } title
}
- make_toplevel top w -autodelete 0
+ make_dialog top w -autodelete 0
wm title $top [append "[appname] ([reponame]): " $title]
if {$top ne {.}} {
wm geometry $top "+[winfo rootx .]+[winfo rooty .]"
set prompt [mc "Run Command: %s" $command]
}
- label $w.header -text $prompt -font font_uibold
+ ${NS}::label $w.header -text $prompt -font font_uibold -anchor center
pack $w.header -side top -fill x
set argprompt [get_config "guitool.$fullname.argprompt"]
set argprompt [mc "Arguments"]
}
- labelframe $w.arg -text $argprompt
+ ${NS}::labelframe $w.arg -text $argprompt
set w_args $w.arg.txt
- entry $w_args \
- -borderwidth 1 \
- -relief sunken \
+ ${NS}::entry $w_args \
-width 40 \
-textvariable @argstr
pack $w_args -padx 5 -pady 5 -fill both
pack $w.rev -anchor nw -fill both -expand 1 -pady 5 -padx 5
}
- frame $w.buttons
+ ${NS}::frame $w.buttons
if {$is_ask_revs} {
- button $w.buttons.visualize \
+ ${NS}::button $w.buttons.visualize \
-text [mc Visualize] \
-command [cb _visualize]
pack $w.buttons.visualize -side left
}
- button $w.buttons.ok \
+ ${NS}::button $w.buttons.ok \
-text [mc OK] \
-command [cb _start]
pack $w.buttons.ok -side right
- button $w.buttons.cancel \
+ ${NS}::button $w.buttons.cancel \
-text [mc "Cancel"] \
-command [cb _cancel]
pack $w.buttons.cancel -side right -padx 5
proc do_push_anywhere {} {
global all_remotes current_branch
global push_urltype push_remote push_url push_thin push_tags
- global push_force
+ global push_force use_ttk NS
set w .push_setup
toplevel $w
+ wm withdraw $w
wm geometry $w "+[winfo rootx .]+[winfo rooty .]"
+ pave_toplevel $w
- label $w.header -text [mc "Push Branches"] -font font_uibold
+ ${NS}::label $w.header -text [mc "Push Branches"] \
+ -font font_uibold -anchor center
pack $w.header -side top -fill x
- frame $w.buttons
- button $w.buttons.create -text [mc Push] \
+ ${NS}::frame $w.buttons
+ ${NS}::button $w.buttons.create -text [mc Push] \
-default active \
-command [list start_push_anywhere_action $w]
pack $w.buttons.create -side right
- button $w.buttons.cancel -text [mc "Cancel"] \
+ ${NS}::button $w.buttons.cancel -text [mc "Cancel"] \
-default normal \
-command [list destroy $w]
pack $w.buttons.cancel -side right -padx 5
pack $w.buttons -side bottom -fill x -pady 10 -padx 10
- labelframe $w.source -text [mc "Source Branches"]
- listbox $w.source.l \
+ ${NS}::labelframe $w.source -text [mc "Source Branches"]
+ slistbox $w.source.l \
-height 10 \
-width 70 \
- -selectmode extended \
- -yscrollcommand [list $w.source.sby set]
+ -selectmode extended
foreach h [load_all_heads] {
$w.source.l insert end $h
if {$h eq $current_branch} {
$w.source.l select set end
}
}
- scrollbar $w.source.sby -command [list $w.source.l yview]
- pack $w.source.sby -side right -fill y
pack $w.source.l -side left -fill both -expand 1
pack $w.source -fill both -expand 1 -pady 5 -padx 5
- labelframe $w.dest -text [mc "Destination Repository"]
+ ${NS}::labelframe $w.dest -text [mc "Destination Repository"]
if {$all_remotes ne {}} {
- radiobutton $w.dest.remote_r \
+ ${NS}::radiobutton $w.dest.remote_r \
-text [mc "Remote:"] \
-value remote \
-variable push_urltype
- eval tk_optionMenu $w.dest.remote_m push_remote $all_remotes
+ if {$use_ttk} {
+ ttk::combobox $w.dest.remote_m -textvariable push_remote \
+ -values $all_remotes
+ } else {
+ eval tk_optionMenu $w.dest.remote_m push_remote $all_remotes
+ }
grid $w.dest.remote_r $w.dest.remote_m -sticky w
if {[lsearch -sorted -exact $all_remotes origin] != -1} {
set push_remote origin
} else {
set push_urltype url
}
- radiobutton $w.dest.url_r \
+ ${NS}::radiobutton $w.dest.url_r \
-text [mc "Arbitrary Location:"] \
-value url \
-variable push_urltype
- entry $w.dest.url_t \
- -borderwidth 1 \
- -relief sunken \
+ ${NS}::entry $w.dest.url_t \
-width 50 \
-textvariable push_url \
-validate key \
grid columnconfigure $w.dest 1 -weight 1
pack $w.dest -anchor nw -fill x -pady 5 -padx 5
- labelframe $w.options -text [mc "Transfer Options"]
- checkbutton $w.options.force \
+ ${NS}::labelframe $w.options -text [mc "Transfer Options"]
+ ${NS}::checkbutton $w.options.force \
-text [mc "Force overwrite existing branch (may discard changes)"] \
-variable push_force
grid $w.options.force -columnspan 2 -sticky w
- checkbutton $w.options.thin \
+ ${NS}::checkbutton $w.options.thin \
-text [mc "Use thin pack (for slow network connections)"] \
-variable push_thin
grid $w.options.thin -columnspan 2 -sticky w
- checkbutton $w.options.tags \
+ ${NS}::checkbutton $w.options.tags \
-text [mc "Include tags"] \
-variable push_tags
grid $w.options.tags -columnspan 2 -sticky w
bind $w <Key-Escape> "destroy $w"
bind $w <Key-Return> [list start_push_anywhere_action $w]
wm title $w [append "[appname] ([reponame]): " [mc "Push"]]
+ wm deiconify $w
tkwait window $w
}
msgstr ""
"Project-Id-Version: git-gui\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-06 20:51+0100\n"
-"PO-Revision-Date: 2008-12-06 21:22+0100\n"
+"POT-Creation-Date: 2010-01-26 22:22+0100\n"
+"PO-Revision-Date: 2010-01-26 22:25+0100\n"
"Last-Translator: Christian Stimming <stimming@tuhh.de>\n"
"Language-Team: German\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: git-gui.sh:41 git-gui.sh:634 git-gui.sh:648 git-gui.sh:661 git-gui.sh:744
-#: git-gui.sh:763
+#: git-gui.sh:41 git-gui.sh:793 git-gui.sh:807 git-gui.sh:820 git-gui.sh:903
+#: git-gui.sh:922
msgid "git-gui: fatal error"
msgstr "git-gui: Programmfehler"
-#: git-gui.sh:593
+#: git-gui.sh:743
#, tcl-format
msgid "Invalid font specified in %s:"
msgstr "Ungültige Zeichensatz-Angabe in %s:"
-#: git-gui.sh:620
+#: git-gui.sh:779
msgid "Main Font"
msgstr "Programmschriftart"
-#: git-gui.sh:621
+#: git-gui.sh:780
msgid "Diff/Console Font"
msgstr "Vergleich-Schriftart"
-#: git-gui.sh:635
+#: git-gui.sh:794
msgid "Cannot find git in PATH."
msgstr "Git kann im PATH nicht gefunden werden."
-#: git-gui.sh:662
+#: git-gui.sh:821
msgid "Cannot parse Git version string:"
msgstr "Git Versionsangabe kann nicht erkannt werden:"
-#: git-gui.sh:680
+#: git-gui.sh:839
#, tcl-format
msgid ""
"Git version cannot be determined.\n"
"\n"
"Soll angenommen werden, »%s« sei Version 1.5.0?\n"
-#: git-gui.sh:918
+#: git-gui.sh:1128
msgid "Git directory not found:"
msgstr "Git-Verzeichnis nicht gefunden:"
-#: git-gui.sh:925
+#: git-gui.sh:1146
msgid "Cannot move to top of working directory:"
msgstr ""
"Es konnte nicht in das oberste Verzeichnis der Arbeitskopie gewechselt "
"werden:"
-#: git-gui.sh:932
-msgid "Cannot use funny .git directory:"
-msgstr "Unerwartete Struktur des .git Verzeichnis:"
+#: git-gui.sh:1154
+msgid "Cannot use bare repository:"
+msgstr "Leeres Projektarchiv kann nicht benutzt werden:"
-#: git-gui.sh:937
+#: git-gui.sh:1162
msgid "No working directory"
msgstr "Kein Arbeitsverzeichnis"
-#: git-gui.sh:1084 lib/checkout_op.tcl:283
+#: git-gui.sh:1334 lib/checkout_op.tcl:306
msgid "Refreshing file status..."
msgstr "Dateistatus aktualisieren..."
-#: git-gui.sh:1149
+#: git-gui.sh:1390
msgid "Scanning for modified files ..."
msgstr "Nach geänderten Dateien suchen..."
-#: git-gui.sh:1367
+#: git-gui.sh:1454
msgid "Calling prepare-commit-msg hook..."
msgstr "Aufrufen der Eintragen-Vorbereiten-Kontrolle..."
-#: git-gui.sh:1384
+#: git-gui.sh:1471
msgid "Commit declined by prepare-commit-msg hook."
-msgstr "Eintragen abgelehnt durch Eintragen-Vorbereiten-Kontrolle (»prepare-commit hook«)."
+msgstr ""
+"Eintragen abgelehnt durch Eintragen-Vorbereiten-Kontrolle (»prepare-commit "
+"hook«)."
-#: git-gui.sh:1542 lib/browser.tcl:246
+#: git-gui.sh:1629 lib/browser.tcl:246
msgid "Ready."
msgstr "Bereit."
-#: git-gui.sh:1590
+#: git-gui.sh:1787
+#, tcl-format
+msgid "Displaying only %s of %s files."
+msgstr "Nur %s von %s Dateien werden angezeigt."
+
+#: git-gui.sh:1913
msgid "Unmodified"
msgstr "Unverändert"
-#: git-gui.sh:1592
+#: git-gui.sh:1915
msgid "Modified, not staged"
msgstr "Verändert, nicht bereitgestellt"
-#: git-gui.sh:1593 git-gui.sh:1598
+#: git-gui.sh:1916 git-gui.sh:1924
msgid "Staged for commit"
msgstr "Bereitgestellt zum Eintragen"
-#: git-gui.sh:1594 git-gui.sh:1599
+#: git-gui.sh:1917 git-gui.sh:1925
msgid "Portions staged for commit"
msgstr "Teilweise bereitgestellt zum Eintragen"
-#: git-gui.sh:1595 git-gui.sh:1600
+#: git-gui.sh:1918 git-gui.sh:1926
msgid "Staged for commit, missing"
msgstr "Bereitgestellt zum Eintragen, fehlend"
-#: git-gui.sh:1658
+#: git-gui.sh:1920
msgid "File type changed, not staged"
msgstr "Dateityp geändert, nicht bereitgestellt"
-#: git-gui.sh:1659
+#: git-gui.sh:1921
msgid "File type changed, staged"
msgstr "Dateityp geändert, bereitgestellt"
-#: git-gui.sh:1661
+#: git-gui.sh:1923
msgid "Untracked, not staged"
msgstr "Nicht unter Versionskontrolle, nicht bereitgestellt"
-#: git-gui.sh:1602
+#: git-gui.sh:1928
msgid "Missing"
msgstr "Fehlend"
-#: git-gui.sh:1603
+#: git-gui.sh:1929
msgid "Staged for removal"
msgstr "Bereitgestellt zum Löschen"
-#: git-gui.sh:1604
+#: git-gui.sh:1930
msgid "Staged for removal, still present"
msgstr "Bereitgestellt zum Löschen, trotzdem vorhanden"
-#: git-gui.sh:1606 git-gui.sh:1607 git-gui.sh:1608 git-gui.sh:1609
+#: git-gui.sh:1932 git-gui.sh:1933 git-gui.sh:1934 git-gui.sh:1935
+#: git-gui.sh:1936 git-gui.sh:1937
msgid "Requires merge resolution"
msgstr "Konfliktauflösung nötig"
-#: git-gui.sh:1644
+#: git-gui.sh:1972
msgid "Starting gitk... please wait..."
msgstr "Gitk wird gestartet... bitte warten."
-#: git-gui.sh:1698
+#: git-gui.sh:1984
msgid "Couldn't find gitk in PATH"
msgstr "Gitk kann im PATH nicht gefunden werden."
-#: git-gui.sh:1948 lib/choose_repository.tcl:36
+#: git-gui.sh:2043
+msgid "Couldn't find git gui in PATH"
+msgstr "»Git gui« kann im PATH nicht gefunden werden."
+
+#: git-gui.sh:2455 lib/choose_repository.tcl:36
msgid "Repository"
msgstr "Projektarchiv"
-#: git-gui.sh:1861
+#: git-gui.sh:2456
msgid "Edit"
msgstr "Bearbeiten"
-#: git-gui.sh:1863 lib/choose_rev.tcl:561
+#: git-gui.sh:2458 lib/choose_rev.tcl:561
msgid "Branch"
msgstr "Zweig"
-#: git-gui.sh:1866 lib/choose_rev.tcl:548
+#: git-gui.sh:2461 lib/choose_rev.tcl:548
msgid "Commit@@noun"
msgstr "Version"
-#: git-gui.sh:1869 lib/merge.tcl:120 lib/merge.tcl:149 lib/merge.tcl:167
+#: git-gui.sh:2464 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168
msgid "Merge"
msgstr "Zusammenführen"
-#: git-gui.sh:1870 lib/choose_rev.tcl:557
+#: git-gui.sh:2465 lib/choose_rev.tcl:557
msgid "Remote"
msgstr "Andere Archive"
-#: git-gui.sh:2293
+#: git-gui.sh:2468
msgid "Tools"
msgstr "Werkzeuge"
-#: git-gui.sh:2302
+#: git-gui.sh:2477
msgid "Explore Working Copy"
msgstr "Arbeitskopie im Dateimanager"
-#: git-gui.sh:2247
+#: git-gui.sh:2483
msgid "Browse Current Branch's Files"
msgstr "Aktuellen Zweig durchblättern"
-#: git-gui.sh:1883
+#: git-gui.sh:2487
msgid "Browse Branch Files..."
msgstr "Einen Zweig durchblättern..."
-#: git-gui.sh:1888
+#: git-gui.sh:2492
msgid "Visualize Current Branch's History"
msgstr "Aktuellen Zweig darstellen"
-#: git-gui.sh:1892
+#: git-gui.sh:2496
msgid "Visualize All Branch History"
msgstr "Alle Zweige darstellen"
-#: git-gui.sh:1899
+#: git-gui.sh:2503
#, tcl-format
msgid "Browse %s's Files"
msgstr "Zweig »%s« durchblättern"
-#: git-gui.sh:1901
+#: git-gui.sh:2505
#, tcl-format
msgid "Visualize %s's History"
msgstr "Historie von »%s« darstellen"
-#: git-gui.sh:1906 lib/database.tcl:27 lib/database.tcl:67
+#: git-gui.sh:2510 lib/database.tcl:27 lib/database.tcl:67
msgid "Database Statistics"
msgstr "Datenbankstatistik"
-#: git-gui.sh:1909 lib/database.tcl:34
+#: git-gui.sh:2513 lib/database.tcl:34
msgid "Compress Database"
msgstr "Datenbank komprimieren"
-#: git-gui.sh:1912
+#: git-gui.sh:2516
msgid "Verify Database"
msgstr "Datenbank überprüfen"
-#: git-gui.sh:1919 git-gui.sh:1923 git-gui.sh:1927 lib/shortcut.tcl:7
-#: lib/shortcut.tcl:39 lib/shortcut.tcl:71
+#: git-gui.sh:2523 git-gui.sh:2527 git-gui.sh:2531 lib/shortcut.tcl:8
+#: lib/shortcut.tcl:40 lib/shortcut.tcl:72
msgid "Create Desktop Icon"
msgstr "Desktop-Icon erstellen"
-#: git-gui.sh:1932 lib/choose_repository.tcl:177 lib/choose_repository.tcl:185
+#: git-gui.sh:2539 lib/choose_repository.tcl:183 lib/choose_repository.tcl:191
msgid "Quit"
msgstr "Beenden"
-#: git-gui.sh:1939
+#: git-gui.sh:2547
msgid "Undo"
msgstr "Rückgängig"
-#: git-gui.sh:1942
+#: git-gui.sh:2550
msgid "Redo"
msgstr "Wiederholen"
-#: git-gui.sh:1946 git-gui.sh:2443
+#: git-gui.sh:2554 git-gui.sh:3109
msgid "Cut"
msgstr "Ausschneiden"
-#: git-gui.sh:1949 git-gui.sh:2446 git-gui.sh:2520 git-gui.sh:2614
+#: git-gui.sh:2557 git-gui.sh:3112 git-gui.sh:3186 git-gui.sh:3259
#: lib/console.tcl:69
msgid "Copy"
msgstr "Kopieren"
-#: git-gui.sh:1952 git-gui.sh:2449
+#: git-gui.sh:2560 git-gui.sh:3115
msgid "Paste"
msgstr "Einfügen"
-#: git-gui.sh:1955 git-gui.sh:2452 lib/branch_delete.tcl:26
+#: git-gui.sh:2563 git-gui.sh:3118 lib/branch_delete.tcl:26
#: lib/remote_branch_delete.tcl:38
msgid "Delete"
msgstr "Löschen"
-#: git-gui.sh:1959 git-gui.sh:2456 git-gui.sh:2618 lib/console.tcl:71
+#: git-gui.sh:2567 git-gui.sh:3122 git-gui.sh:3263 lib/console.tcl:71
msgid "Select All"
msgstr "Alle auswählen"
-#: git-gui.sh:1968
+#: git-gui.sh:2576
msgid "Create..."
msgstr "Erstellen..."
-#: git-gui.sh:1974
+#: git-gui.sh:2582
msgid "Checkout..."
msgstr "Umstellen..."
-#: git-gui.sh:1980
+#: git-gui.sh:2588
msgid "Rename..."
msgstr "Umbenennen..."
-#: git-gui.sh:1985 git-gui.sh:2085
+#: git-gui.sh:2593
msgid "Delete..."
msgstr "Löschen..."
-#: git-gui.sh:1990
+#: git-gui.sh:2598
msgid "Reset..."
msgstr "Zurücksetzen..."
-#: git-gui.sh:2372
+#: git-gui.sh:2608
msgid "Done"
msgstr "Fertig"
-#: git-gui.sh:2374
+#: git-gui.sh:2610
msgid "Commit@@verb"
msgstr "Eintragen"
-#: git-gui.sh:2383 git-gui.sh:2786
+#: git-gui.sh:2619 git-gui.sh:3050
msgid "New Commit"
msgstr "Neue Version"
-#: git-gui.sh:2010 git-gui.sh:2396
+#: git-gui.sh:2627 git-gui.sh:3057
msgid "Amend Last Commit"
msgstr "Letzte nachbessern"
-#: git-gui.sh:2019 git-gui.sh:2356 lib/remote_branch_delete.tcl:99
+#: git-gui.sh:2637 git-gui.sh:3011 lib/remote_branch_delete.tcl:99
msgid "Rescan"
msgstr "Neu laden"
-#: git-gui.sh:2025
+#: git-gui.sh:2643
msgid "Stage To Commit"
msgstr "Zum Eintragen bereitstellen"
-#: git-gui.sh:2031
+#: git-gui.sh:2649
msgid "Stage Changed Files To Commit"
msgstr "Geänderte Dateien bereitstellen"
-#: git-gui.sh:2037
+#: git-gui.sh:2655
msgid "Unstage From Commit"
msgstr "Aus der Bereitstellung herausnehmen"
-#: git-gui.sh:2042 lib/index.tcl:395
+#: git-gui.sh:2661 lib/index.tcl:412
msgid "Revert Changes"
msgstr "Änderungen verwerfen"
-#: git-gui.sh:2141 git-gui.sh:2702
+#: git-gui.sh:2669 git-gui.sh:3310 git-gui.sh:3341
msgid "Show Less Context"
msgstr "Weniger Zeilen anzeigen"
-#: git-gui.sh:2145 git-gui.sh:2706
+#: git-gui.sh:2673 git-gui.sh:3314 git-gui.sh:3345
msgid "Show More Context"
msgstr "Mehr Zeilen anzeigen"
-#: git-gui.sh:2151 git-gui.sh:2470 git-gui.sh:2569
+#: git-gui.sh:2680 git-gui.sh:3024 git-gui.sh:3133
msgid "Sign Off"
msgstr "Abzeichnen"
-#: git-gui.sh:2458
+#: git-gui.sh:2696
msgid "Local Merge..."
msgstr "Lokales Zusammenführen..."
-#: git-gui.sh:2069
+#: git-gui.sh:2701
msgid "Abort Merge..."
msgstr "Zusammenführen abbrechen..."
-#: git-gui.sh:2475
+#: git-gui.sh:2713 git-gui.sh:2741
msgid "Add..."
msgstr "Hinzufügen..."
-#: git-gui.sh:2479
+#: git-gui.sh:2717
msgid "Push..."
msgstr "Versenden..."
-#: git-gui.sh:2483
+#: git-gui.sh:2721
msgid "Delete Branch..."
msgstr "Zweig löschen..."
-#: git-gui.sh:2493 git-gui.sh:2515 lib/about.tcl:14
-#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:50
-#, tcl-format
-msgid "About %s"
-msgstr "Über %s"
-
-#: git-gui.sh:2099
-msgid "Preferences..."
-msgstr "Einstellungen..."
-
-#: git-gui.sh:2107 git-gui.sh:2639
+#: git-gui.sh:2731 git-gui.sh:3292
msgid "Options..."
msgstr "Optionen..."
-#: git-gui.sh:2576
+#: git-gui.sh:2742
msgid "Remove..."
msgstr "Entfernen..."
-#: git-gui.sh:2585 lib/choose_repository.tcl:50
+#: git-gui.sh:2751 lib/choose_repository.tcl:50
msgid "Help"
msgstr "Hilfe"
-#: git-gui.sh:2154
+#: git-gui.sh:2755 git-gui.sh:2759 lib/about.tcl:14
+#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:53
+#, tcl-format
+msgid "About %s"
+msgstr "Über %s"
+
+#: git-gui.sh:2783
msgid "Online Documentation"
msgstr "Online-Dokumentation"
-#: git-gui.sh:2614 lib/choose_repository.tcl:47 lib/choose_repository.tcl:56
+#: git-gui.sh:2786 lib/choose_repository.tcl:47 lib/choose_repository.tcl:56
msgid "Show SSH Key"
msgstr "SSH-Schlüssel anzeigen"
-#: git-gui.sh:2707
+#: git-gui.sh:2893
#, tcl-format
msgid "fatal: cannot stat path %s: No such file or directory"
msgstr ""
"Fehler: Verzeichnis »%s« kann nicht gelesen werden: Datei oder Verzeichnis "
"nicht gefunden"
-#: git-gui.sh:2271
+#: git-gui.sh:2926
msgid "Current Branch:"
msgstr "Aktueller Zweig:"
-#: git-gui.sh:2292
+#: git-gui.sh:2947
msgid "Staged Changes (Will Commit)"
msgstr "Bereitstellung (zum Eintragen)"
-#: git-gui.sh:2312
+#: git-gui.sh:2967
msgid "Unstaged Changes"
msgstr "Nicht bereitgestellte Änderungen"
-#: git-gui.sh:2362
+#: git-gui.sh:3017
msgid "Stage Changed"
msgstr "Alles bereitstellen"
-#: git-gui.sh:2378 lib/transport.tcl:93 lib/transport.tcl:182
+#: git-gui.sh:3036 lib/transport.tcl:104 lib/transport.tcl:193
msgid "Push"
msgstr "Versenden"
-#: git-gui.sh:2408
+#: git-gui.sh:3071
msgid "Initial Commit Message:"
msgstr "Erste Versionsbeschreibung:"
-#: git-gui.sh:2409
+#: git-gui.sh:3072
msgid "Amended Commit Message:"
msgstr "Nachgebesserte Beschreibung:"
-#: git-gui.sh:2410
+#: git-gui.sh:3073
msgid "Amended Initial Commit Message:"
msgstr "Nachgebesserte erste Beschreibung:"
-#: git-gui.sh:2411
+#: git-gui.sh:3074
msgid "Amended Merge Commit Message:"
msgstr "Nachgebesserte Zusammenführungs-Beschreibung:"
-#: git-gui.sh:2412
+#: git-gui.sh:3075
msgid "Merge Commit Message:"
msgstr "Zusammenführungs-Beschreibung:"
-#: git-gui.sh:2413
+#: git-gui.sh:3076
msgid "Commit Message:"
msgstr "Versionsbeschreibung:"
-#: git-gui.sh:2459 git-gui.sh:2622 lib/console.tcl:73
+#: git-gui.sh:3125 git-gui.sh:3267 lib/console.tcl:73
msgid "Copy All"
msgstr "Alle kopieren"
-#: git-gui.sh:2483 lib/blame.tcl:107
+#: git-gui.sh:3149 lib/blame.tcl:104
msgid "File:"
msgstr "Datei:"
-#: git-gui.sh:2834
+#: git-gui.sh:3255
msgid "Refresh"
msgstr "Aktualisieren"
-#: git-gui.sh:2631
+#: git-gui.sh:3276
msgid "Decrease Font Size"
msgstr "Schriftgröße verkleinern"
-#: git-gui.sh:2635
+#: git-gui.sh:3280
msgid "Increase Font Size"
msgstr "Schriftgröße vergrößern"
-#: git-gui.sh:3033 lib/blame.tcl:281
+#: git-gui.sh:3288 lib/blame.tcl:281
msgid "Encoding"
msgstr "Zeichenkodierung"
-#: git-gui.sh:3044
+#: git-gui.sh:3299
msgid "Apply/Reverse Hunk"
msgstr "Kontext anwenden/umkehren"
-#: git-gui.sh:2875
+#: git-gui.sh:3304
msgid "Apply/Reverse Line"
msgstr "Zeile anwenden/umkehren"
-#: git-gui.sh:2885
+#: git-gui.sh:3323
msgid "Run Merge Tool"
msgstr "Zusammenführungswerkzeug"
-#: git-gui.sh:2890
+#: git-gui.sh:3328
msgid "Use Remote Version"
msgstr "Entfernte Version benutzen"
-#: git-gui.sh:2894
+#: git-gui.sh:3332
msgid "Use Local Version"
msgstr "Lokale Version benutzen"
-#: git-gui.sh:2898
+#: git-gui.sh:3336
msgid "Revert To Base"
msgstr "Ursprüngliche Version benutzen"
-#: git-gui.sh:3091
+#: git-gui.sh:3354
+msgid "Visualize These Changes In The Submodule"
+msgstr "Diese Änderungen im Untermodul darstellen"
+
+#: git-gui.sh:3358
+msgid "Visualize Current Branch History In The Submodule"
+msgstr "Aktuellen Zweig im Untermodul darstellen"
+
+#: git-gui.sh:3362
+msgid "Visualize All Branch History In The Submodule"
+msgstr "Alle Zweige im Untermodul darstellen"
+
+#: git-gui.sh:3367
+msgid "Start git gui In The Submodule"
+msgstr "Git gui im Untermodul starten"
+
+#: git-gui.sh:3389
msgid "Unstage Hunk From Commit"
msgstr "Kontext aus Bereitstellung herausnehmen"
-#: git-gui.sh:2748
+#: git-gui.sh:3391
+msgid "Unstage Lines From Commit"
+msgstr "Zeilen aus der Bereitstellung herausnehmen"
+
+#: git-gui.sh:3393
msgid "Unstage Line From Commit"
msgstr "Zeile aus der Bereitstellung herausnehmen"
-#: git-gui.sh:2750
+#: git-gui.sh:3396
msgid "Stage Hunk For Commit"
msgstr "Kontext zur Bereitstellung hinzufügen"
-#: git-gui.sh:2751
+#: git-gui.sh:3398
+msgid "Stage Lines For Commit"
+msgstr "Zeilen zur Bereitstellung hinzufügen"
+
+#: git-gui.sh:3400
msgid "Stage Line For Commit"
msgstr "Zeile zur Bereitstellung hinzufügen"
-#: git-gui.sh:2771
+#: git-gui.sh:3424
msgid "Initializing..."
msgstr "Initialisieren..."
-#: git-gui.sh:2762
+#: git-gui.sh:3541
#, tcl-format
msgid ""
"Possible environment issues exist.\n"
"von %s an Git weitergegeben werden:\n"
"\n"
-#: git-gui.sh:2792
+#: git-gui.sh:3570
msgid ""
"\n"
"This is due to a known issue with the\n"
"Dies ist ein bekanntes Problem der Tcl-Version, die\n"
"in Cygwin mitgeliefert wird."
-#: git-gui.sh:2797
+#: git-gui.sh:3575
#, tcl-format
msgid ""
"\n"
msgid "git-gui - a graphical user interface for Git."
msgstr "git-gui - eine grafische Oberfläche für Git."
-#: lib/blame.tcl:77
+#: lib/blame.tcl:72
msgid "File Viewer"
msgstr "Datei-Browser"
-#: lib/blame.tcl:81
+#: lib/blame.tcl:78
msgid "Commit:"
msgstr "Version:"
-#: lib/blame.tcl:264
+#: lib/blame.tcl:271
msgid "Copy Commit"
msgstr "Version kopieren"
msgid "Do Full Copy Detection"
msgstr "Volle Kopie-Erkennung"
-#: lib/blame.tcl:263
+#: lib/blame.tcl:288
msgid "Show History Context"
msgstr "Historien-Kontext anzeigen"
-#: lib/blame.tcl:266
+#: lib/blame.tcl:291
msgid "Blame Parent Commit"
msgstr "Elternversion annotieren"
-#: lib/blame.tcl:394
+#: lib/blame.tcl:450
#, tcl-format
msgid "Reading %s..."
msgstr "%s lesen..."
-#: lib/blame.tcl:488
+#: lib/blame.tcl:557
msgid "Loading copy/move tracking annotations..."
msgstr "Annotierungen für Kopieren/Verschieben werden geladen..."
-#: lib/blame.tcl:508
+#: lib/blame.tcl:577
msgid "lines annotated"
msgstr "Zeilen annotiert"
-#: lib/blame.tcl:689
+#: lib/blame.tcl:769
msgid "Loading original location annotations..."
msgstr "Annotierungen für ursprünglichen Ort werden geladen..."
-#: lib/blame.tcl:692
+#: lib/blame.tcl:772
msgid "Annotation complete."
msgstr "Annotierung vollständig."
-#: lib/blame.tcl:737
+#: lib/blame.tcl:802
msgid "Busy"
msgstr "Verarbeitung läuft"
-#: lib/blame.tcl:738
+#: lib/blame.tcl:803
msgid "Annotation process is already running."
msgstr "Annotierung läuft bereits."
-#: lib/blame.tcl:777
+#: lib/blame.tcl:842
msgid "Running thorough copy detection..."
msgstr "Intensive Kopie-Erkennung läuft..."
-#: lib/blame.tcl:827
+#: lib/blame.tcl:910
msgid "Loading annotation..."
msgstr "Annotierung laden..."
-#: lib/blame.tcl:802
+#: lib/blame.tcl:963
msgid "Author:"
msgstr "Autor:"
-#: lib/blame.tcl:806
+#: lib/blame.tcl:967
msgid "Committer:"
msgstr "Eintragender:"
-#: lib/blame.tcl:811
+#: lib/blame.tcl:972
msgid "Original File:"
msgstr "Ursprüngliche Datei:"
-#: lib/blame.tcl:1021
+#: lib/blame.tcl:1020
msgid "Cannot find HEAD commit:"
msgstr "Zweigspitze (»HEAD«) kann nicht gefunden werden:"
-#: lib/blame.tcl:1076
+#: lib/blame.tcl:1075
msgid "Cannot find parent commit:"
msgstr "Elternversion kann nicht gefunden werden:"
-#: lib/blame.tcl:1001
+#: lib/blame.tcl:1090
msgid "Unable to display parent"
msgstr "Elternversion kann nicht angezeigt werden"
-#: lib/blame.tcl:1002 lib/diff.tcl:191
+#: lib/blame.tcl:1091 lib/diff.tcl:320
msgid "Error loading diff:"
msgstr "Fehler beim Laden des Vergleichs:"
-#: lib/blame.tcl:1142
+#: lib/blame.tcl:1231
msgid "Originally By:"
msgstr "Ursprünglich von:"
-#: lib/blame.tcl:931
+#: lib/blame.tcl:1237
msgid "In File:"
msgstr "In Datei:"
-#: lib/blame.tcl:936
+#: lib/blame.tcl:1242
msgid "Copied Or Moved Here By:"
msgstr "Kopiert oder verschoben durch:"
#: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35
#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282
-#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:171
-#: lib/option.tcl:103 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97
+#: lib/checkout_op.tcl:579 lib/choose_font.tcl:43 lib/merge.tcl:172
+#: lib/option.tcl:125 lib/remote_add.tcl:32 lib/remote_branch_delete.tcl:42
+#: lib/tools_dlg.tcl:40 lib/tools_dlg.tcl:204 lib/tools_dlg.tcl:352
+#: lib/transport.tcl:108
msgid "Cancel"
msgstr "Abbrechen"
-#: lib/branch_checkout.tcl:32 lib/browser.tcl:287
+#: lib/branch_checkout.tcl:32 lib/browser.tcl:287 lib/tools_dlg.tcl:328
msgid "Revision"
msgstr "Version"
-#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:242
+#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:280
msgid "Options"
msgstr "Optionen"
msgid "Create New Branch"
msgstr "Neuen Zweig erstellen"
-#: lib/branch_create.tcl:31 lib/choose_repository.tcl:371
+#: lib/branch_create.tcl:31 lib/choose_repository.tcl:381
msgid "Create"
msgstr "Erstellen"
msgid "Branch Name"
msgstr "Zweigname"
-#: lib/branch_create.tcl:43
+#: lib/branch_create.tcl:43 lib/remote_add.tcl:39 lib/tools_dlg.tcl:50
msgid "Name:"
msgstr "Name:"
msgid "Fast Forward Only"
msgstr "Nur Schnellzusammenführung"
-#: lib/branch_create.tcl:85 lib/checkout_op.tcl:514
+#: lib/branch_create.tcl:85 lib/checkout_op.tcl:571
msgid "Reset"
msgstr "Zurücksetzen"
msgid "Delete Only If Merged Into"
msgstr "Nur löschen, wenn zusammengeführt nach"
-#: lib/branch_delete.tcl:54
-msgid "Always (Do not perform merge test.)"
-msgstr "Immer (ohne Zusammenführungstest)"
+#: lib/branch_delete.tcl:54 lib/remote_branch_delete.tcl:119
+msgid "Always (Do not perform merge checks)"
+msgstr "Immer (Keine Zusammenführungsprüfung)"
#: lib/branch_delete.tcl:103
#, tcl-format
msgid "The following branches are not completely merged into %s:"
msgstr "Folgende Zweige sind noch nicht mit »%s« zusammengeführt:"
+#: lib/branch_delete.tcl:115 lib/remote_branch_delete.tcl:217
+msgid ""
+"Recovering deleted branches is difficult.\n"
+"\n"
+"Delete the selected branches?"
+msgstr ""
+"Das Wiederherstellen von gelöschten Zweigen ist nur mit größerem Aufwand "
+"möglich.\n"
+"\n"
+"Sollen die ausgewählten Zweige gelöscht werden?"
+
#: lib/branch_delete.tcl:141
#, tcl-format
msgid ""
msgid "Please select a branch to rename."
msgstr "Bitte wählen Sie einen Zweig zum umbenennen."
-#: lib/branch_rename.tcl:96 lib/checkout_op.tcl:179
+#: lib/branch_rename.tcl:96 lib/checkout_op.tcl:202
#, tcl-format
msgid "Branch '%s' already exists."
msgstr "Zweig »%s« existiert bereits."
msgid "Browse Branch Files"
msgstr "Dateien des Zweigs durchblättern"
-#: lib/browser.tcl:278 lib/choose_repository.tcl:387
-#: lib/choose_repository.tcl:474 lib/choose_repository.tcl:484
-#: lib/choose_repository.tcl:987
+#: lib/browser.tcl:278 lib/choose_repository.tcl:398
+#: lib/choose_repository.tcl:486 lib/choose_repository.tcl:497
+#: lib/choose_repository.tcl:1028
msgid "Browse"
msgstr "Blättern"
-#: lib/checkout_op.tcl:79
+#: lib/checkout_op.tcl:85
#, tcl-format
msgid "Fetching %s from %s"
msgstr "Änderungen »%s« von »%s« anfordern"
-#: lib/checkout_op.tcl:127
+#: lib/checkout_op.tcl:133
#, tcl-format
msgid "fatal: Cannot resolve %s"
msgstr "Fehler: »%s« kann nicht als Zweig oder Version erkannt werden"
-#: lib/checkout_op.tcl:140 lib/console.tcl:81 lib/database.tcl:31
+#: lib/checkout_op.tcl:146 lib/console.tcl:81 lib/database.tcl:31
+#: lib/sshkey.tcl:53
msgid "Close"
msgstr "Schließen"
-#: lib/checkout_op.tcl:169
+#: lib/checkout_op.tcl:175
#, tcl-format
msgid "Branch '%s' does not exist."
msgstr "Zweig »%s« existiert nicht."
-#: lib/checkout_op.tcl:193
+#: lib/checkout_op.tcl:194
#, tcl-format
msgid "Failed to configure simplified git-pull for '%s'."
msgstr "Fehler beim Einrichten der vereinfachten git-pull für »%s«."
-#: lib/checkout_op.tcl:228
+#: lib/checkout_op.tcl:229
#, tcl-format
msgid ""
"Branch '%s' already exists.\n"
"Zweig kann nicht mit »%s« schnellzusammengeführt werden. Reguläres "
"Zusammenführen ist notwendig."
-#: lib/checkout_op.tcl:220
+#: lib/checkout_op.tcl:243
#, tcl-format
msgid "Merge strategy '%s' not supported."
msgstr "Zusammenführungsmethode »%s« nicht unterstützt."
-#: lib/checkout_op.tcl:239
+#: lib/checkout_op.tcl:262
#, tcl-format
msgid "Failed to update '%s'."
msgstr "Aktualisieren von »%s« fehlgeschlagen."
-#: lib/checkout_op.tcl:251
+#: lib/checkout_op.tcl:274
msgid "Staging area (index) is already locked."
msgstr "Bereitstellung (»index«) ist zur Bearbeitung gesperrt (»locked«)."
-#: lib/checkout_op.tcl:266
+#: lib/checkout_op.tcl:289
msgid ""
"Last scanned state does not match repository state.\n"
"\n"
"\n"
"Es wird gleich neu geladen.\n"
-#: lib/checkout_op.tcl:322
+#: lib/checkout_op.tcl:345
#, tcl-format
msgid "Updating working directory to '%s'..."
msgstr "Arbeitskopie umstellen auf »%s«..."
-#: lib/checkout_op.tcl:323
+#: lib/checkout_op.tcl:346
msgid "files checked out"
msgstr "Dateien aktualisiert"
-#: lib/checkout_op.tcl:353
+#: lib/checkout_op.tcl:376
#, tcl-format
msgid "Aborted checkout of '%s' (file level merging is required)."
msgstr ""
"Auf Zweig »%s« umstellen abgebrochen (Zusammenführen der Dateien ist "
"notwendig)."
-#: lib/checkout_op.tcl:354
+#: lib/checkout_op.tcl:377
msgid "File level merge required."
msgstr "Zusammenführen der Dateien ist notwendig."
-#: lib/checkout_op.tcl:358
+#: lib/checkout_op.tcl:381
#, tcl-format
msgid "Staying on branch '%s'."
msgstr "Es wird auf Zweig »%s« verblieben."
-#: lib/checkout_op.tcl:429
+#: lib/checkout_op.tcl:452
msgid ""
"You are no longer on a local branch.\n"
"\n"
"Wenn Sie auf einem Zweig arbeiten möchten, erstellen Sie bitte jetzt einen "
"Zweig mit der Auswahl »Abgetrennte Arbeitskopie-Version«."
-#: lib/checkout_op.tcl:446 lib/checkout_op.tcl:450
+#: lib/checkout_op.tcl:503 lib/checkout_op.tcl:507
#, tcl-format
msgid "Checked out '%s'."
msgstr "Umgestellt auf »%s«."
-#: lib/checkout_op.tcl:478
+#: lib/checkout_op.tcl:535
#, tcl-format
msgid "Resetting '%s' to '%s' will lose the following commits:"
msgstr "Zurücksetzen von »%s« nach »%s« wird folgende Versionen verwerfen:"
-#: lib/checkout_op.tcl:500
+#: lib/checkout_op.tcl:557
msgid "Recovering lost commits may not be easy."
msgstr ""
"Verworfene Versionen können nur mit größerem Aufwand wiederhergestellt "
"werden."
-#: lib/checkout_op.tcl:505
+#: lib/checkout_op.tcl:562
#, tcl-format
msgid "Reset '%s'?"
msgstr "»%s« zurücksetzen?"
-#: lib/checkout_op.tcl:510 lib/merge.tcl:163
+#: lib/checkout_op.tcl:567 lib/merge.tcl:164 lib/tools_dlg.tcl:343
msgid "Visualize"
msgstr "Darstellen"
-#: lib/checkout_op.tcl:578
+#: lib/checkout_op.tcl:635
#, tcl-format
msgid ""
"Failed to set current branch.\n"
msgid "Git Gui"
msgstr "Git Gui"
-#: lib/choose_repository.tcl:81 lib/choose_repository.tcl:376
+#: lib/choose_repository.tcl:87 lib/choose_repository.tcl:386
msgid "Create New Repository"
msgstr "Neues Projektarchiv"
-#: lib/choose_repository.tcl:87
+#: lib/choose_repository.tcl:93
msgid "New..."
msgstr "Neu..."
-#: lib/choose_repository.tcl:94 lib/choose_repository.tcl:460
+#: lib/choose_repository.tcl:100 lib/choose_repository.tcl:471
msgid "Clone Existing Repository"
msgstr "Projektarchiv klonen"
-#: lib/choose_repository.tcl:100
+#: lib/choose_repository.tcl:106
msgid "Clone..."
msgstr "Klonen..."
-#: lib/choose_repository.tcl:107 lib/choose_repository.tcl:976
+#: lib/choose_repository.tcl:113 lib/choose_repository.tcl:1016
msgid "Open Existing Repository"
msgstr "Projektarchiv öffnen"
-#: lib/choose_repository.tcl:113
+#: lib/choose_repository.tcl:119
msgid "Open..."
msgstr "Öffnen..."
-#: lib/choose_repository.tcl:126
+#: lib/choose_repository.tcl:132
msgid "Recent Repositories"
msgstr "Zuletzt benutzte Projektarchive"
-#: lib/choose_repository.tcl:132
+#: lib/choose_repository.tcl:138
msgid "Open Recent Repository:"
msgstr "Zuletzt benutztes Projektarchiv öffnen:"
-#: lib/choose_repository.tcl:296 lib/choose_repository.tcl:303
-#: lib/choose_repository.tcl:310
+#: lib/choose_repository.tcl:306 lib/choose_repository.tcl:313
+#: lib/choose_repository.tcl:320
#, tcl-format
msgid "Failed to create repository %s:"
msgstr "Projektarchiv »%s« konnte nicht erstellt werden:"
-#: lib/choose_repository.tcl:387
+#: lib/choose_repository.tcl:391
msgid "Directory:"
msgstr "Verzeichnis:"
-#: lib/choose_repository.tcl:412 lib/choose_repository.tcl:537
-#: lib/choose_repository.tcl:1011
+#: lib/choose_repository.tcl:423 lib/choose_repository.tcl:550
+#: lib/choose_repository.tcl:1052
msgid "Git Repository"
msgstr "Git Projektarchiv"
-#: lib/choose_repository.tcl:442
+#: lib/choose_repository.tcl:448
#, tcl-format
msgid "Directory %s already exists."
msgstr "Verzeichnis »%s« existiert bereits."
-#: lib/choose_repository.tcl:446
+#: lib/choose_repository.tcl:452
#, tcl-format
msgid "File %s already exists."
msgstr "Datei »%s« existiert bereits."
-#: lib/choose_repository.tcl:455
+#: lib/choose_repository.tcl:466
msgid "Clone"
msgstr "Klonen"
-#: lib/choose_repository.tcl:473
+#: lib/choose_repository.tcl:479
msgid "Source Location:"
msgstr "Herkunft:"
-#: lib/choose_repository.tcl:484
+#: lib/choose_repository.tcl:490
msgid "Target Directory:"
msgstr "Zielverzeichnis:"
-#: lib/choose_repository.tcl:490
+#: lib/choose_repository.tcl:502
msgid "Clone Type:"
msgstr "Art des Klonens:"
-#: lib/choose_repository.tcl:495
+#: lib/choose_repository.tcl:508
msgid "Standard (Fast, Semi-Redundant, Hardlinks)"
msgstr "Standard (schnell, teilweise redundant, Hardlinks)"
-#: lib/choose_repository.tcl:501
+#: lib/choose_repository.tcl:514
msgid "Full Copy (Slower, Redundant Backup)"
msgstr "Alles kopieren (langsamer, volle Redundanz)"
-#: lib/choose_repository.tcl:507
+#: lib/choose_repository.tcl:520
msgid "Shared (Fastest, Not Recommended, No Backup)"
msgstr "Verknüpft (schnell, nicht empfohlen, kein Backup)"
-#: lib/choose_repository.tcl:543 lib/choose_repository.tcl:590
-#: lib/choose_repository.tcl:736 lib/choose_repository.tcl:806
-#: lib/choose_repository.tcl:1017 lib/choose_repository.tcl:1025
+#: lib/choose_repository.tcl:556 lib/choose_repository.tcl:603
+#: lib/choose_repository.tcl:749 lib/choose_repository.tcl:819
+#: lib/choose_repository.tcl:1058 lib/choose_repository.tcl:1066
#, tcl-format
msgid "Not a Git repository: %s"
msgstr "Kein Git-Projektarchiv in »%s« gefunden."
-#: lib/choose_repository.tcl:579
+#: lib/choose_repository.tcl:592
msgid "Standard only available for local repository."
msgstr "Standard ist nur für lokale Projektarchive verfügbar."
-#: lib/choose_repository.tcl:583
+#: lib/choose_repository.tcl:596
msgid "Shared only available for local repository."
msgstr "Verknüpft ist nur für lokale Projektarchive verfügbar."
-#: lib/choose_repository.tcl:604
+#: lib/choose_repository.tcl:617
#, tcl-format
msgid "Location %s already exists."
msgstr "Projektarchiv »%s« existiert bereits."
-#: lib/choose_repository.tcl:615
+#: lib/choose_repository.tcl:628
msgid "Failed to configure origin"
msgstr "Der Ursprungsort konnte nicht eingerichtet werden"
-#: lib/choose_repository.tcl:627
+#: lib/choose_repository.tcl:640
msgid "Counting objects"
msgstr "Objekte werden gezählt"
-#: lib/choose_repository.tcl:628
+#: lib/choose_repository.tcl:641
msgid "buckets"
msgstr "Buckets"
-#: lib/choose_repository.tcl:652
+#: lib/choose_repository.tcl:665
#, tcl-format
msgid "Unable to copy objects/info/alternates: %s"
msgstr "Kopien von Objekten/Info/Alternates konnten nicht erstellt werden: %s"
-#: lib/choose_repository.tcl:688
+#: lib/choose_repository.tcl:701
#, tcl-format
msgid "Nothing to clone from %s."
msgstr "Von »%s« konnte nichts geklont werden."
-#: lib/choose_repository.tcl:690 lib/choose_repository.tcl:904
-#: lib/choose_repository.tcl:916
+#: lib/choose_repository.tcl:703 lib/choose_repository.tcl:917
+#: lib/choose_repository.tcl:929
msgid "The 'master' branch has not been initialized."
msgstr "Der »master«-Zweig wurde noch nicht initialisiert."
-#: lib/choose_repository.tcl:703
+#: lib/choose_repository.tcl:716
msgid "Hardlinks are unavailable. Falling back to copying."
msgstr "Hardlinks nicht verfügbar. Stattdessen wird kopiert."
-#: lib/choose_repository.tcl:715
+#: lib/choose_repository.tcl:728
#, tcl-format
msgid "Cloning from %s"
msgstr "Kopieren von »%s«"
-#: lib/choose_repository.tcl:746
+#: lib/choose_repository.tcl:759
msgid "Copying objects"
msgstr "Objektdatenbank kopieren"
-#: lib/choose_repository.tcl:747
+#: lib/choose_repository.tcl:760
msgid "KiB"
msgstr "KB"
-#: lib/choose_repository.tcl:771
+#: lib/choose_repository.tcl:784
#, tcl-format
msgid "Unable to copy object: %s"
msgstr "Objekt kann nicht kopiert werden: %s"
-#: lib/choose_repository.tcl:781
+#: lib/choose_repository.tcl:794
msgid "Linking objects"
msgstr "Objekte verlinken"
-#: lib/choose_repository.tcl:782
+#: lib/choose_repository.tcl:795
msgid "objects"
msgstr "Objekte"
-#: lib/choose_repository.tcl:790
+#: lib/choose_repository.tcl:803
#, tcl-format
msgid "Unable to hardlink object: %s"
msgstr "Für Objekt konnte kein Hardlink erstellt werden: %s"
-#: lib/choose_repository.tcl:845
+#: lib/choose_repository.tcl:858
msgid "Cannot fetch branches and objects. See console output for details."
msgstr ""
"Zweige und Objekte konnten nicht angefordert werden. Kontrollieren Sie die "
"Ausgaben auf der Konsole für weitere Angaben."
-#: lib/choose_repository.tcl:856
+#: lib/choose_repository.tcl:869
msgid "Cannot fetch tags. See console output for details."
msgstr ""
"Markierungen konnten nicht angefordert werden. Kontrollieren Sie die "
"Ausgaben auf der Konsole für weitere Angaben."
-#: lib/choose_repository.tcl:880
+#: lib/choose_repository.tcl:893
msgid "Cannot determine HEAD. See console output for details."
msgstr ""
"Die Zweigspitze (HEAD) konnte nicht gefunden werden. Kontrollieren Sie die "
"Ausgaben auf der Konsole für weitere Angaben."
-#: lib/choose_repository.tcl:889
+#: lib/choose_repository.tcl:902
#, tcl-format
msgid "Unable to cleanup %s"
msgstr "Verzeichnis »%s« kann nicht aufgeräumt werden."
-#: lib/choose_repository.tcl:895
+#: lib/choose_repository.tcl:908
msgid "Clone failed."
msgstr "Klonen fehlgeschlagen."
-#: lib/choose_repository.tcl:902
+#: lib/choose_repository.tcl:915
msgid "No default branch obtained."
msgstr "Kein voreingestellter Zweig gefunden."
-#: lib/choose_repository.tcl:913
+#: lib/choose_repository.tcl:926
#, tcl-format
msgid "Cannot resolve %s as a commit."
msgstr "»%s« wurde nicht als Version gefunden."
-#: lib/choose_repository.tcl:925
+#: lib/choose_repository.tcl:938
msgid "Creating working directory"
msgstr "Arbeitskopie erstellen"
-#: lib/choose_repository.tcl:926 lib/index.tcl:65 lib/index.tcl:127
-#: lib/index.tcl:193
+#: lib/choose_repository.tcl:939 lib/index.tcl:67 lib/index.tcl:130
+#: lib/index.tcl:198
msgid "files"
msgstr "Dateien"
-#: lib/choose_repository.tcl:955
+#: lib/choose_repository.tcl:968
msgid "Initial file checkout failed."
msgstr "Erstellen der Arbeitskopie fehlgeschlagen."
-#: lib/choose_repository.tcl:971
+#: lib/choose_repository.tcl:1011
msgid "Open"
msgstr "Öffnen"
-#: lib/choose_repository.tcl:981
+#: lib/choose_repository.tcl:1021
msgid "Repository:"
msgstr "Projektarchiv:"
-#: lib/choose_repository.tcl:1031
+#: lib/choose_repository.tcl:1072
#, tcl-format
msgid "Failed to open repository %s:"
msgstr "Projektarchiv »%s« konnte nicht geöffnet werden."
"unfertige Zusammenführung existiert. Dazu müssen Sie die Zusammenführung "
"beenden oder abbrechen.\n"
-#: lib/commit.tcl:49
+#: lib/commit.tcl:48
msgid "Error loading commit data for amend:"
msgstr "Fehler beim Laden der Versionsdaten für Nachbessern:"
-#: lib/commit.tcl:76
+#: lib/commit.tcl:75
msgid "Unable to obtain your identity:"
msgstr "Benutzername konnte nicht bestimmt werden:"
-#: lib/commit.tcl:81
+#: lib/commit.tcl:80
msgid "Invalid GIT_COMMITTER_IDENT:"
msgstr "Ungültiger Wert von GIT_COMMITTER_INDENT:"
-#: lib/commit.tcl:133
+#: lib/commit.tcl:129
+#, tcl-format
+msgid "warning: Tcl does not support encoding '%s'."
+msgstr "Warning: Tcl/Tk unterstützt die Zeichencodierung »%s« nicht."
+
+#: lib/commit.tcl:149
msgid ""
"Last scanned state does not match repository state.\n"
"\n"
"\n"
"Es wird gleich neu geladen.\n"
-#: lib/commit.tcl:154
+#: lib/commit.tcl:172
#, tcl-format
msgid ""
"Unmerged files cannot be committed.\n"
"Die Datei »%s« hat noch nicht aufgelöste Zusammenführungs-Konflikte. Sie "
"müssen diese Konflikte auflösen, bevor Sie eintragen können.\n"
-#: lib/commit.tcl:162
+#: lib/commit.tcl:180
#, tcl-format
msgid ""
"Unknown file state %s detected.\n"
"\n"
"Datei »%s« kann nicht eingetragen werden.\n"
-#: lib/commit.tcl:170
+#: lib/commit.tcl:188
msgid ""
"No changes to commit.\n"
"\n"
"\n"
"Sie müssen mindestens eine Datei bereitstellen, bevor Sie eintragen können.\n"
-#: lib/commit.tcl:183
+#: lib/commit.tcl:203
msgid ""
"Please supply a commit message.\n"
"\n"
"\n"
"- Rest: Eine ausführliche Beschreibung, warum diese Änderung hilfreich ist.\n"
-#: lib/commit.tcl:207
-#, tcl-format
-msgid "warning: Tcl does not support encoding '%s'."
-msgstr "Warning: Tcl/Tk unterstützt die Zeichencodierung »%s« nicht."
-
-#: lib/commit.tcl:221
+#: lib/commit.tcl:234
msgid "Calling pre-commit hook..."
msgstr "Aufrufen der Vor-Eintragen-Kontrolle..."
-#: lib/commit.tcl:236
+#: lib/commit.tcl:249
msgid "Commit declined by pre-commit hook."
msgstr "Eintragen abgelehnt durch Vor-Eintragen-Kontrolle (»pre-commit hook«)."
-#: lib/commit.tcl:259
+#: lib/commit.tcl:272
msgid "Calling commit-msg hook..."
msgstr "Aufrufen der Versionsbeschreibungs-Kontrolle..."
-#: lib/commit.tcl:274
+#: lib/commit.tcl:287
msgid "Commit declined by commit-msg hook."
msgstr ""
"Eintragen abgelehnt durch Versionsbeschreibungs-Kontrolle (»commit-message "
"hook«)."
-#: lib/commit.tcl:287
+#: lib/commit.tcl:300
msgid "Committing changes..."
msgstr "Änderungen eintragen..."
-#: lib/commit.tcl:303
+#: lib/commit.tcl:316
msgid "write-tree failed:"
msgstr "write-tree fehlgeschlagen:"
-#: lib/commit.tcl:304 lib/commit.tcl:348 lib/commit.tcl:368
+#: lib/commit.tcl:317 lib/commit.tcl:361 lib/commit.tcl:382
msgid "Commit failed."
msgstr "Eintragen fehlgeschlagen."
-#: lib/commit.tcl:321
+#: lib/commit.tcl:334
#, tcl-format
msgid "Commit %s appears to be corrupt"
msgstr "Version »%s« scheint beschädigt zu sein"
-#: lib/commit.tcl:326
+#: lib/commit.tcl:339
msgid ""
"No changes to commit.\n"
"\n"
"\n"
"Das Arbeitsverzeichnis wird daher jetzt neu geladen.\n"
-#: lib/commit.tcl:333
+#: lib/commit.tcl:346
msgid "No changes to commit."
msgstr "Keine Änderungen, die eingetragen werden können."
-#: lib/commit.tcl:347
+#: lib/commit.tcl:360
msgid "commit-tree failed:"
msgstr "commit-tree fehlgeschlagen:"
-#: lib/commit.tcl:367
+#: lib/commit.tcl:381
msgid "update-ref failed:"
msgstr "update-ref fehlgeschlagen:"
-#: lib/commit.tcl:454
+#: lib/commit.tcl:469
#, tcl-format
msgid "Created commit %s: %s"
msgstr "Version %s übertragen: %s"
msgid "Verifying the object database with fsck-objects"
msgstr "Die Objektdatenbank durch »fsck-objects« überprüfen lassen"
-#: lib/database.tcl:108
+#: lib/database.tcl:107
#, tcl-format
msgid ""
"This repository currently has approximately %i loose objects.\n"
"\n"
"To maintain optimal performance it is strongly recommended that you compress "
-"the database when more than %i loose objects exist.\n"
+"the database.\n"
"\n"
"Compress the database now?"
msgstr ""
"Dieses Projektarchiv enthält ungefähr %i nicht verknüpfte Objekte.\n"
"\n"
-"Für eine optimale Performance wird empfohlen, die Datenbank des "
-"Projektarchivs zu komprimieren, sobald mehr als %i nicht verknüpfte Objekte "
-"vorliegen.\n"
+"Für eine optimale Performance wird empfohlen, die Datenbank des Projektarchivs zu komprimieren.\n"
"\n"
"Soll die Datenbank jetzt komprimiert werden?"
msgid "Invalid date from Git: %s"
msgstr "Ungültiges Datum von Git: %s"
-#: lib/diff.tcl:42
+#: lib/diff.tcl:64
#, tcl-format
msgid ""
"No differences detected.\n"
msgstr ""
"Keine Änderungen feststellbar.\n"
"\n"
-"»%s« enthält keine Änderungen. Zwar wurde das Änderungsdatum dieser Datei "
-"von einem anderen Programm modifiziert, aber der Inhalt der Datei ist "
+"»%s« enthält keine Änderungen. Zwar wurde das Änderungsdatum dieser Datei von "
+"einem anderen Programm modifiziert, aber der Inhalt der Datei ist "
"unverändert.\n"
"\n"
"Das Arbeitsverzeichnis wird jetzt neu geladen, um diese Änderung bei allen "
"Dateien zu prüfen."
-#: lib/diff.tcl:81
+#: lib/diff.tcl:104
#, tcl-format
msgid "Loading diff of %s..."
msgstr "Vergleich von »%s« laden..."
-#: lib/diff.tcl:120
+#: lib/diff.tcl:125
msgid ""
"LOCAL: deleted\n"
"REMOTE:\n"
"LOKAL: gelöscht\n"
"ANDERES:\n"
-#: lib/diff.tcl:125
+#: lib/diff.tcl:130
msgid ""
"REMOTE: deleted\n"
"LOCAL:\n"
"ANDERES: gelöscht\n"
"LOKAL:\n"
-#: lib/diff.tcl:132
+#: lib/diff.tcl:137
msgid "LOCAL:\n"
msgstr "LOKAL:\n"
-#: lib/diff.tcl:135
+#: lib/diff.tcl:140
msgid "REMOTE:\n"
msgstr "ANDERES:\n"
-#: lib/diff.tcl:197 lib/diff.tcl:296
+#: lib/diff.tcl:202 lib/diff.tcl:319
#, tcl-format
msgid "Unable to display %s"
msgstr "Datei »%s« kann nicht angezeigt werden"
-#: lib/diff.tcl:115
+#: lib/diff.tcl:203
msgid "Error loading file:"
msgstr "Fehler beim Laden der Datei:"
-#: lib/diff.tcl:122
+#: lib/diff.tcl:210
msgid "Git Repository (subproject)"
msgstr "Git-Projektarchiv (Unterprojekt)"
-#: lib/diff.tcl:134
+#: lib/diff.tcl:222
msgid "* Binary file (not showing content)."
msgstr "* Binärdatei (Inhalt wird nicht angezeigt)"
-#: lib/diff.tcl:222
+#: lib/diff.tcl:227
#, tcl-format
msgid ""
"* Untracked file is %d bytes.\n"
"* Datei nicht unter Versionskontrolle, Dateigröße %d Bytes.\n"
"* Nur erste %d Bytes werden angezeigt.\n"
-#: lib/diff.tcl:228
+#: lib/diff.tcl:233
#, tcl-format
msgid ""
"\n"
"* Datei nicht unter Versionskontrolle, hier abgeschnitten durch %s.\n"
"* Zum Ansehen der vollständigen Datei externen Editor benutzen.\n"
-#: lib/diff.tcl:436
+#: lib/diff.tcl:482
msgid "Failed to unstage selected hunk."
msgstr ""
"Fehler beim Herausnehmen des gewählten Kontexts aus der Bereitstellung."
-#: lib/diff.tcl:310
+#: lib/diff.tcl:489
msgid "Failed to stage selected hunk."
msgstr "Fehler beim Bereitstellen des gewählten Kontexts."
-#: lib/diff.tcl:386
+#: lib/diff.tcl:568
msgid "Failed to unstage selected line."
msgstr "Fehler beim Herausnehmen der gewählten Zeile aus der Bereitstellung."
-#: lib/diff.tcl:394
+#: lib/diff.tcl:576
msgid "Failed to stage selected line."
msgstr "Fehler beim Bereitstellen der gewählten Zeile."
msgid "Index Error"
msgstr "Fehler in Bereitstellung"
-#: lib/index.tcl:21
+#: lib/index.tcl:17
msgid ""
"Updating the Git index failed. A rescan will be automatically started to "
"resynchronize git-gui."
"Git-Aktualisierung wird jetzt gestartet, um git-gui wieder mit git zu "
"synchronisieren."
-#: lib/index.tcl:27
+#: lib/index.tcl:28
msgid "Continue"
msgstr "Fortsetzen"
msgid "Unlock Index"
msgstr "Bereitstellung freigeben"
-#: lib/index.tcl:282
+#: lib/index.tcl:289
#, tcl-format
msgid "Unstaging %s from commit"
msgstr "Datei »%s« aus der Bereitstellung herausnehmen"
-#: lib/index.tcl:313
+#: lib/index.tcl:328
msgid "Ready to commit."
msgstr "Bereit zum Eintragen."
-#: lib/index.tcl:326
+#: lib/index.tcl:341
#, tcl-format
msgid "Adding %s"
msgstr "»%s« hinzufügen..."
-#: lib/index.tcl:381
+#: lib/index.tcl:398
#, tcl-format
msgid "Revert changes in file %s?"
msgstr "Änderungen in Datei »%s« verwerfen?"
-#: lib/index.tcl:383
+#: lib/index.tcl:400
#, tcl-format
msgid "Revert changes in these %i files?"
msgstr "Änderungen in den gewählten %i Dateien verwerfen?"
-#: lib/index.tcl:391
+#: lib/index.tcl:408
msgid "Any unstaged changes will be permanently lost by the revert."
msgstr ""
"Alle nicht bereitgestellten Änderungen werden beim Verwerfen verloren gehen."
-#: lib/index.tcl:394
+#: lib/index.tcl:411
msgid "Do Nothing"
msgstr "Nichts tun"
-#: lib/index.tcl:419
+#: lib/index.tcl:429
msgid "Reverting selected files"
msgstr "Änderungen in gewählten Dateien verwerfen"
-#: lib/index.tcl:423
+#: lib/index.tcl:433
#, tcl-format
msgid "Reverting %s"
msgstr "Änderungen in %s verwerfen"
"\n"
"Es wird gleich neu geladen.\n"
-#: lib/merge.tcl:44
+#: lib/merge.tcl:45
#, tcl-format
msgid ""
"You are in the middle of a conflicted merge.\n"
"bereitstellen und eintragen, um die Zusammenführung abzuschließen. Erst "
"danach kann eine neue Zusammenführung begonnen werden.\n"
-#: lib/merge.tcl:54
+#: lib/merge.tcl:55
#, tcl-format
msgid ""
"You are in the middle of a change.\n"
"Reihenfolge können Sie mögliche Konflikte beim Zusammenführen wesentlich "
"einfacher beheben oder abbrechen.\n"
-#: lib/merge.tcl:106
+#: lib/merge.tcl:107
#, tcl-format
msgid "%s of %s"
msgstr "%s von %s"
-#: lib/merge.tcl:119
+#: lib/merge.tcl:120
#, tcl-format
msgid "Merging %s and %s..."
msgstr "Zusammenführen von %s und %s..."
-#: lib/merge.tcl:130
+#: lib/merge.tcl:131
msgid "Merge completed successfully."
msgstr "Zusammenführen erfolgreich abgeschlossen."
-#: lib/merge.tcl:132
+#: lib/merge.tcl:133
msgid "Merge failed. Conflict resolution is required."
msgstr "Zusammenführen fehlgeschlagen. Konfliktauflösung ist notwendig."
-#: lib/merge.tcl:157
+#: lib/merge.tcl:158
#, tcl-format
msgid "Merge Into %s"
msgstr "Zusammenführen in »%s«"
-#: lib/merge.tcl:176
+#: lib/merge.tcl:177
msgid "Revision To Merge"
msgstr "Zusammenzuführende Version"
-#: lib/merge.tcl:211
+#: lib/merge.tcl:212
msgid ""
"Cannot abort while amending.\n"
"\n"
"\n"
"Sie müssen die Nachbesserung der Version abschließen.\n"
-#: lib/merge.tcl:221
+#: lib/merge.tcl:222
msgid ""
"Abort merge?\n"
"\n"
"\n"
"Zusammenführen jetzt abbrechen?"
-#: lib/merge.tcl:227
+#: lib/merge.tcl:228
msgid ""
"Reset changes?\n"
"\n"
"\n"
"Änderungen jetzt zurücksetzen?"
-#: lib/merge.tcl:238
+#: lib/merge.tcl:239
msgid "Aborting"
msgstr "Abbruch"
-#: lib/merge.tcl:238
+#: lib/merge.tcl:239
msgid "files reset"
msgstr "Dateien zurückgesetzt"
-#: lib/merge.tcl:265
+#: lib/merge.tcl:267
msgid "Abort failed."
msgstr "Abbruch fehlgeschlagen."
-#: lib/merge.tcl:267
+#: lib/merge.tcl:269
msgid "Abort completed. Ready."
msgstr "Abbruch durchgeführt. Bereit."
-#: lib/mergetool.tcl:14
+#: lib/mergetool.tcl:8
msgid "Force resolution to the base version?"
msgstr "Konflikt durch Basisversion ersetzen?"
-#: lib/mergetool.tcl:15
+#: lib/mergetool.tcl:9
msgid "Force resolution to this branch?"
msgstr "Konflikt durch diesen Zweig ersetzen?"
-#: lib/mergetool.tcl:16
+#: lib/mergetool.tcl:10
msgid "Force resolution to the other branch?"
msgstr "Konflikt durch anderen Zweig ersetzen?"
-#: lib/mergetool.tcl:20
+#: lib/mergetool.tcl:14
#, tcl-format
msgid ""
"Note that the diff shows only conflicting changes.\n"
msgid "Adding resolution for %s"
msgstr "Auflösung hinzugefügt für %s"
-#: lib/mergetool.tcl:119
+#: lib/mergetool.tcl:141
msgid "Cannot resolve deletion or link conflicts using a tool"
msgstr ""
"Konflikte durch gelöschte Dateien oder symbolische Links können nicht durch "
"das Zusamenführungswerkzeug gelöst werden."
-#: lib/mergetool.tcl:124
+#: lib/mergetool.tcl:146
msgid "Conflict file does not exist"
msgstr "Konflikt-Datei existiert nicht"
-#: lib/mergetool.tcl:236
+#: lib/mergetool.tcl:264
#, tcl-format
msgid "Not a GUI merge tool: '%s'"
msgstr "Kein GUI Zusammenführungswerkzeug: »%s«"
-#: lib/mergetool.tcl:240
+#: lib/mergetool.tcl:268
#, tcl-format
msgid "Unsupported merge tool '%s'"
msgstr "Unbekanntes Zusammenführungswerkzeug: »%s«"
-#: lib/mergetool.tcl:275
+#: lib/mergetool.tcl:303
msgid "Merge tool is already running, terminate it?"
msgstr "Zusammenführungswerkzeug läuft bereits. Soll es abgebrochen werden?"
-#: lib/mergetool.tcl:295
+#: lib/mergetool.tcl:323
#, tcl-format
msgid ""
"Error retrieving versions:\n"
"Fehler beim Abrufen der Dateiversionen:\n"
"%s"
-#: lib/mergetool.tcl:315
+#: lib/mergetool.tcl:343
#, tcl-format
msgid ""
"Could not start the merge tool:\n"
"\n"
"%s"
-#: lib/mergetool.tcl:319
+#: lib/mergetool.tcl:347
msgid "Running merge tool..."
msgstr "Zusammenführungswerkzeug starten..."
-#: lib/mergetool.tcl:347 lib/mergetool.tcl:363
+#: lib/mergetool.tcl:375 lib/mergetool.tcl:383
msgid "Merge tool failed."
msgstr "Zusammenführungswerkzeug fehlgeschlagen."
msgid "Restore Defaults"
msgstr "Voreinstellungen wiederherstellen"
-#: lib/option.tcl:99
+#: lib/option.tcl:121
msgid "Save"
msgstr "Speichern"
-#: lib/option.tcl:109
+#: lib/option.tcl:131
#, tcl-format
msgid "%s Repository"
msgstr "Projektarchiv %s"
-#: lib/option.tcl:110
+#: lib/option.tcl:132
msgid "Global (All Repositories)"
msgstr "Global (Alle Projektarchive)"
-#: lib/option.tcl:116
+#: lib/option.tcl:138
msgid "User Name"
msgstr "Benutzername"
-#: lib/option.tcl:117
+#: lib/option.tcl:139
msgid "Email Address"
msgstr "E-Mail-Adresse"
-#: lib/option.tcl:119
+#: lib/option.tcl:141
msgid "Summarize Merge Commits"
msgstr "Zusammenführungs-Versionen zusammenfassen"
-#: lib/option.tcl:120
+#: lib/option.tcl:142
msgid "Merge Verbosity"
msgstr "Ausführlichkeit der Zusammenführen-Meldungen"
-#: lib/option.tcl:121
+#: lib/option.tcl:143
msgid "Show Diffstat After Merge"
msgstr "Vergleichsstatistik nach Zusammenführen anzeigen"
-#: lib/option.tcl:122
+#: lib/option.tcl:144
msgid "Use Merge Tool"
msgstr "Zusammenführungswerkzeug"
-#: lib/option.tcl:124
+#: lib/option.tcl:146
msgid "Trust File Modification Timestamps"
msgstr "Auf Dateiänderungsdatum verlassen"
-#: lib/option.tcl:124
+#: lib/option.tcl:147
msgid "Prune Tracking Branches During Fetch"
msgstr "Übernahmezweige aufräumen während Anforderung"
-#: lib/option.tcl:125
+#: lib/option.tcl:148
msgid "Match Tracking Branches"
msgstr "Passend zu Übernahmezweig"
-#: lib/option.tcl:126
+#: lib/option.tcl:149
msgid "Blame Copy Only On Changed Files"
msgstr "Kopie-Annotieren nur bei geänderten Dateien"
-#: lib/option.tcl:127
+#: lib/option.tcl:150
msgid "Minimum Letters To Blame Copy On"
msgstr "Mindestzahl Zeichen für Kopie-Annotieren"
-#: lib/option.tcl:128
+#: lib/option.tcl:151
msgid "Blame History Context Radius (days)"
msgstr "Anzahl Tage für Historien-Kontext"
-#: lib/option.tcl:129
+#: lib/option.tcl:152
msgid "Number of Diff Context Lines"
msgstr "Anzahl der Kontextzeilen beim Vergleich"
-#: lib/option.tcl:127
+#: lib/option.tcl:153
msgid "Commit Message Text Width"
msgstr "Textbreite der Versionsbeschreibung"
-#: lib/option.tcl:128
+#: lib/option.tcl:154
msgid "New Branch Name Template"
msgstr "Namensvorschlag für neue Zweige"
msgid "Spelling Dictionary:"
msgstr "Wörterbuch Rechtschreibprüfung:"
-#: lib/option.tcl:216
+#: lib/option.tcl:254
msgid "Change Font"
msgstr "Schriftart ändern"
-#: lib/option.tcl:220
+#: lib/option.tcl:258
#, tcl-format
msgid "Choose %s"
msgstr "%s wählen"
-#: lib/option.tcl:226
+#: lib/option.tcl:264
msgid "pt."
msgstr "pt."
-#: lib/option.tcl:240
+#: lib/option.tcl:278
msgid "Preferences"
msgstr "Einstellungen"
-#: lib/option.tcl:275
+#: lib/option.tcl:314
msgid "Failed to completely save options:"
msgstr "Optionen konnten nicht gespeichert werden:"
msgid "Add New Remote"
msgstr "Neues anderes Archiv hinzufügen"
-#: lib/remote_add.tcl:28
+#: lib/remote_add.tcl:28 lib/tools_dlg.tcl:36
msgid "Add"
msgstr "Hinzufügen"
#: lib/remote_add.tcl:157
#, tcl-format
msgid "Do not know how to initialize repository at location '%s'."
-msgstr ""
-"Initialisieren eines anderen Archivs an Adresse »%s« ist nicht möglich."
+msgstr "Initialisieren eines anderen Archivs an Adresse »%s« ist nicht möglich."
#: lib/remote_add.tcl:163 lib/transport.tcl:25 lib/transport.tcl:63
#: lib/transport.tcl:81
msgid "From Repository"
msgstr "In Projektarchiv"
-#: lib/remote_branch_delete.tcl:50 lib/transport.tcl:123
+#: lib/remote_branch_delete.tcl:50 lib/transport.tcl:134
msgid "Remote:"
msgstr "Anderes Archiv:"
-#: lib/remote_branch_delete.tcl:66 lib/transport.tcl:138
+#: lib/remote_branch_delete.tcl:66 lib/transport.tcl:149
msgid "Arbitrary Location:"
msgstr "Adresse:"
msgid "Merged Into:"
msgstr "Zusammengeführt mit:"
-#: lib/remote_branch_delete.tcl:119
-msgid "Always (Do not perform merge checks)"
-msgstr "Immer (Keine Zusammenführungsprüfung)"
-
#: lib/remote_branch_delete.tcl:152
msgid "A branch is required for 'Merged Into'."
msgstr "Für »Zusammenführen mit« muss ein Zweig angegeben werden."
msgid "Please select one or more branches to delete."
msgstr "Bitte wählen Sie mindestens einen Zweig, der gelöscht werden soll."
-#: lib/remote_branch_delete.tcl:216
-msgid ""
-"Recovering deleted branches is difficult.\n"
-"\n"
-"Delete the selected branches?"
-msgstr ""
-"Das Wiederherstellen von gelöschten Zweigen ist nur mit größerem Aufwand "
-"möglich.\n"
-"\n"
-"Sollen die ausgewählten Zweige gelöscht werden?"
-
#: lib/remote_branch_delete.tcl:226
#, tcl-format
msgid "Deleting branches from %s"
msgstr "Zweige auf »%s« werden gelöscht"
-#: lib/remote_branch_delete.tcl:286
+#: lib/remote_branch_delete.tcl:292
msgid "No repository selected."
msgstr "Kein Projektarchiv ausgewählt."
-#: lib/remote_branch_delete.tcl:291
+#: lib/remote_branch_delete.tcl:297
#, tcl-format
msgid "Scanning %s..."
msgstr "»%s« laden..."
msgid "Prune from"
msgstr "Aufräumen von"
-#: lib/remote.tcl:170
+#: lib/remote.tcl:173
msgid "Fetch from"
msgstr "Anfordern von"
-#: lib/remote.tcl:213
+#: lib/remote.tcl:215
msgid "Push to"
msgstr "Versenden nach"
msgid "Find:"
msgstr "Suchen:"
-#: lib/search.tcl:22
+#: lib/search.tcl:23
msgid "Next"
msgstr "Nächster"
-#: lib/search.tcl:23
+#: lib/search.tcl:24
msgid "Prev"
msgstr "Voriger"
msgid "Case-Sensitive"
msgstr "Groß-/Kleinschreibung unterscheiden"
-#: lib/shortcut.tcl:20 lib/shortcut.tcl:61
+#: lib/shortcut.tcl:21 lib/shortcut.tcl:62
msgid "Cannot write shortcut:"
msgstr "Fehler beim Schreiben der Verknüpfung:"
-#: lib/shortcut.tcl:136
+#: lib/shortcut.tcl:137
msgid "Cannot write icon:"
msgstr "Fehler beim Erstellen des Icons:"
msgid "Unrecognized spell checker"
msgstr "Unbekanntes Rechtschreibprüfungsprogramm"
-#: lib/spellcheck.tcl:180
+#: lib/spellcheck.tcl:186
msgid "No Suggestions"
msgstr "Keine Vorschläge"
-#: lib/spellcheck.tcl:381
+#: lib/spellcheck.tcl:388
msgid "Unexpected EOF from spell checker"
msgstr "Unerwartetes EOF vom Rechtschreibprüfungsprogramm"
-#: lib/spellcheck.tcl:385
+#: lib/spellcheck.tcl:392
msgid "Spell Checker Failed"
msgstr "Rechtschreibprüfung fehlgeschlagen"
msgid "Pushing %s %s to %s"
msgstr "%s %s nach %s versenden"
-#: lib/transport.tcl:89
+#: lib/transport.tcl:100
msgid "Push Branches"
msgstr "Zweige versenden"
-#: lib/transport.tcl:103
+#: lib/transport.tcl:114
msgid "Source Branches"
msgstr "Lokale Zweige"
-#: lib/transport.tcl:120
+#: lib/transport.tcl:131
msgid "Destination Repository"
msgstr "Ziel-Projektarchiv"
-#: lib/transport.tcl:158
+#: lib/transport.tcl:169
msgid "Transfer Options"
msgstr "Netzwerk-Einstellungen"
-#: lib/transport.tcl:160
+#: lib/transport.tcl:171
msgid "Force overwrite existing branch (may discard changes)"
msgstr ""
"Überschreiben von existierenden Zweigen erzwingen (könnte Änderungen löschen)"
-#: lib/transport.tcl:164
+#: lib/transport.tcl:175
msgid "Use thin pack (for slow network connections)"
msgstr "Kompaktes Datenformat benutzen (für langsame Netzverbindungen)"
-#: lib/transport.tcl:168
+#: lib/transport.tcl:179
msgid "Include tags"
msgstr "Mit Markierungen übertragen"
msgstr ""
"Project-Id-Version: fr\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-16 13:56-0800\n"
-"PO-Revision-Date: 2008-11-20 10:20+0100\n"
+"POT-Creation-Date: 2010-01-26 15:47-0800\n"
+"PO-Revision-Date: 2010-02-02 12:59+0100\n"
"Last-Translator: Christian Couder <chriscool@tuxfamily.org>\n"
"Language-Team: French\n"
"MIME-Version: 1.0\n"
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: git-gui.sh:41 git-gui.sh:737 git-gui.sh:751 git-gui.sh:764 git-gui.sh:847
-#: git-gui.sh:866
+#: git-gui.sh:41 git-gui.sh:793 git-gui.sh:807 git-gui.sh:820 git-gui.sh:903
+#: git-gui.sh:922
msgid "git-gui: fatal error"
msgstr "git-gui: erreur fatale"
-#: git-gui.sh:689
+#: git-gui.sh:743
#, tcl-format
msgid "Invalid font specified in %s:"
msgstr "Police invalide spécifiée dans %s :"
-#: git-gui.sh:723
+#: git-gui.sh:779
msgid "Main Font"
msgstr "Police principale"
-#: git-gui.sh:724
+#: git-gui.sh:780
msgid "Diff/Console Font"
msgstr "Police diff/console"
-#: git-gui.sh:738
+#: git-gui.sh:794
msgid "Cannot find git in PATH."
msgstr "Impossible de trouver git dans PATH."
-#: git-gui.sh:765
+#: git-gui.sh:821
msgid "Cannot parse Git version string:"
msgstr "Impossible de parser la version de Git :"
-#: git-gui.sh:783
+#: git-gui.sh:839
#, tcl-format
msgid ""
"Git version cannot be determined.\n"
"\n"
"Peut-on considérer que '%s' est en version 1.5.0 ?\n"
-#: git-gui.sh:1062
+#: git-gui.sh:1128
msgid "Git directory not found:"
msgstr "Impossible de trouver le répertoire git :"
-#: git-gui.sh:1069
+#: git-gui.sh:1146
msgid "Cannot move to top of working directory:"
msgstr "Impossible d'aller à la racine du répertoire de travail :"
-#: git-gui.sh:1076
-msgid "Cannot use funny .git directory:"
-msgstr "Impossible d'utiliser le répertoire .git:"
+#: git-gui.sh:1154
+msgid "Cannot use bare repository:"
+msgstr "Impossible d'utiliser un dépôt nu (bare) :"
-#: git-gui.sh:1081
+#: git-gui.sh:1162
msgid "No working directory"
msgstr "Aucun répertoire de travail"
-#: git-gui.sh:1247 lib/checkout_op.tcl:305
+#: git-gui.sh:1334 lib/checkout_op.tcl:306
msgid "Refreshing file status..."
msgstr "Rafraîchissement du statut des fichiers..."
-#: git-gui.sh:1303
+#: git-gui.sh:1390
msgid "Scanning for modified files ..."
msgstr "Recherche de fichiers modifiés..."
-#: git-gui.sh:1367
+#: git-gui.sh:1454
msgid "Calling prepare-commit-msg hook..."
msgstr "Lancement de l'action de préparation du message de commit..."
-#: git-gui.sh:1384
+#: git-gui.sh:1471
msgid "Commit declined by prepare-commit-msg hook."
msgstr "Commit refusé par l'action de préparation du message de commit."
-#: git-gui.sh:1542 lib/browser.tcl:246
+#: git-gui.sh:1629 lib/browser.tcl:246
msgid "Ready."
msgstr "Prêt."
-#: git-gui.sh:1819
+#: git-gui.sh:1787
+#, tcl-format
+msgid "Displaying only %s of %s files."
+msgstr "Affiche seulement %s fichiers sur %s."
+
+#: git-gui.sh:1913
msgid "Unmodified"
msgstr "Non modifié"
-#: git-gui.sh:1821
+#: git-gui.sh:1915
msgid "Modified, not staged"
msgstr "Modifié, pas indexé"
-#: git-gui.sh:1822 git-gui.sh:1830
+#: git-gui.sh:1916 git-gui.sh:1924
msgid "Staged for commit"
msgstr "Indexé"
-#: git-gui.sh:1823 git-gui.sh:1831
+#: git-gui.sh:1917 git-gui.sh:1925
msgid "Portions staged for commit"
msgstr "Portions indexées"
-#: git-gui.sh:1824 git-gui.sh:1832
+#: git-gui.sh:1918 git-gui.sh:1926
msgid "Staged for commit, missing"
msgstr "Indexés, manquant"
-#: git-gui.sh:1826
+#: git-gui.sh:1920
msgid "File type changed, not staged"
msgstr "Le type de fichier a changé, non indexé"
-#: git-gui.sh:1827
+#: git-gui.sh:1921
msgid "File type changed, staged"
msgstr "Le type de fichier a changé, indexé"
-#: git-gui.sh:1829
+#: git-gui.sh:1923
msgid "Untracked, not staged"
msgstr "Non versionné, non indexé"
-#: git-gui.sh:1834
+#: git-gui.sh:1928
msgid "Missing"
msgstr "Manquant"
-#: git-gui.sh:1835
+#: git-gui.sh:1929
msgid "Staged for removal"
msgstr "Indexé pour suppression"
-#: git-gui.sh:1836
+#: git-gui.sh:1930
msgid "Staged for removal, still present"
msgstr "Indexé pour suppression, toujours présent"
-#: git-gui.sh:1838 git-gui.sh:1839 git-gui.sh:1840 git-gui.sh:1841
-#: git-gui.sh:1842 git-gui.sh:1843
+#: git-gui.sh:1932 git-gui.sh:1933 git-gui.sh:1934 git-gui.sh:1935
+#: git-gui.sh:1936 git-gui.sh:1937
msgid "Requires merge resolution"
msgstr "Nécessite la résolution d'une fusion"
-#: git-gui.sh:1878
+#: git-gui.sh:1972
msgid "Starting gitk... please wait..."
msgstr "Lancement de gitk... un instant..."
-#: git-gui.sh:1887
+#: git-gui.sh:1984
msgid "Couldn't find gitk in PATH"
msgstr "Impossible de trouver gitk dans PATH."
-#: git-gui.sh:2280 lib/choose_repository.tcl:36
+#: git-gui.sh:2043
+msgid "Couldn't find git gui in PATH"
+msgstr "Impossible de trouver git gui dans PATH"
+
+#: git-gui.sh:2455 lib/choose_repository.tcl:36
msgid "Repository"
msgstr "Dépôt"
-#: git-gui.sh:2281
+#: git-gui.sh:2456
msgid "Edit"
msgstr "Édition"
-#: git-gui.sh:2283 lib/choose_rev.tcl:561
+#: git-gui.sh:2458 lib/choose_rev.tcl:561
msgid "Branch"
msgstr "Branche"
-#: git-gui.sh:2286 lib/choose_rev.tcl:548
+#: git-gui.sh:2461 lib/choose_rev.tcl:548
msgid "Commit@@noun"
msgstr "Commit"
-#: git-gui.sh:2289 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168
+#: git-gui.sh:2464 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168
msgid "Merge"
msgstr "Fusionner"
-#: git-gui.sh:2290 lib/choose_rev.tcl:557
+#: git-gui.sh:2465 lib/choose_rev.tcl:557
msgid "Remote"
msgstr "Dépôt distant"
-#: git-gui.sh:2293
+#: git-gui.sh:2468
msgid "Tools"
msgstr "Outils"
-#: git-gui.sh:2302
+#: git-gui.sh:2477
msgid "Explore Working Copy"
msgstr "Explorer la copie de travail"
-#: git-gui.sh:2307
+#: git-gui.sh:2483
msgid "Browse Current Branch's Files"
msgstr "Naviguer dans la branche courante"
-#: git-gui.sh:2311
+#: git-gui.sh:2487
msgid "Browse Branch Files..."
msgstr "Naviguer dans la branche..."
-#: git-gui.sh:2316
+#: git-gui.sh:2492
msgid "Visualize Current Branch's History"
msgstr "Visualiser l'historique de la branche courante"
-#: git-gui.sh:2320
+#: git-gui.sh:2496
msgid "Visualize All Branch History"
msgstr "Voir l'historique de toutes les branches"
-#: git-gui.sh:2327
+#: git-gui.sh:2503
#, tcl-format
msgid "Browse %s's Files"
msgstr "Parcourir l'arborescence de %s"
-#: git-gui.sh:2329
+#: git-gui.sh:2505
#, tcl-format
msgid "Visualize %s's History"
msgstr "Voir l'historique de la branche : %s"
-#: git-gui.sh:2334 lib/database.tcl:27 lib/database.tcl:67
+#: git-gui.sh:2510 lib/database.tcl:27 lib/database.tcl:67
msgid "Database Statistics"
msgstr "Statistiques du dépôt"
-#: git-gui.sh:2337 lib/database.tcl:34
+#: git-gui.sh:2513 lib/database.tcl:34
msgid "Compress Database"
msgstr "Comprimer le dépôt"
-#: git-gui.sh:2340
+#: git-gui.sh:2516
msgid "Verify Database"
msgstr "Vérifier le dépôt"
-#: git-gui.sh:2347 git-gui.sh:2351 git-gui.sh:2355 lib/shortcut.tcl:7
-#: lib/shortcut.tcl:39 lib/shortcut.tcl:71
+#: git-gui.sh:2523 git-gui.sh:2527 git-gui.sh:2531 lib/shortcut.tcl:8
+#: lib/shortcut.tcl:40 lib/shortcut.tcl:72
msgid "Create Desktop Icon"
msgstr "Créer une icône sur le bureau"
-#: git-gui.sh:2363 lib/choose_repository.tcl:183 lib/choose_repository.tcl:191
+#: git-gui.sh:2539 lib/choose_repository.tcl:183 lib/choose_repository.tcl:191
msgid "Quit"
msgstr "Quitter"
-#: git-gui.sh:2371
+#: git-gui.sh:2547
msgid "Undo"
msgstr "Défaire"
-#: git-gui.sh:2374
+#: git-gui.sh:2550
msgid "Redo"
msgstr "Refaire"
-#: git-gui.sh:2378 git-gui.sh:2923
+#: git-gui.sh:2554 git-gui.sh:3109
msgid "Cut"
msgstr "Couper"
-#: git-gui.sh:2381 git-gui.sh:2926 git-gui.sh:3000 git-gui.sh:3082
+#: git-gui.sh:2557 git-gui.sh:3112 git-gui.sh:3186 git-gui.sh:3259
#: lib/console.tcl:69
msgid "Copy"
msgstr "Copier"
-#: git-gui.sh:2384 git-gui.sh:2929
+#: git-gui.sh:2560 git-gui.sh:3115
msgid "Paste"
msgstr "Coller"
-#: git-gui.sh:2387 git-gui.sh:2932 lib/branch_delete.tcl:26
+#: git-gui.sh:2563 git-gui.sh:3118 lib/branch_delete.tcl:26
#: lib/remote_branch_delete.tcl:38
msgid "Delete"
msgstr "Supprimer"
-#: git-gui.sh:2391 git-gui.sh:2936 git-gui.sh:3086 lib/console.tcl:71
+#: git-gui.sh:2567 git-gui.sh:3122 git-gui.sh:3263 lib/console.tcl:71
msgid "Select All"
msgstr "Tout sélectionner"
-#: git-gui.sh:2400
+#: git-gui.sh:2576
msgid "Create..."
msgstr "Créer..."
-#: git-gui.sh:2406
+#: git-gui.sh:2582
msgid "Checkout..."
msgstr "Charger (checkout)..."
-#: git-gui.sh:2412
+#: git-gui.sh:2588
msgid "Rename..."
msgstr "Renommer..."
-#: git-gui.sh:2417
+#: git-gui.sh:2593
msgid "Delete..."
msgstr "Supprimer..."
-#: git-gui.sh:2422
+#: git-gui.sh:2598
msgid "Reset..."
msgstr "Réinitialiser..."
-#: git-gui.sh:2432
+#: git-gui.sh:2608
msgid "Done"
msgstr "Effectué"
-#: git-gui.sh:2434
+#: git-gui.sh:2610
msgid "Commit@@verb"
msgstr "Commiter@@verb"
-#: git-gui.sh:2443 git-gui.sh:2864
+#: git-gui.sh:2619 git-gui.sh:3050
msgid "New Commit"
msgstr "Nouveau commit"
-#: git-gui.sh:2451 git-gui.sh:2871
+#: git-gui.sh:2627 git-gui.sh:3057
msgid "Amend Last Commit"
msgstr "Corriger dernier commit"
-#: git-gui.sh:2461 git-gui.sh:2825 lib/remote_branch_delete.tcl:99
+#: git-gui.sh:2637 git-gui.sh:3011 lib/remote_branch_delete.tcl:99
msgid "Rescan"
msgstr "Recharger modifs."
-#: git-gui.sh:2467
+#: git-gui.sh:2643
msgid "Stage To Commit"
msgstr "Indexer"
-#: git-gui.sh:2473
+#: git-gui.sh:2649
msgid "Stage Changed Files To Commit"
msgstr "Indexer toutes modifications"
-#: git-gui.sh:2479
+#: git-gui.sh:2655
msgid "Unstage From Commit"
msgstr "Désindexer"
-#: git-gui.sh:2484 lib/index.tcl:410
+#: git-gui.sh:2661 lib/index.tcl:412
msgid "Revert Changes"
msgstr "Annuler les modifications"
-#: git-gui.sh:2491 git-gui.sh:3069
+#: git-gui.sh:2669 git-gui.sh:3310 git-gui.sh:3341
msgid "Show Less Context"
msgstr "Montrer moins de contexte"
-#: git-gui.sh:2495 git-gui.sh:3073
+#: git-gui.sh:2673 git-gui.sh:3314 git-gui.sh:3345
msgid "Show More Context"
msgstr "Montrer plus de contexte"
-#: git-gui.sh:2502 git-gui.sh:2838 git-gui.sh:2947
+#: git-gui.sh:2680 git-gui.sh:3024 git-gui.sh:3133
msgid "Sign Off"
msgstr "Signer"
-#: git-gui.sh:2518
+#: git-gui.sh:2696
msgid "Local Merge..."
msgstr "Fusion locale..."
-#: git-gui.sh:2523
+#: git-gui.sh:2701
msgid "Abort Merge..."
msgstr "Abandonner fusion..."
-#: git-gui.sh:2535 git-gui.sh:2575
+#: git-gui.sh:2713 git-gui.sh:2741
msgid "Add..."
msgstr "Ajouter..."
-#: git-gui.sh:2539
+#: git-gui.sh:2717
msgid "Push..."
msgstr "Pousser..."
-#: git-gui.sh:2543
+#: git-gui.sh:2721
msgid "Delete Branch..."
msgstr "Supprimer branche..."
-#: git-gui.sh:2553 git-gui.sh:2589 lib/about.tcl:14
-#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:53
-#, tcl-format
-msgid "About %s"
-msgstr "À propos de %s"
-
-#: git-gui.sh:2557
-msgid "Preferences..."
-msgstr "Préférences..."
-
-#: git-gui.sh:2565 git-gui.sh:3115
+#: git-gui.sh:2731 git-gui.sh:3292
msgid "Options..."
msgstr "Options..."
-#: git-gui.sh:2576
+#: git-gui.sh:2742
msgid "Remove..."
msgstr "Supprimer..."
-#: git-gui.sh:2585 lib/choose_repository.tcl:50
+#: git-gui.sh:2751 lib/choose_repository.tcl:50
msgid "Help"
msgstr "Aide"
-#: git-gui.sh:2611
+#: git-gui.sh:2755 git-gui.sh:2759 lib/about.tcl:14
+#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:53
+#, tcl-format
+msgid "About %s"
+msgstr "À propos de %s"
+
+#: git-gui.sh:2783
msgid "Online Documentation"
msgstr "Documentation en ligne"
-#: git-gui.sh:2614 lib/choose_repository.tcl:47 lib/choose_repository.tcl:56
+#: git-gui.sh:2786 lib/choose_repository.tcl:47 lib/choose_repository.tcl:56
msgid "Show SSH Key"
msgstr "Montrer la clé SSH"
-#: git-gui.sh:2707
+#: git-gui.sh:2893
#, tcl-format
msgid "fatal: cannot stat path %s: No such file or directory"
msgstr ""
"erreur fatale : pas d'infos sur le chemin %s : Fichier ou répertoire "
"inexistant"
-#: git-gui.sh:2740
+#: git-gui.sh:2926
msgid "Current Branch:"
msgstr "Branche courante :"
-#: git-gui.sh:2761
+#: git-gui.sh:2947
msgid "Staged Changes (Will Commit)"
msgstr "Modifs. indexées (pour commit)"
-#: git-gui.sh:2781
+#: git-gui.sh:2967
msgid "Unstaged Changes"
msgstr "Modifs. non indexées"
-#: git-gui.sh:2831
+#: git-gui.sh:3017
msgid "Stage Changed"
msgstr "Indexer modifs."
-#: git-gui.sh:2850 lib/transport.tcl:93 lib/transport.tcl:182
+#: git-gui.sh:3036 lib/transport.tcl:104 lib/transport.tcl:193
msgid "Push"
msgstr "Pousser"
-#: git-gui.sh:2885
+#: git-gui.sh:3071
msgid "Initial Commit Message:"
msgstr "Message de commit initial :"
-#: git-gui.sh:2886
+#: git-gui.sh:3072
msgid "Amended Commit Message:"
msgstr "Message de commit corrigé :"
-#: git-gui.sh:2887
+#: git-gui.sh:3073
msgid "Amended Initial Commit Message:"
msgstr "Message de commit initial corrigé :"
-#: git-gui.sh:2888
+#: git-gui.sh:3074
msgid "Amended Merge Commit Message:"
msgstr "Message de commit de fusion corrigé :"
-#: git-gui.sh:2889
+#: git-gui.sh:3075
msgid "Merge Commit Message:"
msgstr "Message de commit de fusion :"
-#: git-gui.sh:2890
+#: git-gui.sh:3076
msgid "Commit Message:"
msgstr "Message de commit :"
-#: git-gui.sh:2939 git-gui.sh:3090 lib/console.tcl:73
+#: git-gui.sh:3125 git-gui.sh:3267 lib/console.tcl:73
msgid "Copy All"
msgstr "Copier tout"
-#: git-gui.sh:2963 lib/blame.tcl:104
+#: git-gui.sh:3149 lib/blame.tcl:104
msgid "File:"
msgstr "Fichier :"
-#: git-gui.sh:3078
+#: git-gui.sh:3255
msgid "Refresh"
msgstr "Rafraîchir"
-#: git-gui.sh:3099
+#: git-gui.sh:3276
msgid "Decrease Font Size"
msgstr "Diminuer la police"
-#: git-gui.sh:3103
+#: git-gui.sh:3280
msgid "Increase Font Size"
msgstr "Agrandir la police"
-#: git-gui.sh:3111 lib/blame.tcl:281
+#: git-gui.sh:3288 lib/blame.tcl:281
msgid "Encoding"
msgstr "Codage des caractères"
-#: git-gui.sh:3122
+#: git-gui.sh:3299
msgid "Apply/Reverse Hunk"
msgstr "Appliquer/Inverser section"
-#: git-gui.sh:3127
+#: git-gui.sh:3304
msgid "Apply/Reverse Line"
msgstr "Appliquer/Inverser la ligne"
-#: git-gui.sh:3137
+#: git-gui.sh:3323
msgid "Run Merge Tool"
msgstr "Lancer l'outil de fusion"
-#: git-gui.sh:3142
+#: git-gui.sh:3328
msgid "Use Remote Version"
msgstr "Utiliser la version distante"
-#: git-gui.sh:3146
+#: git-gui.sh:3332
msgid "Use Local Version"
msgstr "Utiliser la version locale"
-#: git-gui.sh:3150
+#: git-gui.sh:3336
msgid "Revert To Base"
msgstr "Revenir à la version de base"
-#: git-gui.sh:3169
+#: git-gui.sh:3354
+msgid "Visualize These Changes In The Submodule"
+msgstr "Voir les changments dans le sous-module"
+
+#: git-gui.sh:3358
+msgid "Visualize Current Branch History In The Submodule"
+msgstr "Voir l'historique de la branche courante du sous-module"
+
+#: git-gui.sh:3362
+msgid "Visualize All Branch History In The Submodule"
+msgstr "Voir l'historique de toutes les branches du sous-module"
+
+#: git-gui.sh:3367
+msgid "Start git gui In The Submodule"
+msgstr "Démarrer git gui dans le sous-module"
+
+#: git-gui.sh:3389
msgid "Unstage Hunk From Commit"
msgstr "Désindexer la section"
-#: git-gui.sh:3170
+#: git-gui.sh:3391
+msgid "Unstage Lines From Commit"
+msgstr "Désindexer la ligne du commit"
+
+#: git-gui.sh:3393
msgid "Unstage Line From Commit"
msgstr "Désindexer la ligne"
-#: git-gui.sh:3172
+#: git-gui.sh:3396
msgid "Stage Hunk For Commit"
msgstr "Indexer la section"
-#: git-gui.sh:3173
+#: git-gui.sh:3398
+msgid "Stage Lines For Commit"
+msgstr "Indexer les lignes"
+
+#: git-gui.sh:3400
msgid "Stage Line For Commit"
msgstr "Indexer la ligne"
-#: git-gui.sh:3196
+#: git-gui.sh:3424
msgid "Initializing..."
msgstr "Initialisation..."
-#: git-gui.sh:3301
+#: git-gui.sh:3541
#, tcl-format
msgid ""
"Possible environment issues exist.\n"
"sous-processus de Git lancés par %s\n"
"\n"
-#: git-gui.sh:3331
+#: git-gui.sh:3570
msgid ""
"\n"
"This is due to a known issue with the\n"
"Ceci est dû à un problème connu avec\n"
"le binaire Tcl distribué par Cygwin."
-#: git-gui.sh:3336
+#: git-gui.sh:3575
#, tcl-format
msgid ""
"\n"
msgid "Loading annotation..."
msgstr "Chargement des annotations..."
-#: lib/blame.tcl:964
+#: lib/blame.tcl:963
msgid "Author:"
msgstr "Auteur :"
-#: lib/blame.tcl:968
+#: lib/blame.tcl:967
msgid "Committer:"
msgstr "Commiteur :"
-#: lib/blame.tcl:973
+#: lib/blame.tcl:972
msgid "Original File:"
msgstr "Fichier original :"
-#: lib/blame.tcl:1021
+#: lib/blame.tcl:1020
msgid "Cannot find HEAD commit:"
msgstr "Impossible de trouver le commit HEAD :"
-#: lib/blame.tcl:1076
+#: lib/blame.tcl:1075
msgid "Cannot find parent commit:"
msgstr "Impossible de trouver le commit parent :"
-#: lib/blame.tcl:1091
+#: lib/blame.tcl:1090
msgid "Unable to display parent"
msgstr "Impossible d'afficher le parent"
-#: lib/blame.tcl:1092 lib/diff.tcl:297
+#: lib/blame.tcl:1091 lib/diff.tcl:320
msgid "Error loading diff:"
msgstr "Erreur lors du chargement des différences :"
-#: lib/blame.tcl:1232
+#: lib/blame.tcl:1231
msgid "Originally By:"
msgstr "À l'origine par :"
-#: lib/blame.tcl:1238
+#: lib/blame.tcl:1237
msgid "In File:"
msgstr "Dans le fichier :"
-#: lib/blame.tcl:1243
+#: lib/blame.tcl:1242
msgid "Copied Or Moved Here By:"
msgstr "Copié ou déplacé ici par :"
#: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35
#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282
-#: lib/checkout_op.tcl:544 lib/choose_font.tcl:43 lib/merge.tcl:172
+#: lib/checkout_op.tcl:579 lib/choose_font.tcl:43 lib/merge.tcl:172
#: lib/option.tcl:125 lib/remote_add.tcl:32 lib/remote_branch_delete.tcl:42
#: lib/tools_dlg.tcl:40 lib/tools_dlg.tcl:204 lib/tools_dlg.tcl:352
-#: lib/transport.tcl:97
+#: lib/transport.tcl:108
msgid "Cancel"
msgstr "Annuler"
msgid "Create New Branch"
msgstr "Créer une nouvelle branche"
-#: lib/branch_create.tcl:31 lib/choose_repository.tcl:377
+#: lib/branch_create.tcl:31 lib/choose_repository.tcl:381
msgid "Create"
msgstr "Créer"
msgid "Fast Forward Only"
msgstr "Mise à jour rectiligne seulement (fast-forward)"
-#: lib/branch_create.tcl:85 lib/checkout_op.tcl:536
+#: lib/branch_create.tcl:85 lib/checkout_op.tcl:571
msgid "Reset"
msgstr "Réinitialiser"
msgid "Delete Only If Merged Into"
msgstr "Supprimer seulement si fusionnée dans :"
-#: lib/branch_delete.tcl:54
-msgid "Always (Do not perform merge test.)"
-msgstr "Toujours (Ne pas faire de test de fusion.)"
+#: lib/branch_delete.tcl:54 lib/remote_branch_delete.tcl:119
+msgid "Always (Do not perform merge checks)"
+msgstr "Toujours (ne pas vérifier les fusions)"
#: lib/branch_delete.tcl:103
#, tcl-format
msgid "The following branches are not completely merged into %s:"
msgstr "Les branches suivantes ne sont pas complètement fusionnées dans %s :"
+#: lib/branch_delete.tcl:115 lib/remote_branch_delete.tcl:217
+msgid ""
+"Recovering deleted branches is difficult.\n"
+"\n"
+"Delete the selected branches?"
+msgstr ""
+"Il est difficile de récupérer des branches supprimées.\n"
+"\n"
+"Supprimer les branches sélectionnées ?"
+
#: lib/branch_delete.tcl:141
#, tcl-format
msgid ""
msgid "Please select a branch to rename."
msgstr "Merci de sélectionner une branche à renommer."
-#: lib/branch_rename.tcl:96 lib/checkout_op.tcl:201
+#: lib/branch_rename.tcl:96 lib/checkout_op.tcl:202
#, tcl-format
msgid "Branch '%s' already exists."
msgstr "La branche '%s' existe déjà."
msgid "Browse Branch Files"
msgstr "Naviguer dans les fichiers de le branche"
-#: lib/browser.tcl:278 lib/choose_repository.tcl:394
-#: lib/choose_repository.tcl:480 lib/choose_repository.tcl:491
-#: lib/choose_repository.tcl:995
+#: lib/browser.tcl:278 lib/choose_repository.tcl:398
+#: lib/choose_repository.tcl:486 lib/choose_repository.tcl:497
+#: lib/choose_repository.tcl:1028
msgid "Browse"
msgstr "Naviguer"
-#: lib/checkout_op.tcl:84
+#: lib/checkout_op.tcl:85
#, tcl-format
msgid "Fetching %s from %s"
msgstr "Récupération de %s à partir de %s"
-#: lib/checkout_op.tcl:132
+#: lib/checkout_op.tcl:133
#, tcl-format
msgid "fatal: Cannot resolve %s"
msgstr "erreur fatale : Impossible de résoudre %s"
-#: lib/checkout_op.tcl:145 lib/console.tcl:81 lib/database.tcl:31
+#: lib/checkout_op.tcl:146 lib/console.tcl:81 lib/database.tcl:31
#: lib/sshkey.tcl:53
msgid "Close"
msgstr "Fermer"
-#: lib/checkout_op.tcl:174
+#: lib/checkout_op.tcl:175
#, tcl-format
msgid "Branch '%s' does not exist."
msgstr "La branche '%s' n'existe pas."
-#: lib/checkout_op.tcl:193
+#: lib/checkout_op.tcl:194
#, tcl-format
msgid "Failed to configure simplified git-pull for '%s'."
msgstr "Échec de la configuration simplifiée de git-pull pour '%s'."
-#: lib/checkout_op.tcl:228
+#: lib/checkout_op.tcl:229
#, tcl-format
msgid ""
"Branch '%s' already exists.\n"
"Impossible de faire une avance rapide (fast forward) vers %s.\n"
"Une fusion est nécessaire."
-#: lib/checkout_op.tcl:242
+#: lib/checkout_op.tcl:243
#, tcl-format
msgid "Merge strategy '%s' not supported."
msgstr "La stratégie de fusion '%s' n'est pas supportée."
-#: lib/checkout_op.tcl:261
+#: lib/checkout_op.tcl:262
#, tcl-format
msgid "Failed to update '%s'."
msgstr "La mise à jour de '%s' a échoué."
-#: lib/checkout_op.tcl:273
+#: lib/checkout_op.tcl:274
msgid "Staging area (index) is already locked."
msgstr "L'index (staging area) est déjà verrouillé."
-#: lib/checkout_op.tcl:288
+#: lib/checkout_op.tcl:289
msgid ""
"Last scanned state does not match repository state.\n"
"\n"
"\n"
"Cela va être fait tout de suite automatiquement.\n"
-#: lib/checkout_op.tcl:344
+#: lib/checkout_op.tcl:345
#, tcl-format
msgid "Updating working directory to '%s'..."
msgstr "Mise à jour du répertoire courant avec '%s'..."
-#: lib/checkout_op.tcl:345
+#: lib/checkout_op.tcl:346
msgid "files checked out"
msgstr "fichiers chargés"
-#: lib/checkout_op.tcl:375
+#: lib/checkout_op.tcl:376
#, tcl-format
msgid "Aborted checkout of '%s' (file level merging is required)."
-msgstr "Chargement de '%s' abandonné (il est nécessaire de fusionner des fichiers)."
+msgstr ""
+"Chargement de '%s' abandonné (il est nécessaire de fusionner des fichiers)."
-#: lib/checkout_op.tcl:376
+#: lib/checkout_op.tcl:377
msgid "File level merge required."
msgstr "Il est nécessaire de fusionner des fichiers."
-#: lib/checkout_op.tcl:380
+#: lib/checkout_op.tcl:381
#, tcl-format
msgid "Staying on branch '%s'."
msgstr "Le répertoire de travail reste sur la branche '%s'."
-#: lib/checkout_op.tcl:451
+#: lib/checkout_op.tcl:452
msgid ""
"You are no longer on a local branch.\n"
"\n"
"Si vous vouliez être sur une branche, créez-en une maintenant en partant de "
"'Cet emprunt détaché'."
-#: lib/checkout_op.tcl:468 lib/checkout_op.tcl:472
+#: lib/checkout_op.tcl:503 lib/checkout_op.tcl:507
#, tcl-format
msgid "Checked out '%s'."
msgstr "'%s' chargé."
-#: lib/checkout_op.tcl:500
+#: lib/checkout_op.tcl:535
#, tcl-format
msgid "Resetting '%s' to '%s' will lose the following commits:"
msgstr "Réinitialiser '%s' à '%s' va faire perdre les commits suivants :"
-#: lib/checkout_op.tcl:522
+#: lib/checkout_op.tcl:557
msgid "Recovering lost commits may not be easy."
msgstr "Récupérer les commits perdus ne sera peut être pas facile."
-#: lib/checkout_op.tcl:527
+#: lib/checkout_op.tcl:562
#, tcl-format
msgid "Reset '%s'?"
msgstr "Réinitialiser '%s' ?"
-#: lib/checkout_op.tcl:532 lib/merge.tcl:164 lib/tools_dlg.tcl:343
+#: lib/checkout_op.tcl:567 lib/merge.tcl:164 lib/tools_dlg.tcl:343
msgid "Visualize"
msgstr "Visualiser"
-#: lib/checkout_op.tcl:600
+#: lib/checkout_op.tcl:635
#, tcl-format
msgid ""
"Failed to set current branch.\n"
msgid "Git Gui"
msgstr "Git Gui"
-#: lib/choose_repository.tcl:87 lib/choose_repository.tcl:382
+#: lib/choose_repository.tcl:87 lib/choose_repository.tcl:386
msgid "Create New Repository"
msgstr "Créer nouveau dépôt"
msgid "New..."
msgstr "Nouveau..."
-#: lib/choose_repository.tcl:100 lib/choose_repository.tcl:465
+#: lib/choose_repository.tcl:100 lib/choose_repository.tcl:471
msgid "Clone Existing Repository"
msgstr "Cloner un dépôt existant"
msgid "Clone..."
msgstr "Cloner..."
-#: lib/choose_repository.tcl:113 lib/choose_repository.tcl:983
+#: lib/choose_repository.tcl:113 lib/choose_repository.tcl:1016
msgid "Open Existing Repository"
msgstr "Ouvrir un dépôt existant"
msgid "Open Recent Repository:"
msgstr "Ouvrir un dépôt récent :"
-#: lib/choose_repository.tcl:302 lib/choose_repository.tcl:309
-#: lib/choose_repository.tcl:316
+#: lib/choose_repository.tcl:306 lib/choose_repository.tcl:313
+#: lib/choose_repository.tcl:320
#, tcl-format
msgid "Failed to create repository %s:"
msgstr "La création du dépôt %s a échoué :"
-#: lib/choose_repository.tcl:387
+#: lib/choose_repository.tcl:391
msgid "Directory:"
msgstr "Répertoire :"
-#: lib/choose_repository.tcl:417 lib/choose_repository.tcl:544
-#: lib/choose_repository.tcl:1017
+#: lib/choose_repository.tcl:423 lib/choose_repository.tcl:550
+#: lib/choose_repository.tcl:1052
msgid "Git Repository"
msgstr "Dépôt Git"
-#: lib/choose_repository.tcl:442
+#: lib/choose_repository.tcl:448
#, tcl-format
msgid "Directory %s already exists."
msgstr "Le répertoire %s existe déjà."
-#: lib/choose_repository.tcl:446
+#: lib/choose_repository.tcl:452
#, tcl-format
msgid "File %s already exists."
msgstr "Le fichier %s existe déjà."
-#: lib/choose_repository.tcl:460
+#: lib/choose_repository.tcl:466
msgid "Clone"
msgstr "Cloner"
-#: lib/choose_repository.tcl:473
+#: lib/choose_repository.tcl:479
msgid "Source Location:"
msgstr "Emplacement source :"
-#: lib/choose_repository.tcl:484
+#: lib/choose_repository.tcl:490
msgid "Target Directory:"
msgstr "Répertoire cible :"
-#: lib/choose_repository.tcl:496
+#: lib/choose_repository.tcl:502
msgid "Clone Type:"
msgstr "Type de clonage :"
-#: lib/choose_repository.tcl:502
+#: lib/choose_repository.tcl:508
msgid "Standard (Fast, Semi-Redundant, Hardlinks)"
msgstr "Standard (rapide, semi-redondant, liens durs)"
-#: lib/choose_repository.tcl:508
+#: lib/choose_repository.tcl:514
msgid "Full Copy (Slower, Redundant Backup)"
msgstr "Copy complète (plus lent, sauvegarde redondante)"
-#: lib/choose_repository.tcl:514
+#: lib/choose_repository.tcl:520
msgid "Shared (Fastest, Not Recommended, No Backup)"
msgstr "Partagé (le plus rapide, non recommandé, pas de sauvegarde)"
-#: lib/choose_repository.tcl:550 lib/choose_repository.tcl:597
-#: lib/choose_repository.tcl:743 lib/choose_repository.tcl:813
-#: lib/choose_repository.tcl:1023 lib/choose_repository.tcl:1031
+#: lib/choose_repository.tcl:556 lib/choose_repository.tcl:603
+#: lib/choose_repository.tcl:749 lib/choose_repository.tcl:819
+#: lib/choose_repository.tcl:1058 lib/choose_repository.tcl:1066
#, tcl-format
msgid "Not a Git repository: %s"
msgstr "'%s' n'est pas un dépôt Git."
-#: lib/choose_repository.tcl:586
+#: lib/choose_repository.tcl:592
msgid "Standard only available for local repository."
msgstr "Standard n'est disponible que pour un dépôt local."
-#: lib/choose_repository.tcl:590
+#: lib/choose_repository.tcl:596
msgid "Shared only available for local repository."
msgstr "Partagé n'est disponible que pour un dépôt local."
-#: lib/choose_repository.tcl:611
+#: lib/choose_repository.tcl:617
#, tcl-format
msgid "Location %s already exists."
msgstr "L'emplacement %s existe déjà."
-#: lib/choose_repository.tcl:622
+#: lib/choose_repository.tcl:628
msgid "Failed to configure origin"
msgstr "La configuration de l'origine a échoué."
-#: lib/choose_repository.tcl:634
+#: lib/choose_repository.tcl:640
msgid "Counting objects"
msgstr "Décompte des objets"
-#: lib/choose_repository.tcl:635
+#: lib/choose_repository.tcl:641
msgid "buckets"
msgstr "paniers"
-#: lib/choose_repository.tcl:659
+#: lib/choose_repository.tcl:665
#, tcl-format
msgid "Unable to copy objects/info/alternates: %s"
msgstr "Impossible de copier 'objects/info/alternates' : %s"
-#: lib/choose_repository.tcl:695
+#: lib/choose_repository.tcl:701
#, tcl-format
msgid "Nothing to clone from %s."
msgstr "Il n'y a rien à cloner depuis %s."
-#: lib/choose_repository.tcl:697 lib/choose_repository.tcl:911
-#: lib/choose_repository.tcl:923
+#: lib/choose_repository.tcl:703 lib/choose_repository.tcl:917
+#: lib/choose_repository.tcl:929
msgid "The 'master' branch has not been initialized."
msgstr "La branche 'master' n'a pas été initialisée."
-#: lib/choose_repository.tcl:710
+#: lib/choose_repository.tcl:716
msgid "Hardlinks are unavailable. Falling back to copying."
-msgstr "Les liens durs ne sont pas supportés. Une copie sera effectuée à la place."
+msgstr ""
+"Les liens durs ne sont pas supportés. Une copie sera effectuée à la place."
-#: lib/choose_repository.tcl:722
+#: lib/choose_repository.tcl:728
#, tcl-format
msgid "Cloning from %s"
msgstr "Clonage depuis %s"
-#: lib/choose_repository.tcl:753
+#: lib/choose_repository.tcl:759
msgid "Copying objects"
msgstr "Copie des objets"
-#: lib/choose_repository.tcl:754
+#: lib/choose_repository.tcl:760
msgid "KiB"
msgstr "KiB"
-#: lib/choose_repository.tcl:778
+#: lib/choose_repository.tcl:784
#, tcl-format
msgid "Unable to copy object: %s"
msgstr "Impossible de copier l'objet : %s"
-#: lib/choose_repository.tcl:788
+#: lib/choose_repository.tcl:794
msgid "Linking objects"
msgstr "Liaison des objets"
-#: lib/choose_repository.tcl:789
+#: lib/choose_repository.tcl:795
msgid "objects"
msgstr "objets"
-#: lib/choose_repository.tcl:797
+#: lib/choose_repository.tcl:803
#, tcl-format
msgid "Unable to hardlink object: %s"
msgstr "Impossible créer un lien dur pour l'objet : %s"
-#: lib/choose_repository.tcl:852
+#: lib/choose_repository.tcl:858
msgid "Cannot fetch branches and objects. See console output for details."
msgstr ""
"Impossible de récupérer les branches et objets. Voir la sortie console pour "
"plus de détails."
-#: lib/choose_repository.tcl:863
+#: lib/choose_repository.tcl:869
msgid "Cannot fetch tags. See console output for details."
msgstr ""
"Impossible de récupérer les marques (tags). Voir la sortie console pour plus "
"de détails."
-#: lib/choose_repository.tcl:887
+#: lib/choose_repository.tcl:893
msgid "Cannot determine HEAD. See console output for details."
-msgstr "Impossible de déterminer HEAD. Voir la sortie console pour plus de détails."
+msgstr ""
+"Impossible de déterminer HEAD. Voir la sortie console pour plus de détails."
-#: lib/choose_repository.tcl:896
+#: lib/choose_repository.tcl:902
#, tcl-format
msgid "Unable to cleanup %s"
msgstr "Impossible de nettoyer %s"
-#: lib/choose_repository.tcl:902
+#: lib/choose_repository.tcl:908
msgid "Clone failed."
msgstr "Le clonage a échoué."
-#: lib/choose_repository.tcl:909
+#: lib/choose_repository.tcl:915
msgid "No default branch obtained."
msgstr "Aucune branche par défaut n'a été obtenue."
-#: lib/choose_repository.tcl:920
+#: lib/choose_repository.tcl:926
#, tcl-format
msgid "Cannot resolve %s as a commit."
msgstr "Impossible de résoudre %s comme commit."
-#: lib/choose_repository.tcl:932
+#: lib/choose_repository.tcl:938
msgid "Creating working directory"
msgstr "Création du répertoire de travail"
-#: lib/choose_repository.tcl:933 lib/index.tcl:65 lib/index.tcl:128
-#: lib/index.tcl:196
+#: lib/choose_repository.tcl:939 lib/index.tcl:67 lib/index.tcl:130
+#: lib/index.tcl:198
msgid "files"
msgstr "fichiers"
-#: lib/choose_repository.tcl:962
+#: lib/choose_repository.tcl:968
msgid "Initial file checkout failed."
msgstr "Le chargement initial du fichier a échoué."
-#: lib/choose_repository.tcl:978
+#: lib/choose_repository.tcl:1011
msgid "Open"
msgstr "Ouvrir"
-#: lib/choose_repository.tcl:988
+#: lib/choose_repository.tcl:1021
msgid "Repository:"
msgstr "Dépôt :"
-#: lib/choose_repository.tcl:1037
+#: lib/choose_repository.tcl:1072
#, tcl-format
msgid "Failed to open repository %s:"
msgstr "Impossible d'ouvrir le dépôt %s :"
"terminée. Vous ne pouvez pas corriger le commit précédent sauf si vous "
"abandonnez la fusion courante.\n"
-#: lib/commit.tcl:49
+#: lib/commit.tcl:48
msgid "Error loading commit data for amend:"
msgstr "Erreur lors du chargement des données de commit pour correction :"
-#: lib/commit.tcl:76
+#: lib/commit.tcl:75
msgid "Unable to obtain your identity:"
msgstr "Impossible d'obtenir votre identité :"
-#: lib/commit.tcl:81
+#: lib/commit.tcl:80
msgid "Invalid GIT_COMMITTER_IDENT:"
msgstr "GIT_COMMITTER_IDENT invalide :"
-#: lib/commit.tcl:133
+#: lib/commit.tcl:129
+#, tcl-format
+msgid "warning: Tcl does not support encoding '%s'."
+msgstr "attention : Tcl ne supporte pas le codage '%s'."
+
+#: lib/commit.tcl:149
msgid ""
"Last scanned state does not match repository state.\n"
"\n"
"\n"
"Cela va être fait tout de suite automatiquement.\n"
-#: lib/commit.tcl:156
+#: lib/commit.tcl:172
#, tcl-format
msgid ""
"Unmerged files cannot be committed.\n"
"Le fichier %s a des conflicts de fusion. Vous devez les résoudre et pré-"
"commiter le fichier avant de pouvoir commiter.\n"
-#: lib/commit.tcl:164
+#: lib/commit.tcl:180
#, tcl-format
msgid ""
"Unknown file state %s detected.\n"
"\n"
"Le fichier %s ne peut pas être commité par ce programme.\n"
-#: lib/commit.tcl:172
+#: lib/commit.tcl:188
msgid ""
"No changes to commit.\n"
"\n"
"\n"
"Vous devez indexer au moins 1 fichier avant de pouvoir commiter.\n"
-#: lib/commit.tcl:187
+#: lib/commit.tcl:203
msgid ""
"Please supply a commit message.\n"
"\n"
"- Deuxième ligne : rien.\n"
"- Lignes suivantes : Décrire pourquoi ces modifications sont bonnes.\n"
-#: lib/commit.tcl:211
-#, tcl-format
-msgid "warning: Tcl does not support encoding '%s'."
-msgstr "attention : Tcl ne supporte pas le codage '%s'."
-
-#: lib/commit.tcl:227
+#: lib/commit.tcl:234
msgid "Calling pre-commit hook..."
msgstr "Lancement de l'action d'avant-commit..."
-#: lib/commit.tcl:242
+#: lib/commit.tcl:249
msgid "Commit declined by pre-commit hook."
msgstr "Commit refusé par l'action d'avant-commit."
-#: lib/commit.tcl:265
+#: lib/commit.tcl:272
msgid "Calling commit-msg hook..."
msgstr "Lancement de l'action \"message de commit\"..."
-#: lib/commit.tcl:280
+#: lib/commit.tcl:287
msgid "Commit declined by commit-msg hook."
msgstr "Commit refusé par l'action \"message de commit\"."
-#: lib/commit.tcl:293
+#: lib/commit.tcl:300
msgid "Committing changes..."
msgstr "Commit des modifications..."
-#: lib/commit.tcl:309
+#: lib/commit.tcl:316
msgid "write-tree failed:"
msgstr "write-tree a échoué :"
-#: lib/commit.tcl:310 lib/commit.tcl:354 lib/commit.tcl:374
+#: lib/commit.tcl:317 lib/commit.tcl:361 lib/commit.tcl:382
msgid "Commit failed."
msgstr "Le commit a échoué."
-#: lib/commit.tcl:327
+#: lib/commit.tcl:334
#, tcl-format
msgid "Commit %s appears to be corrupt"
msgstr "Le commit %s semble être corrompu"
-#: lib/commit.tcl:332
+#: lib/commit.tcl:339
msgid ""
"No changes to commit.\n"
"\n"
"\n"
"Une resynchronisation va être lancée tout de suite automatiquement.\n"
-#: lib/commit.tcl:339
+#: lib/commit.tcl:346
msgid "No changes to commit."
msgstr "Pas de modifications à commiter."
-#: lib/commit.tcl:353
+#: lib/commit.tcl:360
msgid "commit-tree failed:"
msgstr "commit-tree a échoué :"
-#: lib/commit.tcl:373
+#: lib/commit.tcl:381
msgid "update-ref failed:"
msgstr "update-ref a échoué :"
-#: lib/commit.tcl:461
+#: lib/commit.tcl:469
#, tcl-format
msgid "Created commit %s: %s"
msgstr "Commit %s créé : %s"
msgid "Verifying the object database with fsck-objects"
msgstr "Vérification de la base des objets avec fsck-objects"
-#: lib/database.tcl:108
+#: lib/database.tcl:107
#, tcl-format
msgid ""
"This repository currently has approximately %i loose objects.\n"
"\n"
"To maintain optimal performance it is strongly recommended that you compress "
-"the database when more than %i loose objects exist.\n"
+"the database.\n"
"\n"
"Compress the database now?"
msgstr ""
"particulier.\n"
"\n"
"Pour conserver une performance optimale, il est fortement recommandé de "
-"comprimer la base quand plus de %i objets ayant leur fichier particulier "
-"existent.\n"
+"comprimer la base de donnée.\n"
"\n"
"Comprimer la base maintenant ?"
msgid "Invalid date from Git: %s"
msgstr "Date invalide de Git : %s"
-#: lib/diff.tcl:59
+#: lib/diff.tcl:64
#, tcl-format
msgid ""
"No differences detected.\n"
"Une resynchronisation va être lancée automatiquement pour trouver d'autres "
"fichiers qui pourraient se trouver dans le même état."
-#: lib/diff.tcl:99
+#: lib/diff.tcl:104
#, tcl-format
msgid "Loading diff of %s..."
msgstr "Chargement des différences de %s..."
-#: lib/diff.tcl:120
+#: lib/diff.tcl:125
msgid ""
"LOCAL: deleted\n"
"REMOTE:\n"
"LOCAL : supprimé\n"
"DISTANT :\n"
-#: lib/diff.tcl:125
+#: lib/diff.tcl:130
msgid ""
"REMOTE: deleted\n"
"LOCAL:\n"
"DISTANT : supprimé\n"
"LOCAL :\n"
-#: lib/diff.tcl:132
+#: lib/diff.tcl:137
msgid "LOCAL:\n"
msgstr "LOCAL :\n"
-#: lib/diff.tcl:135
+#: lib/diff.tcl:140
msgid "REMOTE:\n"
msgstr "DISTANT :\n"
-#: lib/diff.tcl:197 lib/diff.tcl:296
+#: lib/diff.tcl:202 lib/diff.tcl:319
#, tcl-format
msgid "Unable to display %s"
msgstr "Impossible d'afficher %s"
-#: lib/diff.tcl:198
+#: lib/diff.tcl:203
msgid "Error loading file:"
msgstr "Erreur lors du chargement du fichier :"
-#: lib/diff.tcl:205
+#: lib/diff.tcl:210
msgid "Git Repository (subproject)"
msgstr "Dépôt Git (sous projet)"
-#: lib/diff.tcl:217
+#: lib/diff.tcl:222
msgid "* Binary file (not showing content)."
msgstr "* Fichier binaire (pas d'apperçu du contenu)."
-#: lib/diff.tcl:222
+#: lib/diff.tcl:227
#, tcl-format
msgid ""
"* Untracked file is %d bytes.\n"
"* Le fichier non suivi fait %d octets.\n"
"* Seuls les %d premiers octets sont montrés.\n"
-#: lib/diff.tcl:228
+#: lib/diff.tcl:233
#, tcl-format
msgid ""
"\n"
"* Fichier suivi raccourcis ici de %s.\n"
"* Pour voir le fichier entier, utilisez un éditeur externe.\n"
-#: lib/diff.tcl:436
+#: lib/diff.tcl:482
msgid "Failed to unstage selected hunk."
msgstr "Échec lors de la désindexation de la section sélectionnée."
-#: lib/diff.tcl:443
+#: lib/diff.tcl:489
msgid "Failed to stage selected hunk."
msgstr "Échec lors de l'indexation de la section."
-#: lib/diff.tcl:509
+#: lib/diff.tcl:568
msgid "Failed to unstage selected line."
msgstr "Échec lors de la désindexation de la ligne sélectionnée."
-#: lib/diff.tcl:517
+#: lib/diff.tcl:576
msgid "Failed to stage selected line."
msgstr "Échec lors de l'indexation de la ligne."
msgid "Index Error"
msgstr "Erreur de l'index"
-#: lib/index.tcl:21
+#: lib/index.tcl:17
msgid ""
"Updating the Git index failed. A rescan will be automatically started to "
"resynchronize git-gui."
"Échec de la mise à jour de l'index. Une resynchronisation va être lancée "
"automatiquement."
-#: lib/index.tcl:27
+#: lib/index.tcl:28
msgid "Continue"
msgstr "Continuer"
msgid "Unlock Index"
msgstr "Déverrouiller l'index"
-#: lib/index.tcl:287
+#: lib/index.tcl:289
#, tcl-format
msgid "Unstaging %s from commit"
msgstr "Désindexation de : %s"
-#: lib/index.tcl:326
+#: lib/index.tcl:328
msgid "Ready to commit."
msgstr "Prêt à être commité."
-#: lib/index.tcl:339
+#: lib/index.tcl:341
#, tcl-format
msgid "Adding %s"
msgstr "Ajout de %s"
-#: lib/index.tcl:396
+#: lib/index.tcl:398
#, tcl-format
msgid "Revert changes in file %s?"
msgstr "Annuler les modifications dans le fichier %s ? "
-#: lib/index.tcl:398
+#: lib/index.tcl:400
#, tcl-format
msgid "Revert changes in these %i files?"
msgstr "Annuler les modifications dans ces %i fichiers ?"
-#: lib/index.tcl:406
+#: lib/index.tcl:408
msgid "Any unstaged changes will be permanently lost by the revert."
msgstr ""
"Toutes les modifications non-indexées seront définitivement perdues par "
"l'annulation."
-#: lib/index.tcl:409
+#: lib/index.tcl:411
msgid "Do Nothing"
msgstr "Ne rien faire"
-#: lib/index.tcl:427
+#: lib/index.tcl:429
msgid "Reverting selected files"
msgstr "Annuler modifications dans fichiers selectionnés"
-#: lib/index.tcl:431
+#: lib/index.tcl:433
#, tcl-format
msgid "Reverting %s"
msgstr "Annulation des modifications dans %s"
#: lib/mergetool.tcl:45
#, tcl-format
msgid "File %s seems to have unresolved conflicts, still stage?"
-msgstr "Le fichier %s semble avoir des conflits non résolus, indexer quand même ?"
+msgstr ""
+"Le fichier %s semble avoir des conflits non résolus, indexer quand même ?"
#: lib/mergetool.tcl:60
#, tcl-format
#: lib/mergetool.tcl:141
msgid "Cannot resolve deletion or link conflicts using a tool"
-msgstr "Impossible de résoudre la suppression ou de relier des conflits en utilisant un outil"
+msgstr ""
+"Impossible de résoudre la suppression ou de relier des conflits en utilisant "
+"un outil"
#: lib/mergetool.tcl:146
msgid "Conflict file does not exist"
msgid "Do not know how to initialize repository at location '%s'."
msgstr "Pas de méthode connue pour initialiser le dépôt à l'emplacement '%s'."
-#: lib/remote_add.tcl:163 lib/transport.tcl:25 lib/transport.tcl:71
+#: lib/remote_add.tcl:163 lib/transport.tcl:25 lib/transport.tcl:63
+#: lib/transport.tcl:81
#, tcl-format
msgid "push %s"
msgstr "pousser %s"
msgid "From Repository"
msgstr "Dépôt source"
-#: lib/remote_branch_delete.tcl:50 lib/transport.tcl:123
+#: lib/remote_branch_delete.tcl:50 lib/transport.tcl:134
msgid "Remote:"
msgstr "Branche distante :"
-#: lib/remote_branch_delete.tcl:66 lib/transport.tcl:138
+#: lib/remote_branch_delete.tcl:66 lib/transport.tcl:149
msgid "Arbitrary Location:"
msgstr "Emplacement arbitraire :"
msgid "Merged Into:"
msgstr "Fusionné dans :"
-#: lib/remote_branch_delete.tcl:119
-msgid "Always (Do not perform merge checks)"
-msgstr "Toujours (ne pas vérifier les fusions)"
-
#: lib/remote_branch_delete.tcl:152
msgid "A branch is required for 'Merged Into'."
msgstr "Une branche est nécessaire pour 'Fusionné dans'."
"necessary commits. Try fetching from %s first."
msgstr ""
"Un ou plusieurs des tests de fusion ont échoué parce que vous n'avez pas "
-"récupéré les commits nécessaires. Essayez de récupérer à partir de %s d'abord."
+"récupéré les commits nécessaires. Essayez de récupérer à partir de %s "
+"d'abord."
#: lib/remote_branch_delete.tcl:207
msgid "Please select one or more branches to delete."
msgstr "Merci de sélectionner une ou plusieurs branches à supprimer."
-#: lib/remote_branch_delete.tcl:216
-msgid ""
-"Recovering deleted branches is difficult.\n"
-"\n"
-"Delete the selected branches?"
-msgstr ""
-"Il est difficile de récupérer des branches supprimées.\n"
-"\n"
-"Supprimer les branches sélectionnées ?"
-
#: lib/remote_branch_delete.tcl:226
#, tcl-format
msgid "Deleting branches from %s"
msgstr "Suppression des branches de %s"
-#: lib/remote_branch_delete.tcl:286
+#: lib/remote_branch_delete.tcl:292
msgid "No repository selected."
msgstr "Aucun dépôt n'est sélectionné."
-#: lib/remote_branch_delete.tcl:291
+#: lib/remote_branch_delete.tcl:297
#, tcl-format
msgid "Scanning %s..."
msgstr "Synchronisation de %s..."
msgid "Case-Sensitive"
msgstr "Sensible à la casse"
-#: lib/shortcut.tcl:20 lib/shortcut.tcl:61
+#: lib/shortcut.tcl:21 lib/shortcut.tcl:62
msgid "Cannot write shortcut:"
msgstr "Impossible d'écrire le raccourci :"
-#: lib/shortcut.tcl:136
+#: lib/shortcut.tcl:137
msgid "Cannot write icon:"
msgstr "Impossible d'écrire l'icône :"
#: lib/tools_dlg.tcl:80
msgid "Ask the user to select a revision (sets $REVISION)"
-msgstr "Demander à l'utilisateur de sélectionner une révision (change $REVISION)"
+msgstr ""
+"Demander à l'utilisateur de sélectionner une révision (change $REVISION)"
#: lib/tools_dlg.tcl:85
msgid "Ask the user for additional arguments (sets $ARGS)"
msgid "Pushing changes to %s"
msgstr "Les modifications sont poussées vers %s"
-#: lib/transport.tcl:72
+#: lib/transport.tcl:64
+#, tcl-format
+msgid "Mirroring to %s"
+msgstr "Dupliquer dans %s"
+
+#: lib/transport.tcl:82
#, tcl-format
msgid "Pushing %s %s to %s"
msgstr "Pousse %s %s vers %s"
-#: lib/transport.tcl:89
+#: lib/transport.tcl:100
msgid "Push Branches"
msgstr "Pousser branches"
-#: lib/transport.tcl:103
+#: lib/transport.tcl:114
msgid "Source Branches"
msgstr "Branches source"
-#: lib/transport.tcl:120
+#: lib/transport.tcl:131
msgid "Destination Repository"
msgstr "Dépôt de destination"
-#: lib/transport.tcl:158
+#: lib/transport.tcl:169
msgid "Transfer Options"
msgstr "Options de transfert"
-#: lib/transport.tcl:160
+#: lib/transport.tcl:171
msgid "Force overwrite existing branch (may discard changes)"
msgstr ""
"Forcer l'écrasement d'une branche existante (peut supprimer des "
"modifications)"
-#: lib/transport.tcl:164
+#: lib/transport.tcl:175
msgid "Use thin pack (for slow network connections)"
msgstr "Utiliser des petits paquets (pour les connexions lentes)"
-#: lib/transport.tcl:168
+#: lib/transport.tcl:179
msgid "Include tags"
msgstr "Inclure les marques (tags)"
+#~ msgid "Cannot use funny .git directory:"
+#~ msgstr "Impossible d'utiliser le répertoire .git:"
+
+#~ msgid "Preferences..."
+#~ msgstr "Préférences..."
+
+#~ msgid "Always (Do not perform merge test.)"
+#~ msgstr "Toujours (Ne pas faire de test de fusion.)"
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-08 08:31-0800\n"
+"POT-Creation-Date: 2010-01-26 15:47-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: git-gui.sh:41 git-gui.sh:737 git-gui.sh:751 git-gui.sh:764 git-gui.sh:847
-#: git-gui.sh:866
+#: git-gui.sh:41 git-gui.sh:793 git-gui.sh:807 git-gui.sh:820 git-gui.sh:903
+#: git-gui.sh:922
msgid "git-gui: fatal error"
msgstr ""
-#: git-gui.sh:689
+#: git-gui.sh:743
#, tcl-format
msgid "Invalid font specified in %s:"
msgstr ""
-#: git-gui.sh:723
+#: git-gui.sh:779
msgid "Main Font"
msgstr ""
-#: git-gui.sh:724
+#: git-gui.sh:780
msgid "Diff/Console Font"
msgstr ""
-#: git-gui.sh:738
+#: git-gui.sh:794
msgid "Cannot find git in PATH."
msgstr ""
-#: git-gui.sh:765
+#: git-gui.sh:821
msgid "Cannot parse Git version string:"
msgstr ""
-#: git-gui.sh:783
+#: git-gui.sh:839
#, tcl-format
msgid ""
"Git version cannot be determined.\n"
"Assume '%s' is version 1.5.0?\n"
msgstr ""
-#: git-gui.sh:1062
+#: git-gui.sh:1128
msgid "Git directory not found:"
msgstr ""
-#: git-gui.sh:1069
+#: git-gui.sh:1146
msgid "Cannot move to top of working directory:"
msgstr ""
-#: git-gui.sh:1076
-msgid "Cannot use funny .git directory:"
+#: git-gui.sh:1154
+msgid "Cannot use bare repository:"
msgstr ""
-#: git-gui.sh:1081
+#: git-gui.sh:1162
msgid "No working directory"
msgstr ""
-#: git-gui.sh:1247 lib/checkout_op.tcl:305
+#: git-gui.sh:1334 lib/checkout_op.tcl:306
msgid "Refreshing file status..."
msgstr ""
-#: git-gui.sh:1303
+#: git-gui.sh:1390
msgid "Scanning for modified files ..."
msgstr ""
-#: git-gui.sh:1367
+#: git-gui.sh:1454
msgid "Calling prepare-commit-msg hook..."
msgstr ""
-#: git-gui.sh:1384
+#: git-gui.sh:1471
msgid "Commit declined by prepare-commit-msg hook."
msgstr ""
-#: git-gui.sh:1542 lib/browser.tcl:246
+#: git-gui.sh:1629 lib/browser.tcl:246
msgid "Ready."
msgstr ""
-#: git-gui.sh:1726
+#: git-gui.sh:1787
#, tcl-format
msgid "Displaying only %s of %s files."
msgstr ""
-#: git-gui.sh:1819
+#: git-gui.sh:1913
msgid "Unmodified"
msgstr ""
-#: git-gui.sh:1821
+#: git-gui.sh:1915
msgid "Modified, not staged"
msgstr ""
-#: git-gui.sh:1822 git-gui.sh:1830
+#: git-gui.sh:1916 git-gui.sh:1924
msgid "Staged for commit"
msgstr ""
-#: git-gui.sh:1823 git-gui.sh:1831
+#: git-gui.sh:1917 git-gui.sh:1925
msgid "Portions staged for commit"
msgstr ""
-#: git-gui.sh:1824 git-gui.sh:1832
+#: git-gui.sh:1918 git-gui.sh:1926
msgid "Staged for commit, missing"
msgstr ""
-#: git-gui.sh:1826
+#: git-gui.sh:1920
msgid "File type changed, not staged"
msgstr ""
-#: git-gui.sh:1827
+#: git-gui.sh:1921
msgid "File type changed, staged"
msgstr ""
-#: git-gui.sh:1829
+#: git-gui.sh:1923
msgid "Untracked, not staged"
msgstr ""
-#: git-gui.sh:1834
+#: git-gui.sh:1928
msgid "Missing"
msgstr ""
-#: git-gui.sh:1835
+#: git-gui.sh:1929
msgid "Staged for removal"
msgstr ""
-#: git-gui.sh:1836
+#: git-gui.sh:1930
msgid "Staged for removal, still present"
msgstr ""
-#: git-gui.sh:1838 git-gui.sh:1839 git-gui.sh:1840 git-gui.sh:1841
-#: git-gui.sh:1842 git-gui.sh:1843
+#: git-gui.sh:1932 git-gui.sh:1933 git-gui.sh:1934 git-gui.sh:1935
+#: git-gui.sh:1936 git-gui.sh:1937
msgid "Requires merge resolution"
msgstr ""
-#: git-gui.sh:1878
+#: git-gui.sh:1972
msgid "Starting gitk... please wait..."
msgstr ""
-#: git-gui.sh:1887
+#: git-gui.sh:1984
msgid "Couldn't find gitk in PATH"
msgstr ""
-#: git-gui.sh:2280 lib/choose_repository.tcl:36
+#: git-gui.sh:2043
+msgid "Couldn't find git gui in PATH"
+msgstr ""
+
+#: git-gui.sh:2455 lib/choose_repository.tcl:36
msgid "Repository"
msgstr ""
-#: git-gui.sh:2281
+#: git-gui.sh:2456
msgid "Edit"
msgstr ""
-#: git-gui.sh:2283 lib/choose_rev.tcl:561
+#: git-gui.sh:2458 lib/choose_rev.tcl:561
msgid "Branch"
msgstr ""
-#: git-gui.sh:2286 lib/choose_rev.tcl:548
+#: git-gui.sh:2461 lib/choose_rev.tcl:548
msgid "Commit@@noun"
msgstr ""
-#: git-gui.sh:2289 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168
+#: git-gui.sh:2464 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168
msgid "Merge"
msgstr ""
-#: git-gui.sh:2290 lib/choose_rev.tcl:557
+#: git-gui.sh:2465 lib/choose_rev.tcl:557
msgid "Remote"
msgstr ""
-#: git-gui.sh:2293
+#: git-gui.sh:2468
msgid "Tools"
msgstr ""
-#: git-gui.sh:2302
+#: git-gui.sh:2477
msgid "Explore Working Copy"
msgstr ""
-#: git-gui.sh:2307
+#: git-gui.sh:2483
msgid "Browse Current Branch's Files"
msgstr ""
-#: git-gui.sh:2311
+#: git-gui.sh:2487
msgid "Browse Branch Files..."
msgstr ""
-#: git-gui.sh:2316
+#: git-gui.sh:2492
msgid "Visualize Current Branch's History"
msgstr ""
-#: git-gui.sh:2320
+#: git-gui.sh:2496
msgid "Visualize All Branch History"
msgstr ""
-#: git-gui.sh:2327
+#: git-gui.sh:2503
#, tcl-format
msgid "Browse %s's Files"
msgstr ""
-#: git-gui.sh:2329
+#: git-gui.sh:2505
#, tcl-format
msgid "Visualize %s's History"
msgstr ""
-#: git-gui.sh:2334 lib/database.tcl:27 lib/database.tcl:67
+#: git-gui.sh:2510 lib/database.tcl:27 lib/database.tcl:67
msgid "Database Statistics"
msgstr ""
-#: git-gui.sh:2337 lib/database.tcl:34
+#: git-gui.sh:2513 lib/database.tcl:34
msgid "Compress Database"
msgstr ""
-#: git-gui.sh:2340
+#: git-gui.sh:2516
msgid "Verify Database"
msgstr ""
-#: git-gui.sh:2347 git-gui.sh:2351 git-gui.sh:2355 lib/shortcut.tcl:7
-#: lib/shortcut.tcl:39 lib/shortcut.tcl:71
+#: git-gui.sh:2523 git-gui.sh:2527 git-gui.sh:2531 lib/shortcut.tcl:8
+#: lib/shortcut.tcl:40 lib/shortcut.tcl:72
msgid "Create Desktop Icon"
msgstr ""
-#: git-gui.sh:2363 lib/choose_repository.tcl:183 lib/choose_repository.tcl:191
+#: git-gui.sh:2539 lib/choose_repository.tcl:183 lib/choose_repository.tcl:191
msgid "Quit"
msgstr ""
-#: git-gui.sh:2371
+#: git-gui.sh:2547
msgid "Undo"
msgstr ""
-#: git-gui.sh:2374
+#: git-gui.sh:2550
msgid "Redo"
msgstr ""
-#: git-gui.sh:2378 git-gui.sh:2937
+#: git-gui.sh:2554 git-gui.sh:3109
msgid "Cut"
msgstr ""
-#: git-gui.sh:2381 git-gui.sh:2940 git-gui.sh:3014 git-gui.sh:3096
+#: git-gui.sh:2557 git-gui.sh:3112 git-gui.sh:3186 git-gui.sh:3259
#: lib/console.tcl:69
msgid "Copy"
msgstr ""
-#: git-gui.sh:2384 git-gui.sh:2943
+#: git-gui.sh:2560 git-gui.sh:3115
msgid "Paste"
msgstr ""
-#: git-gui.sh:2387 git-gui.sh:2946 lib/branch_delete.tcl:26
+#: git-gui.sh:2563 git-gui.sh:3118 lib/branch_delete.tcl:26
#: lib/remote_branch_delete.tcl:38
msgid "Delete"
msgstr ""
-#: git-gui.sh:2391 git-gui.sh:2950 git-gui.sh:3100 lib/console.tcl:71
+#: git-gui.sh:2567 git-gui.sh:3122 git-gui.sh:3263 lib/console.tcl:71
msgid "Select All"
msgstr ""
-#: git-gui.sh:2400
+#: git-gui.sh:2576
msgid "Create..."
msgstr ""
-#: git-gui.sh:2406
+#: git-gui.sh:2582
msgid "Checkout..."
msgstr ""
-#: git-gui.sh:2412
+#: git-gui.sh:2588
msgid "Rename..."
msgstr ""
-#: git-gui.sh:2417
+#: git-gui.sh:2593
msgid "Delete..."
msgstr ""
-#: git-gui.sh:2422
+#: git-gui.sh:2598
msgid "Reset..."
msgstr ""
-#: git-gui.sh:2432
+#: git-gui.sh:2608
msgid "Done"
msgstr ""
-#: git-gui.sh:2434
+#: git-gui.sh:2610
msgid "Commit@@verb"
msgstr ""
-#: git-gui.sh:2443 git-gui.sh:2878
+#: git-gui.sh:2619 git-gui.sh:3050
msgid "New Commit"
msgstr ""
-#: git-gui.sh:2451 git-gui.sh:2885
+#: git-gui.sh:2627 git-gui.sh:3057
msgid "Amend Last Commit"
msgstr ""
-#: git-gui.sh:2461 git-gui.sh:2839 lib/remote_branch_delete.tcl:99
+#: git-gui.sh:2637 git-gui.sh:3011 lib/remote_branch_delete.tcl:99
msgid "Rescan"
msgstr ""
-#: git-gui.sh:2467
+#: git-gui.sh:2643
msgid "Stage To Commit"
msgstr ""
-#: git-gui.sh:2473
+#: git-gui.sh:2649
msgid "Stage Changed Files To Commit"
msgstr ""
-#: git-gui.sh:2479
+#: git-gui.sh:2655
msgid "Unstage From Commit"
msgstr ""
-#: git-gui.sh:2484 lib/index.tcl:410
+#: git-gui.sh:2661 lib/index.tcl:412
msgid "Revert Changes"
msgstr ""
-#: git-gui.sh:2491 git-gui.sh:3083
+#: git-gui.sh:2669 git-gui.sh:3310 git-gui.sh:3341
msgid "Show Less Context"
msgstr ""
-#: git-gui.sh:2495 git-gui.sh:3087
+#: git-gui.sh:2673 git-gui.sh:3314 git-gui.sh:3345
msgid "Show More Context"
msgstr ""
-#: git-gui.sh:2502 git-gui.sh:2852 git-gui.sh:2961
+#: git-gui.sh:2680 git-gui.sh:3024 git-gui.sh:3133
msgid "Sign Off"
msgstr ""
-#: git-gui.sh:2518
+#: git-gui.sh:2696
msgid "Local Merge..."
msgstr ""
-#: git-gui.sh:2523
+#: git-gui.sh:2701
msgid "Abort Merge..."
msgstr ""
-#: git-gui.sh:2535 git-gui.sh:2575
+#: git-gui.sh:2713 git-gui.sh:2741
msgid "Add..."
msgstr ""
-#: git-gui.sh:2539
+#: git-gui.sh:2717
msgid "Push..."
msgstr ""
-#: git-gui.sh:2543
+#: git-gui.sh:2721
msgid "Delete Branch..."
msgstr ""
-#: git-gui.sh:2553 git-gui.sh:2589 lib/about.tcl:14
-#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:53
-#, tcl-format
-msgid "About %s"
-msgstr ""
-
-#: git-gui.sh:2557
-msgid "Preferences..."
-msgstr ""
-
-#: git-gui.sh:2565 git-gui.sh:3129
+#: git-gui.sh:2731 git-gui.sh:3292
msgid "Options..."
msgstr ""
-#: git-gui.sh:2576
+#: git-gui.sh:2742
msgid "Remove..."
msgstr ""
-#: git-gui.sh:2585 lib/choose_repository.tcl:50
+#: git-gui.sh:2751 lib/choose_repository.tcl:50
msgid "Help"
msgstr ""
-#: git-gui.sh:2611
+#: git-gui.sh:2755 git-gui.sh:2759 lib/about.tcl:14
+#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:53
+#, tcl-format
+msgid "About %s"
+msgstr ""
+
+#: git-gui.sh:2783
msgid "Online Documentation"
msgstr ""
-#: git-gui.sh:2614 lib/choose_repository.tcl:47 lib/choose_repository.tcl:56
+#: git-gui.sh:2786 lib/choose_repository.tcl:47 lib/choose_repository.tcl:56
msgid "Show SSH Key"
msgstr ""
-#: git-gui.sh:2721
+#: git-gui.sh:2893
#, tcl-format
msgid "fatal: cannot stat path %s: No such file or directory"
msgstr ""
-#: git-gui.sh:2754
+#: git-gui.sh:2926
msgid "Current Branch:"
msgstr ""
-#: git-gui.sh:2775
+#: git-gui.sh:2947
msgid "Staged Changes (Will Commit)"
msgstr ""
-#: git-gui.sh:2795
+#: git-gui.sh:2967
msgid "Unstaged Changes"
msgstr ""
-#: git-gui.sh:2845
+#: git-gui.sh:3017
msgid "Stage Changed"
msgstr ""
-#: git-gui.sh:2864 lib/transport.tcl:104 lib/transport.tcl:193
+#: git-gui.sh:3036 lib/transport.tcl:104 lib/transport.tcl:193
msgid "Push"
msgstr ""
-#: git-gui.sh:2899
+#: git-gui.sh:3071
msgid "Initial Commit Message:"
msgstr ""
-#: git-gui.sh:2900
+#: git-gui.sh:3072
msgid "Amended Commit Message:"
msgstr ""
-#: git-gui.sh:2901
+#: git-gui.sh:3073
msgid "Amended Initial Commit Message:"
msgstr ""
-#: git-gui.sh:2902
+#: git-gui.sh:3074
msgid "Amended Merge Commit Message:"
msgstr ""
-#: git-gui.sh:2903
+#: git-gui.sh:3075
msgid "Merge Commit Message:"
msgstr ""
-#: git-gui.sh:2904
+#: git-gui.sh:3076
msgid "Commit Message:"
msgstr ""
-#: git-gui.sh:2953 git-gui.sh:3104 lib/console.tcl:73
+#: git-gui.sh:3125 git-gui.sh:3267 lib/console.tcl:73
msgid "Copy All"
msgstr ""
-#: git-gui.sh:2977 lib/blame.tcl:104
+#: git-gui.sh:3149 lib/blame.tcl:104
msgid "File:"
msgstr ""
-#: git-gui.sh:3092
+#: git-gui.sh:3255
msgid "Refresh"
msgstr ""
-#: git-gui.sh:3113
+#: git-gui.sh:3276
msgid "Decrease Font Size"
msgstr ""
-#: git-gui.sh:3117
+#: git-gui.sh:3280
msgid "Increase Font Size"
msgstr ""
-#: git-gui.sh:3125 lib/blame.tcl:281
+#: git-gui.sh:3288 lib/blame.tcl:281
msgid "Encoding"
msgstr ""
-#: git-gui.sh:3136
+#: git-gui.sh:3299
msgid "Apply/Reverse Hunk"
msgstr ""
-#: git-gui.sh:3141
+#: git-gui.sh:3304
msgid "Apply/Reverse Line"
msgstr ""
-#: git-gui.sh:3151
+#: git-gui.sh:3323
msgid "Run Merge Tool"
msgstr ""
-#: git-gui.sh:3156
+#: git-gui.sh:3328
msgid "Use Remote Version"
msgstr ""
-#: git-gui.sh:3160
+#: git-gui.sh:3332
msgid "Use Local Version"
msgstr ""
-#: git-gui.sh:3164
+#: git-gui.sh:3336
msgid "Revert To Base"
msgstr ""
-#: git-gui.sh:3183
+#: git-gui.sh:3354
+msgid "Visualize These Changes In The Submodule"
+msgstr ""
+
+#: git-gui.sh:3358
+msgid "Visualize Current Branch History In The Submodule"
+msgstr ""
+
+#: git-gui.sh:3362
+msgid "Visualize All Branch History In The Submodule"
+msgstr ""
+
+#: git-gui.sh:3367
+msgid "Start git gui In The Submodule"
+msgstr ""
+
+#: git-gui.sh:3389
msgid "Unstage Hunk From Commit"
msgstr ""
-#: git-gui.sh:3184
+#: git-gui.sh:3391
+msgid "Unstage Lines From Commit"
+msgstr ""
+
+#: git-gui.sh:3393
msgid "Unstage Line From Commit"
msgstr ""
-#: git-gui.sh:3186
+#: git-gui.sh:3396
msgid "Stage Hunk For Commit"
msgstr ""
-#: git-gui.sh:3187
+#: git-gui.sh:3398
+msgid "Stage Lines For Commit"
+msgstr ""
+
+#: git-gui.sh:3400
msgid "Stage Line For Commit"
msgstr ""
-#: git-gui.sh:3210
+#: git-gui.sh:3424
msgid "Initializing..."
msgstr ""
-#: git-gui.sh:3315
+#: git-gui.sh:3541
#, tcl-format
msgid ""
"Possible environment issues exist.\n"
"\n"
msgstr ""
-#: git-gui.sh:3345
+#: git-gui.sh:3570
msgid ""
"\n"
"This is due to a known issue with the\n"
"Tcl binary distributed by Cygwin."
msgstr ""
-#: git-gui.sh:3350
+#: git-gui.sh:3575
#, tcl-format
msgid ""
"\n"
msgid "Unable to display parent"
msgstr ""
-#: lib/blame.tcl:1091 lib/diff.tcl:297
+#: lib/blame.tcl:1091 lib/diff.tcl:320
msgid "Error loading diff:"
msgstr ""
#: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35
#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282
-#: lib/checkout_op.tcl:544 lib/choose_font.tcl:43 lib/merge.tcl:172
+#: lib/checkout_op.tcl:579 lib/choose_font.tcl:43 lib/merge.tcl:172
#: lib/option.tcl:125 lib/remote_add.tcl:32 lib/remote_branch_delete.tcl:42
#: lib/tools_dlg.tcl:40 lib/tools_dlg.tcl:204 lib/tools_dlg.tcl:352
#: lib/transport.tcl:108
msgid "Create New Branch"
msgstr ""
-#: lib/branch_create.tcl:31 lib/choose_repository.tcl:377
+#: lib/branch_create.tcl:31 lib/choose_repository.tcl:381
msgid "Create"
msgstr ""
msgid "Fast Forward Only"
msgstr ""
-#: lib/branch_create.tcl:85 lib/checkout_op.tcl:536
+#: lib/branch_create.tcl:85 lib/checkout_op.tcl:571
msgid "Reset"
msgstr ""
msgid "Delete Only If Merged Into"
msgstr ""
-#: lib/branch_delete.tcl:54
-msgid "Always (Do not perform merge test.)"
+#: lib/branch_delete.tcl:54 lib/remote_branch_delete.tcl:119
+msgid "Always (Do not perform merge checks)"
msgstr ""
#: lib/branch_delete.tcl:103
msgid "The following branches are not completely merged into %s:"
msgstr ""
+#: lib/branch_delete.tcl:115 lib/remote_branch_delete.tcl:217
+msgid ""
+"Recovering deleted branches is difficult.\n"
+"\n"
+"Delete the selected branches?"
+msgstr ""
+
#: lib/branch_delete.tcl:141
#, tcl-format
msgid ""
msgid "Please select a branch to rename."
msgstr ""
-#: lib/branch_rename.tcl:96 lib/checkout_op.tcl:201
+#: lib/branch_rename.tcl:96 lib/checkout_op.tcl:202
#, tcl-format
msgid "Branch '%s' already exists."
msgstr ""
msgid "Browse Branch Files"
msgstr ""
-#: lib/browser.tcl:278 lib/choose_repository.tcl:394
-#: lib/choose_repository.tcl:480 lib/choose_repository.tcl:491
-#: lib/choose_repository.tcl:995
+#: lib/browser.tcl:278 lib/choose_repository.tcl:398
+#: lib/choose_repository.tcl:486 lib/choose_repository.tcl:497
+#: lib/choose_repository.tcl:1028
msgid "Browse"
msgstr ""
-#: lib/checkout_op.tcl:84
+#: lib/checkout_op.tcl:85
#, tcl-format
msgid "Fetching %s from %s"
msgstr ""
-#: lib/checkout_op.tcl:132
+#: lib/checkout_op.tcl:133
#, tcl-format
msgid "fatal: Cannot resolve %s"
msgstr ""
-#: lib/checkout_op.tcl:145 lib/console.tcl:81 lib/database.tcl:31
+#: lib/checkout_op.tcl:146 lib/console.tcl:81 lib/database.tcl:31
#: lib/sshkey.tcl:53
msgid "Close"
msgstr ""
-#: lib/checkout_op.tcl:174
+#: lib/checkout_op.tcl:175
#, tcl-format
msgid "Branch '%s' does not exist."
msgstr ""
-#: lib/checkout_op.tcl:193
+#: lib/checkout_op.tcl:194
#, tcl-format
msgid "Failed to configure simplified git-pull for '%s'."
msgstr ""
-#: lib/checkout_op.tcl:228
+#: lib/checkout_op.tcl:229
#, tcl-format
msgid ""
"Branch '%s' already exists.\n"
"A merge is required."
msgstr ""
-#: lib/checkout_op.tcl:242
+#: lib/checkout_op.tcl:243
#, tcl-format
msgid "Merge strategy '%s' not supported."
msgstr ""
-#: lib/checkout_op.tcl:261
+#: lib/checkout_op.tcl:262
#, tcl-format
msgid "Failed to update '%s'."
msgstr ""
-#: lib/checkout_op.tcl:273
+#: lib/checkout_op.tcl:274
msgid "Staging area (index) is already locked."
msgstr ""
-#: lib/checkout_op.tcl:288
+#: lib/checkout_op.tcl:289
msgid ""
"Last scanned state does not match repository state.\n"
"\n"
"The rescan will be automatically started now.\n"
msgstr ""
-#: lib/checkout_op.tcl:344
+#: lib/checkout_op.tcl:345
#, tcl-format
msgid "Updating working directory to '%s'..."
msgstr ""
-#: lib/checkout_op.tcl:345
+#: lib/checkout_op.tcl:346
msgid "files checked out"
msgstr ""
-#: lib/checkout_op.tcl:375
+#: lib/checkout_op.tcl:376
#, tcl-format
msgid "Aborted checkout of '%s' (file level merging is required)."
msgstr ""
-#: lib/checkout_op.tcl:376
+#: lib/checkout_op.tcl:377
msgid "File level merge required."
msgstr ""
-#: lib/checkout_op.tcl:380
+#: lib/checkout_op.tcl:381
#, tcl-format
msgid "Staying on branch '%s'."
msgstr ""
-#: lib/checkout_op.tcl:451
+#: lib/checkout_op.tcl:452
msgid ""
"You are no longer on a local branch.\n"
"\n"
"Checkout'."
msgstr ""
-#: lib/checkout_op.tcl:468 lib/checkout_op.tcl:472
+#: lib/checkout_op.tcl:503 lib/checkout_op.tcl:507
#, tcl-format
msgid "Checked out '%s'."
msgstr ""
-#: lib/checkout_op.tcl:500
+#: lib/checkout_op.tcl:535
#, tcl-format
msgid "Resetting '%s' to '%s' will lose the following commits:"
msgstr ""
-#: lib/checkout_op.tcl:522
+#: lib/checkout_op.tcl:557
msgid "Recovering lost commits may not be easy."
msgstr ""
-#: lib/checkout_op.tcl:527
+#: lib/checkout_op.tcl:562
#, tcl-format
msgid "Reset '%s'?"
msgstr ""
-#: lib/checkout_op.tcl:532 lib/merge.tcl:164 lib/tools_dlg.tcl:343
+#: lib/checkout_op.tcl:567 lib/merge.tcl:164 lib/tools_dlg.tcl:343
msgid "Visualize"
msgstr ""
-#: lib/checkout_op.tcl:600
+#: lib/checkout_op.tcl:635
#, tcl-format
msgid ""
"Failed to set current branch.\n"
msgid "Git Gui"
msgstr ""
-#: lib/choose_repository.tcl:87 lib/choose_repository.tcl:382
+#: lib/choose_repository.tcl:87 lib/choose_repository.tcl:386
msgid "Create New Repository"
msgstr ""
msgid "New..."
msgstr ""
-#: lib/choose_repository.tcl:100 lib/choose_repository.tcl:465
+#: lib/choose_repository.tcl:100 lib/choose_repository.tcl:471
msgid "Clone Existing Repository"
msgstr ""
msgid "Clone..."
msgstr ""
-#: lib/choose_repository.tcl:113 lib/choose_repository.tcl:983
+#: lib/choose_repository.tcl:113 lib/choose_repository.tcl:1016
msgid "Open Existing Repository"
msgstr ""
msgid "Open Recent Repository:"
msgstr ""
-#: lib/choose_repository.tcl:302 lib/choose_repository.tcl:309
-#: lib/choose_repository.tcl:316
+#: lib/choose_repository.tcl:306 lib/choose_repository.tcl:313
+#: lib/choose_repository.tcl:320
#, tcl-format
msgid "Failed to create repository %s:"
msgstr ""
-#: lib/choose_repository.tcl:387
+#: lib/choose_repository.tcl:391
msgid "Directory:"
msgstr ""
-#: lib/choose_repository.tcl:417 lib/choose_repository.tcl:544
-#: lib/choose_repository.tcl:1017
+#: lib/choose_repository.tcl:423 lib/choose_repository.tcl:550
+#: lib/choose_repository.tcl:1052
msgid "Git Repository"
msgstr ""
-#: lib/choose_repository.tcl:442
+#: lib/choose_repository.tcl:448
#, tcl-format
msgid "Directory %s already exists."
msgstr ""
-#: lib/choose_repository.tcl:446
+#: lib/choose_repository.tcl:452
#, tcl-format
msgid "File %s already exists."
msgstr ""
-#: lib/choose_repository.tcl:460
+#: lib/choose_repository.tcl:466
msgid "Clone"
msgstr ""
-#: lib/choose_repository.tcl:473
+#: lib/choose_repository.tcl:479
msgid "Source Location:"
msgstr ""
-#: lib/choose_repository.tcl:484
+#: lib/choose_repository.tcl:490
msgid "Target Directory:"
msgstr ""
-#: lib/choose_repository.tcl:496
+#: lib/choose_repository.tcl:502
msgid "Clone Type:"
msgstr ""
-#: lib/choose_repository.tcl:502
+#: lib/choose_repository.tcl:508
msgid "Standard (Fast, Semi-Redundant, Hardlinks)"
msgstr ""
-#: lib/choose_repository.tcl:508
+#: lib/choose_repository.tcl:514
msgid "Full Copy (Slower, Redundant Backup)"
msgstr ""
-#: lib/choose_repository.tcl:514
+#: lib/choose_repository.tcl:520
msgid "Shared (Fastest, Not Recommended, No Backup)"
msgstr ""
-#: lib/choose_repository.tcl:550 lib/choose_repository.tcl:597
-#: lib/choose_repository.tcl:743 lib/choose_repository.tcl:813
-#: lib/choose_repository.tcl:1023 lib/choose_repository.tcl:1031
+#: lib/choose_repository.tcl:556 lib/choose_repository.tcl:603
+#: lib/choose_repository.tcl:749 lib/choose_repository.tcl:819
+#: lib/choose_repository.tcl:1058 lib/choose_repository.tcl:1066
#, tcl-format
msgid "Not a Git repository: %s"
msgstr ""
-#: lib/choose_repository.tcl:586
+#: lib/choose_repository.tcl:592
msgid "Standard only available for local repository."
msgstr ""
-#: lib/choose_repository.tcl:590
+#: lib/choose_repository.tcl:596
msgid "Shared only available for local repository."
msgstr ""
-#: lib/choose_repository.tcl:611
+#: lib/choose_repository.tcl:617
#, tcl-format
msgid "Location %s already exists."
msgstr ""
-#: lib/choose_repository.tcl:622
+#: lib/choose_repository.tcl:628
msgid "Failed to configure origin"
msgstr ""
-#: lib/choose_repository.tcl:634
+#: lib/choose_repository.tcl:640
msgid "Counting objects"
msgstr ""
-#: lib/choose_repository.tcl:635
+#: lib/choose_repository.tcl:641
msgid "buckets"
msgstr ""
-#: lib/choose_repository.tcl:659
+#: lib/choose_repository.tcl:665
#, tcl-format
msgid "Unable to copy objects/info/alternates: %s"
msgstr ""
-#: lib/choose_repository.tcl:695
+#: lib/choose_repository.tcl:701
#, tcl-format
msgid "Nothing to clone from %s."
msgstr ""
-#: lib/choose_repository.tcl:697 lib/choose_repository.tcl:911
-#: lib/choose_repository.tcl:923
+#: lib/choose_repository.tcl:703 lib/choose_repository.tcl:917
+#: lib/choose_repository.tcl:929
msgid "The 'master' branch has not been initialized."
msgstr ""
-#: lib/choose_repository.tcl:710
+#: lib/choose_repository.tcl:716
msgid "Hardlinks are unavailable. Falling back to copying."
msgstr ""
-#: lib/choose_repository.tcl:722
+#: lib/choose_repository.tcl:728
#, tcl-format
msgid "Cloning from %s"
msgstr ""
-#: lib/choose_repository.tcl:753
+#: lib/choose_repository.tcl:759
msgid "Copying objects"
msgstr ""
-#: lib/choose_repository.tcl:754
+#: lib/choose_repository.tcl:760
msgid "KiB"
msgstr ""
-#: lib/choose_repository.tcl:778
+#: lib/choose_repository.tcl:784
#, tcl-format
msgid "Unable to copy object: %s"
msgstr ""
-#: lib/choose_repository.tcl:788
+#: lib/choose_repository.tcl:794
msgid "Linking objects"
msgstr ""
-#: lib/choose_repository.tcl:789
+#: lib/choose_repository.tcl:795
msgid "objects"
msgstr ""
-#: lib/choose_repository.tcl:797
+#: lib/choose_repository.tcl:803
#, tcl-format
msgid "Unable to hardlink object: %s"
msgstr ""
-#: lib/choose_repository.tcl:852
+#: lib/choose_repository.tcl:858
msgid "Cannot fetch branches and objects. See console output for details."
msgstr ""
-#: lib/choose_repository.tcl:863
+#: lib/choose_repository.tcl:869
msgid "Cannot fetch tags. See console output for details."
msgstr ""
-#: lib/choose_repository.tcl:887
+#: lib/choose_repository.tcl:893
msgid "Cannot determine HEAD. See console output for details."
msgstr ""
-#: lib/choose_repository.tcl:896
+#: lib/choose_repository.tcl:902
#, tcl-format
msgid "Unable to cleanup %s"
msgstr ""
-#: lib/choose_repository.tcl:902
+#: lib/choose_repository.tcl:908
msgid "Clone failed."
msgstr ""
-#: lib/choose_repository.tcl:909
+#: lib/choose_repository.tcl:915
msgid "No default branch obtained."
msgstr ""
-#: lib/choose_repository.tcl:920
+#: lib/choose_repository.tcl:926
#, tcl-format
msgid "Cannot resolve %s as a commit."
msgstr ""
-#: lib/choose_repository.tcl:932
+#: lib/choose_repository.tcl:938
msgid "Creating working directory"
msgstr ""
-#: lib/choose_repository.tcl:933 lib/index.tcl:65 lib/index.tcl:128
-#: lib/index.tcl:196
+#: lib/choose_repository.tcl:939 lib/index.tcl:67 lib/index.tcl:130
+#: lib/index.tcl:198
msgid "files"
msgstr ""
-#: lib/choose_repository.tcl:962
+#: lib/choose_repository.tcl:968
msgid "Initial file checkout failed."
msgstr ""
-#: lib/choose_repository.tcl:978
+#: lib/choose_repository.tcl:1011
msgid "Open"
msgstr ""
-#: lib/choose_repository.tcl:988
+#: lib/choose_repository.tcl:1021
msgid "Repository:"
msgstr ""
-#: lib/choose_repository.tcl:1037
+#: lib/choose_repository.tcl:1072
#, tcl-format
msgid "Failed to open repository %s:"
msgstr ""
msgid "Invalid GIT_COMMITTER_IDENT:"
msgstr ""
-#: lib/commit.tcl:132
+#: lib/commit.tcl:129
+#, tcl-format
+msgid "warning: Tcl does not support encoding '%s'."
+msgstr ""
+
+#: lib/commit.tcl:149
msgid ""
"Last scanned state does not match repository state.\n"
"\n"
"The rescan will be automatically started now.\n"
msgstr ""
-#: lib/commit.tcl:155
+#: lib/commit.tcl:172
#, tcl-format
msgid ""
"Unmerged files cannot be committed.\n"
"before committing.\n"
msgstr ""
-#: lib/commit.tcl:163
+#: lib/commit.tcl:180
#, tcl-format
msgid ""
"Unknown file state %s detected.\n"
"File %s cannot be committed by this program.\n"
msgstr ""
-#: lib/commit.tcl:171
+#: lib/commit.tcl:188
msgid ""
"No changes to commit.\n"
"\n"
"You must stage at least 1 file before you can commit.\n"
msgstr ""
-#: lib/commit.tcl:186
+#: lib/commit.tcl:203
msgid ""
"Please supply a commit message.\n"
"\n"
"- Remaining lines: Describe why this change is good.\n"
msgstr ""
-#: lib/commit.tcl:210
-#, tcl-format
-msgid "warning: Tcl does not support encoding '%s'."
-msgstr ""
-
-#: lib/commit.tcl:226
+#: lib/commit.tcl:234
msgid "Calling pre-commit hook..."
msgstr ""
-#: lib/commit.tcl:241
+#: lib/commit.tcl:249
msgid "Commit declined by pre-commit hook."
msgstr ""
-#: lib/commit.tcl:264
+#: lib/commit.tcl:272
msgid "Calling commit-msg hook..."
msgstr ""
-#: lib/commit.tcl:279
+#: lib/commit.tcl:287
msgid "Commit declined by commit-msg hook."
msgstr ""
-#: lib/commit.tcl:292
+#: lib/commit.tcl:300
msgid "Committing changes..."
msgstr ""
-#: lib/commit.tcl:308
+#: lib/commit.tcl:316
msgid "write-tree failed:"
msgstr ""
-#: lib/commit.tcl:309 lib/commit.tcl:353 lib/commit.tcl:373
+#: lib/commit.tcl:317 lib/commit.tcl:361 lib/commit.tcl:382
msgid "Commit failed."
msgstr ""
-#: lib/commit.tcl:326
+#: lib/commit.tcl:334
#, tcl-format
msgid "Commit %s appears to be corrupt"
msgstr ""
-#: lib/commit.tcl:331
+#: lib/commit.tcl:339
msgid ""
"No changes to commit.\n"
"\n"
"A rescan will be automatically started now.\n"
msgstr ""
-#: lib/commit.tcl:338
+#: lib/commit.tcl:346
msgid "No changes to commit."
msgstr ""
-#: lib/commit.tcl:352
+#: lib/commit.tcl:360
msgid "commit-tree failed:"
msgstr ""
-#: lib/commit.tcl:372
+#: lib/commit.tcl:381
msgid "update-ref failed:"
msgstr ""
-#: lib/commit.tcl:460
+#: lib/commit.tcl:469
#, tcl-format
msgid "Created commit %s: %s"
msgstr ""
msgid "Verifying the object database with fsck-objects"
msgstr ""
-#: lib/database.tcl:108
+#: lib/database.tcl:107
#, tcl-format
msgid ""
"This repository currently has approximately %i loose objects.\n"
"\n"
"To maintain optimal performance it is strongly recommended that you compress "
-"the database when more than %i loose objects exist.\n"
+"the database.\n"
"\n"
"Compress the database now?"
msgstr ""
msgid "Invalid date from Git: %s"
msgstr ""
-#: lib/diff.tcl:59
+#: lib/diff.tcl:64
#, tcl-format
msgid ""
"No differences detected.\n"
"the same state."
msgstr ""
-#: lib/diff.tcl:99
+#: lib/diff.tcl:104
#, tcl-format
msgid "Loading diff of %s..."
msgstr ""
-#: lib/diff.tcl:120
+#: lib/diff.tcl:125
msgid ""
"LOCAL: deleted\n"
"REMOTE:\n"
msgstr ""
-#: lib/diff.tcl:125
+#: lib/diff.tcl:130
msgid ""
"REMOTE: deleted\n"
"LOCAL:\n"
msgstr ""
-#: lib/diff.tcl:132
+#: lib/diff.tcl:137
msgid "LOCAL:\n"
msgstr ""
-#: lib/diff.tcl:135
+#: lib/diff.tcl:140
msgid "REMOTE:\n"
msgstr ""
-#: lib/diff.tcl:197 lib/diff.tcl:296
+#: lib/diff.tcl:202 lib/diff.tcl:319
#, tcl-format
msgid "Unable to display %s"
msgstr ""
-#: lib/diff.tcl:198
+#: lib/diff.tcl:203
msgid "Error loading file:"
msgstr ""
-#: lib/diff.tcl:205
+#: lib/diff.tcl:210
msgid "Git Repository (subproject)"
msgstr ""
-#: lib/diff.tcl:217
+#: lib/diff.tcl:222
msgid "* Binary file (not showing content)."
msgstr ""
-#: lib/diff.tcl:222
+#: lib/diff.tcl:227
#, tcl-format
msgid ""
"* Untracked file is %d bytes.\n"
"* Showing only first %d bytes.\n"
msgstr ""
-#: lib/diff.tcl:228
+#: lib/diff.tcl:233
#, tcl-format
msgid ""
"\n"
"* To see the entire file, use an external editor.\n"
msgstr ""
-#: lib/diff.tcl:436
+#: lib/diff.tcl:482
msgid "Failed to unstage selected hunk."
msgstr ""
-#: lib/diff.tcl:443
+#: lib/diff.tcl:489
msgid "Failed to stage selected hunk."
msgstr ""
-#: lib/diff.tcl:509
+#: lib/diff.tcl:568
msgid "Failed to unstage selected line."
msgstr ""
-#: lib/diff.tcl:517
+#: lib/diff.tcl:576
msgid "Failed to stage selected line."
msgstr ""
msgid "Index Error"
msgstr ""
-#: lib/index.tcl:21
+#: lib/index.tcl:17
msgid ""
"Updating the Git index failed. A rescan will be automatically started to "
"resynchronize git-gui."
msgstr ""
-#: lib/index.tcl:27
+#: lib/index.tcl:28
msgid "Continue"
msgstr ""
msgid "Unlock Index"
msgstr ""
-#: lib/index.tcl:287
+#: lib/index.tcl:289
#, tcl-format
msgid "Unstaging %s from commit"
msgstr ""
-#: lib/index.tcl:326
+#: lib/index.tcl:328
msgid "Ready to commit."
msgstr ""
-#: lib/index.tcl:339
+#: lib/index.tcl:341
#, tcl-format
msgid "Adding %s"
msgstr ""
-#: lib/index.tcl:396
+#: lib/index.tcl:398
#, tcl-format
msgid "Revert changes in file %s?"
msgstr ""
-#: lib/index.tcl:398
+#: lib/index.tcl:400
#, tcl-format
msgid "Revert changes in these %i files?"
msgstr ""
-#: lib/index.tcl:406
+#: lib/index.tcl:408
msgid "Any unstaged changes will be permanently lost by the revert."
msgstr ""
-#: lib/index.tcl:409
+#: lib/index.tcl:411
msgid "Do Nothing"
msgstr ""
-#: lib/index.tcl:427
+#: lib/index.tcl:429
msgid "Reverting selected files"
msgstr ""
-#: lib/index.tcl:431
+#: lib/index.tcl:433
#, tcl-format
msgid "Reverting %s"
msgstr ""
msgid "Merged Into:"
msgstr ""
-#: lib/remote_branch_delete.tcl:119
-msgid "Always (Do not perform merge checks)"
-msgstr ""
-
#: lib/remote_branch_delete.tcl:152
msgid "A branch is required for 'Merged Into'."
msgstr ""
msgid "Please select one or more branches to delete."
msgstr ""
-#: lib/remote_branch_delete.tcl:216
-msgid ""
-"Recovering deleted branches is difficult.\n"
-"\n"
-"Delete the selected branches?"
-msgstr ""
-
#: lib/remote_branch_delete.tcl:226
#, tcl-format
msgid "Deleting branches from %s"
msgstr ""
-#: lib/remote_branch_delete.tcl:286
+#: lib/remote_branch_delete.tcl:292
msgid "No repository selected."
msgstr ""
-#: lib/remote_branch_delete.tcl:291
+#: lib/remote_branch_delete.tcl:297
#, tcl-format
msgid "Scanning %s..."
msgstr ""
msgid "Case-Sensitive"
msgstr ""
-#: lib/shortcut.tcl:20 lib/shortcut.tcl:61
+#: lib/shortcut.tcl:21 lib/shortcut.tcl:62
msgid "Cannot write shortcut:"
msgstr ""
-#: lib/shortcut.tcl:136
+#: lib/shortcut.tcl:137
msgid "Cannot write icon:"
msgstr ""
msgstr ""
"Project-Id-Version: git-gui\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-08 08:31-0800\n"
-"PO-Revision-Date: 2008-12-09 13:04+0100\n"
+"POT-Creation-Date: 2010-01-26 15:47-0800\n"
+"PO-Revision-Date: 2010-01-28 10:04+0100\n"
"Last-Translator: Michele Ballabio <barra_cuda@katamail.com>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: git-gui.sh:41 git-gui.sh:737 git-gui.sh:751 git-gui.sh:764 git-gui.sh:847
-#: git-gui.sh:866
+#: git-gui.sh:41 git-gui.sh:793 git-gui.sh:807 git-gui.sh:820 git-gui.sh:903
+#: git-gui.sh:922
msgid "git-gui: fatal error"
msgstr "git-gui: errore grave"
-#: git-gui.sh:689
+#: git-gui.sh:743
#, tcl-format
msgid "Invalid font specified in %s:"
msgstr "Caratteri non validi specificati in %s:"
-#: git-gui.sh:723
+#: git-gui.sh:779
msgid "Main Font"
msgstr "Caratteri principali"
-#: git-gui.sh:724
+#: git-gui.sh:780
msgid "Diff/Console Font"
msgstr "Caratteri per confronti e terminale"
-#: git-gui.sh:738
+#: git-gui.sh:794
msgid "Cannot find git in PATH."
msgstr "Impossibile trovare git nel PATH"
-#: git-gui.sh:765
+#: git-gui.sh:821
msgid "Cannot parse Git version string:"
msgstr "Impossibile determinare la versione di Git:"
-#: git-gui.sh:783
+#: git-gui.sh:839
#, tcl-format
msgid ""
"Git version cannot be determined.\n"
"\n"
"Assumere che '%s' sia alla versione 1.5.0?\n"
-#: git-gui.sh:1062
+#: git-gui.sh:1128
msgid "Git directory not found:"
msgstr "Non trovo la directory di git: "
-#: git-gui.sh:1069
+#: git-gui.sh:1146
msgid "Cannot move to top of working directory:"
msgstr "Impossibile spostarsi sulla directory principale del progetto:"
-#: git-gui.sh:1076
-msgid "Cannot use funny .git directory:"
-msgstr "Impossibile usare una .git directory strana:"
+#: git-gui.sh:1154
+msgid "Cannot use bare repository:"
+msgstr "Impossibile usare un archivio senza directory di lavoro:"
-#: git-gui.sh:1081
+#: git-gui.sh:1162
msgid "No working directory"
msgstr "Nessuna directory di lavoro"
-#: git-gui.sh:1247 lib/checkout_op.tcl:305
+#: git-gui.sh:1334 lib/checkout_op.tcl:306
msgid "Refreshing file status..."
msgstr "Controllo dello stato dei file in corso..."
-#: git-gui.sh:1303
+#: git-gui.sh:1390
msgid "Scanning for modified files ..."
msgstr "Ricerca di file modificati in corso..."
-#: git-gui.sh:1367
+#: git-gui.sh:1454
msgid "Calling prepare-commit-msg hook..."
msgstr "Avvio prepare-commit-msg hook..."
-#: git-gui.sh:1384
+#: git-gui.sh:1471
msgid "Commit declined by prepare-commit-msg hook."
msgstr "Revisione rifiutata dal prepare-commit-msg hook."
-#: git-gui.sh:1542 lib/browser.tcl:246
+#: git-gui.sh:1629 lib/browser.tcl:246
msgid "Ready."
msgstr "Pronto."
-#: git-gui.sh:1819
+#: git-gui.sh:1787
+#, tcl-format
+msgid "Displaying only %s of %s files."
+msgstr "Saranno mostrati solo %s file su %s."
+
+#: git-gui.sh:1913
msgid "Unmodified"
msgstr "Non modificato"
-#: git-gui.sh:1821
+#: git-gui.sh:1915
msgid "Modified, not staged"
msgstr "Modificato, non preparato per una nuova revisione"
-#: git-gui.sh:1822 git-gui.sh:1830
+#: git-gui.sh:1916 git-gui.sh:1924
msgid "Staged for commit"
msgstr "Preparato per una nuova revisione"
-#: git-gui.sh:1823 git-gui.sh:1831
+#: git-gui.sh:1917 git-gui.sh:1925
msgid "Portions staged for commit"
msgstr "Parti preparate per una nuova revisione"
-#: git-gui.sh:1824 git-gui.sh:1832
+#: git-gui.sh:1918 git-gui.sh:1926
msgid "Staged for commit, missing"
msgstr "Preparato per una nuova revisione, mancante"
-#: git-gui.sh:1826
+#: git-gui.sh:1920
msgid "File type changed, not staged"
msgstr "Tipo di file modificato, non preparato per una nuova revisione"
-#: git-gui.sh:1827
+#: git-gui.sh:1921
msgid "File type changed, staged"
msgstr "Tipo di file modificato, preparato per una nuova revisione"
-#: git-gui.sh:1829
+#: git-gui.sh:1923
msgid "Untracked, not staged"
msgstr "Non tracciato, non preparato per una nuova revisione"
-#: git-gui.sh:1834
+#: git-gui.sh:1928
msgid "Missing"
msgstr "Mancante"
-#: git-gui.sh:1835
+#: git-gui.sh:1929
msgid "Staged for removal"
msgstr "Preparato per la rimozione"
-#: git-gui.sh:1836
+#: git-gui.sh:1930
msgid "Staged for removal, still present"
msgstr "Preparato alla rimozione, ancora presente"
-#: git-gui.sh:1838 git-gui.sh:1839 git-gui.sh:1840 git-gui.sh:1841
-#: git-gui.sh:1842 git-gui.sh:1843
+#: git-gui.sh:1932 git-gui.sh:1933 git-gui.sh:1934 git-gui.sh:1935
+#: git-gui.sh:1936 git-gui.sh:1937
msgid "Requires merge resolution"
msgstr "Richiede risoluzione dei conflitti"
-#: git-gui.sh:1878
+#: git-gui.sh:1972
msgid "Starting gitk... please wait..."
msgstr "Avvio di gitk... attendere..."
-#: git-gui.sh:1887
+#: git-gui.sh:1984
msgid "Couldn't find gitk in PATH"
msgstr "Impossibile trovare gitk nel PATH"
-#: git-gui.sh:2280 lib/choose_repository.tcl:36
+#: git-gui.sh:2043
+msgid "Couldn't find git gui in PATH"
+msgstr "Impossibile trovare git gui nel PATH"
+
+#: git-gui.sh:2455 lib/choose_repository.tcl:36
msgid "Repository"
msgstr "Archivio"
-#: git-gui.sh:2281
+#: git-gui.sh:2456
msgid "Edit"
msgstr "Modifica"
-#: git-gui.sh:2283 lib/choose_rev.tcl:561
+#: git-gui.sh:2458 lib/choose_rev.tcl:561
msgid "Branch"
msgstr "Ramo"
-#: git-gui.sh:2286 lib/choose_rev.tcl:548
+#: git-gui.sh:2461 lib/choose_rev.tcl:548
msgid "Commit@@noun"
msgstr "Revisione"
-#: git-gui.sh:2289 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168
+#: git-gui.sh:2464 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168
msgid "Merge"
msgstr "Fusione (Merge)"
-#: git-gui.sh:2290 lib/choose_rev.tcl:557
+#: git-gui.sh:2465 lib/choose_rev.tcl:557
msgid "Remote"
msgstr "Remoto"
-#: git-gui.sh:2293
+#: git-gui.sh:2468
msgid "Tools"
-msgstr "Strumenti"
+msgstr "Accessori"
-#: git-gui.sh:2302
+#: git-gui.sh:2477
msgid "Explore Working Copy"
msgstr "Esplora copia di lavoro"
-#: git-gui.sh:2307
+#: git-gui.sh:2483
msgid "Browse Current Branch's Files"
msgstr "Esplora i file del ramo attuale"
-#: git-gui.sh:2311
+#: git-gui.sh:2487
msgid "Browse Branch Files..."
msgstr "Esplora i file del ramo..."
-#: git-gui.sh:2316
+#: git-gui.sh:2492
msgid "Visualize Current Branch's History"
msgstr "Visualizza la cronologia del ramo attuale"
-#: git-gui.sh:2320
+#: git-gui.sh:2496
msgid "Visualize All Branch History"
msgstr "Visualizza la cronologia di tutti i rami"
-#: git-gui.sh:2327
+#: git-gui.sh:2503
#, tcl-format
msgid "Browse %s's Files"
msgstr "Esplora i file di %s"
-#: git-gui.sh:2329
+#: git-gui.sh:2505
#, tcl-format
msgid "Visualize %s's History"
msgstr "Visualizza la cronologia di %s"
-#: git-gui.sh:2334 lib/database.tcl:27 lib/database.tcl:67
+#: git-gui.sh:2510 lib/database.tcl:27 lib/database.tcl:67
msgid "Database Statistics"
msgstr "Statistiche dell'archivio"
-#: git-gui.sh:2337 lib/database.tcl:34
+#: git-gui.sh:2513 lib/database.tcl:34
msgid "Compress Database"
msgstr "Comprimi l'archivio"
-#: git-gui.sh:2340
+#: git-gui.sh:2516
msgid "Verify Database"
msgstr "Verifica l'archivio"
-#: git-gui.sh:2347 git-gui.sh:2351 git-gui.sh:2355 lib/shortcut.tcl:7
-#: lib/shortcut.tcl:39 lib/shortcut.tcl:71
+#: git-gui.sh:2523 git-gui.sh:2527 git-gui.sh:2531 lib/shortcut.tcl:8
+#: lib/shortcut.tcl:40 lib/shortcut.tcl:72
msgid "Create Desktop Icon"
msgstr "Crea icona desktop"
-#: git-gui.sh:2363 lib/choose_repository.tcl:183 lib/choose_repository.tcl:191
+#: git-gui.sh:2539 lib/choose_repository.tcl:183 lib/choose_repository.tcl:191
msgid "Quit"
msgstr "Esci"
-#: git-gui.sh:2371
+#: git-gui.sh:2547
msgid "Undo"
msgstr "Annulla"
-#: git-gui.sh:2374
+#: git-gui.sh:2550
msgid "Redo"
msgstr "Ripeti"
-#: git-gui.sh:2378 git-gui.sh:2937
+#: git-gui.sh:2554 git-gui.sh:3109
msgid "Cut"
msgstr "Taglia"
-#: git-gui.sh:2381 git-gui.sh:2940 git-gui.sh:3014 git-gui.sh:3096
+#: git-gui.sh:2557 git-gui.sh:3112 git-gui.sh:3186 git-gui.sh:3259
#: lib/console.tcl:69
msgid "Copy"
msgstr "Copia"
-#: git-gui.sh:2384 git-gui.sh:2943
+#: git-gui.sh:2560 git-gui.sh:3115
msgid "Paste"
msgstr "Incolla"
-#: git-gui.sh:2387 git-gui.sh:2946 lib/branch_delete.tcl:26
+#: git-gui.sh:2563 git-gui.sh:3118 lib/branch_delete.tcl:26
#: lib/remote_branch_delete.tcl:38
msgid "Delete"
msgstr "Elimina"
-#: git-gui.sh:2391 git-gui.sh:2950 git-gui.sh:3100 lib/console.tcl:71
+#: git-gui.sh:2567 git-gui.sh:3122 git-gui.sh:3263 lib/console.tcl:71
msgid "Select All"
msgstr "Seleziona tutto"
-#: git-gui.sh:2400
+#: git-gui.sh:2576
msgid "Create..."
msgstr "Crea..."
-#: git-gui.sh:2406
+#: git-gui.sh:2582
msgid "Checkout..."
msgstr "Attiva..."
-#: git-gui.sh:2412
+#: git-gui.sh:2588
msgid "Rename..."
msgstr "Rinomina"
-#: git-gui.sh:2417
+#: git-gui.sh:2593
msgid "Delete..."
msgstr "Elimina..."
-#: git-gui.sh:2422
+#: git-gui.sh:2598
msgid "Reset..."
msgstr "Ripristina..."
-#: git-gui.sh:2432
+#: git-gui.sh:2608
msgid "Done"
msgstr "Fatto"
-#: git-gui.sh:2434
+#: git-gui.sh:2610
msgid "Commit@@verb"
msgstr "Nuova revisione"
-#: git-gui.sh:2443 git-gui.sh:2878
+#: git-gui.sh:2619 git-gui.sh:3050
msgid "New Commit"
msgstr "Nuova revisione"
-#: git-gui.sh:2451 git-gui.sh:2885
+#: git-gui.sh:2627 git-gui.sh:3057
msgid "Amend Last Commit"
msgstr "Correggi l'ultima revisione"
-#: git-gui.sh:2461 git-gui.sh:2839 lib/remote_branch_delete.tcl:99
+#: git-gui.sh:2637 git-gui.sh:3011 lib/remote_branch_delete.tcl:99
msgid "Rescan"
msgstr "Analizza nuovamente"
-#: git-gui.sh:2467
+#: git-gui.sh:2643
msgid "Stage To Commit"
msgstr "Prepara per una nuova revisione"
-#: git-gui.sh:2473
+#: git-gui.sh:2649
msgid "Stage Changed Files To Commit"
msgstr "Prepara i file modificati per una nuova revisione"
-#: git-gui.sh:2479
+#: git-gui.sh:2655
msgid "Unstage From Commit"
msgstr "Annulla preparazione"
-#: git-gui.sh:2484 lib/index.tcl:410
+#: git-gui.sh:2661 lib/index.tcl:412
msgid "Revert Changes"
msgstr "Annulla modifiche"
-#: git-gui.sh:2491 git-gui.sh:3083
+#: git-gui.sh:2669 git-gui.sh:3310 git-gui.sh:3341
msgid "Show Less Context"
msgstr "Mostra meno contesto"
-#: git-gui.sh:2495 git-gui.sh:3087
+#: git-gui.sh:2673 git-gui.sh:3314 git-gui.sh:3345
msgid "Show More Context"
msgstr "Mostra più contesto"
-#: git-gui.sh:2502 git-gui.sh:2852 git-gui.sh:2961
+#: git-gui.sh:2680 git-gui.sh:3024 git-gui.sh:3133
msgid "Sign Off"
msgstr "Sign Off"
-#: git-gui.sh:2518
+#: git-gui.sh:2696
msgid "Local Merge..."
msgstr "Fusione locale..."
-#: git-gui.sh:2523
+#: git-gui.sh:2701
msgid "Abort Merge..."
msgstr "Interrompi fusione..."
-#: git-gui.sh:2535 git-gui.sh:2575
+#: git-gui.sh:2713 git-gui.sh:2741
msgid "Add..."
msgstr "Aggiungi..."
-#: git-gui.sh:2539
+#: git-gui.sh:2717
msgid "Push..."
msgstr "Propaga..."
-#: git-gui.sh:2543
+#: git-gui.sh:2721
msgid "Delete Branch..."
msgstr "Elimina ramo..."
-#: git-gui.sh:2553 git-gui.sh:2589 lib/about.tcl:14
-#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:53
-#, tcl-format
-msgid "About %s"
-msgstr "Informazioni su %s"
-
-#: git-gui.sh:2557
-msgid "Preferences..."
-msgstr "Preferenze..."
-
-#: git-gui.sh:2565 git-gui.sh:3129
+#: git-gui.sh:2731 git-gui.sh:3292
msgid "Options..."
msgstr "Opzioni..."
-#: git-gui.sh:2576
+#: git-gui.sh:2742
msgid "Remove..."
msgstr "Rimuovi..."
-#: git-gui.sh:2585 lib/choose_repository.tcl:50
+#: git-gui.sh:2751 lib/choose_repository.tcl:50
msgid "Help"
msgstr "Aiuto"
-#: git-gui.sh:2611
+#: git-gui.sh:2755 git-gui.sh:2759 lib/about.tcl:14
+#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:53
+#, tcl-format
+msgid "About %s"
+msgstr "Informazioni su %s"
+
+#: git-gui.sh:2783
msgid "Online Documentation"
msgstr "Documentazione sul web"
-#: git-gui.sh:2614 lib/choose_repository.tcl:47 lib/choose_repository.tcl:56
+#: git-gui.sh:2786 lib/choose_repository.tcl:47 lib/choose_repository.tcl:56
msgid "Show SSH Key"
msgstr "Mostra chave SSH"
-#: git-gui.sh:2721
+#: git-gui.sh:2893
#, tcl-format
msgid "fatal: cannot stat path %s: No such file or directory"
msgstr ""
"errore grave: impossibile effettuare lo stat del path %s: file o directory "
"non trovata"
-#: git-gui.sh:2754
+#: git-gui.sh:2926
msgid "Current Branch:"
msgstr "Ramo attuale:"
-#: git-gui.sh:2775
+#: git-gui.sh:2947
msgid "Staged Changes (Will Commit)"
msgstr "Modifiche preparate (saranno nella nuova revisione)"
-#: git-gui.sh:2795
+#: git-gui.sh:2967
msgid "Unstaged Changes"
msgstr "Modifiche non preparate"
-#: git-gui.sh:2845
+#: git-gui.sh:3017
msgid "Stage Changed"
msgstr "Prepara modificati"
-#: git-gui.sh:2864 lib/transport.tcl:104 lib/transport.tcl:193
+#: git-gui.sh:3036 lib/transport.tcl:104 lib/transport.tcl:193
msgid "Push"
msgstr "Propaga (Push)"
-#: git-gui.sh:2899
+#: git-gui.sh:3071
msgid "Initial Commit Message:"
msgstr "Messaggio di revisione iniziale:"
-#: git-gui.sh:2900
+#: git-gui.sh:3072
msgid "Amended Commit Message:"
msgstr "Messaggio di revisione corretto:"
-#: git-gui.sh:2901
+#: git-gui.sh:3073
msgid "Amended Initial Commit Message:"
msgstr "Messaggio iniziale di revisione corretto:"
-#: git-gui.sh:2902
+#: git-gui.sh:3074
msgid "Amended Merge Commit Message:"
msgstr "Messaggio di fusione corretto:"
-#: git-gui.sh:2903
+#: git-gui.sh:3075
msgid "Merge Commit Message:"
msgstr "Messaggio di fusione:"
-#: git-gui.sh:2904
+#: git-gui.sh:3076
msgid "Commit Message:"
msgstr "Messaggio di revisione:"
-#: git-gui.sh:2953 git-gui.sh:3104 lib/console.tcl:73
+#: git-gui.sh:3125 git-gui.sh:3267 lib/console.tcl:73
msgid "Copy All"
msgstr "Copia tutto"
-#: git-gui.sh:2977 lib/blame.tcl:104
+#: git-gui.sh:3149 lib/blame.tcl:104
msgid "File:"
msgstr "File:"
-#: git-gui.sh:3092
+#: git-gui.sh:3255
msgid "Refresh"
msgstr "Rinfresca"
-#: git-gui.sh:3113
+#: git-gui.sh:3276
msgid "Decrease Font Size"
msgstr "Diminuisci dimensione caratteri"
-#: git-gui.sh:3117
+#: git-gui.sh:3280
msgid "Increase Font Size"
msgstr "Aumenta dimensione caratteri"
-#: git-gui.sh:3125 lib/blame.tcl:281
+#: git-gui.sh:3288 lib/blame.tcl:281
msgid "Encoding"
msgstr "Codifica"
-#: git-gui.sh:3136
+#: git-gui.sh:3299
msgid "Apply/Reverse Hunk"
msgstr "Applica/Inverti sezione"
-#: git-gui.sh:3141
+#: git-gui.sh:3304
msgid "Apply/Reverse Line"
msgstr "Applica/Inverti riga"
-#: git-gui.sh:3151
+#: git-gui.sh:3323
msgid "Run Merge Tool"
msgstr "Avvia programma esterno per la risoluzione dei conflitti"
-#: git-gui.sh:3156
+#: git-gui.sh:3328
msgid "Use Remote Version"
msgstr "Usa versione remota"
-#: git-gui.sh:3160
+#: git-gui.sh:3332
msgid "Use Local Version"
msgstr "Usa versione locale"
-#: git-gui.sh:3164
+#: git-gui.sh:3336
msgid "Revert To Base"
msgstr "Ritorna alla revisione comune"
-#: git-gui.sh:3183
+#: git-gui.sh:3354
+msgid "Visualize These Changes In The Submodule"
+msgstr "Visualizza queste modifiche nel sottomodulo"
+
+#: git-gui.sh:3358
+msgid "Visualize Current Branch History In The Submodule"
+msgstr "Visualizza la cronologia del ramo attuale nel sottomodulo"
+
+#: git-gui.sh:3362
+msgid "Visualize All Branch History In The Submodule"
+msgstr "Visualizza la cronologia di tutti i rami nel sottomodulo"
+
+#: git-gui.sh:3367
+msgid "Start git gui In The Submodule"
+msgstr "Avvia git gui nel sottomodulo"
+
+#: git-gui.sh:3389
msgid "Unstage Hunk From Commit"
msgstr "Annulla preparazione della sezione per una nuova revisione"
-#: git-gui.sh:3184
+#: git-gui.sh:3391
+msgid "Unstage Lines From Commit"
+msgstr "Annulla preparazione delle linee per una nuova revisione"
+
+#: git-gui.sh:3393
msgid "Unstage Line From Commit"
msgstr "Annulla preparazione della linea per una nuova revisione"
-#: git-gui.sh:3186
+#: git-gui.sh:3396
msgid "Stage Hunk For Commit"
msgstr "Prepara sezione per una nuova revisione"
-#: git-gui.sh:3187
+#: git-gui.sh:3398
+msgid "Stage Lines For Commit"
+msgstr "Prepara linee per una nuova revisione"
+
+#: git-gui.sh:3400
msgid "Stage Line For Commit"
msgstr "Prepara linea per una nuova revisione"
-#: git-gui.sh:3210
+#: git-gui.sh:3424
msgid "Initializing..."
msgstr "Inizializzazione..."
-#: git-gui.sh:3315
+#: git-gui.sh:3541
#, tcl-format
msgid ""
"Possible environment issues exist.\n"
"da %s:\n"
"\n"
-#: git-gui.sh:3345
+#: git-gui.sh:3570
msgid ""
"\n"
"This is due to a known issue with the\n"
"Ciò è dovuto a un problema conosciuto\n"
"causato dall'eseguibile Tcl distribuito da Cygwin."
-#: git-gui.sh:3350
+#: git-gui.sh:3575
#, tcl-format
msgid ""
"\n"
msgid "Unable to display parent"
msgstr "Impossibile visualizzare la revisione precedente"
-#: lib/blame.tcl:1091 lib/diff.tcl:297
+#: lib/blame.tcl:1091 lib/diff.tcl:320
msgid "Error loading diff:"
msgstr "Errore nel caricamento delle differenze:"
#: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35
#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282
-#: lib/checkout_op.tcl:544 lib/choose_font.tcl:43 lib/merge.tcl:172
+#: lib/checkout_op.tcl:579 lib/choose_font.tcl:43 lib/merge.tcl:172
#: lib/option.tcl:125 lib/remote_add.tcl:32 lib/remote_branch_delete.tcl:42
#: lib/tools_dlg.tcl:40 lib/tools_dlg.tcl:204 lib/tools_dlg.tcl:352
#: lib/transport.tcl:108
msgid "Create New Branch"
msgstr "Crea nuovo ramo"
-#: lib/branch_create.tcl:31 lib/choose_repository.tcl:377
+#: lib/branch_create.tcl:31 lib/choose_repository.tcl:381
msgid "Create"
msgstr "Crea"
msgid "Fast Forward Only"
msgstr "Solo fast forward"
-#: lib/branch_create.tcl:85 lib/checkout_op.tcl:536
+#: lib/branch_create.tcl:85 lib/checkout_op.tcl:571
msgid "Reset"
msgstr "Ripristina"
msgid "Delete Only If Merged Into"
msgstr "Cancella solo se fuso con un altro ramo"
-#: lib/branch_delete.tcl:54
-msgid "Always (Do not perform merge test.)"
-msgstr "Sempre (Non effettuare verifiche di fusione)."
+#: lib/branch_delete.tcl:54 lib/remote_branch_delete.tcl:119
+msgid "Always (Do not perform merge checks)"
+msgstr "Sempre (non verificare le fusioni)"
#: lib/branch_delete.tcl:103
#, tcl-format
msgid "The following branches are not completely merged into %s:"
msgstr "I rami seguenti non sono stati fusi completamente in %s:"
+#: lib/branch_delete.tcl:115 lib/remote_branch_delete.tcl:217
+msgid ""
+"Recovering deleted branches is difficult.\n"
+"\n"
+"Delete the selected branches?"
+msgstr ""
+"Ripristinare rami cancellati è difficile.\n"
+"\n"
+"Cancellare i rami selezionati?"
+
#: lib/branch_delete.tcl:141
#, tcl-format
msgid ""
msgid "Please select a branch to rename."
msgstr "Scegliere un ramo da rinominare."
-#: lib/branch_rename.tcl:96 lib/checkout_op.tcl:201
+#: lib/branch_rename.tcl:96 lib/checkout_op.tcl:202
#, tcl-format
msgid "Branch '%s' already exists."
msgstr "Il ramo '%s' esiste già."
msgid "Browse Branch Files"
msgstr "Esplora i file del ramo"
-#: lib/browser.tcl:278 lib/choose_repository.tcl:394
-#: lib/choose_repository.tcl:480 lib/choose_repository.tcl:491
-#: lib/choose_repository.tcl:995
+#: lib/browser.tcl:278 lib/choose_repository.tcl:398
+#: lib/choose_repository.tcl:486 lib/choose_repository.tcl:497
+#: lib/choose_repository.tcl:1028
msgid "Browse"
msgstr "Esplora"
-#: lib/checkout_op.tcl:84
+#: lib/checkout_op.tcl:85
#, tcl-format
msgid "Fetching %s from %s"
msgstr "Recupero %s da %s"
-#: lib/checkout_op.tcl:132
+#: lib/checkout_op.tcl:133
#, tcl-format
msgid "fatal: Cannot resolve %s"
msgstr "errore grave: impossibile risolvere %s"
-#: lib/checkout_op.tcl:145 lib/console.tcl:81 lib/database.tcl:31
+#: lib/checkout_op.tcl:146 lib/console.tcl:81 lib/database.tcl:31
#: lib/sshkey.tcl:53
msgid "Close"
msgstr "Chiudi"
-#: lib/checkout_op.tcl:174
+#: lib/checkout_op.tcl:175
#, tcl-format
msgid "Branch '%s' does not exist."
msgstr "Il ramo '%s' non esiste."
-#: lib/checkout_op.tcl:193
+#: lib/checkout_op.tcl:194
#, tcl-format
msgid "Failed to configure simplified git-pull for '%s'."
msgstr "Impossibile configurare git-pull semplificato per '%s'."
-#: lib/checkout_op.tcl:228
+#: lib/checkout_op.tcl:229
#, tcl-format
msgid ""
"Branch '%s' already exists.\n"
"Non può effettuare un 'fast-forward' a %s.\n"
"E' necessaria una fusione."
-#: lib/checkout_op.tcl:242
+#: lib/checkout_op.tcl:243
#, tcl-format
msgid "Merge strategy '%s' not supported."
msgstr "La strategia di fusione '%s' non è supportata."
-#: lib/checkout_op.tcl:261
+#: lib/checkout_op.tcl:262
#, tcl-format
msgid "Failed to update '%s'."
msgstr "Impossibile aggiornare '%s'."
-#: lib/checkout_op.tcl:273
+#: lib/checkout_op.tcl:274
msgid "Staging area (index) is already locked."
msgstr ""
"L'area di preparazione per una nuova revisione (indice) è già bloccata."
-#: lib/checkout_op.tcl:288
+#: lib/checkout_op.tcl:289
msgid ""
"Last scanned state does not match repository state.\n"
"\n"
"\n"
"La nuova analisi comincerà ora.\n"
-#: lib/checkout_op.tcl:344
+#: lib/checkout_op.tcl:345
#, tcl-format
msgid "Updating working directory to '%s'..."
msgstr "Aggiornamento della directory di lavoro a '%s' in corso..."
-#: lib/checkout_op.tcl:345
+#: lib/checkout_op.tcl:346
msgid "files checked out"
msgstr "file presenti nella directory di lavoro"
-#: lib/checkout_op.tcl:375
+#: lib/checkout_op.tcl:376
#, tcl-format
msgid "Aborted checkout of '%s' (file level merging is required)."
msgstr "Attivazione di '%s' fallita (richiesta una fusione a livello file)."
-#: lib/checkout_op.tcl:376
+#: lib/checkout_op.tcl:377
msgid "File level merge required."
msgstr "E' richiesta una fusione a livello file."
-#: lib/checkout_op.tcl:380
+#: lib/checkout_op.tcl:381
#, tcl-format
msgid "Staying on branch '%s'."
msgstr "Si rimarrà sul ramo '%s'."
-#: lib/checkout_op.tcl:451
+#: lib/checkout_op.tcl:452
msgid ""
"You are no longer on a local branch.\n"
"\n"
"Se si vuole rimanere su un ramo, crearne uno ora a partire da 'Questa "
"revisione attiva staccata'."
-#: lib/checkout_op.tcl:468 lib/checkout_op.tcl:472
+#: lib/checkout_op.tcl:503 lib/checkout_op.tcl:507
#, tcl-format
msgid "Checked out '%s'."
msgstr "Attivazione di '%s' completata."
-#: lib/checkout_op.tcl:500
+#: lib/checkout_op.tcl:535
#, tcl-format
msgid "Resetting '%s' to '%s' will lose the following commits:"
msgstr ""
"Ripristinare '%s' a '%s' comporterà la perdita delle seguenti revisioni:"
-#: lib/checkout_op.tcl:522
+#: lib/checkout_op.tcl:557
msgid "Recovering lost commits may not be easy."
msgstr "Ricomporre le revisioni perdute potrebbe non essere semplice."
-#: lib/checkout_op.tcl:527
+#: lib/checkout_op.tcl:562
#, tcl-format
msgid "Reset '%s'?"
msgstr "Ripristinare '%s'?"
-#: lib/checkout_op.tcl:532 lib/merge.tcl:164 lib/tools_dlg.tcl:343
+#: lib/checkout_op.tcl:567 lib/merge.tcl:164 lib/tools_dlg.tcl:343
msgid "Visualize"
msgstr "Visualizza"
-#: lib/checkout_op.tcl:600
+#: lib/checkout_op.tcl:635
#, tcl-format
msgid ""
"Failed to set current branch.\n"
msgid "Git Gui"
msgstr "Git Gui"
-#: lib/choose_repository.tcl:87 lib/choose_repository.tcl:382
+#: lib/choose_repository.tcl:87 lib/choose_repository.tcl:386
msgid "Create New Repository"
msgstr "Crea nuovo archivio"
msgid "New..."
msgstr "Nuovo..."
-#: lib/choose_repository.tcl:100 lib/choose_repository.tcl:465
+#: lib/choose_repository.tcl:100 lib/choose_repository.tcl:471
msgid "Clone Existing Repository"
msgstr "Clona archivio esistente"
msgid "Clone..."
msgstr "Clona..."
-#: lib/choose_repository.tcl:113 lib/choose_repository.tcl:983
+#: lib/choose_repository.tcl:113 lib/choose_repository.tcl:1016
msgid "Open Existing Repository"
msgstr "Apri archivio esistente"
msgid "Open Recent Repository:"
msgstr "Apri archivio recente:"
-#: lib/choose_repository.tcl:302 lib/choose_repository.tcl:309
-#: lib/choose_repository.tcl:316
+#: lib/choose_repository.tcl:306 lib/choose_repository.tcl:313
+#: lib/choose_repository.tcl:320
#, tcl-format
msgid "Failed to create repository %s:"
msgstr "Impossibile creare l'archivio %s:"
-#: lib/choose_repository.tcl:387
+#: lib/choose_repository.tcl:391
msgid "Directory:"
msgstr "Directory:"
-#: lib/choose_repository.tcl:417 lib/choose_repository.tcl:544
-#: lib/choose_repository.tcl:1017
+#: lib/choose_repository.tcl:423 lib/choose_repository.tcl:550
+#: lib/choose_repository.tcl:1052
msgid "Git Repository"
msgstr "Archivio Git"
-#: lib/choose_repository.tcl:442
+#: lib/choose_repository.tcl:448
#, tcl-format
msgid "Directory %s already exists."
msgstr "La directory %s esiste già."
-#: lib/choose_repository.tcl:446
+#: lib/choose_repository.tcl:452
#, tcl-format
msgid "File %s already exists."
msgstr "Il file %s esiste già."
-#: lib/choose_repository.tcl:460
+#: lib/choose_repository.tcl:466
msgid "Clone"
msgstr "Clona"
-#: lib/choose_repository.tcl:473
+#: lib/choose_repository.tcl:479
msgid "Source Location:"
msgstr "Posizione sorgente:"
-#: lib/choose_repository.tcl:484
+#: lib/choose_repository.tcl:490
msgid "Target Directory:"
msgstr "Directory di destinazione:"
-#: lib/choose_repository.tcl:496
+#: lib/choose_repository.tcl:502
msgid "Clone Type:"
msgstr "Tipo di clone:"
-#: lib/choose_repository.tcl:502
+#: lib/choose_repository.tcl:508
msgid "Standard (Fast, Semi-Redundant, Hardlinks)"
msgstr "Standard (veloce, semi-ridondante, con hardlink)"
-#: lib/choose_repository.tcl:508
+#: lib/choose_repository.tcl:514
msgid "Full Copy (Slower, Redundant Backup)"
msgstr "Copia completa (più lento, backup ridondante)"
-#: lib/choose_repository.tcl:514
+#: lib/choose_repository.tcl:520
msgid "Shared (Fastest, Not Recommended, No Backup)"
msgstr "Shared (il più veloce, non raccomandato, nessun backup)"
-#: lib/choose_repository.tcl:550 lib/choose_repository.tcl:597
-#: lib/choose_repository.tcl:743 lib/choose_repository.tcl:813
-#: lib/choose_repository.tcl:1023 lib/choose_repository.tcl:1031
+#: lib/choose_repository.tcl:556 lib/choose_repository.tcl:603
+#: lib/choose_repository.tcl:749 lib/choose_repository.tcl:819
+#: lib/choose_repository.tcl:1058 lib/choose_repository.tcl:1066
#, tcl-format
msgid "Not a Git repository: %s"
msgstr "%s non è un archivio Git."
-#: lib/choose_repository.tcl:586
+#: lib/choose_repository.tcl:592
msgid "Standard only available for local repository."
msgstr "Standard è disponibile solo per archivi locali."
-#: lib/choose_repository.tcl:590
+#: lib/choose_repository.tcl:596
msgid "Shared only available for local repository."
msgstr "Shared è disponibile solo per archivi locali."
-#: lib/choose_repository.tcl:611
+#: lib/choose_repository.tcl:617
#, tcl-format
msgid "Location %s already exists."
msgstr "Il file/directory %s esiste già."
-#: lib/choose_repository.tcl:622
+#: lib/choose_repository.tcl:628
msgid "Failed to configure origin"
msgstr "Impossibile configurare origin"
-#: lib/choose_repository.tcl:634
+#: lib/choose_repository.tcl:640
msgid "Counting objects"
msgstr "Calcolo oggetti"
-#: lib/choose_repository.tcl:635
+#: lib/choose_repository.tcl:641
msgid "buckets"
msgstr ""
-#: lib/choose_repository.tcl:659
+#: lib/choose_repository.tcl:665
#, tcl-format
msgid "Unable to copy objects/info/alternates: %s"
msgstr "Impossibile copiare oggetti/info/alternate: %s"
-#: lib/choose_repository.tcl:695
+#: lib/choose_repository.tcl:701
#, tcl-format
msgid "Nothing to clone from %s."
msgstr "Niente da clonare da %s."
-#: lib/choose_repository.tcl:697 lib/choose_repository.tcl:911
-#: lib/choose_repository.tcl:923
+#: lib/choose_repository.tcl:703 lib/choose_repository.tcl:917
+#: lib/choose_repository.tcl:929
msgid "The 'master' branch has not been initialized."
msgstr "Il ramo 'master' non è stato inizializzato."
-#: lib/choose_repository.tcl:710
+#: lib/choose_repository.tcl:716
msgid "Hardlinks are unavailable. Falling back to copying."
msgstr "Impossibile utilizzare gli hardlink. Si ricorrerà alla copia."
-#: lib/choose_repository.tcl:722
+#: lib/choose_repository.tcl:728
#, tcl-format
msgid "Cloning from %s"
msgstr "Clonazione da %s"
-#: lib/choose_repository.tcl:753
+#: lib/choose_repository.tcl:759
msgid "Copying objects"
msgstr "Copia degli oggetti"
-#: lib/choose_repository.tcl:754
+#: lib/choose_repository.tcl:760
msgid "KiB"
msgstr "KiB"
-#: lib/choose_repository.tcl:778
+#: lib/choose_repository.tcl:784
#, tcl-format
msgid "Unable to copy object: %s"
msgstr "Impossibile copiare oggetto: %s"
-#: lib/choose_repository.tcl:788
+#: lib/choose_repository.tcl:794
msgid "Linking objects"
msgstr "Collegamento oggetti"
-#: lib/choose_repository.tcl:789
+#: lib/choose_repository.tcl:795
msgid "objects"
msgstr "oggetti"
-#: lib/choose_repository.tcl:797
+#: lib/choose_repository.tcl:803
#, tcl-format
msgid "Unable to hardlink object: %s"
msgstr "Hardlink impossibile sull'oggetto: %s"
-#: lib/choose_repository.tcl:852
+#: lib/choose_repository.tcl:858
msgid "Cannot fetch branches and objects. See console output for details."
msgstr ""
"Impossibile recuperare rami e oggetti. Controllare i dettagli forniti dalla "
"console."
-#: lib/choose_repository.tcl:863
+#: lib/choose_repository.tcl:869
msgid "Cannot fetch tags. See console output for details."
msgstr ""
"Impossibile recuperare le etichette. Controllare i dettagli forniti dalla "
"console."
-#: lib/choose_repository.tcl:887
+#: lib/choose_repository.tcl:893
msgid "Cannot determine HEAD. See console output for details."
msgstr ""
"Impossibile determinare HEAD. Controllare i dettagli forniti dalla console."
-#: lib/choose_repository.tcl:896
+#: lib/choose_repository.tcl:902
#, tcl-format
msgid "Unable to cleanup %s"
msgstr "Impossibile ripulire %s"
-#: lib/choose_repository.tcl:902
+#: lib/choose_repository.tcl:908
msgid "Clone failed."
msgstr "Clonazione non riuscita."
-#: lib/choose_repository.tcl:909
+#: lib/choose_repository.tcl:915
msgid "No default branch obtained."
msgstr "Non è stato trovato un ramo predefinito."
-#: lib/choose_repository.tcl:920
+#: lib/choose_repository.tcl:926
#, tcl-format
msgid "Cannot resolve %s as a commit."
msgstr "Impossibile risolvere %s come una revisione."
-#: lib/choose_repository.tcl:932
+#: lib/choose_repository.tcl:938
msgid "Creating working directory"
msgstr "Creazione directory di lavoro"
-#: lib/choose_repository.tcl:933 lib/index.tcl:65 lib/index.tcl:128
-#: lib/index.tcl:196
+#: lib/choose_repository.tcl:939 lib/index.tcl:67 lib/index.tcl:130
+#: lib/index.tcl:198
msgid "files"
msgstr "file"
-#: lib/choose_repository.tcl:962
+#: lib/choose_repository.tcl:968
msgid "Initial file checkout failed."
msgstr "Attivazione iniziale non riuscita."
-#: lib/choose_repository.tcl:978
+#: lib/choose_repository.tcl:1011
msgid "Open"
msgstr "Apri"
-#: lib/choose_repository.tcl:988
+#: lib/choose_repository.tcl:1021
msgid "Repository:"
msgstr "Archivio:"
-#: lib/choose_repository.tcl:1037
+#: lib/choose_repository.tcl:1072
#, tcl-format
msgid "Failed to open repository %s:"
msgstr "Impossibile accedere all'archivio %s:"
msgid "Invalid GIT_COMMITTER_IDENT:"
msgstr "GIT_COMMITTER_IDENT non valida:"
-#: lib/commit.tcl:132
+#: lib/commit.tcl:129
+#, tcl-format
+msgid "warning: Tcl does not support encoding '%s'."
+msgstr "attenzione: Tcl non supporta la codifica '%s'."
+
+#: lib/commit.tcl:149
msgid ""
"Last scanned state does not match repository state.\n"
"\n"
"\n"
"La nuova analisi comincerà ora.\n"
-#: lib/commit.tcl:155
+#: lib/commit.tcl:172
#, tcl-format
msgid ""
"Unmerged files cannot be committed.\n"
"Il file %s presenta dei conflitti. Devi risolverli e preparare il file per "
"creare una nuova revisione prima di effettuare questa azione.\n"
-#: lib/commit.tcl:163
+#: lib/commit.tcl:180
#, tcl-format
msgid ""
"Unknown file state %s detected.\n"
"\n"
"Questo programma non può creare una revisione contenente il file %s.\n"
-#: lib/commit.tcl:171
+#: lib/commit.tcl:188
msgid ""
"No changes to commit.\n"
"\n"
"Devi preparare per una nuova revisione almeno 1 file prima di effettuare "
"questa operazione.\n"
-#: lib/commit.tcl:186
+#: lib/commit.tcl:203
msgid ""
"Please supply a commit message.\n"
"\n"
"- Seconda linea: vuota.\n"
"- Terza linea: spiega a cosa serve la tua modifica.\n"
-#: lib/commit.tcl:210
-#, tcl-format
-msgid "warning: Tcl does not support encoding '%s'."
-msgstr "attenzione: Tcl non supporta la codifica '%s'."
-
-#: lib/commit.tcl:226
+#: lib/commit.tcl:234
msgid "Calling pre-commit hook..."
msgstr "Avvio pre-commit hook..."
-#: lib/commit.tcl:241
+#: lib/commit.tcl:249
msgid "Commit declined by pre-commit hook."
msgstr "Revisione rifiutata dal pre-commit hook."
-#: lib/commit.tcl:264
+#: lib/commit.tcl:272
msgid "Calling commit-msg hook..."
msgstr "Avvio commit-msg hook..."
-#: lib/commit.tcl:279
+#: lib/commit.tcl:287
msgid "Commit declined by commit-msg hook."
msgstr "Revisione rifiutata dal commit-msg hook."
-#: lib/commit.tcl:292
+#: lib/commit.tcl:300
msgid "Committing changes..."
msgstr "Archiviazione modifiche..."
-#: lib/commit.tcl:308
+#: lib/commit.tcl:316
msgid "write-tree failed:"
msgstr "write-tree non riuscito:"
-#: lib/commit.tcl:309 lib/commit.tcl:353 lib/commit.tcl:373
+#: lib/commit.tcl:317 lib/commit.tcl:361 lib/commit.tcl:382
msgid "Commit failed."
msgstr "Impossibile creare una nuova revisione."
-#: lib/commit.tcl:326
+#: lib/commit.tcl:334
#, tcl-format
msgid "Commit %s appears to be corrupt"
msgstr "La revisione %s sembra essere danneggiata"
-#: lib/commit.tcl:331
+#: lib/commit.tcl:339
msgid ""
"No changes to commit.\n"
"\n"
"\n"
"Si procederà subito ad una nuova analisi.\n"
-#: lib/commit.tcl:338
+#: lib/commit.tcl:346
msgid "No changes to commit."
msgstr "Nessuna modifica per la nuova revisione."
-#: lib/commit.tcl:352
+#: lib/commit.tcl:360
msgid "commit-tree failed:"
msgstr "commit-tree non riuscito:"
-#: lib/commit.tcl:372
+#: lib/commit.tcl:381
msgid "update-ref failed:"
msgstr "update-ref non riuscito:"
-#: lib/commit.tcl:460
+#: lib/commit.tcl:469
#, tcl-format
msgid "Created commit %s: %s"
msgstr "Creata revisione %s: %s"
msgid "Verifying the object database with fsck-objects"
msgstr "Verifica dell'archivio con fsck-objects in corso"
-#: lib/database.tcl:108
+#: lib/database.tcl:107
#, tcl-format
msgid ""
"This repository currently has approximately %i loose objects.\n"
"\n"
"To maintain optimal performance it is strongly recommended that you compress "
-"the database when more than %i loose objects exist.\n"
+"the database.\n"
"\n"
"Compress the database now?"
msgstr ""
"Questo archivio attualmente ha circa %i oggetti slegati.\n"
"\n"
-"Per mantenere buone prestazioni si raccomanda di comprimere l'archivio "
-"quando sono presenti più di %i oggetti slegati.\n"
+"Per mantenere buone prestazioni si raccomanda di comprimere l'archivio.\n"
"\n"
"Comprimere l'archivio ora?"
msgid "Invalid date from Git: %s"
msgstr "Git ha restituito una data non valida: %s"
-#: lib/diff.tcl:59
+#: lib/diff.tcl:64
#, tcl-format
msgid ""
"No differences detected.\n"
"Si procederà automaticamente ad una nuova analisi per trovare altri file che "
"potrebbero avere lo stesso stato."
-#: lib/diff.tcl:99
+#: lib/diff.tcl:104
#, tcl-format
msgid "Loading diff of %s..."
msgstr "Caricamento delle differenze di %s..."
-#: lib/diff.tcl:120
+#: lib/diff.tcl:125
msgid ""
"LOCAL: deleted\n"
"REMOTE:\n"
"LOCALE: cancellato\n"
"REMOTO:\n"
-#: lib/diff.tcl:125
+#: lib/diff.tcl:130
msgid ""
"REMOTE: deleted\n"
"LOCAL:\n"
"REMOTO: cancellato\n"
"LOCALE:\n"
-#: lib/diff.tcl:132
+#: lib/diff.tcl:137
msgid "LOCAL:\n"
msgstr "LOCALE:\n"
-#: lib/diff.tcl:135
+#: lib/diff.tcl:140
msgid "REMOTE:\n"
msgstr "REMOTO:\n"
-#: lib/diff.tcl:197 lib/diff.tcl:296
+#: lib/diff.tcl:202 lib/diff.tcl:319
#, tcl-format
msgid "Unable to display %s"
msgstr "Impossibile visualizzare %s"
-#: lib/diff.tcl:198
+#: lib/diff.tcl:203
msgid "Error loading file:"
msgstr "Errore nel caricamento del file:"
-#: lib/diff.tcl:205
+#: lib/diff.tcl:210
msgid "Git Repository (subproject)"
msgstr "Archivio Git (sottoprogetto)"
-#: lib/diff.tcl:217
+#: lib/diff.tcl:222
msgid "* Binary file (not showing content)."
msgstr "* File binario (il contenuto non sarà mostrato)."
-#: lib/diff.tcl:222
+#: lib/diff.tcl:227
#, tcl-format
msgid ""
"* Untracked file is %d bytes.\n"
"* Il file non tracciato è di %d byte.\n"
"* Saranno visualizzati solo i primi %d byte.\n"
-#: lib/diff.tcl:228
+#: lib/diff.tcl:233
#, tcl-format
msgid ""
"\n"
"* %s non visualizza completamente questo file non tracciato.\n"
"* Per visualizzare il file completo, usare un programma esterno.\n"
-#: lib/diff.tcl:436
+#: lib/diff.tcl:482
msgid "Failed to unstage selected hunk."
msgstr "Impossibile rimuovere la sezione scelta dalla nuova revisione."
-#: lib/diff.tcl:443
+#: lib/diff.tcl:489
msgid "Failed to stage selected hunk."
msgstr "Impossibile preparare la sezione scelta per una nuova revisione."
-#: lib/diff.tcl:509
+#: lib/diff.tcl:568
msgid "Failed to unstage selected line."
msgstr "Impossibile rimuovere la riga scelta dalla nuova revisione."
-#: lib/diff.tcl:517
+#: lib/diff.tcl:576
msgid "Failed to stage selected line."
msgstr "Impossibile preparare la riga scelta per una nuova revisione."
msgid "Index Error"
msgstr "Errore nell'indice"
-#: lib/index.tcl:21
+#: lib/index.tcl:17
msgid ""
"Updating the Git index failed. A rescan will be automatically started to "
"resynchronize git-gui."
"Impossibile aggiornare l'indice. Ora sarà avviata una nuova analisi che "
"aggiornerà git-gui."
-#: lib/index.tcl:27
+#: lib/index.tcl:28
msgid "Continue"
msgstr "Continua"
msgid "Unlock Index"
msgstr "Sblocca l'accesso all'indice"
-#: lib/index.tcl:287
+#: lib/index.tcl:289
#, tcl-format
msgid "Unstaging %s from commit"
msgstr "%s non farà parte della prossima revisione"
-#: lib/index.tcl:326
+#: lib/index.tcl:328
msgid "Ready to commit."
msgstr "Pronto per creare una nuova revisione."
-#: lib/index.tcl:339
+#: lib/index.tcl:341
#, tcl-format
msgid "Adding %s"
msgstr "Aggiunta di %s in corso"
-#: lib/index.tcl:396
+#: lib/index.tcl:398
#, tcl-format
msgid "Revert changes in file %s?"
msgstr "Annullare le modifiche nel file %s?"
-#: lib/index.tcl:398
+#: lib/index.tcl:400
#, tcl-format
msgid "Revert changes in these %i files?"
msgstr "Annullare le modifiche in questi %i file?"
-#: lib/index.tcl:406
+#: lib/index.tcl:408
msgid "Any unstaged changes will be permanently lost by the revert."
msgstr ""
"Tutte le modifiche non preparate per una nuova revisione saranno perse per "
"sempre."
-#: lib/index.tcl:409
+#: lib/index.tcl:411
msgid "Do Nothing"
msgstr "Non fare niente"
-#: lib/index.tcl:427
+#: lib/index.tcl:429
msgid "Reverting selected files"
msgstr "Annullo le modifiche nei file selezionati"
-#: lib/index.tcl:431
+#: lib/index.tcl:433
#, tcl-format
msgid "Reverting %s"
msgstr "Annullo le modifiche in %s"
msgid "Merged Into:"
msgstr "Fuso in:"
-#: lib/remote_branch_delete.tcl:119
-msgid "Always (Do not perform merge checks)"
-msgstr "Sempre (non verificare le fusioni)"
-
#: lib/remote_branch_delete.tcl:152
msgid "A branch is required for 'Merged Into'."
msgstr "Si richiede un ramo per 'Fuso in'."
msgid "Please select one or more branches to delete."
msgstr "Scegliere uno o più rami da cancellare."
-#: lib/remote_branch_delete.tcl:216
-msgid ""
-"Recovering deleted branches is difficult.\n"
-"\n"
-"Delete the selected branches?"
-msgstr ""
-"Ricomporre rami cancellati è difficile.\n"
-"\n"
-"Cancellare i rami selezionati?"
-
#: lib/remote_branch_delete.tcl:226
#, tcl-format
msgid "Deleting branches from %s"
msgstr "Cancellazione rami da %s"
-#: lib/remote_branch_delete.tcl:286
+#: lib/remote_branch_delete.tcl:292
msgid "No repository selected."
msgstr "Nessun archivio selezionato."
-#: lib/remote_branch_delete.tcl:291
+#: lib/remote_branch_delete.tcl:297
#, tcl-format
msgid "Scanning %s..."
msgstr "Analisi in corso %s..."
msgid "Case-Sensitive"
msgstr "Distingui maiuscole"
-#: lib/shortcut.tcl:20 lib/shortcut.tcl:61
+#: lib/shortcut.tcl:21 lib/shortcut.tcl:62
msgid "Cannot write shortcut:"
msgstr "Impossibile scrivere shortcut:"
-#: lib/shortcut.tcl:136
+#: lib/shortcut.tcl:137
msgid "Cannot write icon:"
msgstr "Impossibile scrivere icona:"
#: lib/tools.tcl:110
#, tcl-format
msgid "Tool: %s"
-msgstr "Strumento: %s"
+msgstr "Accessorio: %s"
#: lib/tools.tcl:111
#, tcl-format
#: lib/tools_dlg.tcl:22
msgid "Add Tool"
-msgstr "Aggiungi strumento"
+msgstr "Aggiungi accessorio"
#: lib/tools_dlg.tcl:28
msgid "Add New Tool Command"
#: lib/tools_dlg.tcl:45
msgid "Tool Details"
-msgstr "Dettagli sullo strumento"
+msgstr "Dettagli sull'accessorio"
#: lib/tools_dlg.tcl:48
msgid "Use '/' separators to create a submenu tree:"
#: lib/tools_dlg.tcl:121
msgid "Please supply a name for the tool."
-msgstr "Bisogna dare un nome allo strumento."
+msgstr "Bisogna dare un nome all'accessorio."
#: lib/tools_dlg.tcl:129
#, tcl-format
msgid "Tool '%s' already exists."
-msgstr "Lo strumento '%s' esiste già."
+msgstr "L'accessorio '%s' esiste già."
#: lib/tools_dlg.tcl:151
#, tcl-format
"Could not add tool:\n"
"%s"
msgstr ""
-"Impossibile aggiungere lo strumento:\n"
+"Impossibile aggiungere l'accessorio:\n"
"\n"
"%s"
#: lib/tools_dlg.tcl:190
msgid "Remove Tool"
-msgstr "Rimuovi strumento"
+msgstr "Rimuovi accessorio"
#: lib/tools_dlg.tcl:196
msgid "Remove Tool Commands"
-msgstr "Rimuovi i comandi dello strumento"
+msgstr "Rimuovi i comandi accessori"
#: lib/tools_dlg.tcl:200
msgid "Remove"
#: lib/tools_dlg.tcl:236
msgid "(Blue denotes repository-local tools)"
-msgstr "(Il colore blu indica strumenti per l'archivio locale)"
+msgstr "(Il colore blu indica accessori per l'archivio locale)"
#: lib/tools_dlg.tcl:297
#, tcl-format
# This file is distributed under the same license as the git-gui package.
# しらいし ななこ <nanako3@bluebottle.com>, 2007.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: git-gui\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-08 08:31-0800\n"
-"PO-Revision-Date: 2008-12-09 06:27+0900\n"
+"POT-Creation-Date: 2010-01-26 15:47-0800\n"
+"PO-Revision-Date: 2010-02-02 19:03+0900\n"
"Last-Translator: しらいし ななこ <nanako3@lavabit.com>\n"
"Language-Team: Japanese\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: git-gui.sh:41 git-gui.sh:737 git-gui.sh:751 git-gui.sh:764 git-gui.sh:847
-#: git-gui.sh:866
+#: git-gui.sh:41 git-gui.sh:793 git-gui.sh:807 git-gui.sh:820 git-gui.sh:903
+#: git-gui.sh:922
msgid "git-gui: fatal error"
msgstr "git-gui: 致命的なエラー"
-#: git-gui.sh:689
+#: git-gui.sh:743
#, tcl-format
msgid "Invalid font specified in %s:"
msgstr "%s に無効なフォントが指定されています:"
-#: git-gui.sh:723
+#: git-gui.sh:779
msgid "Main Font"
msgstr "主フォント"
-#: git-gui.sh:724
+#: git-gui.sh:780
msgid "Diff/Console Font"
msgstr "diff/コンソール・フォント"
-#: git-gui.sh:738
+#: git-gui.sh:794
msgid "Cannot find git in PATH."
msgstr "PATH 中に git が見つかりません"
-#: git-gui.sh:765
+#: git-gui.sh:821
msgid "Cannot parse Git version string:"
msgstr "Git バージョン名が理解できません:"
-#: git-gui.sh:783
+#: git-gui.sh:839
#, tcl-format
msgid ""
"Git version cannot be determined.\n"
"\n"
"'%s' はバージョン 1.5.0 と思って良いですか?\n"
-#: git-gui.sh:1062
+#: git-gui.sh:1128
msgid "Git directory not found:"
msgstr "Git ディレクトリが見つかりません:"
-#: git-gui.sh:1069
+#: git-gui.sh:1146
msgid "Cannot move to top of working directory:"
msgstr "作業ディレクトリの最上位に移動できません"
-#: git-gui.sh:1076
-msgid "Cannot use funny .git directory:"
-msgstr "変な .git ディレクトリは使えません"
+#: git-gui.sh:1154
+msgid "Cannot use bare repository:"
+msgstr "裸のリポジトリは使えません:"
-#: git-gui.sh:1081
+#: git-gui.sh:1162
msgid "No working directory"
msgstr "作業ディレクトリがありません"
-#: git-gui.sh:1247 lib/checkout_op.tcl:305
+#: git-gui.sh:1334 lib/checkout_op.tcl:306
msgid "Refreshing file status..."
msgstr "ファイル状態を更新しています…"
-#: git-gui.sh:1303
+#: git-gui.sh:1390
msgid "Scanning for modified files ..."
msgstr "変更されたファイルをスキャンしています…"
-#: git-gui.sh:1367
+#: git-gui.sh:1454
msgid "Calling prepare-commit-msg hook..."
msgstr "prepare-commit-msg フックを実行中・・・"
-#: git-gui.sh:1384
+#: git-gui.sh:1471
msgid "Commit declined by prepare-commit-msg hook."
msgstr "prepare-commit-msg フックがコミットを拒否しました"
-#: git-gui.sh:1542 lib/browser.tcl:246
+#: git-gui.sh:1629 lib/browser.tcl:246
msgid "Ready."
msgstr "準備完了"
-#: git-gui.sh:1819
+#: git-gui.sh:1787
+#, tcl-format
+msgid "Displaying only %s of %s files."
+msgstr "全体で%s個の内の%sファイルだけ表示しています"
+
+#: git-gui.sh:1913
msgid "Unmodified"
msgstr "変更無し"
-#: git-gui.sh:1821
+#: git-gui.sh:1915
msgid "Modified, not staged"
msgstr "変更あり、コミット未予定"
-#: git-gui.sh:1822 git-gui.sh:1830
+#: git-gui.sh:1916 git-gui.sh:1924
msgid "Staged for commit"
msgstr "コミット予定済"
-#: git-gui.sh:1823 git-gui.sh:1831
+#: git-gui.sh:1917 git-gui.sh:1925
msgid "Portions staged for commit"
msgstr "部分的にコミット予定済"
-#: git-gui.sh:1824 git-gui.sh:1832
+#: git-gui.sh:1918 git-gui.sh:1926
msgid "Staged for commit, missing"
msgstr "コミット予定済、ファイル無し"
-#: git-gui.sh:1826
+#: git-gui.sh:1920
msgid "File type changed, not staged"
msgstr "ファイル型変更、コミット未予定"
-#: git-gui.sh:1827
+#: git-gui.sh:1921
msgid "File type changed, staged"
msgstr "ファイル型変更、コミット予定済"
-#: git-gui.sh:1829
+#: git-gui.sh:1923
msgid "Untracked, not staged"
msgstr "管理外、コミット未予定"
-#: git-gui.sh:1834
+#: git-gui.sh:1928
msgid "Missing"
msgstr "ファイル無し"
-#: git-gui.sh:1835
+#: git-gui.sh:1929
msgid "Staged for removal"
msgstr "削除予定済"
-#: git-gui.sh:1836
+#: git-gui.sh:1930
msgid "Staged for removal, still present"
msgstr "削除予定済、ファイル未削除"
-#: git-gui.sh:1838 git-gui.sh:1839 git-gui.sh:1840 git-gui.sh:1841
-#: git-gui.sh:1842 git-gui.sh:1843
+#: git-gui.sh:1932 git-gui.sh:1933 git-gui.sh:1934 git-gui.sh:1935
+#: git-gui.sh:1936 git-gui.sh:1937
msgid "Requires merge resolution"
msgstr "要マージ解決"
-#: git-gui.sh:1878
+#: git-gui.sh:1972
msgid "Starting gitk... please wait..."
msgstr "gitk を起動中…お待ち下さい…"
-#: git-gui.sh:1887
+#: git-gui.sh:1984
msgid "Couldn't find gitk in PATH"
msgstr "PATH 中に gitk が見つかりません"
-#: git-gui.sh:2280 lib/choose_repository.tcl:36
+#: git-gui.sh:2043
+msgid "Couldn't find git gui in PATH"
+msgstr "PATH 中に git gui が見つかりません"
+
+#: git-gui.sh:2455 lib/choose_repository.tcl:36
msgid "Repository"
msgstr "リポジトリ"
-#: git-gui.sh:2281
+#: git-gui.sh:2456
msgid "Edit"
msgstr "編集"
-#: git-gui.sh:2283 lib/choose_rev.tcl:561
+#: git-gui.sh:2458 lib/choose_rev.tcl:561
msgid "Branch"
msgstr "ブランチ"
-#: git-gui.sh:2286 lib/choose_rev.tcl:548
+#: git-gui.sh:2461 lib/choose_rev.tcl:548
msgid "Commit@@noun"
msgstr "コミット"
-#: git-gui.sh:2289 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168
+#: git-gui.sh:2464 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168
msgid "Merge"
msgstr "マージ"
-#: git-gui.sh:2290 lib/choose_rev.tcl:557
+#: git-gui.sh:2465 lib/choose_rev.tcl:557
msgid "Remote"
msgstr "リモート"
-#: git-gui.sh:2293
+#: git-gui.sh:2468
msgid "Tools"
msgstr "ツール"
-#: git-gui.sh:2302
+#: git-gui.sh:2477
msgid "Explore Working Copy"
msgstr "ワーキングコピーをブラウズ"
-#: git-gui.sh:2307
+#: git-gui.sh:2483
msgid "Browse Current Branch's Files"
msgstr "現在のブランチのファイルを見る"
-#: git-gui.sh:2311
+#: git-gui.sh:2487
msgid "Browse Branch Files..."
msgstr "ブランチのファイルを見る…"
-#: git-gui.sh:2316
+#: git-gui.sh:2492
msgid "Visualize Current Branch's History"
msgstr "現在のブランチの履歴を見る"
-#: git-gui.sh:2320
+#: git-gui.sh:2496
msgid "Visualize All Branch History"
msgstr "全てのブランチの履歴を見る"
-#: git-gui.sh:2327
+#: git-gui.sh:2503
#, tcl-format
msgid "Browse %s's Files"
msgstr "ブランチ %s のファイルを見る"
-#: git-gui.sh:2329
+#: git-gui.sh:2505
#, tcl-format
msgid "Visualize %s's History"
msgstr "ブランチ %s の履歴を見る"
-#: git-gui.sh:2334 lib/database.tcl:27 lib/database.tcl:67
+#: git-gui.sh:2510 lib/database.tcl:27 lib/database.tcl:67
msgid "Database Statistics"
msgstr "データベース統計"
-#: git-gui.sh:2337 lib/database.tcl:34
+#: git-gui.sh:2513 lib/database.tcl:34
msgid "Compress Database"
msgstr "データベース圧縮"
-#: git-gui.sh:2340
+#: git-gui.sh:2516
msgid "Verify Database"
msgstr "データベース検証"
-#: git-gui.sh:2347 git-gui.sh:2351 git-gui.sh:2355 lib/shortcut.tcl:7
-#: lib/shortcut.tcl:39 lib/shortcut.tcl:71
+#: git-gui.sh:2523 git-gui.sh:2527 git-gui.sh:2531 lib/shortcut.tcl:8
+#: lib/shortcut.tcl:40 lib/shortcut.tcl:72
msgid "Create Desktop Icon"
msgstr "デスクトップ・アイコンを作る"
-#: git-gui.sh:2363 lib/choose_repository.tcl:183 lib/choose_repository.tcl:191
+#: git-gui.sh:2539 lib/choose_repository.tcl:183 lib/choose_repository.tcl:191
msgid "Quit"
msgstr "終了"
-#: git-gui.sh:2371
+#: git-gui.sh:2547
msgid "Undo"
msgstr "元に戻す"
-#: git-gui.sh:2374
+#: git-gui.sh:2550
msgid "Redo"
msgstr "やり直し"
-#: git-gui.sh:2378 git-gui.sh:2923
+#: git-gui.sh:2554 git-gui.sh:3109
msgid "Cut"
msgstr "切り取り"
-#: git-gui.sh:2381 git-gui.sh:2926 git-gui.sh:3000 git-gui.sh:3082
+#: git-gui.sh:2557 git-gui.sh:3112 git-gui.sh:3186 git-gui.sh:3259
#: lib/console.tcl:69
msgid "Copy"
msgstr "コピー"
-#: git-gui.sh:2384 git-gui.sh:2929
+#: git-gui.sh:2560 git-gui.sh:3115
msgid "Paste"
msgstr "貼り付け"
-#: git-gui.sh:2387 git-gui.sh:2932 lib/branch_delete.tcl:26
+#: git-gui.sh:2563 git-gui.sh:3118 lib/branch_delete.tcl:26
#: lib/remote_branch_delete.tcl:38
msgid "Delete"
msgstr "削除"
-#: git-gui.sh:2391 git-gui.sh:2936 git-gui.sh:3086 lib/console.tcl:71
+#: git-gui.sh:2567 git-gui.sh:3122 git-gui.sh:3263 lib/console.tcl:71
msgid "Select All"
msgstr "全て選択"
-#: git-gui.sh:2400
+#: git-gui.sh:2576
msgid "Create..."
msgstr "作成…"
-#: git-gui.sh:2406
+#: git-gui.sh:2582
msgid "Checkout..."
msgstr "チェックアウト"
-#: git-gui.sh:2412
+#: git-gui.sh:2588
msgid "Rename..."
msgstr "名前変更…"
-#: git-gui.sh:2417
+#: git-gui.sh:2593
msgid "Delete..."
msgstr "削除…"
-#: git-gui.sh:2422
+#: git-gui.sh:2598
msgid "Reset..."
msgstr "リセット…"
-#: git-gui.sh:2432
+#: git-gui.sh:2608
msgid "Done"
msgstr "完了"
-#: git-gui.sh:2434
+#: git-gui.sh:2610
msgid "Commit@@verb"
msgstr "コミット"
-#: git-gui.sh:2443 git-gui.sh:2864
+#: git-gui.sh:2619 git-gui.sh:3050
msgid "New Commit"
msgstr "新規コミット"
-#: git-gui.sh:2451 git-gui.sh:2871
+#: git-gui.sh:2627 git-gui.sh:3057
msgid "Amend Last Commit"
msgstr "最新コミットを訂正"
-#: git-gui.sh:2461 git-gui.sh:2825 lib/remote_branch_delete.tcl:99
+#: git-gui.sh:2637 git-gui.sh:3011 lib/remote_branch_delete.tcl:99
msgid "Rescan"
msgstr "再スキャン"
-#: git-gui.sh:2467
+#: git-gui.sh:2643
msgid "Stage To Commit"
msgstr "コミット予定する"
-#: git-gui.sh:2473
+#: git-gui.sh:2649
msgid "Stage Changed Files To Commit"
msgstr "変更されたファイルをコミット予定"
-#: git-gui.sh:2479
+#: git-gui.sh:2655
msgid "Unstage From Commit"
msgstr "コミットから降ろす"
-#: git-gui.sh:2484 lib/index.tcl:410
+#: git-gui.sh:2661 lib/index.tcl:412
msgid "Revert Changes"
msgstr "変更を元に戻す"
-#: git-gui.sh:2491 git-gui.sh:3069
+#: git-gui.sh:2669 git-gui.sh:3310 git-gui.sh:3341
msgid "Show Less Context"
msgstr "文脈を少なく"
-#: git-gui.sh:2495 git-gui.sh:3073
+#: git-gui.sh:2673 git-gui.sh:3314 git-gui.sh:3345
msgid "Show More Context"
msgstr "文脈を多く"
-#: git-gui.sh:2502 git-gui.sh:2838 git-gui.sh:2947
+#: git-gui.sh:2680 git-gui.sh:3024 git-gui.sh:3133
msgid "Sign Off"
msgstr "署名"
-#: git-gui.sh:2518
+#: git-gui.sh:2696
msgid "Local Merge..."
msgstr "ローカル・マージ…"
-#: git-gui.sh:2523
+#: git-gui.sh:2701
msgid "Abort Merge..."
msgstr "マージ中止…"
-#: git-gui.sh:2535 git-gui.sh:2575
+#: git-gui.sh:2713 git-gui.sh:2741
msgid "Add..."
msgstr "追加"
-#: git-gui.sh:2539
+#: git-gui.sh:2717
msgid "Push..."
msgstr "プッシュ…"
-#: git-gui.sh:2543
+#: git-gui.sh:2721
msgid "Delete Branch..."
msgstr "ブランチ削除..."
-#: git-gui.sh:2553 git-gui.sh:2589 lib/about.tcl:14
-#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:53
-#, tcl-format
-msgid "About %s"
-msgstr "%s について"
-
-#: git-gui.sh:2557
-msgid "Preferences..."
-msgstr "設定…"
-
-#: git-gui.sh:2565 git-gui.sh:3115
+#: git-gui.sh:2731 git-gui.sh:3292
msgid "Options..."
msgstr "オプション…"
-#: git-gui.sh:2576
+#: git-gui.sh:2742
msgid "Remove..."
msgstr "削除..."
-#: git-gui.sh:2585 lib/choose_repository.tcl:50
+#: git-gui.sh:2751 lib/choose_repository.tcl:50
msgid "Help"
msgstr "ヘルプ"
-#: git-gui.sh:2611
+#: git-gui.sh:2755 git-gui.sh:2759 lib/about.tcl:14
+#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:53
+#, tcl-format
+msgid "About %s"
+msgstr "%s について"
+
+#: git-gui.sh:2783
msgid "Online Documentation"
msgstr "オンライン・ドキュメント"
-#: git-gui.sh:2614 lib/choose_repository.tcl:47 lib/choose_repository.tcl:56
+#: git-gui.sh:2786 lib/choose_repository.tcl:47 lib/choose_repository.tcl:56
msgid "Show SSH Key"
msgstr "SSH キーを表示"
-#: git-gui.sh:2707
+#: git-gui.sh:2893
#, tcl-format
msgid "fatal: cannot stat path %s: No such file or directory"
msgstr ""
"致命的: パス %s が stat できません。そのようなファイルやディレクトリはありま"
"せん"
-#: git-gui.sh:2740
+#: git-gui.sh:2926
msgid "Current Branch:"
msgstr "現在のブランチ"
-#: git-gui.sh:2761
+#: git-gui.sh:2947
msgid "Staged Changes (Will Commit)"
msgstr "ステージングされた(コミット予定済の)変更"
-#: git-gui.sh:2781
+#: git-gui.sh:2967
msgid "Unstaged Changes"
msgstr "コミット予定に入っていない変更"
-#: git-gui.sh:2831
+#: git-gui.sh:3017
msgid "Stage Changed"
msgstr "変更をコミット予定に入れる"
-#: git-gui.sh:2850 lib/transport.tcl:93 lib/transport.tcl:182
+#: git-gui.sh:3036 lib/transport.tcl:104 lib/transport.tcl:193
msgid "Push"
msgstr "プッシュ"
-#: git-gui.sh:2885
+#: git-gui.sh:3071
msgid "Initial Commit Message:"
msgstr "最初のコミットメッセージ:"
-#: git-gui.sh:2886
+#: git-gui.sh:3072
msgid "Amended Commit Message:"
msgstr "訂正したコミットメッセージ:"
-#: git-gui.sh:2887
+#: git-gui.sh:3073
msgid "Amended Initial Commit Message:"
msgstr "訂正した最初のコミットメッセージ:"
-#: git-gui.sh:2888
+#: git-gui.sh:3074
msgid "Amended Merge Commit Message:"
msgstr "訂正したマージコミットメッセージ:"
-#: git-gui.sh:2889
+#: git-gui.sh:3075
msgid "Merge Commit Message:"
msgstr "マージコミットメッセージ:"
-#: git-gui.sh:2890
+#: git-gui.sh:3076
msgid "Commit Message:"
msgstr "コミットメッセージ:"
-#: git-gui.sh:2939 git-gui.sh:3090 lib/console.tcl:73
+#: git-gui.sh:3125 git-gui.sh:3267 lib/console.tcl:73
msgid "Copy All"
msgstr "全てコピー"
-#: git-gui.sh:2963 lib/blame.tcl:104
+#: git-gui.sh:3149 lib/blame.tcl:104
msgid "File:"
msgstr "ファイル:"
-#: git-gui.sh:3078
+#: git-gui.sh:3255
msgid "Refresh"
msgstr "再読み込み"
-#: git-gui.sh:3099
+#: git-gui.sh:3276
msgid "Decrease Font Size"
msgstr "フォントを小さく"
-#: git-gui.sh:3103
+#: git-gui.sh:3280
msgid "Increase Font Size"
msgstr "フォントを大きく"
-#: git-gui.sh:3111 lib/blame.tcl:281
+#: git-gui.sh:3288 lib/blame.tcl:281
msgid "Encoding"
msgstr "エンコーディング"
-#: git-gui.sh:3122
+#: git-gui.sh:3299
msgid "Apply/Reverse Hunk"
msgstr "パッチを適用/取り消す"
-#: git-gui.sh:3127
+#: git-gui.sh:3304
msgid "Apply/Reverse Line"
msgstr "パッチ行を適用/取り消す"
-#: git-gui.sh:3137
+#: git-gui.sh:3323
msgid "Run Merge Tool"
msgstr "マージツールを起動"
-#: git-gui.sh:3142
+#: git-gui.sh:3328
msgid "Use Remote Version"
msgstr "リモートの方を採用"
-#: git-gui.sh:3146
+#: git-gui.sh:3332
msgid "Use Local Version"
msgstr "ローカルの方を採用"
-#: git-gui.sh:3150
+#: git-gui.sh:3336
msgid "Revert To Base"
msgstr "ベース版を採用"
-#: git-gui.sh:3169
+#: git-gui.sh:3354
+msgid "Visualize These Changes In The Submodule"
+msgstr "サブモジュール内のこれらの変更を見る"
+
+#: git-gui.sh:3358
+msgid "Visualize Current Branch History In The Submodule"
+msgstr "サブモジュール内で現在のブランチの履歴を見る"
+
+#: git-gui.sh:3362
+msgid "Visualize All Branch History In The Submodule"
+msgstr "サブモジュール内で全てのブランチの履歴を見る"
+
+#: git-gui.sh:3367
+msgid "Start git gui In The Submodule"
+msgstr "サブモジュール内でgit guiを起動する"
+
+#: git-gui.sh:3389
msgid "Unstage Hunk From Commit"
msgstr "パッチをコミット予定から外す"
-#: git-gui.sh:3170
+#: git-gui.sh:3391
+msgid "Unstage Lines From Commit"
+msgstr "コミット予定から行を外す"
+
+#: git-gui.sh:3393
msgid "Unstage Line From Commit"
msgstr "コミット予定から行を外す"
-#: git-gui.sh:3172
+#: git-gui.sh:3396
msgid "Stage Hunk For Commit"
msgstr "パッチをコミット予定に加える"
-#: git-gui.sh:3173
+#: git-gui.sh:3398
+msgid "Stage Lines For Commit"
+msgstr "パッチ行をコミット予定に加える"
+
+#: git-gui.sh:3400
msgid "Stage Line For Commit"
msgstr "パッチ行をコミット予定に加える"
-#: git-gui.sh:3196
+#: git-gui.sh:3424
msgid "Initializing..."
msgstr "初期化しています…"
-#: git-gui.sh:3301
+#: git-gui.sh:3541
#, tcl-format
msgid ""
"Possible environment issues exist.\n"
"以下の環境変数は %s が起動する Git サブプロセスによって無視されるでしょう:\n"
"\n"
-#: git-gui.sh:3331
+#: git-gui.sh:3570
msgid ""
"\n"
"This is due to a known issue with the\n"
"これは Cygwin で配布されている Tcl バイナリに\n"
"関しての既知の問題によります"
-#: git-gui.sh:3336
+#: git-gui.sh:3575
#, tcl-format
msgid ""
"\n"
msgid "Loading annotation..."
msgstr "注釈を読み込んでいます…"
-#: lib/blame.tcl:964
+#: lib/blame.tcl:963
msgid "Author:"
msgstr "作者:"
-#: lib/blame.tcl:968
+#: lib/blame.tcl:967
msgid "Committer:"
msgstr "コミット者:"
-#: lib/blame.tcl:973
+#: lib/blame.tcl:972
msgid "Original File:"
msgstr "元ファイル"
-#: lib/blame.tcl:1021
+#: lib/blame.tcl:1020
msgid "Cannot find HEAD commit:"
msgstr "HEAD コミットが見つかりません"
-#: lib/blame.tcl:1076
+#: lib/blame.tcl:1075
msgid "Cannot find parent commit:"
msgstr "親コミットが見つかりません:"
-#: lib/blame.tcl:1091
+#: lib/blame.tcl:1090
msgid "Unable to display parent"
msgstr "親を表示できません"
-#: lib/blame.tcl:1092 lib/diff.tcl:297
+#: lib/blame.tcl:1091 lib/diff.tcl:320
msgid "Error loading diff:"
msgstr "diff を読む際のエラーです:"
-#: lib/blame.tcl:1232
+#: lib/blame.tcl:1231
msgid "Originally By:"
msgstr "原作者:"
-#: lib/blame.tcl:1238
+#: lib/blame.tcl:1237
msgid "In File:"
msgstr "ファイル:"
-#: lib/blame.tcl:1243
+#: lib/blame.tcl:1242
msgid "Copied Or Moved Here By:"
msgstr "複写・移動者:"
#: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35
#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282
-#: lib/checkout_op.tcl:544 lib/choose_font.tcl:43 lib/merge.tcl:172
+#: lib/checkout_op.tcl:579 lib/choose_font.tcl:43 lib/merge.tcl:172
#: lib/option.tcl:125 lib/remote_add.tcl:32 lib/remote_branch_delete.tcl:42
#: lib/tools_dlg.tcl:40 lib/tools_dlg.tcl:204 lib/tools_dlg.tcl:352
-#: lib/transport.tcl:97
+#: lib/transport.tcl:108
msgid "Cancel"
msgstr "中止"
msgid "Create New Branch"
msgstr "ブランチを新規作成"
-#: lib/branch_create.tcl:31 lib/choose_repository.tcl:377
+#: lib/branch_create.tcl:31 lib/choose_repository.tcl:381
msgid "Create"
msgstr "作成"
msgid "Fast Forward Only"
msgstr "早送りのみ"
-#: lib/branch_create.tcl:85 lib/checkout_op.tcl:536
+#: lib/branch_create.tcl:85 lib/checkout_op.tcl:571
msgid "Reset"
msgstr "リセット"
msgid "Delete Only If Merged Into"
msgstr "マージ済みの時のみ削除"
-#: lib/branch_delete.tcl:54
-msgid "Always (Do not perform merge test.)"
-msgstr "無条件(マージテストしない)"
+#: lib/branch_delete.tcl:54 lib/remote_branch_delete.tcl:119
+msgid "Always (Do not perform merge checks)"
+msgstr "無条件(マージ検査をしない)"
#: lib/branch_delete.tcl:103
#, tcl-format
msgid "The following branches are not completely merged into %s:"
msgstr "以下のブランチは %s に完全にマージされていません:"
+#: lib/branch_delete.tcl:115 lib/remote_branch_delete.tcl:217
+msgid ""
+"Recovering deleted branches is difficult.\n"
+"\n"
+"Delete the selected branches?"
+msgstr ""
+"削除したブランチを回復するのは困難です。\n"
+"\n"
+"選択したブランチを削除して良いですか?"
+
#: lib/branch_delete.tcl:141
#, tcl-format
msgid ""
msgid "Please select a branch to rename."
msgstr "名前を変更するブランチを選んで下さい。"
-#: lib/branch_rename.tcl:96 lib/checkout_op.tcl:201
+#: lib/branch_rename.tcl:96 lib/checkout_op.tcl:202
#, tcl-format
msgid "Branch '%s' already exists."
msgstr "'%s'というブランチは既に存在します。"
msgid "Browse Branch Files"
msgstr "現在のブランチのファイルを見る"
-#: lib/browser.tcl:278 lib/choose_repository.tcl:394
-#: lib/choose_repository.tcl:480 lib/choose_repository.tcl:491
-#: lib/choose_repository.tcl:995
+#: lib/browser.tcl:278 lib/choose_repository.tcl:398
+#: lib/choose_repository.tcl:486 lib/choose_repository.tcl:497
+#: lib/choose_repository.tcl:1028
msgid "Browse"
msgstr "ブラウズ"
-#: lib/checkout_op.tcl:84
+#: lib/checkout_op.tcl:85
#, tcl-format
msgid "Fetching %s from %s"
msgstr "%s から %s をフェッチしています"
-#: lib/checkout_op.tcl:132
+#: lib/checkout_op.tcl:133
#, tcl-format
msgid "fatal: Cannot resolve %s"
msgstr "致命的エラー: %s を解決できません"
-#: lib/checkout_op.tcl:145 lib/console.tcl:81 lib/database.tcl:31
+#: lib/checkout_op.tcl:146 lib/console.tcl:81 lib/database.tcl:31
#: lib/sshkey.tcl:53
msgid "Close"
msgstr "閉じる"
-#: lib/checkout_op.tcl:174
+#: lib/checkout_op.tcl:175
#, tcl-format
msgid "Branch '%s' does not exist."
msgstr "ブランチ'%s'は存在しません。"
-#: lib/checkout_op.tcl:193
+#: lib/checkout_op.tcl:194
#, tcl-format
msgid "Failed to configure simplified git-pull for '%s'."
msgstr "'%s' に簡易 git-pull を設定できませんでした"
-#: lib/checkout_op.tcl:228
+#: lib/checkout_op.tcl:229
#, tcl-format
msgid ""
"Branch '%s' already exists.\n"
"%s に早送りできません。\n"
"マージが必要です。"
-#: lib/checkout_op.tcl:242
+#: lib/checkout_op.tcl:243
#, tcl-format
msgid "Merge strategy '%s' not supported."
msgstr "'%s' マージ戦略はサポートされていません。"
-#: lib/checkout_op.tcl:261
+#: lib/checkout_op.tcl:262
#, tcl-format
msgid "Failed to update '%s'."
msgstr "'%s' の更新に失敗しました。"
-#: lib/checkout_op.tcl:273
+#: lib/checkout_op.tcl:274
msgid "Staging area (index) is already locked."
msgstr "インデックスは既にロックされています。"
-#: lib/checkout_op.tcl:288
+#: lib/checkout_op.tcl:289
msgid ""
"Last scanned state does not match repository state.\n"
"\n"
"\n"
"自動的に再スキャンを開始します。\n"
-#: lib/checkout_op.tcl:344
+#: lib/checkout_op.tcl:345
#, tcl-format
msgid "Updating working directory to '%s'..."
msgstr "作業ディレクトリを '%s' に更新しています…"
-#: lib/checkout_op.tcl:345
+#: lib/checkout_op.tcl:346
msgid "files checked out"
msgstr "チェックアウトされたファイル"
-#: lib/checkout_op.tcl:375
+#: lib/checkout_op.tcl:376
#, tcl-format
msgid "Aborted checkout of '%s' (file level merging is required)."
msgstr "'%s' のチェックアウトを中止しました(ファイル毎のマージが必要です)。"
-#: lib/checkout_op.tcl:376
+#: lib/checkout_op.tcl:377
msgid "File level merge required."
msgstr "ファイル毎のマージが必要です。"
-#: lib/checkout_op.tcl:380
+#: lib/checkout_op.tcl:381
#, tcl-format
msgid "Staying on branch '%s'."
msgstr "ブランチ '%s' に滞まります。"
-#: lib/checkout_op.tcl:451
+#: lib/checkout_op.tcl:452
msgid ""
"You are no longer on a local branch.\n"
"\n"
"ブランチ上に滞まりたいときは、この「分離されたチェックアウト」から新規ブラン"
"チを開始してください。"
-#: lib/checkout_op.tcl:468 lib/checkout_op.tcl:472
+#: lib/checkout_op.tcl:503 lib/checkout_op.tcl:507
#, tcl-format
msgid "Checked out '%s'."
msgstr "'%s' をチェックアウトしました"
-#: lib/checkout_op.tcl:500
+#: lib/checkout_op.tcl:535
#, tcl-format
msgid "Resetting '%s' to '%s' will lose the following commits:"
msgstr "'%s' を '%s' にリセットすると、以下のコミットが失なわれます:"
-#: lib/checkout_op.tcl:522
+#: lib/checkout_op.tcl:557
msgid "Recovering lost commits may not be easy."
msgstr "失なわれたコミットを回復するのは簡単ではありません。"
-#: lib/checkout_op.tcl:527
+#: lib/checkout_op.tcl:562
#, tcl-format
msgid "Reset '%s'?"
msgstr "'%s' をリセットしますか?"
-#: lib/checkout_op.tcl:532 lib/merge.tcl:164 lib/tools_dlg.tcl:343
+#: lib/checkout_op.tcl:567 lib/merge.tcl:164 lib/tools_dlg.tcl:343
msgid "Visualize"
msgstr "可視化"
-#: lib/checkout_op.tcl:600
+#: lib/checkout_op.tcl:635
#, tcl-format
msgid ""
"Failed to set current branch.\n"
msgid "Git Gui"
msgstr "Git GUI"
-#: lib/choose_repository.tcl:87 lib/choose_repository.tcl:382
+#: lib/choose_repository.tcl:87 lib/choose_repository.tcl:386
msgid "Create New Repository"
msgstr "新しいリポジトリを作る"
msgid "New..."
msgstr "新規…"
-#: lib/choose_repository.tcl:100 lib/choose_repository.tcl:465
+#: lib/choose_repository.tcl:100 lib/choose_repository.tcl:471
msgid "Clone Existing Repository"
msgstr "既存リポジトリを複製する"
msgid "Clone..."
msgstr "複製…"
-#: lib/choose_repository.tcl:113 lib/choose_repository.tcl:983
+#: lib/choose_repository.tcl:113 lib/choose_repository.tcl:1016
msgid "Open Existing Repository"
msgstr "既存リポジトリを開く"
msgid "Open Recent Repository:"
msgstr "最近使ったリポジトリを開く"
-#: lib/choose_repository.tcl:302 lib/choose_repository.tcl:309
-#: lib/choose_repository.tcl:316
+#: lib/choose_repository.tcl:306 lib/choose_repository.tcl:313
+#: lib/choose_repository.tcl:320
#, tcl-format
msgid "Failed to create repository %s:"
msgstr "リポジトリ %s を作製できません:"
-#: lib/choose_repository.tcl:387
+#: lib/choose_repository.tcl:391
msgid "Directory:"
msgstr "ディレクトリ:"
-#: lib/choose_repository.tcl:417 lib/choose_repository.tcl:544
-#: lib/choose_repository.tcl:1017
+#: lib/choose_repository.tcl:423 lib/choose_repository.tcl:550
+#: lib/choose_repository.tcl:1052
msgid "Git Repository"
msgstr "GIT リポジトリ"
-#: lib/choose_repository.tcl:442
+#: lib/choose_repository.tcl:448
#, tcl-format
msgid "Directory %s already exists."
msgstr "ディレクトリ '%s' は既に存在します。"
-#: lib/choose_repository.tcl:446
+#: lib/choose_repository.tcl:452
#, tcl-format
msgid "File %s already exists."
msgstr "ファイル '%s' は既に存在します。"
-#: lib/choose_repository.tcl:460
+#: lib/choose_repository.tcl:466
msgid "Clone"
msgstr "複製"
-#: lib/choose_repository.tcl:473
+#: lib/choose_repository.tcl:479
msgid "Source Location:"
msgstr "ソースの位置"
-#: lib/choose_repository.tcl:484
+#: lib/choose_repository.tcl:490
msgid "Target Directory:"
msgstr "先ディレクトリ:"
-#: lib/choose_repository.tcl:496
+#: lib/choose_repository.tcl:502
msgid "Clone Type:"
msgstr "複製方式:"
-#: lib/choose_repository.tcl:502
+#: lib/choose_repository.tcl:508
msgid "Standard (Fast, Semi-Redundant, Hardlinks)"
msgstr "標準(高速・中冗長度・ハードリンク)"
-#: lib/choose_repository.tcl:508
+#: lib/choose_repository.tcl:514
msgid "Full Copy (Slower, Redundant Backup)"
msgstr "全複写(低速・冗長バックアップ)"
-#: lib/choose_repository.tcl:514
+#: lib/choose_repository.tcl:520
msgid "Shared (Fastest, Not Recommended, No Backup)"
msgstr "共有(最高速・非推奨・バックアップ無し)"
-#: lib/choose_repository.tcl:550 lib/choose_repository.tcl:597
-#: lib/choose_repository.tcl:743 lib/choose_repository.tcl:813
-#: lib/choose_repository.tcl:1023 lib/choose_repository.tcl:1031
+#: lib/choose_repository.tcl:556 lib/choose_repository.tcl:603
+#: lib/choose_repository.tcl:749 lib/choose_repository.tcl:819
+#: lib/choose_repository.tcl:1058 lib/choose_repository.tcl:1066
#, tcl-format
msgid "Not a Git repository: %s"
msgstr "Git リポジトリではありません: %s"
-#: lib/choose_repository.tcl:586
+#: lib/choose_repository.tcl:592
msgid "Standard only available for local repository."
msgstr "標準方式は同一計算機上のリポジトリにのみ使えます。"
-#: lib/choose_repository.tcl:590
+#: lib/choose_repository.tcl:596
msgid "Shared only available for local repository."
msgstr "共有方式は同一計算機上のリポジトリにのみ使えます。"
-#: lib/choose_repository.tcl:611
+#: lib/choose_repository.tcl:617
#, tcl-format
msgid "Location %s already exists."
msgstr "'%s' は既に存在します。"
-#: lib/choose_repository.tcl:622
+#: lib/choose_repository.tcl:628
msgid "Failed to configure origin"
msgstr "origin を設定できませんでした"
-#: lib/choose_repository.tcl:634
+#: lib/choose_repository.tcl:640
msgid "Counting objects"
msgstr "オブジェクトを数えています"
-#: lib/choose_repository.tcl:635
+#: lib/choose_repository.tcl:641
msgid "buckets"
msgstr "バケツ"
-#: lib/choose_repository.tcl:659
+#: lib/choose_repository.tcl:665
#, tcl-format
msgid "Unable to copy objects/info/alternates: %s"
msgstr "objects/info/alternates を複写できません: %s"
-#: lib/choose_repository.tcl:695
+#: lib/choose_repository.tcl:701
#, tcl-format
msgid "Nothing to clone from %s."
msgstr "%s から複製する内容はありません"
-#: lib/choose_repository.tcl:697 lib/choose_repository.tcl:911
-#: lib/choose_repository.tcl:923
+#: lib/choose_repository.tcl:703 lib/choose_repository.tcl:917
+#: lib/choose_repository.tcl:929
msgid "The 'master' branch has not been initialized."
msgstr "'master' ブランチが初期化されていません"
-#: lib/choose_repository.tcl:710
+#: lib/choose_repository.tcl:716
msgid "Hardlinks are unavailable. Falling back to copying."
msgstr "ハードリンクが作れないので、コピーします"
-#: lib/choose_repository.tcl:722
+#: lib/choose_repository.tcl:728
#, tcl-format
msgid "Cloning from %s"
msgstr "%s から複製しています"
-#: lib/choose_repository.tcl:753
+#: lib/choose_repository.tcl:759
msgid "Copying objects"
msgstr "オブジェクトを複写しています"
-#: lib/choose_repository.tcl:754
+#: lib/choose_repository.tcl:760
msgid "KiB"
msgstr "KiB"
-#: lib/choose_repository.tcl:778
+#: lib/choose_repository.tcl:784
#, tcl-format
msgid "Unable to copy object: %s"
msgstr "オブジェクトを複写できません: %s"
-#: lib/choose_repository.tcl:788
+#: lib/choose_repository.tcl:794
msgid "Linking objects"
msgstr "オブジェクトを連結しています"
-#: lib/choose_repository.tcl:789
+#: lib/choose_repository.tcl:795
msgid "objects"
msgstr "オブジェクト"
-#: lib/choose_repository.tcl:797
+#: lib/choose_repository.tcl:803
#, tcl-format
msgid "Unable to hardlink object: %s"
msgstr "オブジェクトをハードリンクできません: %s"
-#: lib/choose_repository.tcl:852
+#: lib/choose_repository.tcl:858
msgid "Cannot fetch branches and objects. See console output for details."
msgstr "ブランチやオブジェクトを取得できません。コンソール出力を見て下さい"
-#: lib/choose_repository.tcl:863
+#: lib/choose_repository.tcl:869
msgid "Cannot fetch tags. See console output for details."
msgstr "タグを取得できません。コンソール出力を見て下さい"
-#: lib/choose_repository.tcl:887
+#: lib/choose_repository.tcl:893
msgid "Cannot determine HEAD. See console output for details."
msgstr "HEAD を確定できません。コンソール出力を見て下さい"
-#: lib/choose_repository.tcl:896
+#: lib/choose_repository.tcl:902
#, tcl-format
msgid "Unable to cleanup %s"
msgstr "%s を掃除できません"
-#: lib/choose_repository.tcl:902
+#: lib/choose_repository.tcl:908
msgid "Clone failed."
msgstr "複写に失敗しました。"
-#: lib/choose_repository.tcl:909
+#: lib/choose_repository.tcl:915
msgid "No default branch obtained."
msgstr "デフォールト・ブランチが取得されませんでした"
-#: lib/choose_repository.tcl:920
+#: lib/choose_repository.tcl:926
#, tcl-format
msgid "Cannot resolve %s as a commit."
msgstr "%s をコミットとして解釈できません"
-#: lib/choose_repository.tcl:932
+#: lib/choose_repository.tcl:938
msgid "Creating working directory"
msgstr "作業ディレクトリを作成しています"
-#: lib/choose_repository.tcl:933 lib/index.tcl:65 lib/index.tcl:128
-#: lib/index.tcl:196
+#: lib/choose_repository.tcl:939 lib/index.tcl:67 lib/index.tcl:130
+#: lib/index.tcl:198
msgid "files"
msgstr "ファイル"
-#: lib/choose_repository.tcl:962
+#: lib/choose_repository.tcl:968
msgid "Initial file checkout failed."
msgstr "初期チェックアウトに失敗しました"
-#: lib/choose_repository.tcl:978
+#: lib/choose_repository.tcl:1011
msgid "Open"
msgstr "開く"
-#: lib/choose_repository.tcl:988
+#: lib/choose_repository.tcl:1021
msgid "Repository:"
msgstr "リポジトリ:"
-#: lib/choose_repository.tcl:1037
+#: lib/choose_repository.tcl:1072
#, tcl-format
msgid "Failed to open repository %s:"
msgstr "リポジトリ %s を開けません:"
"現在はまだマージの途中です。先にこのマージを中止しないと、前のコミットの訂正"
"はできません\n"
-#: lib/commit.tcl:49
+#: lib/commit.tcl:48
msgid "Error loading commit data for amend:"
msgstr "訂正するコミットのデータを読めません:"
-#: lib/commit.tcl:76
+#: lib/commit.tcl:75
msgid "Unable to obtain your identity:"
msgstr "ユーザの正体を確認できません:"
-#: lib/commit.tcl:81
+#: lib/commit.tcl:80
msgid "Invalid GIT_COMMITTER_IDENT:"
msgstr "GIT_COMMITTER_IDENT が無効です:"
-#: lib/commit.tcl:133
+#: lib/commit.tcl:129
+#, tcl-format
+msgid "warning: Tcl does not support encoding '%s'."
+msgstr "警告: Tcl はエンコーディング '%s' をサポートしていません"
+
+#: lib/commit.tcl:149
msgid ""
"Last scanned state does not match repository state.\n"
"\n"
"\n"
"自動的に再スキャンを開始します。\n"
-#: lib/commit.tcl:156
+#: lib/commit.tcl:172
#, tcl-format
msgid ""
"Unmerged files cannot be committed.\n"
"ファイル %s にはマージ衝突が残っています。まず解決してコミット予定に加える必"
"要があります。\n"
-#: lib/commit.tcl:164
+#: lib/commit.tcl:180
#, tcl-format
msgid ""
"Unknown file state %s detected.\n"
"\n"
"ファイル %s は本プログラムではコミットできません。\n"
-#: lib/commit.tcl:172
+#: lib/commit.tcl:188
msgid ""
"No changes to commit.\n"
"\n"
"\n"
"最低一つの変更をコミット予定に加えてからコミットして下さい。\n"
-#: lib/commit.tcl:187
+#: lib/commit.tcl:203
msgid ""
"Please supply a commit message.\n"
"\n"
"- 第2行: 空白\n"
"- 残りの行: なぜ、この変更が良い変更か、の説明。\n"
-#: lib/commit.tcl:211
-#, tcl-format
-msgid "warning: Tcl does not support encoding '%s'."
-msgstr "警告: Tcl はエンコーディング '%s' をサポートしていません"
-
-#: lib/commit.tcl:227
+#: lib/commit.tcl:234
msgid "Calling pre-commit hook..."
msgstr "コミット前フックを実行中・・・"
-#: lib/commit.tcl:242
+#: lib/commit.tcl:249
msgid "Commit declined by pre-commit hook."
msgstr "コミット前フックがコミットを拒否しました"
-#: lib/commit.tcl:265
+#: lib/commit.tcl:272
msgid "Calling commit-msg hook..."
msgstr "コミット・メッセージ・フックを実行中・・・"
-#: lib/commit.tcl:280
+#: lib/commit.tcl:287
msgid "Commit declined by commit-msg hook."
msgstr "コミット・メッセージ・フックがコミットを拒否しました"
-#: lib/commit.tcl:293
+#: lib/commit.tcl:300
msgid "Committing changes..."
msgstr "変更点をコミット中・・・"
-#: lib/commit.tcl:309
+#: lib/commit.tcl:316
msgid "write-tree failed:"
msgstr "write-tree が失敗しました:"
-#: lib/commit.tcl:310 lib/commit.tcl:354 lib/commit.tcl:374
+#: lib/commit.tcl:317 lib/commit.tcl:361 lib/commit.tcl:382
msgid "Commit failed."
msgstr "コミットに失敗しました。"
-#: lib/commit.tcl:327
+#: lib/commit.tcl:334
#, tcl-format
msgid "Commit %s appears to be corrupt"
msgstr "コミット %s は壊れています"
-#: lib/commit.tcl:332
+#: lib/commit.tcl:339
msgid ""
"No changes to commit.\n"
"\n"
"\n"
"自動的に再スキャンを開始します。\n"
-#: lib/commit.tcl:339
+#: lib/commit.tcl:346
msgid "No changes to commit."
msgstr "コミットする変更がありません。"
-#: lib/commit.tcl:353
+#: lib/commit.tcl:360
msgid "commit-tree failed:"
msgstr "commit-tree が失敗しました:"
-#: lib/commit.tcl:373
+#: lib/commit.tcl:381
msgid "update-ref failed:"
msgstr "update-ref が失敗しました:"
-#: lib/commit.tcl:461
+#: lib/commit.tcl:469
#, tcl-format
msgid "Created commit %s: %s"
msgstr "コミット %s を作成しました: %s"
msgid "Verifying the object database with fsck-objects"
msgstr "fsck-objects でオブジェクト・データベースを検証しています"
-#: lib/database.tcl:108
+#: lib/database.tcl:107
#, tcl-format
msgid ""
"This repository currently has approximately %i loose objects.\n"
"\n"
"To maintain optimal performance it is strongly recommended that you compress "
-"the database when more than %i loose objects exist.\n"
+"the database.\n"
"\n"
"Compress the database now?"
msgstr ""
"このリポジトリにはおおよそ %i 個の個別オブジェクトがあります\n"
"\n"
-"最適な性能を保つために、%i 個以上の個別オブジェクトを作る毎にデータベースを圧"
-"縮することを推奨します\n"
+"最適な性能を保つために、データベースを圧縮することを推奨します\n"
"\n"
"データベースを圧縮しますか?"
msgid "Invalid date from Git: %s"
msgstr "Git から出た無効な日付: %s"
-#: lib/diff.tcl:59
+#: lib/diff.tcl:64
#, tcl-format
msgid ""
"No differences detected.\n"
"\n"
"同様な状態のファイルを探すために、自動的に再スキャンを開始します。"
-#: lib/diff.tcl:99
+#: lib/diff.tcl:104
#, tcl-format
msgid "Loading diff of %s..."
msgstr "%s の変更点をロード中…"
-#: lib/diff.tcl:120
+#: lib/diff.tcl:125
msgid ""
"LOCAL: deleted\n"
"REMOTE:\n"
"LOCAL: 削除\n"
"Remote:\n"
-#: lib/diff.tcl:125
+#: lib/diff.tcl:130
msgid ""
"REMOTE: deleted\n"
"LOCAL:\n"
"REMOTE: 削除\n"
"LOCAL:\n"
-#: lib/diff.tcl:132
+#: lib/diff.tcl:137
msgid "LOCAL:\n"
msgstr "LOCAL:\n"
-#: lib/diff.tcl:135
+#: lib/diff.tcl:140
msgid "REMOTE:\n"
msgstr "REMOTE\n"
-#: lib/diff.tcl:197 lib/diff.tcl:296
+#: lib/diff.tcl:202 lib/diff.tcl:319
#, tcl-format
msgid "Unable to display %s"
msgstr "%s を表示できません"
-#: lib/diff.tcl:198
+#: lib/diff.tcl:203
msgid "Error loading file:"
msgstr "ファイルを読む際のエラーです:"
-#: lib/diff.tcl:205
+#: lib/diff.tcl:210
msgid "Git Repository (subproject)"
msgstr "Git リポジトリ(サブプロジェクト)"
-#: lib/diff.tcl:217
+#: lib/diff.tcl:222
msgid "* Binary file (not showing content)."
msgstr "* バイナリファイル(内容は表示しません)"
-#: lib/diff.tcl:222
+#: lib/diff.tcl:227
#, tcl-format
msgid ""
"* Untracked file is %d bytes.\n"
"* 管理外のファイルの大きさは %d バイトです。\n"
"* 最初の %d バイトだけ表示しています。\n"
-#: lib/diff.tcl:228
+#: lib/diff.tcl:233
#, tcl-format
msgid ""
"\n"
"* %s は管理外のファイルをここで切りおとしました。\n"
"* 全体を見るには外部エディタを使ってください。\n"
-#: lib/diff.tcl:436
+#: lib/diff.tcl:482
msgid "Failed to unstage selected hunk."
msgstr "選択されたパッチをコミット予定から外せません。"
-#: lib/diff.tcl:443
+#: lib/diff.tcl:489
msgid "Failed to stage selected hunk."
msgstr "選択されたパッチをコミット予定に加えられません。"
-#: lib/diff.tcl:509
+#: lib/diff.tcl:568
msgid "Failed to unstage selected line."
msgstr "選択されたパッチ行をコミット予定から外せません。"
-#: lib/diff.tcl:517
+#: lib/diff.tcl:576
msgid "Failed to stage selected line."
msgstr "選択されたパッチ行をコミット予定に加えられません。"
msgid "Index Error"
msgstr "索引エラー"
-#: lib/index.tcl:21
+#: lib/index.tcl:17
msgid ""
"Updating the Git index failed. A rescan will be automatically started to "
"resynchronize git-gui."
"GIT インデックスの更新が失敗しました。git-gui と同期をとるために再スキャンし"
"ます。"
-#: lib/index.tcl:27
+#: lib/index.tcl:28
msgid "Continue"
msgstr "続行"
msgid "Unlock Index"
msgstr "インデックスのロック解除"
-#: lib/index.tcl:287
+#: lib/index.tcl:289
#, tcl-format
msgid "Unstaging %s from commit"
msgstr "コミットから '%s' を降ろす"
-#: lib/index.tcl:326
+#: lib/index.tcl:328
msgid "Ready to commit."
msgstr "コミット準備完了"
-#: lib/index.tcl:339
+#: lib/index.tcl:341
#, tcl-format
msgid "Adding %s"
msgstr "コミットに %s を加えています"
-#: lib/index.tcl:396
+#: lib/index.tcl:398
#, tcl-format
msgid "Revert changes in file %s?"
msgstr "ファイル %s にした変更を元に戻しますか?"
-#: lib/index.tcl:398
+#: lib/index.tcl:400
#, tcl-format
msgid "Revert changes in these %i files?"
msgstr "これら %i 個のファイルにした変更を元に戻しますか?"
-#: lib/index.tcl:406
+#: lib/index.tcl:408
msgid "Any unstaged changes will be permanently lost by the revert."
msgstr "変更を元に戻すとコミット予定していない変更は全て失われます。"
-#: lib/index.tcl:409
+#: lib/index.tcl:411
msgid "Do Nothing"
msgstr "何もしない"
-#: lib/index.tcl:427
+#: lib/index.tcl:429
msgid "Reverting selected files"
msgstr "選択されたファイルにした変更を元に戻します"
-#: lib/index.tcl:431
+#: lib/index.tcl:433
#, tcl-format
msgid "Reverting %s"
msgstr "%s にした変更を元に戻します"
#: lib/mergetool.tcl:45
#, tcl-format
msgid "File %s seems to have unresolved conflicts, still stage?"
-msgstr "ファイル %s には解決していない競合部分がまだあるようですが、いいですか?"
+msgstr ""
+"ファイル %s には解決していない競合部分がまだあるようですが、いいですか?"
#: lib/mergetool.tcl:60
#, tcl-format
msgid "Do not know how to initialize repository at location '%s'."
msgstr "リポジトリ '%s' を初期化できません。"
-#: lib/remote_add.tcl:163 lib/transport.tcl:25 lib/transport.tcl:71
+#: lib/remote_add.tcl:163 lib/transport.tcl:25 lib/transport.tcl:63
+#: lib/transport.tcl:81
#, tcl-format
msgid "push %s"
msgstr "%s をプッシュ"
msgid "From Repository"
msgstr "元のリポジトリ"
-#: lib/remote_branch_delete.tcl:50 lib/transport.tcl:123
+#: lib/remote_branch_delete.tcl:50 lib/transport.tcl:134
msgid "Remote:"
msgstr "リモート:"
-#: lib/remote_branch_delete.tcl:66 lib/transport.tcl:138
+#: lib/remote_branch_delete.tcl:66 lib/transport.tcl:149
msgid "Arbitrary Location:"
msgstr "任意の位置:"
msgid "Merged Into:"
msgstr "マージ先:"
-#: lib/remote_branch_delete.tcl:119
-msgid "Always (Do not perform merge checks)"
-msgstr "無条件(マージ検査をしない)"
-
#: lib/remote_branch_delete.tcl:152
msgid "A branch is required for 'Merged Into'."
msgstr "'マージ先' にはブランチが必要です。"
msgid "Please select one or more branches to delete."
msgstr "削除するブランチを選択して下さい。"
-#: lib/remote_branch_delete.tcl:216
-msgid ""
-"Recovering deleted branches is difficult.\n"
-"\n"
-"Delete the selected branches?"
-msgstr ""
-"削除したブランチを回復するのは困難です。\n"
-"\n"
-"選択したブランチを削除して良いですか?"
-
#: lib/remote_branch_delete.tcl:226
#, tcl-format
msgid "Deleting branches from %s"
msgstr "%s からブランチを削除しています。"
-#: lib/remote_branch_delete.tcl:286
+#: lib/remote_branch_delete.tcl:292
msgid "No repository selected."
msgstr "リポジトリが選択されていません。"
-#: lib/remote_branch_delete.tcl:291
+#: lib/remote_branch_delete.tcl:297
#, tcl-format
msgid "Scanning %s..."
msgstr "%s をスキャンしています…"
msgid "Case-Sensitive"
msgstr "大文字小文字を区別"
-#: lib/shortcut.tcl:20 lib/shortcut.tcl:61
+#: lib/shortcut.tcl:21 lib/shortcut.tcl:62
msgid "Cannot write shortcut:"
msgstr "ショートカットが書けません:"
-#: lib/shortcut.tcl:136
+#: lib/shortcut.tcl:137
msgid "Cannot write icon:"
msgstr "アイコンが書けません:"
msgid "Pushing %s %s to %s"
msgstr "%3$s へ %1$s %2$s をプッシュしています"
-#: lib/transport.tcl:89
+#: lib/transport.tcl:100
msgid "Push Branches"
msgstr "ブランチをプッシュ"
-#: lib/transport.tcl:103
+#: lib/transport.tcl:114
msgid "Source Branches"
msgstr "元のブランチ"
-#: lib/transport.tcl:120
+#: lib/transport.tcl:131
msgid "Destination Repository"
msgstr "送り先リポジトリ"
-#: lib/transport.tcl:158
+#: lib/transport.tcl:169
msgid "Transfer Options"
msgstr "通信オプション"
-#: lib/transport.tcl:160
+#: lib/transport.tcl:171
msgid "Force overwrite existing branch (may discard changes)"
msgstr "既存ブランチを上書き(変更を破棄する可能性があります)"
-#: lib/transport.tcl:164
+#: lib/transport.tcl:175
msgid "Use thin pack (for slow network connections)"
msgstr "Thin Pack を使う(遅いネットワーク接続)"
-#: lib/transport.tcl:168
+#: lib/transport.tcl:179
msgid "Include tags"
msgstr "タグを含める"
msgstr ""
"Project-Id-Version: sv\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-08 08:31-0800\n"
-"PO-Revision-Date: 2008-12-10 09:49+0100\n"
+"POT-Creation-Date: 2010-01-26 15:47-0800\n"
+"PO-Revision-Date: 2010-01-28 13:57+0100\n"
"Last-Translator: Peter Krefting <peter@softwolves.pp.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
+"Content-Transfer-Encoding: 8bit"
-#: git-gui.sh:41 git-gui.sh:737 git-gui.sh:751 git-gui.sh:764 git-gui.sh:847
-#: git-gui.sh:866
+#: git-gui.sh:41 git-gui.sh:793 git-gui.sh:807 git-gui.sh:820 git-gui.sh:903
+#: git-gui.sh:922
msgid "git-gui: fatal error"
msgstr "git-gui: ödesdigert fel"
-#: git-gui.sh:689
+#: git-gui.sh:743
#, tcl-format
msgid "Invalid font specified in %s:"
msgstr "Ogiltigt teckensnitt angivet i %s:"
-#: git-gui.sh:723
+#: git-gui.sh:779
msgid "Main Font"
msgstr "Huvudteckensnitt"
-#: git-gui.sh:724
+#: git-gui.sh:780
msgid "Diff/Console Font"
msgstr "Diff/konsolteckensnitt"
-#: git-gui.sh:738
+#: git-gui.sh:794
msgid "Cannot find git in PATH."
msgstr "Hittar inte git i PATH."
-#: git-gui.sh:765
+#: git-gui.sh:821
msgid "Cannot parse Git version string:"
msgstr "Kan inte tolka versionssträng från Git:"
-#: git-gui.sh:783
+#: git-gui.sh:839
#, tcl-format
msgid ""
"Git version cannot be determined.\n"
"\n"
"Anta att \"%s\" är version 1.5.0?\n"
-#: git-gui.sh:1062
+#: git-gui.sh:1128
msgid "Git directory not found:"
msgstr "Git-katalogen hittades inte:"
-#: git-gui.sh:1069
+#: git-gui.sh:1146
msgid "Cannot move to top of working directory:"
msgstr "Kan inte gå till början på arbetskatalogen:"
-#: git-gui.sh:1076
-msgid "Cannot use funny .git directory:"
-msgstr "Kan inte använda underlig .git-katalog:"
+#: git-gui.sh:1154
+msgid "Cannot use bare repository:"
+msgstr "Kan inte använda naket arkiv:"
-#: git-gui.sh:1081
+#: git-gui.sh:1162
msgid "No working directory"
msgstr "Ingen arbetskatalog"
-#: git-gui.sh:1247 lib/checkout_op.tcl:305
+#: git-gui.sh:1334 lib/checkout_op.tcl:306
msgid "Refreshing file status..."
msgstr "Uppdaterar filstatus..."
-#: git-gui.sh:1303
+#: git-gui.sh:1390
msgid "Scanning for modified files ..."
msgstr "Söker efter ändrade filer..."
-#: git-gui.sh:1367
+#: git-gui.sh:1454
msgid "Calling prepare-commit-msg hook..."
msgstr ""
"Anropar kroken för förberedelse av incheckningsmeddelande (prepare-commit-"
"msg)..."
-#: git-gui.sh:1384
+#: git-gui.sh:1471
msgid "Commit declined by prepare-commit-msg hook."
msgstr ""
"Incheckningen avvisades av kroken för förberedelse av incheckningsmeddelande "
"(prepare-commit-msg)."
-#: git-gui.sh:1542 lib/browser.tcl:246
+#: git-gui.sh:1629 lib/browser.tcl:246
msgid "Ready."
msgstr "Klar."
-#: git-gui.sh:1819
+#: git-gui.sh:1787
+#, tcl-format
+msgid "Displaying only %s of %s files."
+msgstr "Visar endast %s av %s filer."
+
+#: git-gui.sh:1913
msgid "Unmodified"
msgstr "Oförändrade"
-#: git-gui.sh:1821
+#: git-gui.sh:1915
msgid "Modified, not staged"
msgstr "Förändrade, ej köade"
-#: git-gui.sh:1822 git-gui.sh:1830
+#: git-gui.sh:1916 git-gui.sh:1924
msgid "Staged for commit"
msgstr "Köade för incheckning"
-#: git-gui.sh:1823 git-gui.sh:1831
+#: git-gui.sh:1917 git-gui.sh:1925
msgid "Portions staged for commit"
msgstr "Delar köade för incheckning"
-#: git-gui.sh:1824 git-gui.sh:1832
+#: git-gui.sh:1918 git-gui.sh:1926
msgid "Staged for commit, missing"
msgstr "Köade för incheckning, saknade"
-#: git-gui.sh:1826
+#: git-gui.sh:1920
msgid "File type changed, not staged"
msgstr "Filtyp ändrad, ej köade"
-#: git-gui.sh:1827
+#: git-gui.sh:1921
msgid "File type changed, staged"
msgstr "Filtyp ändrad, köade"
-#: git-gui.sh:1829
+#: git-gui.sh:1923
msgid "Untracked, not staged"
msgstr "Ej spårade, ej köade"
-#: git-gui.sh:1834
+#: git-gui.sh:1928
msgid "Missing"
msgstr "Saknade"
-#: git-gui.sh:1835
+#: git-gui.sh:1929
msgid "Staged for removal"
msgstr "Köade för borttagning"
-#: git-gui.sh:1836
+#: git-gui.sh:1930
msgid "Staged for removal, still present"
msgstr "Köade för borttagning, fortfarande närvarande"
-#: git-gui.sh:1838 git-gui.sh:1839 git-gui.sh:1840 git-gui.sh:1841
-#: git-gui.sh:1842 git-gui.sh:1843
+#: git-gui.sh:1932 git-gui.sh:1933 git-gui.sh:1934 git-gui.sh:1935
+#: git-gui.sh:1936 git-gui.sh:1937
msgid "Requires merge resolution"
msgstr "Kräver konflikthantering efter sammanslagning"
-#: git-gui.sh:1878
+#: git-gui.sh:1972
msgid "Starting gitk... please wait..."
msgstr "Startar gitk... vänta..."
-#: git-gui.sh:1887
+#: git-gui.sh:1984
msgid "Couldn't find gitk in PATH"
-msgstr "Hittar inte gitk i PATH."
+msgstr "Hittade inte gitk i PATH."
+
+#: git-gui.sh:2043
+msgid "Couldn't find git gui in PATH"
+msgstr "Hittade inte git gui i PATH."
-#: git-gui.sh:2280 lib/choose_repository.tcl:36
+#: git-gui.sh:2455 lib/choose_repository.tcl:36
msgid "Repository"
msgstr "Arkiv"
-#: git-gui.sh:2281
+#: git-gui.sh:2456
msgid "Edit"
msgstr "Redigera"
-#: git-gui.sh:2283 lib/choose_rev.tcl:561
+#: git-gui.sh:2458 lib/choose_rev.tcl:561
msgid "Branch"
msgstr "Gren"
-#: git-gui.sh:2286 lib/choose_rev.tcl:548
+#: git-gui.sh:2461 lib/choose_rev.tcl:548
msgid "Commit@@noun"
msgstr "Incheckning"
-#: git-gui.sh:2289 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168
+#: git-gui.sh:2464 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168
msgid "Merge"
msgstr "Slå ihop"
-#: git-gui.sh:2290 lib/choose_rev.tcl:557
+#: git-gui.sh:2465 lib/choose_rev.tcl:557
msgid "Remote"
msgstr "Fjärrarkiv"
-#: git-gui.sh:2293
+#: git-gui.sh:2468
msgid "Tools"
msgstr "Verktyg"
-#: git-gui.sh:2302
+#: git-gui.sh:2477
msgid "Explore Working Copy"
msgstr "Utforska arbetskopia"
-#: git-gui.sh:2307
+#: git-gui.sh:2483
msgid "Browse Current Branch's Files"
msgstr "Bläddra i grenens filer"
-#: git-gui.sh:2311
+#: git-gui.sh:2487
msgid "Browse Branch Files..."
msgstr "Bläddra filer på gren..."
-#: git-gui.sh:2316
+#: git-gui.sh:2492
msgid "Visualize Current Branch's History"
msgstr "Visualisera grenens historik"
-#: git-gui.sh:2320
+#: git-gui.sh:2496
msgid "Visualize All Branch History"
msgstr "Visualisera alla grenars historik"
-#: git-gui.sh:2327
+#: git-gui.sh:2503
#, tcl-format
msgid "Browse %s's Files"
msgstr "Bläddra i filer för %s"
-#: git-gui.sh:2329
+#: git-gui.sh:2505
#, tcl-format
msgid "Visualize %s's History"
msgstr "Visualisera historik för %s"
-#: git-gui.sh:2334 lib/database.tcl:27 lib/database.tcl:67
+#: git-gui.sh:2510 lib/database.tcl:27 lib/database.tcl:67
msgid "Database Statistics"
msgstr "Databasstatistik"
-#: git-gui.sh:2337 lib/database.tcl:34
+#: git-gui.sh:2513 lib/database.tcl:34
msgid "Compress Database"
msgstr "Komprimera databas"
-#: git-gui.sh:2340
+#: git-gui.sh:2516
msgid "Verify Database"
msgstr "Verifiera databas"
-#: git-gui.sh:2347 git-gui.sh:2351 git-gui.sh:2355 lib/shortcut.tcl:7
-#: lib/shortcut.tcl:39 lib/shortcut.tcl:71
+#: git-gui.sh:2523 git-gui.sh:2527 git-gui.sh:2531 lib/shortcut.tcl:8
+#: lib/shortcut.tcl:40 lib/shortcut.tcl:72
msgid "Create Desktop Icon"
msgstr "Skapa skrivbordsikon"
-#: git-gui.sh:2363 lib/choose_repository.tcl:183 lib/choose_repository.tcl:191
+#: git-gui.sh:2539 lib/choose_repository.tcl:183 lib/choose_repository.tcl:191
msgid "Quit"
msgstr "Avsluta"
-#: git-gui.sh:2371
+#: git-gui.sh:2547
msgid "Undo"
msgstr "Ångra"
-#: git-gui.sh:2374
+#: git-gui.sh:2550
msgid "Redo"
msgstr "Gör om"
-#: git-gui.sh:2378 git-gui.sh:2937
+#: git-gui.sh:2554 git-gui.sh:3109
msgid "Cut"
msgstr "Klipp ut"
-#: git-gui.sh:2381 git-gui.sh:2940 git-gui.sh:3014 git-gui.sh:3096
+#: git-gui.sh:2557 git-gui.sh:3112 git-gui.sh:3186 git-gui.sh:3259
#: lib/console.tcl:69
msgid "Copy"
msgstr "Kopiera"
-#: git-gui.sh:2384 git-gui.sh:2943
+#: git-gui.sh:2560 git-gui.sh:3115
msgid "Paste"
msgstr "Klistra in"
-#: git-gui.sh:2387 git-gui.sh:2946 lib/branch_delete.tcl:26
+#: git-gui.sh:2563 git-gui.sh:3118 lib/branch_delete.tcl:26
#: lib/remote_branch_delete.tcl:38
msgid "Delete"
msgstr "Ta bort"
-#: git-gui.sh:2391 git-gui.sh:2950 git-gui.sh:3100 lib/console.tcl:71
+#: git-gui.sh:2567 git-gui.sh:3122 git-gui.sh:3263 lib/console.tcl:71
msgid "Select All"
msgstr "Markera alla"
-#: git-gui.sh:2400
+#: git-gui.sh:2576
msgid "Create..."
msgstr "Skapa..."
-#: git-gui.sh:2406
+#: git-gui.sh:2582
msgid "Checkout..."
msgstr "Checka ut..."
-#: git-gui.sh:2412
+#: git-gui.sh:2588
msgid "Rename..."
msgstr "Byt namn..."
-#: git-gui.sh:2417
+#: git-gui.sh:2593
msgid "Delete..."
msgstr "Ta bort..."
-#: git-gui.sh:2422
+#: git-gui.sh:2598
msgid "Reset..."
msgstr "Återställ..."
-#: git-gui.sh:2432
+#: git-gui.sh:2608
msgid "Done"
msgstr "Färdig"
-#: git-gui.sh:2434
+#: git-gui.sh:2610
msgid "Commit@@verb"
msgstr "Checka in"
-#: git-gui.sh:2443 git-gui.sh:2878
+#: git-gui.sh:2619 git-gui.sh:3050
msgid "New Commit"
msgstr "Ny incheckning"
-#: git-gui.sh:2451 git-gui.sh:2885
+#: git-gui.sh:2627 git-gui.sh:3057
msgid "Amend Last Commit"
msgstr "Lägg till föregående incheckning"
-#: git-gui.sh:2461 git-gui.sh:2839 lib/remote_branch_delete.tcl:99
+#: git-gui.sh:2637 git-gui.sh:3011 lib/remote_branch_delete.tcl:99
msgid "Rescan"
msgstr "Sök på nytt"
-#: git-gui.sh:2467
+#: git-gui.sh:2643
msgid "Stage To Commit"
msgstr "Köa för incheckning"
-#: git-gui.sh:2473
+#: git-gui.sh:2649
msgid "Stage Changed Files To Commit"
msgstr "Köa ändrade filer för incheckning"
-#: git-gui.sh:2479
+#: git-gui.sh:2655
msgid "Unstage From Commit"
msgstr "Ta bort från incheckningskö"
-#: git-gui.sh:2484 lib/index.tcl:410
+#: git-gui.sh:2661 lib/index.tcl:412
msgid "Revert Changes"
msgstr "Återställ ändringar"
-#: git-gui.sh:2491 git-gui.sh:3083
+#: git-gui.sh:2669 git-gui.sh:3310 git-gui.sh:3341
msgid "Show Less Context"
msgstr "Visa mindre sammanhang"
-#: git-gui.sh:2495 git-gui.sh:3087
+#: git-gui.sh:2673 git-gui.sh:3314 git-gui.sh:3345
msgid "Show More Context"
msgstr "Visa mer sammanhang"
-#: git-gui.sh:2502 git-gui.sh:2852 git-gui.sh:2961
+#: git-gui.sh:2680 git-gui.sh:3024 git-gui.sh:3133
msgid "Sign Off"
msgstr "Skriv under"
-#: git-gui.sh:2518
+#: git-gui.sh:2696
msgid "Local Merge..."
msgstr "Lokal sammanslagning..."
-#: git-gui.sh:2523
+#: git-gui.sh:2701
msgid "Abort Merge..."
msgstr "Avbryt sammanslagning..."
-#: git-gui.sh:2535 git-gui.sh:2575
+#: git-gui.sh:2713 git-gui.sh:2741
msgid "Add..."
msgstr "Lägg till..."
-#: git-gui.sh:2539
+#: git-gui.sh:2717
msgid "Push..."
msgstr "Sänd..."
-#: git-gui.sh:2543
+#: git-gui.sh:2721
msgid "Delete Branch..."
msgstr "Ta bort gren..."
-#: git-gui.sh:2553 git-gui.sh:2589 lib/about.tcl:14
-#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:53
-#, tcl-format
-msgid "About %s"
-msgstr "Om %s"
-
-#: git-gui.sh:2557
-msgid "Preferences..."
-msgstr "Inställningar..."
-
-#: git-gui.sh:2565 git-gui.sh:3129
+#: git-gui.sh:2731 git-gui.sh:3292
msgid "Options..."
msgstr "Alternativ..."
-#: git-gui.sh:2576
+#: git-gui.sh:2742
msgid "Remove..."
msgstr "Ta bort..."
-#: git-gui.sh:2585 lib/choose_repository.tcl:50
+#: git-gui.sh:2751 lib/choose_repository.tcl:50
msgid "Help"
msgstr "Hjälp"
-#: git-gui.sh:2611
+#: git-gui.sh:2755 git-gui.sh:2759 lib/about.tcl:14
+#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:53
+#, tcl-format
+msgid "About %s"
+msgstr "Om %s"
+
+#: git-gui.sh:2783
msgid "Online Documentation"
msgstr "Webbdokumentation"
-#: git-gui.sh:2614 lib/choose_repository.tcl:47 lib/choose_repository.tcl:56
+#: git-gui.sh:2786 lib/choose_repository.tcl:47 lib/choose_repository.tcl:56
msgid "Show SSH Key"
msgstr "Visa SSH-nyckel"
-#: git-gui.sh:2721
+#: git-gui.sh:2893
#, tcl-format
msgid "fatal: cannot stat path %s: No such file or directory"
msgstr ""
"ödesdigert: kunde inte ta status på sökvägen %s: Fil eller katalog saknas"
-#: git-gui.sh:2754
+#: git-gui.sh:2926
msgid "Current Branch:"
msgstr "Aktuell gren:"
-#: git-gui.sh:2775
+#: git-gui.sh:2947
msgid "Staged Changes (Will Commit)"
msgstr "Köade ändringar (kommer att checkas in)"
-#: git-gui.sh:2795
+#: git-gui.sh:2967
msgid "Unstaged Changes"
msgstr "Oköade ändringar"
-#: git-gui.sh:2845
+#: git-gui.sh:3017
msgid "Stage Changed"
msgstr "Köa ändrade"
-#: git-gui.sh:2864 lib/transport.tcl:104 lib/transport.tcl:193
+#: git-gui.sh:3036 lib/transport.tcl:104 lib/transport.tcl:193
msgid "Push"
msgstr "Sänd"
-#: git-gui.sh:2899
+#: git-gui.sh:3071
msgid "Initial Commit Message:"
msgstr "Inledande incheckningsmeddelande:"
-#: git-gui.sh:2900
+#: git-gui.sh:3072
msgid "Amended Commit Message:"
msgstr "Utökat incheckningsmeddelande:"
-#: git-gui.sh:2901
+#: git-gui.sh:3073
msgid "Amended Initial Commit Message:"
msgstr "Utökat inledande incheckningsmeddelande:"
-#: git-gui.sh:2902
+#: git-gui.sh:3074
msgid "Amended Merge Commit Message:"
msgstr "Utökat incheckningsmeddelande för sammanslagning:"
-#: git-gui.sh:2903
+#: git-gui.sh:3075
msgid "Merge Commit Message:"
msgstr "Incheckningsmeddelande för sammanslagning:"
-#: git-gui.sh:2904
+#: git-gui.sh:3076
msgid "Commit Message:"
msgstr "Incheckningsmeddelande:"
-#: git-gui.sh:2953 git-gui.sh:3104 lib/console.tcl:73
+#: git-gui.sh:3125 git-gui.sh:3267 lib/console.tcl:73
msgid "Copy All"
msgstr "Kopiera alla"
-#: git-gui.sh:2977 lib/blame.tcl:104
+#: git-gui.sh:3149 lib/blame.tcl:104
msgid "File:"
msgstr "Fil:"
-#: git-gui.sh:3092
+#: git-gui.sh:3255
msgid "Refresh"
msgstr "Uppdatera"
-#: git-gui.sh:3113
+#: git-gui.sh:3276
msgid "Decrease Font Size"
msgstr "Minska teckensnittsstorlek"
-#: git-gui.sh:3117
+#: git-gui.sh:3280
msgid "Increase Font Size"
msgstr "Öka teckensnittsstorlek"
-#: git-gui.sh:3125 lib/blame.tcl:281
+#: git-gui.sh:3288 lib/blame.tcl:281
msgid "Encoding"
msgstr "Teckenkodning"
-#: git-gui.sh:3136
+#: git-gui.sh:3299
msgid "Apply/Reverse Hunk"
msgstr "Använd/återställ del"
-#: git-gui.sh:3141
+#: git-gui.sh:3304
msgid "Apply/Reverse Line"
msgstr "Använd/återställ rad"
-#: git-gui.sh:3151
+#: git-gui.sh:3323
msgid "Run Merge Tool"
msgstr "Starta verktyg för sammanslagning"
-#: git-gui.sh:3156
+#: git-gui.sh:3328
msgid "Use Remote Version"
msgstr "Använd versionen från fjärrarkivet"
-#: git-gui.sh:3160
+#: git-gui.sh:3332
msgid "Use Local Version"
msgstr "Använd lokala versionen"
-#: git-gui.sh:3164
+#: git-gui.sh:3336
msgid "Revert To Base"
msgstr "Återställ till basversionen"
-#: git-gui.sh:3183
+#: git-gui.sh:3354
+msgid "Visualize These Changes In The Submodule"
+msgstr "Visualisera ändringarna i undermodulen"
+
+#: git-gui.sh:3358
+msgid "Visualize Current Branch History In The Submodule"
+msgstr "Visualisera grenens historik i undermodulen"
+
+#: git-gui.sh:3362
+msgid "Visualize All Branch History In The Submodule"
+msgstr "Visualisera alla grenars historik i undermodulen"
+
+#: git-gui.sh:3367
+msgid "Start git gui In The Submodule"
+msgstr "Starta git gui i undermodulen"
+
+#: git-gui.sh:3389
msgid "Unstage Hunk From Commit"
msgstr "Ta bort del ur incheckningskö"
-#: git-gui.sh:3184
+#: git-gui.sh:3391
+msgid "Unstage Lines From Commit"
+msgstr "Ta bort rader ur incheckningskö"
+
+#: git-gui.sh:3393
msgid "Unstage Line From Commit"
msgstr "Ta bort rad ur incheckningskö"
-#: git-gui.sh:3186
+#: git-gui.sh:3396
msgid "Stage Hunk For Commit"
msgstr "Ställ del i incheckningskö"
-#: git-gui.sh:3187
+#: git-gui.sh:3398
+msgid "Stage Lines For Commit"
+msgstr "Ställ rader i incheckningskö"
+
+#: git-gui.sh:3400
msgid "Stage Line For Commit"
msgstr "Ställ rad i incheckningskö"
-#: git-gui.sh:3210
+#: git-gui.sh:3424
msgid "Initializing..."
msgstr "Initierar..."
-#: git-gui.sh:3315
+#: git-gui.sh:3541
#, tcl-format
msgid ""
"Possible environment issues exist.\n"
"av %s:\n"
"\n"
-#: git-gui.sh:3345
+#: git-gui.sh:3570
msgid ""
"\n"
"This is due to a known issue with the\n"
"Detta beror på ett känt problem med\n"
"Tcl-binären som följer med Cygwin."
-#: git-gui.sh:3350
+#: git-gui.sh:3575
#, tcl-format
msgid ""
"\n"
msgid "Unable to display parent"
msgstr "Kan inte visa förälder"
-#: lib/blame.tcl:1091 lib/diff.tcl:297
+#: lib/blame.tcl:1091 lib/diff.tcl:320
msgid "Error loading diff:"
msgstr "Fel vid inläsning av differens:"
#: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35
#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282
-#: lib/checkout_op.tcl:544 lib/choose_font.tcl:43 lib/merge.tcl:172
+#: lib/checkout_op.tcl:579 lib/choose_font.tcl:43 lib/merge.tcl:172
#: lib/option.tcl:125 lib/remote_add.tcl:32 lib/remote_branch_delete.tcl:42
#: lib/tools_dlg.tcl:40 lib/tools_dlg.tcl:204 lib/tools_dlg.tcl:352
#: lib/transport.tcl:108
msgid "Create New Branch"
msgstr "Skapa ny gren"
-#: lib/branch_create.tcl:31 lib/choose_repository.tcl:377
+#: lib/branch_create.tcl:31 lib/choose_repository.tcl:381
msgid "Create"
msgstr "Skapa"
msgid "Fast Forward Only"
msgstr "Endast snabbspolning"
-#: lib/branch_create.tcl:85 lib/checkout_op.tcl:536
+#: lib/branch_create.tcl:85 lib/checkout_op.tcl:571
msgid "Reset"
msgstr "Återställ"
msgid "Delete Only If Merged Into"
msgstr "Ta bara bort om sammanslagen med"
-#: lib/branch_delete.tcl:54
-msgid "Always (Do not perform merge test.)"
-msgstr "Alltid (utför inte sammanslagningstest)."
+#: lib/branch_delete.tcl:54 lib/remote_branch_delete.tcl:119
+msgid "Always (Do not perform merge checks)"
+msgstr "Alltid (utför inte sammanslagningstest)"
#: lib/branch_delete.tcl:103
#, tcl-format
msgid "The following branches are not completely merged into %s:"
msgstr "Följande grenar är inte till fullo sammanslagna med %s:"
+#: lib/branch_delete.tcl:115 lib/remote_branch_delete.tcl:217
+msgid ""
+"Recovering deleted branches is difficult.\n"
+"\n"
+"Delete the selected branches?"
+msgstr ""
+"Det kan vara svårt att återställa borttagna grenar.\n"
+"\n"
+"Ta bort de valda grenarna?"
+
#: lib/branch_delete.tcl:141
#, tcl-format
msgid ""
msgid "Please select a branch to rename."
msgstr "Välj en gren att byta namn på."
-#: lib/branch_rename.tcl:96 lib/checkout_op.tcl:201
+#: lib/branch_rename.tcl:96 lib/checkout_op.tcl:202
#, tcl-format
msgid "Branch '%s' already exists."
msgstr "Grenen \"%s\" finns redan."
msgid "Browse Branch Files"
msgstr "Bläddra filer på grenen"
-#: lib/browser.tcl:278 lib/choose_repository.tcl:394
-#: lib/choose_repository.tcl:480 lib/choose_repository.tcl:491
-#: lib/choose_repository.tcl:995
+#: lib/browser.tcl:278 lib/choose_repository.tcl:398
+#: lib/choose_repository.tcl:486 lib/choose_repository.tcl:497
+#: lib/choose_repository.tcl:1028
msgid "Browse"
msgstr "Bläddra"
-#: lib/checkout_op.tcl:84
+#: lib/checkout_op.tcl:85
#, tcl-format
msgid "Fetching %s from %s"
msgstr "Hämtar %s från %s"
-#: lib/checkout_op.tcl:132
+#: lib/checkout_op.tcl:133
#, tcl-format
msgid "fatal: Cannot resolve %s"
msgstr "ödesdigert: Kunde inte slå upp %s"
-#: lib/checkout_op.tcl:145 lib/console.tcl:81 lib/database.tcl:31
+#: lib/checkout_op.tcl:146 lib/console.tcl:81 lib/database.tcl:31
#: lib/sshkey.tcl:53
msgid "Close"
msgstr "Stäng"
-#: lib/checkout_op.tcl:174
+#: lib/checkout_op.tcl:175
#, tcl-format
msgid "Branch '%s' does not exist."
msgstr "Grenen \"%s\" finns inte."
-#: lib/checkout_op.tcl:193
+#: lib/checkout_op.tcl:194
#, tcl-format
msgid "Failed to configure simplified git-pull for '%s'."
msgstr "Kunde inte konfigurera förenklad git-pull för '%s'."
-#: lib/checkout_op.tcl:228
+#: lib/checkout_op.tcl:229
#, tcl-format
msgid ""
"Branch '%s' already exists.\n"
"Den kan inte snabbspolas till %s.\n"
"En sammanslagning krävs."
-#: lib/checkout_op.tcl:242
+#: lib/checkout_op.tcl:243
#, tcl-format
msgid "Merge strategy '%s' not supported."
msgstr "Sammanslagningsstrategin \"%s\" stöds inte."
-#: lib/checkout_op.tcl:261
+#: lib/checkout_op.tcl:262
#, tcl-format
msgid "Failed to update '%s'."
msgstr "Misslyckades med att uppdatera \"%s\"."
-#: lib/checkout_op.tcl:273
+#: lib/checkout_op.tcl:274
msgid "Staging area (index) is already locked."
msgstr "Köområdet (index) är redan låst."
-#: lib/checkout_op.tcl:288
+#: lib/checkout_op.tcl:289
msgid ""
"Last scanned state does not match repository state.\n"
"\n"
"\n"
"Sökningen kommer att startas automatiskt nu.\n"
-#: lib/checkout_op.tcl:344
+#: lib/checkout_op.tcl:345
#, tcl-format
msgid "Updating working directory to '%s'..."
msgstr "Uppdaterar arbetskatalogen till \"%s\"..."
-#: lib/checkout_op.tcl:345
+#: lib/checkout_op.tcl:346
msgid "files checked out"
msgstr "filer utcheckade"
-#: lib/checkout_op.tcl:375
+#: lib/checkout_op.tcl:376
#, tcl-format
msgid "Aborted checkout of '%s' (file level merging is required)."
msgstr "Avbryter utcheckning av \"%s\" (sammanslagning på filnivå krävs)."
-#: lib/checkout_op.tcl:376
+#: lib/checkout_op.tcl:377
msgid "File level merge required."
msgstr "Sammanslagning på filnivå krävs."
-#: lib/checkout_op.tcl:380
+#: lib/checkout_op.tcl:381
#, tcl-format
msgid "Staying on branch '%s'."
msgstr "Stannar på grenen \"%s\"."
-#: lib/checkout_op.tcl:451
+#: lib/checkout_op.tcl:452
msgid ""
"You are no longer on a local branch.\n"
"\n"
"Om du ville vara på en gren skapar du en nu, baserad på \"Denna frånkopplade "
"utcheckning\"."
-#: lib/checkout_op.tcl:468 lib/checkout_op.tcl:472
+#: lib/checkout_op.tcl:503 lib/checkout_op.tcl:507
#, tcl-format
msgid "Checked out '%s'."
msgstr "Checkade ut \"%s\"."
-#: lib/checkout_op.tcl:500
+#: lib/checkout_op.tcl:535
#, tcl-format
msgid "Resetting '%s' to '%s' will lose the following commits:"
msgstr ""
"Om du återställer \"%s\" till \"%s\" går följande incheckningar förlorade:"
-#: lib/checkout_op.tcl:522
+#: lib/checkout_op.tcl:557
msgid "Recovering lost commits may not be easy."
msgstr "Det kanske inte är så enkelt att återskapa förlorade incheckningar."
-#: lib/checkout_op.tcl:527
+#: lib/checkout_op.tcl:562
#, tcl-format
msgid "Reset '%s'?"
msgstr "Återställa \"%s\"?"
-#: lib/checkout_op.tcl:532 lib/merge.tcl:164 lib/tools_dlg.tcl:343
+#: lib/checkout_op.tcl:567 lib/merge.tcl:164 lib/tools_dlg.tcl:343
msgid "Visualize"
msgstr "Visualisera"
-#: lib/checkout_op.tcl:600
+#: lib/checkout_op.tcl:635
#, tcl-format
msgid ""
"Failed to set current branch.\n"
msgid "Git Gui"
msgstr "Git Gui"
-#: lib/choose_repository.tcl:87 lib/choose_repository.tcl:382
+#: lib/choose_repository.tcl:87 lib/choose_repository.tcl:386
msgid "Create New Repository"
msgstr "Skapa nytt arkiv"
msgid "New..."
msgstr "Nytt..."
-#: lib/choose_repository.tcl:100 lib/choose_repository.tcl:465
+#: lib/choose_repository.tcl:100 lib/choose_repository.tcl:471
msgid "Clone Existing Repository"
msgstr "Klona befintligt arkiv"
msgid "Clone..."
msgstr "Klona..."
-#: lib/choose_repository.tcl:113 lib/choose_repository.tcl:983
+#: lib/choose_repository.tcl:113 lib/choose_repository.tcl:1016
msgid "Open Existing Repository"
msgstr "Öppna befintligt arkiv"
msgid "Open Recent Repository:"
msgstr "Öppna tidigare arkiv:"
-#: lib/choose_repository.tcl:302 lib/choose_repository.tcl:309
-#: lib/choose_repository.tcl:316
+#: lib/choose_repository.tcl:306 lib/choose_repository.tcl:313
+#: lib/choose_repository.tcl:320
#, tcl-format
msgid "Failed to create repository %s:"
msgstr "Kunde inte skapa arkivet %s:"
-#: lib/choose_repository.tcl:387
+#: lib/choose_repository.tcl:391
msgid "Directory:"
msgstr "Katalog:"
-#: lib/choose_repository.tcl:417 lib/choose_repository.tcl:544
-#: lib/choose_repository.tcl:1017
+#: lib/choose_repository.tcl:423 lib/choose_repository.tcl:550
+#: lib/choose_repository.tcl:1052
msgid "Git Repository"
msgstr "Gitarkiv"
-#: lib/choose_repository.tcl:442
+#: lib/choose_repository.tcl:448
#, tcl-format
msgid "Directory %s already exists."
msgstr "Katalogen %s finns redan."
-#: lib/choose_repository.tcl:446
+#: lib/choose_repository.tcl:452
#, tcl-format
msgid "File %s already exists."
msgstr "Filen %s finns redan."
-#: lib/choose_repository.tcl:460
+#: lib/choose_repository.tcl:466
msgid "Clone"
msgstr "Klona"
-#: lib/choose_repository.tcl:473
+#: lib/choose_repository.tcl:479
msgid "Source Location:"
msgstr "Plats för källkod:"
-#: lib/choose_repository.tcl:484
+#: lib/choose_repository.tcl:490
msgid "Target Directory:"
msgstr "Målkatalog:"
-#: lib/choose_repository.tcl:496
+#: lib/choose_repository.tcl:502
msgid "Clone Type:"
msgstr "Typ av klon:"
-#: lib/choose_repository.tcl:502
+#: lib/choose_repository.tcl:508
msgid "Standard (Fast, Semi-Redundant, Hardlinks)"
msgstr "Standard (snabb, semiredundant, hårda länkar)"
-#: lib/choose_repository.tcl:508
+#: lib/choose_repository.tcl:514
msgid "Full Copy (Slower, Redundant Backup)"
msgstr "Full kopia (långsammare, redundant säkerhetskopia)"
-#: lib/choose_repository.tcl:514
+#: lib/choose_repository.tcl:520
msgid "Shared (Fastest, Not Recommended, No Backup)"
msgstr "Delad (snabbast, rekommenderas ej, ingen säkerhetskopia)"
-#: lib/choose_repository.tcl:550 lib/choose_repository.tcl:597
-#: lib/choose_repository.tcl:743 lib/choose_repository.tcl:813
-#: lib/choose_repository.tcl:1023 lib/choose_repository.tcl:1031
+#: lib/choose_repository.tcl:556 lib/choose_repository.tcl:603
+#: lib/choose_repository.tcl:749 lib/choose_repository.tcl:819
+#: lib/choose_repository.tcl:1058 lib/choose_repository.tcl:1066
#, tcl-format
msgid "Not a Git repository: %s"
msgstr "Inte ett Gitarkiv: %s"
-#: lib/choose_repository.tcl:586
+#: lib/choose_repository.tcl:592
msgid "Standard only available for local repository."
msgstr "Standard är endast tillgängligt för lokala arkiv."
-#: lib/choose_repository.tcl:590
+#: lib/choose_repository.tcl:596
msgid "Shared only available for local repository."
msgstr "Delat är endast tillgängligt för lokala arkiv."
-#: lib/choose_repository.tcl:611
+#: lib/choose_repository.tcl:617
#, tcl-format
msgid "Location %s already exists."
msgstr "Platsen %s finns redan."
-#: lib/choose_repository.tcl:622
+#: lib/choose_repository.tcl:628
msgid "Failed to configure origin"
msgstr "Kunde inte konfigurera ursprung"
-#: lib/choose_repository.tcl:634
+#: lib/choose_repository.tcl:640
msgid "Counting objects"
msgstr "Räknar objekt"
-#: lib/choose_repository.tcl:635
+#: lib/choose_repository.tcl:641
msgid "buckets"
msgstr "hinkar"
-#: lib/choose_repository.tcl:659
+#: lib/choose_repository.tcl:665
#, tcl-format
msgid "Unable to copy objects/info/alternates: %s"
msgstr "Kunde inte kopiera objekt/info/alternativ: %s"
-#: lib/choose_repository.tcl:695
+#: lib/choose_repository.tcl:701
#, tcl-format
msgid "Nothing to clone from %s."
msgstr "Ingenting att klona från %s."
-#: lib/choose_repository.tcl:697 lib/choose_repository.tcl:911
-#: lib/choose_repository.tcl:923
+#: lib/choose_repository.tcl:703 lib/choose_repository.tcl:917
+#: lib/choose_repository.tcl:929
msgid "The 'master' branch has not been initialized."
msgstr "Grenen \"master\" har inte initierats."
-#: lib/choose_repository.tcl:710
+#: lib/choose_repository.tcl:716
msgid "Hardlinks are unavailable. Falling back to copying."
msgstr "Hårda länkar är inte tillgängliga. Faller tillbaka på kopiering."
-#: lib/choose_repository.tcl:722
+#: lib/choose_repository.tcl:728
#, tcl-format
msgid "Cloning from %s"
msgstr "Klonar från %s"
-#: lib/choose_repository.tcl:753
+#: lib/choose_repository.tcl:759
msgid "Copying objects"
msgstr "Kopierar objekt"
-#: lib/choose_repository.tcl:754
+#: lib/choose_repository.tcl:760
msgid "KiB"
msgstr "KiB"
-#: lib/choose_repository.tcl:778
+#: lib/choose_repository.tcl:784
#, tcl-format
msgid "Unable to copy object: %s"
msgstr "Kunde inte kopiera objekt: %s"
-#: lib/choose_repository.tcl:788
+#: lib/choose_repository.tcl:794
msgid "Linking objects"
msgstr "Länkar objekt"
-#: lib/choose_repository.tcl:789
+#: lib/choose_repository.tcl:795
msgid "objects"
msgstr "objekt"
-#: lib/choose_repository.tcl:797
+#: lib/choose_repository.tcl:803
#, tcl-format
msgid "Unable to hardlink object: %s"
msgstr "Kunde inte hårdlänka objekt: %s"
-#: lib/choose_repository.tcl:852
+#: lib/choose_repository.tcl:858
msgid "Cannot fetch branches and objects. See console output for details."
msgstr "Kunde inte hämta grenar och objekt. Se konsolutdata för detaljer."
-#: lib/choose_repository.tcl:863
+#: lib/choose_repository.tcl:869
msgid "Cannot fetch tags. See console output for details."
msgstr "Kunde inte hämta taggar. Se konsolutdata för detaljer."
-#: lib/choose_repository.tcl:887
+#: lib/choose_repository.tcl:893
msgid "Cannot determine HEAD. See console output for details."
msgstr "Kunde inte avgöra HEAD. Se konsolutdata för detaljer."
-#: lib/choose_repository.tcl:896
+#: lib/choose_repository.tcl:902
#, tcl-format
msgid "Unable to cleanup %s"
msgstr "Kunde inte städa upp %s"
-#: lib/choose_repository.tcl:902
+#: lib/choose_repository.tcl:908
msgid "Clone failed."
msgstr "Kloning misslyckades."
-#: lib/choose_repository.tcl:909
+#: lib/choose_repository.tcl:915
msgid "No default branch obtained."
msgstr "Hämtade ingen standardgren."
-#: lib/choose_repository.tcl:920
+#: lib/choose_repository.tcl:926
#, tcl-format
msgid "Cannot resolve %s as a commit."
msgstr "Kunde inte slå upp %s till någon incheckning."
-#: lib/choose_repository.tcl:932
+#: lib/choose_repository.tcl:938
msgid "Creating working directory"
msgstr "Skapar arbetskatalog"
-#: lib/choose_repository.tcl:933 lib/index.tcl:65 lib/index.tcl:128
-#: lib/index.tcl:196
+#: lib/choose_repository.tcl:939 lib/index.tcl:67 lib/index.tcl:130
+#: lib/index.tcl:198
msgid "files"
msgstr "filer"
-#: lib/choose_repository.tcl:962
+#: lib/choose_repository.tcl:968
msgid "Initial file checkout failed."
msgstr "Inledande filutcheckning misslyckades."
-#: lib/choose_repository.tcl:978
+#: lib/choose_repository.tcl:1011
msgid "Open"
msgstr "Öppna"
-#: lib/choose_repository.tcl:988
+#: lib/choose_repository.tcl:1021
msgid "Repository:"
msgstr "Arkiv:"
-#: lib/choose_repository.tcl:1037
+#: lib/choose_repository.tcl:1072
#, tcl-format
msgid "Failed to open repository %s:"
msgstr "Kunde inte öppna arkivet %s:"
msgid "Invalid GIT_COMMITTER_IDENT:"
msgstr "Felaktig GIT_COMMITTER_IDENT:"
-#: lib/commit.tcl:132
+#: lib/commit.tcl:129
+#, tcl-format
+msgid "warning: Tcl does not support encoding '%s'."
+msgstr "varning: Tcl stöder inte teckenkodningen \"%s\"."
+
+#: lib/commit.tcl:149
msgid ""
"Last scanned state does not match repository state.\n"
"\n"
"\n"
"Sökningen kommer att startas automatiskt nu.\n"
-#: lib/commit.tcl:155
+#: lib/commit.tcl:172
#, tcl-format
msgid ""
"Unmerged files cannot be committed.\n"
"Filen %s har sammanslagningskonflikter. Du måste lösa dem och köa filen "
"innan du checkar in den.\n"
-#: lib/commit.tcl:163
+#: lib/commit.tcl:180
#, tcl-format
msgid ""
"Unknown file state %s detected.\n"
"\n"
"Filen %s kan inte checkas in av programmet.\n"
-#: lib/commit.tcl:171
+#: lib/commit.tcl:188
msgid ""
"No changes to commit.\n"
"\n"
"\n"
"Du måste köa åtminstone en fil innan du kan checka in.\n"
-#: lib/commit.tcl:186
+#: lib/commit.tcl:203
msgid ""
"Please supply a commit message.\n"
"\n"
"- Andra raden: Tom\n"
"- Följande rader: Beskriv varför det här är en bra ändring.\n"
-#: lib/commit.tcl:210
-#, tcl-format
-msgid "warning: Tcl does not support encoding '%s'."
-msgstr "varning: Tcl stöder inte teckenkodningen \"%s\"."
-
-#: lib/commit.tcl:226
+#: lib/commit.tcl:234
msgid "Calling pre-commit hook..."
msgstr "Anropar kroken före incheckning (pre-commit)..."
-#: lib/commit.tcl:241
+#: lib/commit.tcl:249
msgid "Commit declined by pre-commit hook."
msgstr "Incheckningen avvisades av kroken före incheckning (pre-commit)."
-#: lib/commit.tcl:264
+#: lib/commit.tcl:272
msgid "Calling commit-msg hook..."
msgstr "Anropar kroken för incheckningsmeddelande (commit-msg)..."
-#: lib/commit.tcl:279
+#: lib/commit.tcl:287
msgid "Commit declined by commit-msg hook."
msgstr "Incheckning avvisad av kroken för incheckningsmeddelande (commit-msg)."
-#: lib/commit.tcl:292
+#: lib/commit.tcl:300
msgid "Committing changes..."
msgstr "Checkar in ändringar..."
-#: lib/commit.tcl:308
+#: lib/commit.tcl:316
msgid "write-tree failed:"
msgstr "write-tree misslyckades:"
-#: lib/commit.tcl:309 lib/commit.tcl:353 lib/commit.tcl:373
+#: lib/commit.tcl:317 lib/commit.tcl:361 lib/commit.tcl:382
msgid "Commit failed."
msgstr "Incheckningen misslyckades."
-#: lib/commit.tcl:326
+#: lib/commit.tcl:334
#, tcl-format
msgid "Commit %s appears to be corrupt"
msgstr "Incheckningen %s verkar vara trasig"
-#: lib/commit.tcl:331
+#: lib/commit.tcl:339
msgid ""
"No changes to commit.\n"
"\n"
"\n"
"En sökning kommer att startas automatiskt nu.\n"
-#: lib/commit.tcl:338
+#: lib/commit.tcl:346
msgid "No changes to commit."
msgstr "Inga ändringar att checka in."
-#: lib/commit.tcl:352
+#: lib/commit.tcl:360
msgid "commit-tree failed:"
msgstr "commit-tree misslyckades:"
-#: lib/commit.tcl:372
+#: lib/commit.tcl:381
msgid "update-ref failed:"
msgstr "update-ref misslyckades:"
-#: lib/commit.tcl:460
+#: lib/commit.tcl:469
#, tcl-format
msgid "Created commit %s: %s"
msgstr "Skapade incheckningen %s: %s"
msgid "Verifying the object database with fsck-objects"
msgstr "Verifierar objektdatabasen med fsck-objects"
-#: lib/database.tcl:108
+#: lib/database.tcl:107
#, tcl-format
msgid ""
"This repository currently has approximately %i loose objects.\n"
"\n"
"To maintain optimal performance it is strongly recommended that you compress "
-"the database when more than %i loose objects exist.\n"
+"the database.\n"
"\n"
"Compress the database now?"
msgstr ""
"Arkivet har för närvarande omkring %i lösa objekt.\n"
"\n"
"För att bibehålla optimal prestanda rekommenderas det å det bestämdaste att "
-"du komprimerar databasen när den innehåller mer än %i lösa objekt.\n"
+"du komprimerar databasen.\n"
"\n"
"Komprimera databasen nu?"
msgid "Invalid date from Git: %s"
msgstr "Ogiltigt datum från Git: %s"
-#: lib/diff.tcl:59
+#: lib/diff.tcl:64
#, tcl-format
msgid ""
"No differences detected.\n"
"En sökning kommer automatiskt att startas för att hitta andra filer som kan "
"vara i samma tillstånd."
-#: lib/diff.tcl:99
+#: lib/diff.tcl:104
#, tcl-format
msgid "Loading diff of %s..."
msgstr "Läser differens för %s..."
-#: lib/diff.tcl:120
+#: lib/diff.tcl:125
msgid ""
"LOCAL: deleted\n"
"REMOTE:\n"
"LOKAL: borttagen\n"
"FJÄRR:\n"
-#: lib/diff.tcl:125
+#: lib/diff.tcl:130
msgid ""
"REMOTE: deleted\n"
"LOCAL:\n"
"FJÄRR: borttagen\n"
"LOKAL:\n"
-#: lib/diff.tcl:132
+#: lib/diff.tcl:137
msgid "LOCAL:\n"
msgstr "LOKAL:\n"
-#: lib/diff.tcl:135
+#: lib/diff.tcl:140
msgid "REMOTE:\n"
msgstr "FJÄRR:\n"
-#: lib/diff.tcl:197 lib/diff.tcl:296
+#: lib/diff.tcl:202 lib/diff.tcl:319
#, tcl-format
msgid "Unable to display %s"
msgstr "Kan inte visa %s"
-#: lib/diff.tcl:198
+#: lib/diff.tcl:203
msgid "Error loading file:"
msgstr "Fel vid läsning av fil:"
-#: lib/diff.tcl:205
+#: lib/diff.tcl:210
msgid "Git Repository (subproject)"
msgstr "Gitarkiv (underprojekt)"
-#: lib/diff.tcl:217
+#: lib/diff.tcl:222
msgid "* Binary file (not showing content)."
msgstr "* Binärfil (visar inte innehållet)."
-#: lib/diff.tcl:222
+#: lib/diff.tcl:227
#, tcl-format
msgid ""
"* Untracked file is %d bytes.\n"
"* Den ospårade filen är %d byte.\n"
"* Visar endast inledande %d byte.\n"
-#: lib/diff.tcl:228
+#: lib/diff.tcl:233
#, tcl-format
msgid ""
"\n"
"* Den ospårade filen klipptes här av %s.\n"
"* För att se hela filen, använd ett externt redigeringsprogram.\n"
-#: lib/diff.tcl:436
+#: lib/diff.tcl:482
msgid "Failed to unstage selected hunk."
msgstr "Kunde inte ta bort den valda delen från kön."
-#: lib/diff.tcl:443
+#: lib/diff.tcl:489
msgid "Failed to stage selected hunk."
msgstr "Kunde inte lägga till den valda delen till kön."
-#: lib/diff.tcl:509
+#: lib/diff.tcl:568
msgid "Failed to unstage selected line."
msgstr "Kunde inte ta bort den valda raden från kön."
-#: lib/diff.tcl:517
+#: lib/diff.tcl:576
msgid "Failed to stage selected line."
msgstr "Kunde inte lägga till den valda raden till kön."
msgid "Index Error"
msgstr "Indexfel"
-#: lib/index.tcl:21
+#: lib/index.tcl:17
msgid ""
"Updating the Git index failed. A rescan will be automatically started to "
"resynchronize git-gui."
"Misslyckades med att uppdatera Gitindexet. En omsökning kommer att startas "
"automatiskt för att synkronisera om git-gui."
-#: lib/index.tcl:27
+#: lib/index.tcl:28
msgid "Continue"
msgstr "Forstätt"
msgid "Unlock Index"
msgstr "Lås upp index"
-#: lib/index.tcl:287
+#: lib/index.tcl:289
#, tcl-format
msgid "Unstaging %s from commit"
msgstr "Tar bort %s för incheckningskön"
-#: lib/index.tcl:326
+#: lib/index.tcl:328
msgid "Ready to commit."
msgstr "Redo att checka in."
-#: lib/index.tcl:339
+#: lib/index.tcl:341
#, tcl-format
msgid "Adding %s"
msgstr "Lägger till %s"
-#: lib/index.tcl:396
+#: lib/index.tcl:398
#, tcl-format
msgid "Revert changes in file %s?"
msgstr "Återställ ändringarna i filen %s?"
-#: lib/index.tcl:398
+#: lib/index.tcl:400
#, tcl-format
msgid "Revert changes in these %i files?"
msgstr "Återställ ändringarna i dessa %i filer?"
-#: lib/index.tcl:406
+#: lib/index.tcl:408
msgid "Any unstaged changes will be permanently lost by the revert."
msgstr ""
"Alla oköade ändringar kommer permanent gå förlorade vid återställningen."
-#: lib/index.tcl:409
+#: lib/index.tcl:411
msgid "Do Nothing"
msgstr "Gör ingenting"
-#: lib/index.tcl:427
+#: lib/index.tcl:429
msgid "Reverting selected files"
msgstr "Återställer valda filer"
-#: lib/index.tcl:431
+#: lib/index.tcl:433
#, tcl-format
msgid "Reverting %s"
msgstr "Återställer %s"
msgid "Merged Into:"
msgstr "Sammanslagen i:"
-#: lib/remote_branch_delete.tcl:119
-msgid "Always (Do not perform merge checks)"
-msgstr "Alltid (utför inte sammanslagningstest)"
-
#: lib/remote_branch_delete.tcl:152
msgid "A branch is required for 'Merged Into'."
msgstr "En gren krävs för \"Sammanslagen i\"."
msgid "Please select one or more branches to delete."
msgstr "Välj en eller flera grenar att ta bort."
-#: lib/remote_branch_delete.tcl:216
-msgid ""
-"Recovering deleted branches is difficult.\n"
-"\n"
-"Delete the selected branches?"
-msgstr ""
-"Det kan vara svårt att återställa borttagna grenar.\n"
-"\n"
-"Ta bort de valda grenarna?"
-
#: lib/remote_branch_delete.tcl:226
#, tcl-format
msgid "Deleting branches from %s"
msgstr "Tar bort grenar från %s"
-#: lib/remote_branch_delete.tcl:286
+#: lib/remote_branch_delete.tcl:292
msgid "No repository selected."
msgstr "Inget arkiv markerat."
-#: lib/remote_branch_delete.tcl:291
+#: lib/remote_branch_delete.tcl:297
#, tcl-format
msgid "Scanning %s..."
msgstr "Söker %s..."
msgid "Case-Sensitive"
msgstr "Skilj på VERSALER/gemener"
-#: lib/shortcut.tcl:20 lib/shortcut.tcl:61
+#: lib/shortcut.tcl:21 lib/shortcut.tcl:62
msgid "Cannot write shortcut:"
msgstr "Kan inte skriva genväg:"
-#: lib/shortcut.tcl:136
+#: lib/shortcut.tcl:137
msgid "Cannot write icon:"
msgstr "Kan inte skriva ikon:"
msgid "Include tags"
msgstr "Ta med taggar"
+#~ msgid "Cannot use funny .git directory:"
+#~ msgstr "Kan inte använda underlig .git-katalog:"
+
+#~ msgid "Preferences..."
+#~ msgstr "Inställningar..."
+
+#~ msgid "Always (Do not perform merge test.)"
+#~ msgstr "Alltid (utför inte sammanslagningstest)."
+
#~ msgid "URL:"
#~ msgstr "Webbadress:"
else
# plain-old CGI
resolve_full_httpd
- list_mods=$(echo "$full_httpd" | sed "s/-f$/-l/")
+ list_mods=$(echo "$full_httpd" | sed 's/-f$/-l/')
$list_mods | sane_grep 'mod_cgi\.c' >/dev/null 2>&1 || \
if test -f "$module_path/mod_cgi.so"
then
+#!/bin/sh
# git-mergetool--lib is a library for common merge tool functions
diff_mode() {
test "$TOOL_MODE" = diff
sed -e 1d -e '2,/^./{
/^$/d
}' <"$SQUASH_MSG".bak
- } >$SQUASH_MSG
+ } >"$SQUASH_MSG"
else
commit_message HEAD > "$FIXUP_MSG" || die "Cannot write $FIXUP_MSG"
COUNT=2
echo "# The first commit's message is:"
echo
cat "$FIXUP_MSG"
- } >$SQUASH_MSG
+ } >"$SQUASH_MSG"
fi
case $1 in
squash)
echo
commit_message $2 | sed -e 's/^/# /'
;;
- esac >>$SQUASH_MSG
+ esac >>"$SQUASH_MSG"
}
peek_next_command () {
- sed -n -e "/^#/d" -e "/^$/d" -e "s/ .*//p" -e "q" < "$TODO"
+ sed -n -e "/^#/d" -e '/^$/d' -e "s/ .*//p" -e "q" < "$TODO"
}
# A squash/fixup has failed. Prepare the long version of the squash
printf "Already applied: %0${prec}d " $msgnum
fi
fi
- if test -z "$GIT_QUIET"
- then
- git rev-list --pretty=oneline -1 "$cmt" | sed -e 's/^[^ ]* //'
- fi
+ test -z "$GIT_QUIET" &&
+ GIT_PAGER='' git log --format=%s -1 "$cmt"
prev_head=`git rev-parse HEAD^0`
# save the resulting commit so we can read-tree on it later
status=1
fi
-echo "The following changes since commit $baserev:"
-git shortlog --max-count=1 $baserev | sed -e 's/^\(.\)/ \1/'
+git show -s --format='The following changes since commit %H:
-echo "are available in the git repository at:"
-echo
+ %s (%ci)
+
+are available in the git repository at:' $baserev
echo " $url $branch"
echo
}
apply_stash () {
+ applied_stash=
unstash_index=
while test $# != 0
if test $# = 0
then
have_stash || die 'Nothing to apply'
+ applied_stash="$ref_stash@{0}"
+ else
+ applied_stash="$*"
fi
# stash records the work tree, and is a merge between the
shift
if apply_stash "$@"
then
- test -z "$unstash_index" || shift
- drop_stash "$@"
+ drop_stash "$applied_stash"
fi
;;
branch)
$ENV{SVN_SSH} = $ENV{GIT_SSH};
if ($^O eq 'msys') {
$ENV{SVN_SSH} =~ s/\\/\\\\/g;
+ $ENV{SVN_SSH} =~ s/(.*)/"$1"/;
}
}
}
use File::Copy qw/copy/;
use IPC::Open3;
use Memoize; # core since 5.8.0, Jul 2002
+use Memoize::Storable;
my ($_gc_nr, $_gc_period);
command_oneline("rev-parse", "$commit~1^{tree}"));
}
-BEGIN {
- memoize 'lookup_svn_merge';
- memoize 'check_cherry_pick';
- memoize 'has_no_changes';
+# The GIT_DIR environment variable is not always set until after the command
+# line arguments are processed, so we can't memoize in a BEGIN block.
+{
+ my $memoized = 0;
+
+ sub memoize_svn_mergeinfo_functions {
+ return if $memoized;
+ $memoized = 1;
+
+ my $cache_path = "$ENV{GIT_DIR}/svn/.caches/";
+ mkpath([$cache_path]) unless -d $cache_path;
+
+ tie my %lookup_svn_merge_cache => 'Memoize::Storable',
+ "$cache_path/lookup_svn_merge.db", 'nstore';
+ memoize 'lookup_svn_merge',
+ SCALAR_CACHE => 'FAULT',
+ LIST_CACHE => ['HASH' => \%lookup_svn_merge_cache],
+ ;
+
+ tie my %check_cherry_pick_cache => 'Memoize::Storable',
+ "$cache_path/check_cherry_pick.db", 'nstore';
+ memoize 'check_cherry_pick',
+ SCALAR_CACHE => 'FAULT',
+ LIST_CACHE => ['HASH' => \%check_cherry_pick_cache],
+ ;
+
+ tie my %has_no_changes_cache => 'Memoize::Storable',
+ "$cache_path/has_no_changes.db", 'nstore';
+ memoize 'has_no_changes',
+ SCALAR_CACHE => ['HASH' => \%has_no_changes_cache],
+ LIST_CACHE => 'FAULT',
+ ;
+ }
}
sub parents_exclude {
my ($self, $ed, $mergeinfo, $parents) = @_;
# aha! svk:merge property changed...
+ memoize_svn_mergeinfo_functions();
+
# We first search for merged tips which are not in our
# history. Then, we figure out which git revisions are in
# that tip, but not this revision. If all of those revisions
break;
if (was_alias) {
fprintf(stderr, "Expansion of alias '%s' failed; "
- "'%s' is not a git-command\n",
+ "'%s' is not a git command\n",
cmd, argv[0]);
exit(1);
}
Perl interface to Git
%define path_settings ETC_GITCONFIG=/etc/gitconfig prefix=%{_prefix} mandir=%{_mandir} htmldir=%{_docdir}/%{name}-%{version}
+%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
%prep
%setup -q
make %{_smp_mflags} CFLAGS="$RPM_OPT_FLAGS" DESTDIR=$RPM_BUILD_ROOT \
%{path_settings} \
INSTALLDIRS=vendor install %{!?_without_docs: install-doc}
+test ! -d $RPM_BUILD_ROOT%{python_sitelib} || rm -fr $RPM_BUILD_ROOT%{python_sitelib}
find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} ';'
find $RPM_BUILD_ROOT -type f -name '*.bs' -empty -exec rm -f {} ';'
find $RPM_BUILD_ROOT -type f -name perllocal.pod -exec rm -f {} ';'
# No files for you!
%changelog
+* Sun Jan 31 2010 Junio C Hamano <gitster@pobox.com>
+- Do not use %define inside %{!?...} construct.
+
+* Sat Jan 30 2010 Junio C Hamano <gitster@pobox.com>
+- We don't ship Python bits until a real foreign scm interface comes.
+
* Mon Feb 04 2009 David J. Mellor <dmellor@whistlingcat.com>
- fixed broken git help -w after renaming the git-core package to git.
}
proc parseviewargs {n arglist} {
- global vdatemode vmergeonly vflags vdflags vrevs vfiltered vorigargs
+ global vdatemode vmergeonly vflags vdflags vrevs vfiltered vorigargs env
set vdatemode($n) 0
set vmergeonly($n) 0
# git rev-parse doesn't understand --merge
lappend revargs --gitk-symmetric-diff-marker MERGE_HEAD...HEAD
}
+ "--no-replace-objects" {
+ set env(GIT_NO_REPLACE_OBJECTS) "1"
+ }
"-*" {
# Other flag arguments including -<n>
if {[string is digit -strict [string range $arg 1 end]]} {
set sha1entry .tf.bar.sha1
set entries $sha1entry
set sha1but .tf.bar.sha1label
- button $sha1but -text [mc "SHA1 ID: "] -state disabled -relief flat \
+ button $sha1but -text "[mc "SHA1 ID:"] " -state disabled -relief flat \
-command gotocommit -width 8
$sha1but conf -disabledforeground [$sha1but cget -foreground]
pack .tf.bar.sha1label -side left
message $w.m -text [mc "
Gitk - a commit viewer for git
-Copyright \u00a9 2005-2009 Paul Mackerras
+Copyright © 2005-2009 Paul Mackerras
Use and redistribute under the terms of the GNU General Public License"] \
-justify center -aspect 400 -border 2 -bg white -relief groove
makediffhdr $fname $ids
$ctext insert end "\n$line\n" filesep
} elseif {![string compare -length 3 " >" $line]} {
+ set line [encoding convertfrom $diffencoding $line]
$ctext insert end "$line\n" dresult
} elseif {![string compare -length 3 " <" $line]} {
+ set line [encoding convertfrom $diffencoding $line]
$ctext insert end "$line\n" d0
} elseif {$diffinhdr} {
if {![string compare -length 12 "rename from " $line]} {
${NS}::label $top.tlab -text [mc "Tag name:"]
${NS}::entry $top.tag -width 60
grid $top.tlab $top.tag -sticky w
+ ${NS}::label $top.op -text [mc "Tag message is optional"]
+ grid $top.op -columnspan 2 -sticky we
+ ${NS}::label $top.mlab -text [mc "Tag message:"]
+ ${NS}::entry $top.msg -width 60
+ grid $top.mlab $top.msg -sticky w
${NS}::frame $top.buts
${NS}::button $top.buts.gen -text [mc "Create"] -command mktaggo
${NS}::button $top.buts.can -text [mc "Cancel"] -command mktagcan
set id [$mktagtop.sha1 get]
set tag [$mktagtop.tag get]
+ set msg [$mktagtop.msg get]
if {$tag == {}} {
error_popup [mc "No tag name specified"] $mktagtop
return 0
return 0
}
if {[catch {
- exec git tag $tag $id
+ if {$msg != {}} {
+ exec git tag -a -m $msg $tag $id
+ } else {
+ exec git tag $tag $id
+ }
} err]} {
error_popup "[mc "Error creating tag:"] $err" $mktagtop
return 0
set linknum 0
if {![info exists tagcontents($tag)]} {
catch {
- set tagcontents($tag) [exec git cat-file tag $tagobjid($tag)]
+ set tagcontents($tag) [exec git cat-file tag $tag]
}
}
if {[info exists tagcontents($tag)]} {
msgstr ""
"Project-Id-Version: git-gui\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-12 21:55+0200\n"
-"PO-Revision-Date: 2009-05-12 22:18+0200\n"
+"POT-Creation-Date: 2010-01-27 20:21+0100\n"
+"PO-Revision-Date: 2010-01-27 20:27+0100\n"
"Last-Translator: Christian Stimming <stimming@tuhh.de>\n"
"Language-Team: German\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: gitk:113
+#: gitk:115
msgid "Couldn't get list of unmerged files:"
msgstr "Liste der nicht zusammengeführten Dateien nicht gefunden:"
-#: gitk:268
+#: gitk:274
msgid "Error parsing revisions:"
msgstr "Fehler beim Laden der Versionen:"
-#: gitk:323
+#: gitk:329
msgid "Error executing --argscmd command:"
msgstr "Fehler beim Ausführen des --argscmd-Kommandos:"
-#: gitk:336
+#: gitk:342
msgid "No files selected: --merge specified but no files are unmerged."
msgstr ""
"Keine Dateien ausgewählt: Es wurde --merge angegeben, aber es existieren "
"keine nicht zusammengeführten Dateien."
-#: gitk:339
+#: gitk:345
msgid ""
"No files selected: --merge specified but no unmerged files are within file "
"limit."
"Keine Dateien ausgewählt: Es wurde --merge angegeben, aber es sind keine "
"nicht zusammengeführten Dateien in der Dateiauswahl."
-#: gitk:361 gitk:508
+#: gitk:367 gitk:514
msgid "Error executing git log:"
msgstr "Fehler beim Ausführen von »git log«:"
-#: gitk:379 gitk:524
+#: gitk:385 gitk:530
msgid "Reading"
msgstr "Lesen"
-#: gitk:439 gitk:4061
+#: gitk:445 gitk:4261
msgid "Reading commits..."
msgstr "Versionen werden gelesen ..."
-#: gitk:442 gitk:1560 gitk:4064
+#: gitk:448 gitk:1578 gitk:4264
msgid "No commits selected"
msgstr "Keine Versionen ausgewählt"
-#: gitk:1436
+#: gitk:1454
msgid "Can't parse git log output:"
msgstr "Ausgabe von »git log« kann nicht erkannt werden:"
-#: gitk:1656
+#: gitk:1674
msgid "No commit information available"
msgstr "Keine Versionsinformation verfügbar"
-#: gitk:1791 gitk:1815 gitk:3854 gitk:8714 gitk:10250 gitk:10422
+#: gitk:1816
+msgid "mc"
+msgstr "mc"
+
+#: gitk:1851 gitk:4054 gitk:9044 gitk:10585 gitk:10804
msgid "OK"
msgstr "Ok"
-#: gitk:1817 gitk:3856 gitk:8311 gitk:8385 gitk:8495 gitk:8544 gitk:8716
-#: gitk:10251 gitk:10423
+#: gitk:1853 gitk:4056 gitk:8634 gitk:8713 gitk:8828 gitk:8877 gitk:9046
+#: gitk:10586 gitk:10805
msgid "Cancel"
msgstr "Abbrechen"
-#: gitk:1917
+#: gitk:1975
msgid "Update"
msgstr "Aktualisieren"
-#: gitk:1918
+#: gitk:1976
msgid "Reload"
msgstr "Neu laden"
-#: gitk:1919
+#: gitk:1977
msgid "Reread references"
msgstr "Zweige neu laden"
-#: gitk:1920
+#: gitk:1978
msgid "List references"
msgstr "Zweige/Markierungen auflisten"
-#: gitk:1922
+#: gitk:1980
msgid "Start git gui"
msgstr "»git gui« starten"
-#: gitk:1924
+#: gitk:1982
msgid "Quit"
msgstr "Beenden"
-#: gitk:1916
+#: gitk:1974
msgid "File"
msgstr "Datei"
-#: gitk:1928
+#: gitk:1986
msgid "Preferences"
msgstr "Einstellungen"
-#: gitk:1927
+#: gitk:1985
msgid "Edit"
msgstr "Bearbeiten"
-#: gitk:1932
+#: gitk:1990
msgid "New view..."
msgstr "Neue Ansicht ..."
-#: gitk:1933
+#: gitk:1991
msgid "Edit view..."
msgstr "Ansicht bearbeiten ..."
-#: gitk:1934
+#: gitk:1992
msgid "Delete view"
msgstr "Ansicht entfernen"
-#: gitk:1936
+#: gitk:1994
msgid "All files"
msgstr "Alle Dateien"
-#: gitk:1931 gitk:3666
+#: gitk:1989 gitk:3808
msgid "View"
msgstr "Ansicht"
-#: gitk:1941 gitk:1951 gitk:2650
+#: gitk:1999 gitk:2009 gitk:2780
msgid "About gitk"
msgstr "Über gitk"
-#: gitk:1942 gitk:1956
+#: gitk:2000 gitk:2014
msgid "Key bindings"
msgstr "Tastenkürzel"
-#: gitk:1940 gitk:1955
+#: gitk:1998 gitk:2013
msgid "Help"
msgstr "Hilfe"
-#: gitk:2016
-msgid "SHA1 ID: "
-msgstr "SHA1:"
+#: gitk:2091 gitk:8110
+msgid "SHA1 ID:"
+msgstr "SHA1 ID:"
-#: gitk:2047
+#: gitk:2122
msgid "Row"
msgstr "Zeile"
-#: gitk:2078
+#: gitk:2160
msgid "Find"
msgstr "Suche"
-#: gitk:2079
+#: gitk:2161
msgid "next"
msgstr "nächste"
-#: gitk:2080
+#: gitk:2162
msgid "prev"
msgstr "vorige"
-#: gitk:2081
+#: gitk:2163
msgid "commit"
msgstr "Version nach"
-#: gitk:2084 gitk:2086 gitk:4222 gitk:4245 gitk:4269 gitk:6210 gitk:6282
-#: gitk:6366
+#: gitk:2166 gitk:2168 gitk:4422 gitk:4445 gitk:4469 gitk:6410 gitk:6482
+#: gitk:6566
msgid "containing:"
msgstr "Beschreibung:"
-#: gitk:2087 gitk:3158 gitk:3163 gitk:4297
+#: gitk:2169 gitk:3290 gitk:3295 gitk:4497
msgid "touching paths:"
msgstr "Dateien:"
-#: gitk:2088 gitk:4302
+#: gitk:2170 gitk:4502
msgid "adding/removing string:"
msgstr "Änderungen:"
-#: gitk:2097 gitk:2099
+#: gitk:2179 gitk:2181
msgid "Exact"
msgstr "Exakt"
-#: gitk:2099 gitk:4377 gitk:6178
+#: gitk:2181 gitk:4577 gitk:6378
msgid "IgnCase"
msgstr "Kein Groß/Klein"
-#: gitk:2099 gitk:4271 gitk:4375 gitk:6174
+#: gitk:2181 gitk:4471 gitk:4575 gitk:6374
msgid "Regexp"
msgstr "Regexp"
-#: gitk:2101 gitk:2102 gitk:4396 gitk:4426 gitk:4433 gitk:6302 gitk:6370
+#: gitk:2183 gitk:2184 gitk:4596 gitk:4626 gitk:4633 gitk:6502 gitk:6570
msgid "All fields"
msgstr "Alle Felder"
-#: gitk:2102 gitk:4394 gitk:4426 gitk:6241
+#: gitk:2184 gitk:4594 gitk:4626 gitk:6441
msgid "Headline"
msgstr "Überschrift"
-#: gitk:2103 gitk:4394 gitk:6241 gitk:6370 gitk:6804
+#: gitk:2185 gitk:4594 gitk:6441 gitk:6570 gitk:7003
msgid "Comments"
msgstr "Beschreibung"
-#: gitk:2103 gitk:4394 gitk:4398 gitk:4433 gitk:6241 gitk:6739 gitk:7991
-#: gitk:8006
+#: gitk:2185 gitk:4594 gitk:4598 gitk:4633 gitk:6441 gitk:6938 gitk:8285
+#: gitk:8300
msgid "Author"
msgstr "Autor"
-#: gitk:2103 gitk:4394 gitk:6241 gitk:6741
+#: gitk:2185 gitk:4594 gitk:6441 gitk:6940
msgid "Committer"
msgstr "Eintragender"
-#: gitk:2132
+#: gitk:2216
msgid "Search"
msgstr "Suchen"
-#: gitk:2139
+#: gitk:2224
msgid "Diff"
msgstr "Vergleich"
-#: gitk:2141
+#: gitk:2226
msgid "Old version"
msgstr "Alte Version"
-#: gitk:2143
+#: gitk:2228
msgid "New version"
msgstr "Neue Version"
-#: gitk:2145
+#: gitk:2230
msgid "Lines of context"
msgstr "Kontextzeilen"
-#: gitk:2155
+#: gitk:2240
msgid "Ignore space change"
msgstr "Leerzeichenänderungen ignorieren"
-#: gitk:2213
+#: gitk:2299
msgid "Patch"
msgstr "Patch"
-#: gitk:2215
+#: gitk:2301
msgid "Tree"
msgstr "Baum"
-#: gitk:2359 gitk:2376
+#: gitk:2456 gitk:2473
msgid "Diff this -> selected"
msgstr "Vergleich: diese -> gewählte"
-#: gitk:2360 gitk:2377
+#: gitk:2457 gitk:2474
msgid "Diff selected -> this"
msgstr "Vergleich: gewählte -> diese"
-#: gitk:2361 gitk:2378
+#: gitk:2458 gitk:2475
msgid "Make patch"
msgstr "Patch erstellen"
-#: gitk:2362 gitk:8369
+#: gitk:2459 gitk:8692
msgid "Create tag"
msgstr "Markierung erstellen"
-#: gitk:2363 gitk:8475
+#: gitk:2460 gitk:8808
msgid "Write commit to file"
msgstr "Version in Datei schreiben"
-#: gitk:2364 gitk:8532
+#: gitk:2461 gitk:8865
msgid "Create new branch"
msgstr "Neuen Zweig erstellen"
-#: gitk:2365
+#: gitk:2462
msgid "Cherry-pick this commit"
msgstr "Diese Version pflücken"
-#: gitk:2366
+#: gitk:2463
msgid "Reset HEAD branch to here"
msgstr "HEAD-Zweig auf diese Version zurücksetzen"
-#: gitk:2367
+#: gitk:2464
msgid "Mark this commit"
msgstr "Lesezeichen setzen"
-#: gitk:2368
+#: gitk:2465
msgid "Return to mark"
msgstr "Zum Lesezeichen"
-#: gitk:2369
+#: gitk:2466
msgid "Find descendant of this and mark"
msgstr "Abkömmling von Lesezeichen und dieser Version finden"
-#: gitk:2370
+#: gitk:2467
msgid "Compare with marked commit"
msgstr "Mit Lesezeichen vergleichen"
-#: gitk:2384
+#: gitk:2481
msgid "Check out this branch"
msgstr "Auf diesen Zweig umstellen"
-#: gitk:2385
+#: gitk:2482
msgid "Remove this branch"
msgstr "Zweig löschen"
-#: gitk:2392
+#: gitk:2489
msgid "Highlight this too"
msgstr "Diesen auch hervorheben"
-#: gitk:2393
+#: gitk:2490
msgid "Highlight this only"
msgstr "Nur diesen hervorheben"
-#: gitk:2394
+#: gitk:2491
msgid "External diff"
msgstr "Externes Diff-Programm"
-#: gitk:2395
+#: gitk:2492
msgid "Blame parent commit"
msgstr "Annotieren der Elternversion"
-#: gitk:2402
+#: gitk:2499
msgid "Show origin of this line"
msgstr "Herkunft dieser Zeile anzeigen"
-#: gitk:2403
+#: gitk:2500
msgid "Run git gui blame on this line"
msgstr "Diese Zeile annotieren (»git gui blame«)"
-#: gitk:2652
+#: gitk:2782
msgid ""
"\n"
"Gitk - a commit viewer for git\n"
"\n"
-"Copyright © 2005-2008 Paul Mackerras\n"
+"Copyright ©9 2005-2009 Paul Mackerras\n"
"\n"
"Use and redistribute under the terms of the GNU General Public License"
msgstr ""
"\n"
"Gitk - eine Visualisierung der Git-Historie\n"
"\n"
-"Copyright © 2005-2008 Paul Mackerras\n"
+"Copyright © 2005-2009 Paul Mackerras\n"
"\n"
-"Benutzung und Weiterverbreitung gemäß den Bedingungen der GNU General Public "
-"License"
+"Benutzung und Weiterverbreitung gemäß den Bedingungen der GNU General Public License"
-#: gitk:2660 gitk:2722 gitk:8897
+#: gitk:2790 gitk:2854 gitk:9230
msgid "Close"
msgstr "Schließen"
-#: gitk:2679
+#: gitk:2811
msgid "Gitk key bindings"
msgstr "Gitk-Tastaturbelegung"
-#: gitk:2682
+#: gitk:2814
msgid "Gitk key bindings:"
msgstr "Gitk-Tastaturbelegung:"
-#: gitk:2684
+#: gitk:2816
#, tcl-format
msgid "<%s-Q>\t\tQuit"
msgstr "<%s-Q>\t\tBeenden"
-#: gitk:2685
+#: gitk:2817
msgid "<Home>\t\tMove to first commit"
msgstr "<Pos1>\t\tZur neuesten Version springen"
-#: gitk:2686
+#: gitk:2818
msgid "<End>\t\tMove to last commit"
msgstr "<Ende>\t\tZur ältesten Version springen"
-#: gitk:2687
+#: gitk:2819
msgid "<Up>, p, i\tMove up one commit"
msgstr "<Hoch>, p, i\tNächste neuere Version"
-#: gitk:2688
+#: gitk:2820
msgid "<Down>, n, k\tMove down one commit"
msgstr "<Runter>, n, k\tNächste ältere Version"
-#: gitk:2689
+#: gitk:2821
msgid "<Left>, z, j\tGo back in history list"
msgstr "<Links>, z, j\tEine Version zurückgehen"
-#: gitk:2690
+#: gitk:2822
msgid "<Right>, x, l\tGo forward in history list"
msgstr "<Rechts>, x, l\tEine Version weitergehen"
-#: gitk:2691
+#: gitk:2823
msgid "<PageUp>\tMove up one page in commit list"
msgstr "<BildHoch>\tEine Seite nach oben blättern"
-#: gitk:2692
+#: gitk:2824
msgid "<PageDown>\tMove down one page in commit list"
msgstr "<BildRunter>\tEine Seite nach unten blättern"
-#: gitk:2693
+#: gitk:2825
#, tcl-format
msgid "<%s-Home>\tScroll to top of commit list"
msgstr "<%s-Pos1>\tZum oberen Ende der Versionsliste blättern"
-#: gitk:2694
+#: gitk:2826
#, tcl-format
msgid "<%s-End>\tScroll to bottom of commit list"
msgstr "<%s-Ende>\tZum unteren Ende der Versionsliste blättern"
-#: gitk:2695
+#: gitk:2827
#, tcl-format
msgid "<%s-Up>\tScroll commit list up one line"
msgstr "<%s-Hoch>\tVersionsliste eine Zeile nach oben blättern"
-#: gitk:2696
+#: gitk:2828
#, tcl-format
msgid "<%s-Down>\tScroll commit list down one line"
msgstr "<%s-Runter>\tVersionsliste eine Zeile nach unten blättern"
-#: gitk:2697
+#: gitk:2829
#, tcl-format
msgid "<%s-PageUp>\tScroll commit list up one page"
msgstr "<%s-BildHoch>\tVersionsliste eine Seite nach oben blättern"
-#: gitk:2698
+#: gitk:2830
#, tcl-format
msgid "<%s-PageDown>\tScroll commit list down one page"
msgstr "<%s-BildRunter>\tVersionsliste eine Seite nach unten blättern"
-#: gitk:2699
+#: gitk:2831
msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
msgstr "<Umschalt-Hoch>\tRückwärts suchen (nach oben; neuere Versionen)"
-#: gitk:2700
+#: gitk:2832
msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
msgstr "<Umschalt-Runter> Suchen (nach unten; ältere Versionen)"
-#: gitk:2701
+#: gitk:2833
msgid "<Delete>, b\tScroll diff view up one page"
msgstr "<Entf>, b\t\tVergleich eine Seite nach oben blättern"
-#: gitk:2702
+#: gitk:2834
msgid "<Backspace>\tScroll diff view up one page"
msgstr "<Löschtaste>\tVergleich eine Seite nach oben blättern"
-#: gitk:2703
+#: gitk:2835
msgid "<Space>\t\tScroll diff view down one page"
msgstr "<Leertaste>\tVergleich eine Seite nach unten blättern"
-#: gitk:2704
+#: gitk:2836
msgid "u\t\tScroll diff view up 18 lines"
msgstr "u\t\tVergleich um 18 Zeilen nach oben blättern"
-#: gitk:2705
+#: gitk:2837
msgid "d\t\tScroll diff view down 18 lines"
msgstr "d\t\tVergleich um 18 Zeilen nach unten blättern"
-#: gitk:2706
+#: gitk:2838
#, tcl-format
msgid "<%s-F>\t\tFind"
msgstr "<%s-F>\t\tSuchen"
-#: gitk:2707
+#: gitk:2839
#, tcl-format
msgid "<%s-G>\t\tMove to next find hit"
msgstr "<%s-G>\t\tWeitersuchen"
-#: gitk:2708
+#: gitk:2840
msgid "<Return>\tMove to next find hit"
msgstr "<Eingabetaste>\tWeitersuchen"
-#: gitk:2709
+#: gitk:2841
msgid "/\t\tFocus the search box"
msgstr "/\t\tTastaturfokus ins Suchfeld"
-#: gitk:2710
+#: gitk:2842
msgid "?\t\tMove to previous find hit"
msgstr "?\t\tRückwärts weitersuchen"
-#: gitk:2711
+#: gitk:2843
msgid "f\t\tScroll diff view to next file"
msgstr "f\t\tVergleich zur nächsten Datei blättern"
-#: gitk:2712
+#: gitk:2844
#, tcl-format
msgid "<%s-S>\t\tSearch for next hit in diff view"
msgstr "<%s-S>\t\tWeitersuchen im Vergleich"
-#: gitk:2713
+#: gitk:2845
#, tcl-format
msgid "<%s-R>\t\tSearch for previous hit in diff view"
msgstr "<%s-R>\t\tRückwärts weitersuchen im Vergleich"
-#: gitk:2714
+#: gitk:2846
#, tcl-format
msgid "<%s-KP+>\tIncrease font size"
msgstr "<%s-Nummerblock-Plus>\tSchrift vergrößern"
-#: gitk:2715
+#: gitk:2847
#, tcl-format
msgid "<%s-plus>\tIncrease font size"
msgstr "<%s-Plus>\tSchrift vergrößern"
-#: gitk:2716
+#: gitk:2848
#, tcl-format
msgid "<%s-KP->\tDecrease font size"
msgstr "<%s-Nummernblock-Minus> Schrift verkleinern"
-#: gitk:2717
+#: gitk:2849
#, tcl-format
msgid "<%s-minus>\tDecrease font size"
msgstr "<%s-Minus>\tSchrift verkleinern"
-#: gitk:2718
+#: gitk:2850
msgid "<F5>\t\tUpdate"
msgstr "<F5>\t\tAktualisieren"
-#: gitk:3173
-#, tcl-format
-msgid "Error getting \"%s\" from %s:"
-msgstr "Fehler beim Holen von »%s« von »%s«:"
-
-#: gitk:3230 gitk:3239
+#: gitk:3305 gitk:3314
#, tcl-format
msgid "Error creating temporary directory %s:"
msgstr "Fehler beim Erzeugen des temporären Verzeichnisses »%s«:"
-#: gitk:3251
+#: gitk:3327
+#, tcl-format
+msgid "Error getting \"%s\" from %s:"
+msgstr "Fehler beim Holen von »%s« von »%s«:"
+
+#: gitk:3390
msgid "command failed:"
msgstr "Kommando fehlgeschlagen:"
-#: gitk:3397
+#: gitk:3539
msgid "No such commit"
msgstr "Version nicht gefunden"
-#: gitk:3411
+#: gitk:3553
msgid "git gui blame: command failed:"
msgstr "git gui blame: Kommando fehlgeschlagen:"
-#: gitk:3442
+#: gitk:3584
#, tcl-format
msgid "Couldn't read merge head: %s"
msgstr "Zusammenführungs-Spitze konnte nicht gelesen werden: %s"
-#: gitk:3450
+#: gitk:3592
#, tcl-format
msgid "Error reading index: %s"
msgstr "Fehler beim Lesen der Bereitstellung (»index«): %s"
-#: gitk:3475
+#: gitk:3617
#, tcl-format
msgid "Couldn't start git blame: %s"
msgstr "»git blame« konnte nicht gestartet werden: %s"
-#: gitk:3478 gitk:6209
+#: gitk:3620 gitk:6409
msgid "Searching"
msgstr "Suchen"
-#: gitk:3510
+#: gitk:3652
#, tcl-format
msgid "Error running git blame: %s"
msgstr "Fehler beim Ausführen von »git blame«: %s"
-#: gitk:3538
+#: gitk:3680
#, tcl-format
msgid "That line comes from commit %s, which is not in this view"
msgstr ""
"Diese Zeile stammt aus Version %s, die nicht in dieser Ansicht gezeigt wird"
-#: gitk:3552
+#: gitk:3694
msgid "External diff viewer failed:"
msgstr "Externes Diff-Programm fehlgeschlagen:"
-#: gitk:3670
+#: gitk:3812
msgid "Gitk view definition"
msgstr "Gitk-Ansichten"
-#: gitk:3674
+#: gitk:3816
msgid "Remember this view"
msgstr "Diese Ansicht speichern"
-#: gitk:3675
-msgid "Commits to include (arguments to git log):"
-msgstr "Versionen anzeigen (Argumente von git log):"
+#: gitk:3817
+msgid "References (space separated list):"
+msgstr "Zweige/Markierungen (durch Leerzeichen getrennte Liste):"
-#: gitk:3676
-msgid "Use all refs"
-msgstr "Alle Zweige verwenden"
+#: gitk:3818
+msgid "Branches & tags:"
+msgstr "Zweige/Markierungen:"
-#: gitk:3677
-msgid "Strictly sort by date"
-msgstr "Streng nach Datum sortieren"
+#: gitk:3819
+msgid "All refs"
+msgstr "Alle Markierungen und Zweige"
-#: gitk:3678
-msgid "Mark branch sides"
-msgstr "Zweig-Seiten markieren"
+#: gitk:3820
+msgid "All (local) branches"
+msgstr "Alle (lokalen) Zweige"
-#: gitk:3679
-msgid "Since date:"
-msgstr "Von Datum:"
+#: gitk:3821
+msgid "All tags"
+msgstr "Alle Markierungen"
-#: gitk:3680
-msgid "Until date:"
-msgstr "Bis Datum:"
+#: gitk:3822
+msgid "All remote-tracking branches"
+msgstr "Alle Übernahmezweige"
+
+#: gitk:3823
+msgid "Commit Info (regular expressions):"
+msgstr "Versionsinformationen (reguläre Ausdrücke):"
+
+#: gitk:3824
+msgid "Author:"
+msgstr "Autor:"
+
+#: gitk:3825
+msgid "Committer:"
+msgstr "Eintragender:"
+
+#: gitk:3826
+msgid "Commit Message:"
+msgstr "Versionsbeschreibung:"
-#: gitk:3681
-msgid "Max count:"
-msgstr "Max. Anzahl:"
+#: gitk:3827
+msgid "Matches all Commit Info criteria"
+msgstr "Alle Versionsinformationen-Kriterien erfüllen"
-#: gitk:3682
-msgid "Skip:"
+#: gitk:3828
+msgid "Changes to Files:"
+msgstr "Dateien:"
+
+#: gitk:3829
+msgid "Fixed String"
+msgstr "Zeichenkette"
+
+#: gitk:3830
+msgid "Regular Expression"
+msgstr "Regulärer Ausdruck"
+
+#: gitk:3831
+msgid "Search string:"
+msgstr "Suchausdruck:"
+
+#: gitk:3832
+msgid ""
+"Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 "
+"15:27:38\"):"
+msgstr "Datum (»2 weeks ago«, »2009-03-17 15:27:38«, »March 17, 2009 15:27:38«)"
+
+#: gitk:3833
+msgid "Since:"
+msgstr "Von:"
+
+#: gitk:3834
+msgid "Until:"
+msgstr "Bis:"
+
+#: gitk:3835
+msgid "Limit and/or skip a number of revisions (positive integer):"
+msgstr "Versionsanzahl begrenzen oder einige überspringen (ganzzahliger Wert):"
+
+#: gitk:3836
+msgid "Number to show:"
+msgstr "Anzeigen:"
+
+#: gitk:3837
+msgid "Number to skip:"
msgstr "Überspringen:"
-#: gitk:3683
+#: gitk:3838
+msgid "Miscellaneous options:"
+msgstr "Sonstiges:"
+
+#: gitk:3839
+msgid "Strictly sort by date"
+msgstr "Streng nach Datum sortieren"
+
+#: gitk:3840
+msgid "Mark branch sides"
+msgstr "Zweig-Seiten markieren"
+
+#: gitk:3841
msgid "Limit to first parent"
msgstr "Auf erste Elternversion beschränken"
-#: gitk:3684
+#: gitk:3842
+msgid "Simple history"
+msgstr "Einfache Historie"
+
+#: gitk:3843
+msgid "Additional arguments to git log:"
+msgstr "Zusätzliche Argumente für »git log«:"
+
+#: gitk:3844
+msgid "Enter files and directories to include, one per line:"
+msgstr "Folgende Dateien und Verzeichnisse anzeigen (eine pro Zeile):"
+
+#: gitk:3845
msgid "Command to generate more commits to include:"
msgstr "Versionsliste durch folgendes Kommando erzeugen lassen:"
-#: gitk:3780
+#: gitk:3967
msgid "Gitk: edit view"
msgstr "Gitk: Ansicht bearbeiten"
-#: gitk:3793
-msgid "Name"
-msgstr "Name"
+#: gitk:3975
+msgid "-- criteria for selecting revisions"
+msgstr "-- Auswahl der angezeigten Versionen"
-#: gitk:3841
-msgid "Enter files and directories to include, one per line:"
-msgstr "Folgende Dateien und Verzeichnisse anzeigen (eine pro Zeile):"
+#: gitk:3980
+msgid "View Name"
+msgstr "Ansichtsname"
-#: gitk:3855
+#: gitk:4055
msgid "Apply (F5)"
msgstr "Anwenden (F5)"
-#: gitk:3893
+#: gitk:4093
msgid "Error in commit selection arguments:"
msgstr "Fehler in den ausgewählten Versionen:"
-#: gitk:3946 gitk:3998 gitk:4446 gitk:4460 gitk:5721 gitk:11114 gitk:11115
+#: gitk:4146 gitk:4198 gitk:4646 gitk:4660 gitk:5921 gitk:11534 gitk:11535
msgid "None"
msgstr "Keine"
-#: gitk:4394 gitk:6241 gitk:7993 gitk:8008
+#: gitk:4594 gitk:6441 gitk:8287 gitk:8302
msgid "Date"
msgstr "Datum"
-#: gitk:4394 gitk:6241
+#: gitk:4594 gitk:6441
msgid "CDate"
msgstr "Eintragedatum"
-#: gitk:4543 gitk:4548
+#: gitk:4743 gitk:4748
msgid "Descendant"
msgstr "Abkömmling"
-#: gitk:4544
+#: gitk:4744
msgid "Not descendant"
msgstr "Kein Abkömmling"
-#: gitk:4551 gitk:4556
+#: gitk:4751 gitk:4756
msgid "Ancestor"
msgstr "Vorgänger"
-#: gitk:4552
+#: gitk:4752
msgid "Not ancestor"
msgstr "Kein Vorgänger"
-#: gitk:4842
+#: gitk:5042
msgid "Local changes checked in to index but not committed"
msgstr "Lokale Änderungen bereitgestellt, aber nicht eingetragen"
-#: gitk:4878
+#: gitk:5078
msgid "Local uncommitted changes, not checked in to index"
msgstr "Lokale Änderungen, nicht bereitgestellt"
-#: gitk:6559
+#: gitk:6759
msgid "many"
msgstr "viele"
-#: gitk:6743
+#: gitk:6942
msgid "Tags:"
msgstr "Markierungen:"
-#: gitk:6760 gitk:6766 gitk:7986
+#: gitk:6959 gitk:6965 gitk:8280
msgid "Parent"
msgstr "Eltern"
-#: gitk:6771
+#: gitk:6970
msgid "Child"
msgstr "Kind"
-#: gitk:6780
+#: gitk:6979
msgid "Branch"
msgstr "Zweig"
-#: gitk:6783
+#: gitk:6982
msgid "Follows"
msgstr "Folgt auf"
-#: gitk:6786
+#: gitk:6985
msgid "Precedes"
msgstr "Vorgänger von"
-#: gitk:7279
+#: gitk:7522
#, tcl-format
msgid "Error getting diffs: %s"
msgstr "Fehler beim Laden des Vergleichs: %s"
-#: gitk:7819
+#: gitk:8108
msgid "Goto:"
msgstr "Gehe zu:"
-#: gitk:7821
-msgid "SHA1 ID:"
-msgstr "SHA1-Hashwert:"
-
-#: gitk:7840
+#: gitk:8129
#, tcl-format
msgid "Short SHA1 id %s is ambiguous"
msgstr "Kurzer SHA1-Hashwert »%s« ist mehrdeutig"
-#: gitk:7852
+#: gitk:8136
+#, tcl-format
+msgid "Revision %s is not known"
+msgstr "Version »%s« ist unbekannt"
+
+#: gitk:8146
#, tcl-format
msgid "SHA1 id %s is not known"
msgstr "SHA1-Hashwert »%s« ist unbekannt"
-#: gitk:7854
+#: gitk:8148
#, tcl-format
-msgid "Tag/Head %s is not known"
-msgstr "Markierung/Zweig »%s« ist unbekannt"
+msgid "Revision %s is not in the current view"
+msgstr "Version »%s« wird in der aktuellen Ansicht nicht angezeigt"
-#: gitk:7996
+#: gitk:8290
msgid "Children"
msgstr "Kinder"
-#: gitk:8053
+#: gitk:8348
#, tcl-format
msgid "Reset %s branch to here"
msgstr "Zweig »%s« hierher zurücksetzen"
-#: gitk:8055
+#: gitk:8350
msgid "Detached head: can't reset"
msgstr "Zweigspitze ist abgetrennt: Zurücksetzen nicht möglich"
-#: gitk:8164 gitk:8170
+#: gitk:8459 gitk:8465
msgid "Skipping merge commit "
msgstr "Überspringe Zusammenführungs-Version "
-#: gitk:8179 gitk:8184
+#: gitk:8474 gitk:8479
msgid "Error getting patch ID for "
msgstr "Fehler beim Holen der Patch-ID für "
-#: gitk:8180 gitk:8185
+#: gitk:8475 gitk:8480
msgid " - stopping\n"
msgstr " - Abbruch.\n"
-#: gitk:8190 gitk:8193 gitk:8201 gitk:8211 gitk:8220
+#: gitk:8485 gitk:8488 gitk:8496 gitk:8510 gitk:8519
msgid "Commit "
msgstr "Version "
-#: gitk:8194
+#: gitk:8489
msgid ""
" is the same patch as\n"
" "
" ist das gleiche Patch wie\n"
" "
-#: gitk:8202
+#: gitk:8497
msgid ""
" differs from\n"
" "
" ist unterschiedlich von\n"
" "
-#: gitk:8204
-msgid "- stopping\n"
-msgstr "- Abbruch.\n"
+#: gitk:8499
+msgid ""
+"Diff of commits:\n"
+"\n"
+msgstr ""
+"Vergleich der Versionen:\n"
+"\n"
-#: gitk:8212 gitk:8221
+#: gitk:8511 gitk:8520
#, tcl-format
msgid " has %s children - stopping\n"
msgstr " hat %s Kinder. Abbruch\n"
-#: gitk:8252
+#: gitk:8539
+#, tcl-format
+msgid "Error writing commit to file: %s"
+msgstr "Fehler beim Schreiben der Version in Datei: %s"
+
+#: gitk:8545
+#, tcl-format
+msgid "Error diffing commits: %s"
+msgstr "Fehler beim Vergleichen der Versionen: %s"
+
+#: gitk:8575
msgid "Top"
msgstr "Oben"
-#: gitk:8253
+#: gitk:8576
msgid "From"
msgstr "Von"
-#: gitk:8258
+#: gitk:8581
msgid "To"
msgstr "bis"
-#: gitk:8282
+#: gitk:8605
msgid "Generate patch"
msgstr "Patch erstellen"
-#: gitk:8284
+#: gitk:8607
msgid "From:"
msgstr "Von:"
-#: gitk:8293
+#: gitk:8616
msgid "To:"
msgstr "bis:"
-#: gitk:8302
+#: gitk:8625
msgid "Reverse"
msgstr "Umgekehrt"
-#: gitk:8304 gitk:8489
+#: gitk:8627 gitk:8822
msgid "Output file:"
msgstr "Ausgabedatei:"
-#: gitk:8310
+#: gitk:8633
msgid "Generate"
msgstr "Erzeugen"
-#: gitk:8348
+#: gitk:8671
msgid "Error creating patch:"
msgstr "Fehler beim Erzeugen des Patches:"
-#: gitk:8371 gitk:8477 gitk:8534
+#: gitk:8694 gitk:8810 gitk:8867
msgid "ID:"
msgstr "ID:"
-#: gitk:8380
+#: gitk:8703
msgid "Tag name:"
msgstr "Markierungsname:"
-#: gitk:8384 gitk:8543
+#: gitk:8706
+msgid "Tag message is optional"
+msgstr "Eine Markierungsbeschreibung ist optional"
+
+#: gitk:8708
+msgid "Tag message:"
+msgstr "Markierungsbeschreibung:"
+
+#: gitk:8712 gitk:8876
msgid "Create"
msgstr "Erstellen"
-#: gitk:8401
+#: gitk:8730
msgid "No tag name specified"
msgstr "Kein Markierungsname angegeben"
-#: gitk:8405
+#: gitk:8734
#, tcl-format
msgid "Tag \"%s\" already exists"
msgstr "Markierung »%s« existiert bereits."
-#: gitk:8411
+#: gitk:8744
msgid "Error creating tag:"
msgstr "Fehler beim Erstellen der Markierung:"
-#: gitk:8486
+#: gitk:8819
msgid "Command:"
msgstr "Kommando:"
-#: gitk:8494
+#: gitk:8827
msgid "Write"
msgstr "Schreiben"
-#: gitk:8512
+#: gitk:8845
msgid "Error writing commit:"
msgstr "Fehler beim Schreiben der Version:"
-#: gitk:8539
+#: gitk:8872
msgid "Name:"
msgstr "Name:"
-#: gitk:8562
+#: gitk:8895
msgid "Please specify a name for the new branch"
msgstr "Bitte geben Sie einen Namen für den neuen Zweig an."
-#: gitk:8567
+#: gitk:8900
#, tcl-format
msgid "Branch '%s' already exists. Overwrite?"
msgstr "Zweig »%s« existiert bereits. Soll er überschrieben werden?"
-#: gitk:8633
+#: gitk:8966
#, tcl-format
msgid "Commit %s is already included in branch %s -- really re-apply it?"
msgstr ""
-"Version »%s« ist bereits im Zweig »%s« enthalten -- trotzdem erneut "
-"eintragen?"
+"Version »%s« ist bereits im Zweig »%s« enthalten -- trotzdem erneut eintragen?"
-#: gitk:8638
+#: gitk:8971
msgid "Cherry-picking"
msgstr "Version pflücken"
-#: gitk:8647
+#: gitk:8980
#, tcl-format
msgid ""
"Cherry-pick failed because of local changes to file '%s'.\n"
"vorliegen. Bitte diese Änderungen eintragen, zurücksetzen oder\n"
"zwischenspeichern (»git stash«) und dann erneut versuchen."
-#: gitk:8653
+#: gitk:8986
msgid ""
"Cherry-pick failed because of merge conflict.\n"
"Do you wish to run git citool to resolve it?"
"ist. Soll das Zusammenführungs-Werkzeug (»git citool«) aufgerufen\n"
"werden, um diesen Konflikt aufzulösen?"
-#: gitk:8669
+#: gitk:9002
msgid "No changes committed"
msgstr "Keine Änderungen eingetragen"
-#: gitk:8695
+#: gitk:9028
msgid "Confirm reset"
msgstr "Zurücksetzen bestätigen"
-#: gitk:8697
+#: gitk:9030
#, tcl-format
msgid "Reset branch %s to %s?"
msgstr "Zweig »%s« auf »%s« zurücksetzen?"
-#: gitk:8701
+#: gitk:9032
msgid "Reset type:"
msgstr "Art des Zurücksetzens:"
-#: gitk:8705
+#: gitk:9035
msgid "Soft: Leave working tree and index untouched"
msgstr "Harmlos: Arbeitskopie und Bereitstellung unverändert"
-#: gitk:8708
+#: gitk:9038
msgid "Mixed: Leave working tree untouched, reset index"
msgstr ""
"Gemischt: Arbeitskopie unverändert,\n"
"Bereitstellung zurückgesetzt"
-#: gitk:8711
+#: gitk:9041
msgid ""
"Hard: Reset working tree and index\n"
"(discard ALL local changes)"
"Hart: Arbeitskopie und Bereitstellung\n"
"(Alle lokalen Änderungen werden gelöscht)"
-#: gitk:8728
+#: gitk:9058
msgid "Resetting"
msgstr "Zurücksetzen"
-#: gitk:8785
+#: gitk:9118
msgid "Checking out"
msgstr "Umstellen"
-#: gitk:8838
+#: gitk:9171
msgid "Cannot delete the currently checked-out branch"
msgstr ""
"Der Zweig, auf den die Arbeitskopie momentan umgestellt ist, kann nicht "
"gelöscht werden."
-#: gitk:8844
+#: gitk:9177
#, tcl-format
msgid ""
"The commits on branch %s aren't on any other branch.\n"
"Die Versionen auf Zweig »%s« existieren auf keinem anderen Zweig.\n"
"Zweig »%s« trotzdem löschen?"
-#: gitk:8875
+#: gitk:9208
#, tcl-format
msgid "Tags and heads: %s"
msgstr "Markierungen und Zweige: %s"
-#: gitk:8890
+#: gitk:9223
msgid "Filter"
msgstr "Filtern"
-#: gitk:9185
+#: gitk:9518
msgid ""
"Error reading commit topology information; branch and preceding/following "
"tag information will be incomplete."
"Fehler beim Lesen der Strukturinformationen; Zweige und Informationen zu "
"Vorgänger/Nachfolger werden unvollständig sein."
-#: gitk:10171
+#: gitk:10504
msgid "Tag"
msgstr "Markierung"
-#: gitk:10171
+#: gitk:10504
msgid "Id"
msgstr "Id"
-#: gitk:10219
+#: gitk:10554
msgid "Gitk font chooser"
msgstr "Gitk-Schriften wählen"
-#: gitk:10236
+#: gitk:10571
msgid "B"
msgstr "F"
-#: gitk:10239
+#: gitk:10574
msgid "I"
msgstr "K"
-#: gitk:10334
+#: gitk:10692
msgid "Gitk preferences"
msgstr "Gitk-Einstellungen"
-#: gitk:10336
+#: gitk:10694
msgid "Commit list display options"
msgstr "Anzeige der Versionsliste"
-#: gitk:10339
+#: gitk:10697
msgid "Maximum graph width (lines)"
msgstr "Maximale Graphenbreite (Zeilen)"
-#: gitk:10343
+#: gitk:10700
#, tcl-format
msgid "Maximum graph width (% of pane)"
msgstr "Maximale Graphenbreite (% des Fensters)"
-#: gitk:10347
+#: gitk:10703
msgid "Show local changes"
msgstr "Lokale Änderungen anzeigen"
-#: gitk:10350
+#: gitk:10706
msgid "Auto-select SHA1"
msgstr "SHA1-Hashwert automatisch auswählen"
-#: gitk:10354
+#: gitk:10709
+msgid "Hide remote refs"
+msgstr "Entfernte Zweige/Markierungen ausblenden"
+
+#: gitk:10713
msgid "Diff display options"
msgstr "Anzeige des Vergleichs"
-#: gitk:10356
+#: gitk:10715
msgid "Tab spacing"
msgstr "Tabulatorbreite"
-#: gitk:10359
+#: gitk:10718
msgid "Display nearby tags"
msgstr "Naheliegende Markierungen anzeigen"
-#: gitk:10362
+#: gitk:10721
msgid "Limit diffs to listed paths"
msgstr "Vergleich nur für angezeigte Pfade"
-#: gitk:10365
+#: gitk:10724
msgid "Support per-file encodings"
msgstr "Zeichenkodierung pro Datei ermitteln"
-#: gitk:10371 gitk:10436
+#: gitk:10730 gitk:10819
msgid "External diff tool"
msgstr "Externes Diff-Programm"
-#: gitk:10373
+#: gitk:10731
msgid "Choose..."
msgstr "Wählen ..."
-#: gitk:10378
+#: gitk:10736
+msgid "General options"
+msgstr "Allgemeine Optionen"
+
+#: gitk:10739
+msgid "Use themed widgets"
+msgstr "Aussehen der Benutzeroberfläche durch Thema bestimmen"
+
+#: gitk:10741
+msgid "(change requires restart)"
+msgstr "(Änderungen werden erst nach Neustart wirksam)"
+
+#: gitk:10743
+msgid "(currently unavailable)"
+msgstr "(Momentan nicht verfügbar)"
+
+#: gitk:10747
msgid "Colors: press to choose"
msgstr "Farben: Klicken zum Wählen"
-#: gitk:10381
+#: gitk:10750
+msgid "Interface"
+msgstr "Benutzeroberfläche"
+
+#: gitk:10751
+msgid "interface"
+msgstr "Benutzeroberfläche"
+
+#: gitk:10754
msgid "Background"
msgstr "Hintergrund"
-#: gitk:10382 gitk:10412
+#: gitk:10755 gitk:10785
msgid "background"
msgstr "Hintergrund"
-#: gitk:10385
+#: gitk:10758
msgid "Foreground"
msgstr "Vordergrund"
-#: gitk:10386
+#: gitk:10759
msgid "foreground"
msgstr "Vordergrund"
-#: gitk:10389
+#: gitk:10762
msgid "Diff: old lines"
msgstr "Vergleich: Alte Zeilen"
-#: gitk:10390
+#: gitk:10763
msgid "diff old lines"
msgstr "Vergleich - Alte Zeilen"
-#: gitk:10394
+#: gitk:10767
msgid "Diff: new lines"
msgstr "Vergleich: Neue Zeilen"
-#: gitk:10395
+#: gitk:10768
msgid "diff new lines"
msgstr "Vergleich - Neue Zeilen"
-#: gitk:10399
+#: gitk:10772
msgid "Diff: hunk header"
msgstr "Vergleich: Änderungstitel"
-#: gitk:10401
+#: gitk:10774
msgid "diff hunk header"
msgstr "Vergleich - Änderungstitel"
-#: gitk:10405
+#: gitk:10778
msgid "Marked line bg"
msgstr "Hintergrund für markierte Zeile"
-#: gitk:10407
+#: gitk:10780
msgid "marked line background"
msgstr "Hintergrund für markierte Zeile"
-#: gitk:10411
+#: gitk:10784
msgid "Select bg"
msgstr "Hintergrundfarbe auswählen"
-#: gitk:10415
+#: gitk:10788
msgid "Fonts: press to choose"
msgstr "Schriftart: Klicken zum Wählen"
-#: gitk:10417
+#: gitk:10790
msgid "Main font"
msgstr "Programmschriftart"
-#: gitk:10418
+#: gitk:10791
msgid "Diff display font"
msgstr "Schriftart für Vergleich"
-#: gitk:10419
+#: gitk:10792
msgid "User interface font"
msgstr "Beschriftungen"
-#: gitk:10446
+#: gitk:10829
#, tcl-format
msgid "Gitk: choose color for %s"
msgstr "Gitk: Farbe wählen für %s"
-#: gitk:10893
-msgid ""
-"Sorry, gitk cannot run with this version of Tcl/Tk.\n"
-" Gitk requires at least Tcl/Tk 8.4."
-msgstr ""
-"Gitk läuft nicht mit dieser Version von Tcl/Tk.\n"
-"Gitk benötigt mindestens Tcl/Tk 8.4."
-
-#: gitk:11020
+#: gitk:11433
msgid "Cannot find a git repository here."
msgstr "Kein Git-Projektarchiv gefunden."
-#: gitk:11024
+#: gitk:11437
#, tcl-format
msgid "Cannot find the git directory \"%s\"."
msgstr "Git-Verzeichnis »%s« wurde nicht gefunden."
-#: gitk:11071
+#: gitk:11484
#, tcl-format
msgid "Ambiguous argument '%s': both revision and filename"
msgstr "Mehrdeutige Angabe »%s«: Sowohl Version als auch Dateiname existiert."
-#: gitk:11083
+#: gitk:11496
msgid "Bad arguments to gitk:"
msgstr "Falsche Kommandozeilen-Parameter für gitk:"
-#: gitk:11167
+#: gitk:11587
msgid "Command line"
msgstr "Kommandozeile"
--- /dev/null
+# French translation of the gitk package
+# Copyright (C) 2005-2008 Paul Mackerras. All rights reserved.
+# This file is distributed under the same license as the gitk package.
+# Translators:
+# Emmanuel Trillaud <etrillaud@gmail.com>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gitk\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-10-05 15:16+0200\n"
+"PO-Revision-Date: 2009-11-19 22:13+0100\n"
+"Last-Translator: Emmanuel Trillaud <etrillaud@gmail.com>\n"
+"Language-Team: git@vger.kernel.org\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: French\n"
+"X-Poedit-Country: FRANCE\n"
+
+#: gitk:113
+msgid "Couldn't get list of unmerged files:"
+msgstr "Impossible de récupérer la liste des fichiers non fusionnés :"
+
+#: gitk:269
+msgid "Error parsing revisions:"
+msgstr "Erreur lors du parcours des révisions :"
+
+#: gitk:324
+msgid "Error executing --argscmd command:"
+msgstr "Erreur à l'exécution de la commande --argscmd :"
+
+#: gitk:337
+msgid "No files selected: --merge specified but no files are unmerged."
+msgstr ""
+"Aucun fichier sélectionné : --merge précisé, mais tous les fichiers sont "
+"fusionnés."
+
+# FIXME : améliorer la traduction de 'file limite'
+#: gitk:340
+#, fuzzy
+msgid ""
+"No files selected: --merge specified but no unmerged files are within file "
+"limit."
+msgstr ""
+"Aucun fichier sélectionné : --merge précisé mais aucun fichier non fusionné "
+"n'est dans la limite des fichiers."
+
+#: gitk:362 gitk:509
+msgid "Error executing git log:"
+msgstr "Erreur à l'exécution de git log :"
+
+#: gitk:380 gitk:525
+msgid "Reading"
+msgstr "Lecture en cours"
+
+#: gitk:440 gitk:4123
+msgid "Reading commits..."
+msgstr "Lecture des commits..."
+
+#: gitk:443 gitk:1561 gitk:4126
+msgid "No commits selected"
+msgstr "Aucun commit sélectionné"
+
+#: gitk:1437
+msgid "Can't parse git log output:"
+msgstr "Impossible de lire la sortie de git log :"
+
+#: gitk:1657
+msgid "No commit information available"
+msgstr "Aucune information disponible sur le commit"
+
+#: gitk:1793 gitk:1817 gitk:3916 gitk:8786 gitk:10322 gitk:10498
+msgid "OK"
+msgstr "OK"
+
+#: gitk:1819 gitk:3918 gitk:8383 gitk:8457 gitk:8567 gitk:8616 gitk:8788
+#: gitk:10323 gitk:10499
+msgid "Cancel"
+msgstr "Annuler"
+
+#: gitk:1919
+msgid "Update"
+msgstr "Mise à jour"
+
+#: gitk:1920
+msgid "Reload"
+msgstr "Recharger"
+
+#: gitk:1921
+msgid "Reread references"
+msgstr "Relire les références"
+
+#: gitk:1922
+msgid "List references"
+msgstr "Lister les références"
+
+#: gitk:1924
+msgid "Start git gui"
+msgstr "Démarrer git gui"
+
+#: gitk:1926
+msgid "Quit"
+msgstr "Quitter"
+
+#: gitk:1918
+msgid "File"
+msgstr "Fichier"
+
+#: gitk:1930
+msgid "Preferences"
+msgstr "Préférences"
+
+#: gitk:1929
+msgid "Edit"
+msgstr "Éditer"
+
+#: gitk:1934
+msgid "New view..."
+msgstr "Nouvelle vue..."
+
+#: gitk:1935
+msgid "Edit view..."
+msgstr "Éditer la vue..."
+
+#: gitk:1936
+msgid "Delete view"
+msgstr "Supprimer la vue"
+
+#: gitk:1938
+msgid "All files"
+msgstr "Tous les fichiers"
+
+#: gitk:1933 gitk:3670
+msgid "View"
+msgstr "Vue"
+
+#: gitk:1943 gitk:1953 gitk:2654
+msgid "About gitk"
+msgstr "À propos de gitk"
+
+#: gitk:1944 gitk:1958
+msgid "Key bindings"
+msgstr "Raccourcis clavier"
+
+#: gitk:1942 gitk:1957
+msgid "Help"
+msgstr "Aide"
+
+#: gitk:2018
+msgid "SHA1 ID: "
+msgstr "ID SHA1 :"
+
+#: gitk:2049
+msgid "Row"
+msgstr "Colonne"
+
+#: gitk:2080
+msgid "Find"
+msgstr "Recherche"
+
+#: gitk:2081
+msgid "next"
+msgstr "suivant"
+
+#: gitk:2082
+msgid "prev"
+msgstr "précédent"
+
+#: gitk:2083
+msgid "commit"
+msgstr "commit"
+
+#: gitk:2086 gitk:2088 gitk:4284 gitk:4307 gitk:4331 gitk:6272 gitk:6344
+#: gitk:6428
+msgid "containing:"
+msgstr "contient :"
+
+#: gitk:2089 gitk:3162 gitk:3167 gitk:4359
+msgid "touching paths:"
+msgstr "chemins modifiés :"
+
+#: gitk:2090 gitk:4364
+msgid "adding/removing string:"
+msgstr "ajoute/supprime la chaîne :"
+
+#: gitk:2099 gitk:2101
+msgid "Exact"
+msgstr "Exact"
+
+#: gitk:2101 gitk:4439 gitk:6240
+msgid "IgnCase"
+msgstr "Ignorer la casse"
+
+#: gitk:2101 gitk:4333 gitk:4437 gitk:6236
+msgid "Regexp"
+msgstr "Expression régulière"
+
+#: gitk:2103 gitk:2104 gitk:4458 gitk:4488 gitk:4495 gitk:6364 gitk:6432
+msgid "All fields"
+msgstr "Tous les champs"
+
+#: gitk:2104 gitk:4456 gitk:4488 gitk:6303
+msgid "Headline"
+msgstr "Surligner"
+
+#: gitk:2105 gitk:4456 gitk:6303 gitk:6432 gitk:6866
+msgid "Comments"
+msgstr "Commentaires"
+
+#: gitk:2105 gitk:4456 gitk:4460 gitk:4495 gitk:6303 gitk:6801 gitk:8063
+#: gitk:8078
+msgid "Author"
+msgstr "Auteur"
+
+#: gitk:2105 gitk:4456 gitk:6303 gitk:6803
+msgid "Committer"
+msgstr "Auteur du commit"
+
+#: gitk:2134
+msgid "Search"
+msgstr "Rechercher"
+
+#: gitk:2141
+msgid "Diff"
+msgstr "Diff"
+
+#: gitk:2143
+msgid "Old version"
+msgstr "Ancienne version"
+
+#: gitk:2145
+msgid "New version"
+msgstr "Nouvelle version"
+
+#: gitk:2147
+msgid "Lines of context"
+msgstr "Lignes de contexte"
+
+#: gitk:2157
+msgid "Ignore space change"
+msgstr "Ignorer les modifications d'espace"
+
+#: gitk:2215
+msgid "Patch"
+msgstr "Patch"
+
+#: gitk:2217
+msgid "Tree"
+msgstr "Arbre"
+
+#: gitk:2361 gitk:2378
+msgid "Diff this -> selected"
+msgstr "Diff entre ceci et la sélection"
+
+#: gitk:2362 gitk:2379
+msgid "Diff selected -> this"
+msgstr "Diff entre sélection et ceci"
+
+#: gitk:2363 gitk:2380
+msgid "Make patch"
+msgstr "Créer patch"
+
+#: gitk:2364 gitk:8441
+msgid "Create tag"
+msgstr "Créer tag"
+
+#: gitk:2365 gitk:8547
+msgid "Write commit to file"
+msgstr "Écrire le commit dans un fichier"
+
+#: gitk:2366 gitk:8604
+msgid "Create new branch"
+msgstr "Créer une nouvelle branche"
+
+#: gitk:2367
+msgid "Cherry-pick this commit"
+msgstr "Cueillir (cherry-pick) ce commit"
+
+#: gitk:2368
+msgid "Reset HEAD branch to here"
+msgstr "Réinitialiser la branche HEAD vers cet état"
+
+#: gitk:2369
+msgid "Mark this commit"
+msgstr "Marquer ce commit"
+
+#: gitk:2370
+msgid "Return to mark"
+msgstr "Retourner à la marque"
+
+#: gitk:2371
+msgid "Find descendant of this and mark"
+msgstr "Chercher le descendant de ceci et le marquer"
+
+#: gitk:2372
+msgid "Compare with marked commit"
+msgstr "Comparer avec le commit marqué"
+
+#: gitk:2386
+msgid "Check out this branch"
+msgstr "Récupérer cette branche"
+
+#: gitk:2387
+msgid "Remove this branch"
+msgstr "Supprimer cette branche"
+
+#: gitk:2394
+msgid "Highlight this too"
+msgstr "Surligner également ceci"
+
+#: gitk:2395
+msgid "Highlight this only"
+msgstr "Surligner seulement ceci"
+
+#: gitk:2396
+msgid "External diff"
+msgstr "Diff externe"
+
+#: gitk:2397
+msgid "Blame parent commit"
+msgstr "Blâmer le commit parent"
+
+#: gitk:2404
+msgid "Show origin of this line"
+msgstr "Montrer l'origine de cette ligne"
+
+#: gitk:2405
+msgid "Run git gui blame on this line"
+msgstr "Exécuter git gui blame sur cette ligne"
+
+#: gitk:2656
+msgid ""
+"\n"
+"Gitk - a commit viewer for git\n"
+"\n"
+"Copyright © 2005-2008 Paul Mackerras\n"
+"\n"
+"Use and redistribute under the terms of the GNU General Public License"
+msgstr ""
+"\n"
+"Gitk - visualisateur de commit pour git\n"
+"\n"
+"Copyright © 2005-2008 Paul Mackerras\n"
+"\n"
+"Utilisation et redistribution soumises aux termes de la GNU General Public "
+"License"
+
+#: gitk:2664 gitk:2726 gitk:8969
+msgid "Close"
+msgstr "Fermer"
+
+#: gitk:2683
+msgid "Gitk key bindings"
+msgstr "Raccourcis clavier de Gitk"
+
+#: gitk:2686
+msgid "Gitk key bindings:"
+msgstr "Raccourcis clavier de Gitk :"
+
+#: gitk:2688
+#, tcl-format
+msgid "<%s-Q>\t\tQuit"
+msgstr "<%s-Q>\t\tQuitter"
+
+#: gitk:2689
+msgid "<Home>\t\tMove to first commit"
+msgstr "<Début>\t\tAller au premier commit"
+
+#: gitk:2690
+msgid "<End>\t\tMove to last commit"
+msgstr "<Fin>\t\tAller au dernier commit"
+
+#: gitk:2691
+msgid "<Up>, p, i\tMove up one commit"
+msgstr "<Haut>, p, i\t Aller au commit suivant"
+
+#: gitk:2692
+msgid "<Down>, n, k\tMove down one commit"
+msgstr "<Bas>, n, k\t Aller au commit précédent"
+
+#: gitk:2693
+msgid "<Left>, z, j\tGo back in history list"
+msgstr "<Gauche>, z, j\tReculer dans l'historique"
+
+#: gitk:2694
+msgid "<Right>, x, l\tGo forward in history list"
+msgstr "<Droite>, x, l\tAvancer dans l'historique"
+
+#: gitk:2695
+msgid "<PageUp>\tMove up one page in commit list"
+msgstr "<PageUp>\tMonter d'une page dans la liste des commits"
+
+#: gitk:2696
+msgid "<PageDown>\tMove down one page in commit list"
+msgstr "<PageDown>\tDescendre d'une page dans la liste des commits"
+
+#: gitk:2697
+#, tcl-format
+msgid "<%s-Home>\tScroll to top of commit list"
+msgstr "<%s-Début>\tAller en haut de la liste des commits"
+
+#: gitk:2698
+#, tcl-format
+msgid "<%s-End>\tScroll to bottom of commit list"
+msgstr "<%s-End>\tAller en bas de la liste des commits"
+
+#: gitk:2699
+#, tcl-format
+msgid "<%s-Up>\tScroll commit list up one line"
+msgstr "<%s-Up>\tMonter d'une ligne dans la liste des commits"
+
+#: gitk:2700
+#, tcl-format
+msgid "<%s-Down>\tScroll commit list down one line"
+msgstr "<%s-Down>\tDescendre d'une ligne dans la liste des commits"
+
+#: gitk:2701
+#, tcl-format
+msgid "<%s-PageUp>\tScroll commit list up one page"
+msgstr "<%s-PageUp>\tMonter d'une page dans la liste des commits"
+
+#: gitk:2702
+#, tcl-format
+msgid "<%s-PageDown>\tScroll commit list down one page"
+msgstr "<%s-PageDown>\tDescendre d'une page dans la liste des commits"
+
+#: gitk:2703
+msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
+msgstr ""
+"<Shift-Up>\tRecherche en arrière (vers l'avant, commits les plus anciens)"
+
+#: gitk:2704
+msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
+msgstr ""
+"<Shift-Down>\tRecherche en avant (vers l'arrière, commit les plus récents)"
+
+#: gitk:2705
+msgid "<Delete>, b\tScroll diff view up one page"
+msgstr "<Supprimer>, b\tMonter d'une page dans la vue des diff"
+
+#: gitk:2706
+msgid "<Backspace>\tScroll diff view up one page"
+msgstr "<Backspace>\tMonter d'une page dans la vue des diff"
+
+#: gitk:2707
+msgid "<Space>\t\tScroll diff view down one page"
+msgstr "<Espace>\t\tDescendre d'une page dans la vue des diff"
+
+#: gitk:2708
+msgid "u\t\tScroll diff view up 18 lines"
+msgstr "u\t\tMonter de 18 lignes dans la vue des diff"
+
+#: gitk:2709
+msgid "d\t\tScroll diff view down 18 lines"
+msgstr "d\t\tDescendre de 18 lignes dans la vue des diff"
+
+#: gitk:2710
+#, tcl-format
+msgid "<%s-F>\t\tFind"
+msgstr "<%s-F>\t\tRechercher"
+
+#: gitk:2711
+#, tcl-format
+msgid "<%s-G>\t\tMove to next find hit"
+msgstr "<%s-G>\t\tAller au résultat de recherche suivant"
+
+#: gitk:2712
+msgid "<Return>\tMove to next find hit"
+msgstr "<Return>\t\tAller au résultat de recherche suivant"
+
+#: gitk:2713
+msgid "/\t\tFocus the search box"
+msgstr "/\t\tFocus sur la zone de recherche"
+
+#: gitk:2714
+msgid "?\t\tMove to previous find hit"
+msgstr "?\t\tAller au résultat de recherche précédent"
+
+#: gitk:2715
+msgid "f\t\tScroll diff view to next file"
+msgstr "f\t\tAller au prochain fichier dans la vue des diff"
+
+#: gitk:2716
+#, tcl-format
+msgid "<%s-S>\t\tSearch for next hit in diff view"
+msgstr "<%s-S>\t\tAller au résultat suivant dans la vue des diff"
+
+#: gitk:2717
+#, tcl-format
+msgid "<%s-R>\t\tSearch for previous hit in diff view"
+msgstr "<%s-R>\t\tAller au résultat précédent dans la vue des diff"
+
+#: gitk:2718
+#, tcl-format
+msgid "<%s-KP+>\tIncrease font size"
+msgstr "<%s-KP+>\tAugmenter la taille de la police"
+
+#: gitk:2719
+#, tcl-format
+msgid "<%s-plus>\tIncrease font size"
+msgstr "<%s-plus>\tAugmenter la taille de la police"
+
+#: gitk:2720
+#, tcl-format
+msgid "<%s-KP->\tDecrease font size"
+msgstr "<%s-KP->\tDiminuer la taille de la police"
+
+#: gitk:2721
+#, tcl-format
+msgid "<%s-minus>\tDecrease font size"
+msgstr "<%s-minus>\tDiminuer la taille de la police"
+
+#: gitk:2722
+msgid "<F5>\t\tUpdate"
+msgstr "<F5>\t\tMise à jour"
+
+#: gitk:3177
+#, tcl-format
+msgid "Error getting \"%s\" from %s:"
+msgstr "Erreur en obtenant \"%s\" de %s:"
+
+#: gitk:3234 gitk:3243
+#, tcl-format
+msgid "Error creating temporary directory %s:"
+msgstr "Erreur lors de la création du répertoire temporaire %s :"
+
+#: gitk:3255
+msgid "command failed:"
+msgstr "échec de la commande :"
+
+#: gitk:3401
+msgid "No such commit"
+msgstr "Commit inexistant"
+
+#: gitk:3415
+msgid "git gui blame: command failed:"
+msgstr "git gui blame : échec de la commande :"
+
+#: gitk:3446
+#, tcl-format
+msgid "Couldn't read merge head: %s"
+msgstr "Impossible de lire le head de la fusion : %s"
+
+#: gitk:3454
+#, tcl-format
+msgid "Error reading index: %s"
+msgstr "Erreur à la lecture de l'index : %s"
+
+#: gitk:3479
+#, tcl-format
+msgid "Couldn't start git blame: %s"
+msgstr "Impossible de démarrer git blame : %s"
+
+#: gitk:3482 gitk:6271
+msgid "Searching"
+msgstr "Recherche en cours"
+
+#: gitk:3514
+#, tcl-format
+msgid "Error running git blame: %s"
+msgstr "Erreur à l'exécution de git blame : %s"
+
+#: gitk:3542
+#, tcl-format
+msgid "That line comes from commit %s, which is not in this view"
+msgstr "Cette ligne est issue du commit %s, qui n'est pas dans cette vue"
+
+#: gitk:3556
+msgid "External diff viewer failed:"
+msgstr "Échec de l'outil externe de visualisation des diff"
+
+#: gitk:3674
+msgid "Gitk view definition"
+msgstr "Définition des vues de Gitk"
+
+#: gitk:3678
+msgid "Remember this view"
+msgstr "Se souvenir de cette vue"
+
+#: gitk:3679
+msgid "References (space separated list):"
+msgstr "Références (liste d'éléments séparés par des espaces) :"
+
+#: gitk:3680
+msgid "Branches & tags:"
+msgstr "Branches & tags :"
+
+#: gitk:3681
+msgid "All refs"
+msgstr "Toutes les références"
+
+#: gitk:3682
+msgid "All (local) branches"
+msgstr "Toutes les branches (locales)"
+
+#: gitk:3683
+msgid "All tags"
+msgstr "Tous les tags"
+
+#: gitk:3684
+msgid "All remote-tracking branches"
+msgstr "Toutes les branches de suivi à distance"
+
+#: gitk:3685
+msgid "Commit Info (regular expressions):"
+msgstr "Info sur les commits (expressions régulières) :"
+
+#: gitk:3686
+msgid "Author:"
+msgstr "Auteur :"
+
+#: gitk:3687
+msgid "Committer:"
+msgstr "Commiteur :"
+
+#: gitk:3688
+msgid "Commit Message:"
+msgstr "Message de commit :"
+
+#: gitk:3689
+msgid "Matches all Commit Info criteria"
+msgstr "Correspond à tous les critères d'Info sur les commits"
+
+#: gitk:3690
+msgid "Changes to Files:"
+msgstr "Changements des fichiers :"
+
+#: gitk:3691
+msgid "Fixed String"
+msgstr "Chaîne Figée"
+
+#: gitk:3692
+msgid "Regular Expression"
+msgstr "Expression Régulière"
+
+#: gitk:3693
+msgid "Search string:"
+msgstr "Recherche de la chaîne :"
+
+#: gitk:3694
+msgid ""
+"Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 "
+"15:27:38\"):"
+msgstr ""
+"Dates des commits (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, "
+"2009 15:27:38\") :"
+
+#: gitk:3695
+msgid "Since:"
+msgstr "De :"
+
+#: gitk:3696
+msgid "Until:"
+msgstr "Jusqu'au :"
+
+#: gitk:3697
+msgid "Limit and/or skip a number of revisions (positive integer):"
+msgstr "Limiter et/ou sauter un certain nombre (entier positif) de révisions :"
+
+#: gitk:3698
+msgid "Number to show:"
+msgstr "Nombre à afficher :"
+
+#: gitk:3699
+msgid "Number to skip:"
+msgstr "Nombre à sauter :"
+
+#: gitk:3700
+msgid "Miscellaneous options:"
+msgstr "Options diverses :"
+
+#: gitk:3701
+msgid "Strictly sort by date"
+msgstr "Trier par date"
+
+# FIXME : traduction de "branch sides"
+#: gitk:3702
+#, fuzzy
+msgid "Mark branch sides"
+msgstr "Marquer les extrémités des branches"
+
+#: gitk:3703
+msgid "Limit to first parent"
+msgstr "Limiter au premier ancêtre"
+
+#: gitk:3704
+msgid "Simple history"
+msgstr "Historique simple"
+
+#: gitk:3705
+msgid "Additional arguments to git log:"
+msgstr "Arguments supplémentaires de git log :"
+
+#: gitk:3706
+msgid "Enter files and directories to include, one per line:"
+msgstr "Saisir les fichiers et répertoires à inclure, un par ligne :"
+
+#: gitk:3707
+msgid "Command to generate more commits to include:"
+msgstr "Commande pour générer plus de commits à inclure :"
+
+#: gitk:3829
+msgid "Gitk: edit view"
+msgstr "Gitk : éditer la vue"
+
+#: gitk:3837
+msgid "-- criteria for selecting revisions"
+msgstr "-- critère pour la sélection des révisions"
+
+#: gitk:3842
+msgid "View Name:"
+msgstr "Nom de la vue :"
+
+#: gitk:3917
+msgid "Apply (F5)"
+msgstr "Appliquer (F5)"
+
+#: gitk:3955
+msgid "Error in commit selection arguments:"
+msgstr "Erreur dans les arguments de sélection des commits :"
+
+#: gitk:4008 gitk:4060 gitk:4508 gitk:4522 gitk:5783 gitk:11196 gitk:11197
+msgid "None"
+msgstr "Aucun"
+
+#: gitk:4456 gitk:6303 gitk:8065 gitk:8080
+msgid "Date"
+msgstr "Date"
+
+#: gitk:4456 gitk:6303
+msgid "CDate"
+msgstr "CDate"
+
+#: gitk:4605 gitk:4610
+msgid "Descendant"
+msgstr "Descendant"
+
+#: gitk:4606
+msgid "Not descendant"
+msgstr "Pas un descendant"
+
+#: gitk:4613 gitk:4618
+msgid "Ancestor"
+msgstr "Ancêtre"
+
+#: gitk:4614
+msgid "Not ancestor"
+msgstr "Pas un ancêtre"
+
+#: gitk:4904
+msgid "Local changes checked in to index but not committed"
+msgstr "Modifications locales enregistrées dans l'index mais non commitées"
+
+#: gitk:4940
+msgid "Local uncommitted changes, not checked in to index"
+msgstr "Modifications locales non enregistrées dans l'index et non commitées"
+
+#: gitk:6621
+msgid "many"
+msgstr "nombreux"
+
+#: gitk:6805
+msgid "Tags:"
+msgstr "Tags :"
+
+#: gitk:6822 gitk:6828 gitk:8058
+msgid "Parent"
+msgstr "Parent"
+
+#: gitk:6833
+msgid "Child"
+msgstr "Enfant"
+
+#: gitk:6842
+msgid "Branch"
+msgstr "Branche"
+
+#: gitk:6845
+msgid "Follows"
+msgstr "Suit"
+
+#: gitk:6848
+msgid "Precedes"
+msgstr "Précède"
+
+#: gitk:7346
+#, tcl-format
+msgid "Error getting diffs: %s"
+msgstr "Erreur lors de la récupération des diff : %s"
+
+#: gitk:7886
+msgid "Goto:"
+msgstr "Aller à :"
+
+#: gitk:7888
+msgid "SHA1 ID:"
+msgstr "Id SHA1 :"
+
+#: gitk:7907
+#, tcl-format
+msgid "Short SHA1 id %s is ambiguous"
+msgstr "Id SHA1 court %s est ambigu"
+
+#: gitk:7914
+#, tcl-format
+msgid "Revision %s is not known"
+msgstr "Id SHA1 %s est inconnu"
+
+#: gitk:7924
+#, tcl-format
+msgid "SHA1 id %s is not known"
+msgstr "Id SHA1 %s est inconnu"
+
+#: gitk:7926
+#, tcl-format
+msgid "Revision %s is not in the current view"
+msgstr "La révision %s n'est pas dans la vue courante"
+
+#: gitk:8068
+msgid "Children"
+msgstr "Enfants"
+
+#: gitk:8125
+#, tcl-format
+msgid "Reset %s branch to here"
+msgstr "Réinitialiser la branche %s vers cet état"
+
+#: gitk:8127
+msgid "Detached head: can't reset"
+msgstr "Head détaché : impossible de réinitialiser"
+
+#: gitk:8236 gitk:8242
+msgid "Skipping merge commit "
+msgstr "Éviter le commit de la fusion "
+
+#: gitk:8251 gitk:8256
+msgid "Error getting patch ID for "
+msgstr "Erreur à l'obtention de l'ID du patch pour "
+
+#: gitk:8252 gitk:8257
+msgid " - stopping\n"
+msgstr " - arrêt en cours\n"
+
+#: gitk:8262 gitk:8265 gitk:8273 gitk:8283 gitk:8292
+msgid "Commit "
+msgstr "Commit "
+
+#: gitk:8266
+msgid ""
+" is the same patch as\n"
+" "
+msgstr ""
+"est le même patch que \n"
+" "
+
+#: gitk:8274
+msgid ""
+" differs from\n"
+" "
+msgstr ""
+" diffère de\n"
+" "
+
+#: gitk:8276
+msgid "- stopping\n"
+msgstr "- arrêt en cours\n"
+
+#: gitk:8284 gitk:8293
+#, tcl-format
+msgid " has %s children - stopping\n"
+msgstr "a %s enfants - arrêt en cours\n"
+
+#: gitk:8324
+msgid "Top"
+msgstr "Haut"
+
+#: gitk:8325
+msgid "From"
+msgstr "De"
+
+#: gitk:8330
+msgid "To"
+msgstr "À"
+
+#: gitk:8354
+msgid "Generate patch"
+msgstr "Générer le patch"
+
+#: gitk:8356
+msgid "From:"
+msgstr "De :"
+
+#: gitk:8365
+msgid "To:"
+msgstr "À :"
+
+#: gitk:8374
+msgid "Reverse"
+msgstr "Inverser"
+
+#: gitk:8376 gitk:8561
+msgid "Output file:"
+msgstr "Fichier de sortie :"
+
+#: gitk:8382
+msgid "Generate"
+msgstr "Générer"
+
+#: gitk:8420
+msgid "Error creating patch:"
+msgstr "Erreur à la création du patch :"
+
+#: gitk:8443 gitk:8549 gitk:8606
+msgid "ID:"
+msgstr "ID :"
+
+#: gitk:8452
+msgid "Tag name:"
+msgstr "Nom du Tag :"
+
+#: gitk:8456 gitk:8615
+msgid "Create"
+msgstr "Créer"
+
+#: gitk:8473
+msgid "No tag name specified"
+msgstr "Aucun nom de tag spécifié"
+
+#: gitk:8477
+#, tcl-format
+msgid "Tag \"%s\" already exists"
+msgstr "Le tag \"%s\" existe déjà"
+
+#: gitk:8483
+msgid "Error creating tag:"
+msgstr "Erreur à la création du tag :"
+
+#: gitk:8558
+msgid "Command:"
+msgstr "Commande :"
+
+#: gitk:8566
+msgid "Write"
+msgstr "Écrire"
+
+#: gitk:8584
+msgid "Error writing commit:"
+msgstr "Erreur à l'ecriture du commit :"
+
+#: gitk:8611
+msgid "Name:"
+msgstr "Nom :"
+
+#: gitk:8634
+msgid "Please specify a name for the new branch"
+msgstr "Veuillez spécifier un nom pour la nouvelle branche"
+
+#: gitk:8639
+#, tcl-format
+msgid "Branch '%s' already exists. Overwrite?"
+msgstr "La branche '%s' existe déjà. Écraser?"
+
+#: gitk:8705
+#, tcl-format
+msgid "Commit %s is already included in branch %s -- really re-apply it?"
+msgstr ""
+"Le Commit %s est déjà inclus dans la branche %s -- le ré-appliquer malgré "
+"tout?"
+
+#: gitk:8710
+msgid "Cherry-picking"
+msgstr "Cueillir (Cherry-picking)"
+
+#: gitk:8719
+#, tcl-format
+msgid ""
+"Cherry-pick failed because of local changes to file '%s'.\n"
+"Please commit, reset or stash your changes and try again."
+msgstr ""
+"La cueillette (cherry-pick) a échouée à cause de modifications locales du "
+"fichier '%s'.\n"
+"Veuillez commiter, réinitialiser ou stasher vos changements et essayer de "
+"nouveau."
+
+#: gitk:8725
+msgid ""
+"Cherry-pick failed because of merge conflict.\n"
+"Do you wish to run git citool to resolve it?"
+msgstr ""
+"La cueillette (cherry-pick) a échouée à cause d'un conflit lors d'une "
+"fusion.\n"
+"Souhaitez-vous exécuter git citool pour le résoudre ?"
+
+#: gitk:8741
+msgid "No changes committed"
+msgstr "Aucun changement commité"
+
+#: gitk:8767
+msgid "Confirm reset"
+msgstr "Confirmer la réinitialisation"
+
+#: gitk:8769
+#, tcl-format
+msgid "Reset branch %s to %s?"
+msgstr "Réinitialiser la branche %s à %s?"
+
+#: gitk:8773
+msgid "Reset type:"
+msgstr "Type de réinitialisation :"
+
+#: gitk:8777
+msgid "Soft: Leave working tree and index untouched"
+msgstr "Douce : Laisse le répertoire de travail et l'index intacts"
+
+#: gitk:8780
+msgid "Mixed: Leave working tree untouched, reset index"
+msgstr ""
+"Hybride : Laisse le répertoire de travail dans son état courant, "
+"réinitialise l'index"
+
+#: gitk:8783
+msgid ""
+"Hard: Reset working tree and index\n"
+"(discard ALL local changes)"
+msgstr ""
+"Dure : Réinitialise le répertoire de travail et l'index\n"
+"(abandonne TOUS les changements locaux)"
+
+#: gitk:8800
+msgid "Resetting"
+msgstr "Réinitialisation"
+
+# Fixme: Récupération est-il vraiment une mauvaise traduction?
+#: gitk:8857
+#, fuzzy
+msgid "Checking out"
+msgstr "Récupération"
+
+#: gitk:8910
+msgid "Cannot delete the currently checked-out branch"
+msgstr "Impossible de supprimer la branche en cours"
+
+#: gitk:8916
+#, tcl-format
+msgid ""
+"The commits on branch %s aren't on any other branch.\n"
+"Really delete branch %s?"
+msgstr ""
+"Les commits de la branche %s ne sont dans aucune autre branche.\n"
+"Voulez-vous vraiment supprimer cette branche %s ?"
+
+#: gitk:8947
+#, tcl-format
+msgid "Tags and heads: %s"
+msgstr "Tags et heads : %s"
+
+#: gitk:8962
+msgid "Filter"
+msgstr "Filtrer"
+
+#: gitk:9257
+msgid ""
+"Error reading commit topology information; branch and preceding/following "
+"tag information will be incomplete."
+msgstr ""
+"Erreur à la lecture des informations sur la topologie des commits, les "
+"informations sur les branches et les tags précédents/suivants seront "
+"incomplètes."
+
+#: gitk:10243
+msgid "Tag"
+msgstr "Tag"
+
+#: gitk:10243
+msgid "Id"
+msgstr "Id"
+
+#: gitk:10291
+msgid "Gitk font chooser"
+msgstr "Sélecteur de police de Gitk"
+
+#: gitk:10308
+msgid "B"
+msgstr "B"
+
+#: gitk:10311
+msgid "I"
+msgstr "I"
+
+#: gitk:10407
+msgid "Gitk preferences"
+msgstr "Préférences de Gitk"
+
+#: gitk:10409
+msgid "Commit list display options"
+msgstr "Options d'affichage de la liste des commits"
+
+#: gitk:10412
+msgid "Maximum graph width (lines)"
+msgstr "Longueur maximum du graphe (lignes)"
+
+# FIXME : Traduction standard de "pane"?
+#: gitk:10416
+#, fuzzy, tcl-format
+msgid "Maximum graph width (% of pane)"
+msgstr "Longueur maximum du graphe (% du panneau)"
+
+#: gitk:10420
+msgid "Show local changes"
+msgstr "Montrer les changements locaux"
+
+#: gitk:10423
+msgid "Auto-select SHA1"
+msgstr "Sélection auto. du SHA1"
+
+#: gitk:10427
+msgid "Diff display options"
+msgstr "Options d'affichage des diff"
+
+#: gitk:10429
+msgid "Tab spacing"
+msgstr "Taille des tabulations"
+
+#: gitk:10432
+msgid "Display nearby tags"
+msgstr "Afficher les tags les plus proches"
+
+#: gitk:10435
+msgid "Hide remote refs"
+msgstr "Cacher les refs distantes"
+
+#: gitk:10438
+msgid "Limit diffs to listed paths"
+msgstr "Limiter les différences aux chemins listés"
+
+#: gitk:10441
+msgid "Support per-file encodings"
+msgstr "Support pour un encodage des caractères par fichier"
+
+#: gitk:10447 gitk:10512
+msgid "External diff tool"
+msgstr "Outil diff externe"
+
+#: gitk:10449
+msgid "Choose..."
+msgstr "Choisir..."
+
+#: gitk:10454
+msgid "Colors: press to choose"
+msgstr "Couleurs : cliquer pour choisir"
+
+#: gitk:10457
+msgid "Background"
+msgstr "Arrière-plan"
+
+#: gitk:10458 gitk:10488
+msgid "background"
+msgstr "arrière-plan"
+
+#: gitk:10461
+msgid "Foreground"
+msgstr "Premier plan"
+
+#: gitk:10462
+msgid "foreground"
+msgstr "premier plan"
+
+#: gitk:10465
+msgid "Diff: old lines"
+msgstr "Diff : anciennes lignes"
+
+#: gitk:10466
+msgid "diff old lines"
+msgstr "diff anciennes lignes"
+
+#: gitk:10470
+msgid "Diff: new lines"
+msgstr "Diff : nouvelles lignes"
+
+#: gitk:10471
+msgid "diff new lines"
+msgstr "diff nouvelles lignes"
+
+#: gitk:10475
+msgid "Diff: hunk header"
+msgstr "Diff : entête du hunk"
+
+#: gitk:10477
+msgid "diff hunk header"
+msgstr "diff : entête du hunk"
+
+#: gitk:10481
+msgid "Marked line bg"
+msgstr "Arrière-plan de la ligne marquée"
+
+#: gitk:10483
+msgid "marked line background"
+msgstr "Arrière-plan de la ligne marquée"
+
+#: gitk:10487
+msgid "Select bg"
+msgstr "Sélectionner l'arrière-plan"
+
+#: gitk:10491
+msgid "Fonts: press to choose"
+msgstr "Polices : cliquer pour choisir"
+
+#: gitk:10493
+msgid "Main font"
+msgstr "Police principale"
+
+#: gitk:10494
+msgid "Diff display font"
+msgstr "Police d'affichage des diff"
+
+#: gitk:10495
+msgid "User interface font"
+msgstr "Police de l'interface utilisateur"
+
+#: gitk:10522
+#, tcl-format
+msgid "Gitk: choose color for %s"
+msgstr "Gitk : choisir la couleur de %s"
+
+#: gitk:10973
+msgid ""
+"Sorry, gitk cannot run with this version of Tcl/Tk.\n"
+" Gitk requires at least Tcl/Tk 8.4."
+msgstr ""
+"Désolé, gitk ne peut être exécuté avec cette version de Tcl/Tk.\n"
+" Gitk requiert Tcl/Tk version 8.4 ou supérieur."
+
+#: gitk:11101
+msgid "Cannot find a git repository here."
+msgstr "Impossible de trouver un dépôt git ici."
+
+#: gitk:11105
+#, tcl-format
+msgid "Cannot find the git directory \"%s\"."
+msgstr "Impossible de trouver le répertoire git \"%s\"."
+
+#: gitk:11152
+#, tcl-format
+msgid "Ambiguous argument '%s': both revision and filename"
+msgstr "Argument '%s' ambigu : à la fois une révision et un nom de fichier"
+
+#: gitk:11164
+msgid "Bad arguments to gitk:"
+msgstr "Arguments invalides pour gitk :"
+
+#: gitk:11249
+msgid "Command line"
+msgstr "Ligne de commande"
--- /dev/null
+# Translation of gitk to Hungarian.
+# Copyright (C) 2007 Paul Mackerras.
+# This file is distributed under the same license as the gitk package.
+#
+# Laszlo Papp <laszlo.papp@arhungary.hu>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: git-gui\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-12-14 13:33+0100\n"
+"PO-Revision-Date: 2009-12-14 14:04+0100\n"
+"Last-Translator: Laszlo Papp <djszapi@archlinux.us>\n"
+"Language-Team: Hungarian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: gitk:115
+msgid "Couldn't get list of unmerged files:"
+msgstr "Nem sikerült letölteni az unmerged fájl listát:"
+
+#: gitk:271
+msgid "Error parsing revisions:"
+msgstr "Hiba történt értelmezés közben:"
+
+#: gitk:326
+msgid "Error executing --argscmd command:"
+msgstr "Hiba történt a végrehajtáskor --argscmd parancs:"
+
+#: gitk:339
+msgid "No files selected: --merge specified but no files are unmerged."
+msgstr ""
+"Nincsen fájl kiválasztva: --merge megadve, de egyetlen fájl sem unmerged."
+
+#: gitk:342
+msgid ""
+"No files selected: --merge specified but no unmerged files are within file "
+"limit."
+msgstr ""
+"Nincsen fájl kiválasztva: --merge megadva, de nincsenek unmerged fájlok a "
+"fájlon belül limit."
+
+#: gitk:364 gitk:511
+msgid "Error executing git log:"
+msgstr "Hiba történt a git log végrehajtása közben:"
+
+#: gitk:382 gitk:527
+msgid "Reading"
+msgstr "Olvasás"
+
+#: gitk:442 gitk:4258
+msgid "Reading commits..."
+msgstr "Commitok olvasása ..."
+
+#: gitk:445 gitk:1575 gitk:4261
+msgid "No commits selected"
+msgstr "Nincsen commit kiválasztva"
+
+#: gitk:1451
+msgid "Can't parse git log output:"
+msgstr "Nem lehet értelmezni a git log kimenetét:"
+
+#: gitk:1671
+msgid "No commit information available"
+msgstr "Nincsen elérhető commit információ"
+
+#: gitk:1813
+msgid "mc"
+msgstr "mc"
+
+#: gitk:1848 gitk:4051 gitk:9029 gitk:10570 gitk:10789
+msgid "OK"
+msgstr "OK"
+
+#: gitk:1850 gitk:4053 gitk:8629 gitk:8703 gitk:8813 gitk:8862 gitk:9031
+#: gitk:10571 gitk:10790
+msgid "Cancel"
+msgstr "Visszavonás"
+
+#: gitk:1972
+msgid "Update"
+msgstr "Frissités"
+
+#: gitk:1973
+msgid "Reload"
+msgstr "Újratöltés"
+
+#: gitk:1974
+msgid "Reread references"
+msgstr "Referenciák újraolvasása"
+
+#: gitk:1975
+msgid "List references"
+msgstr "Referenciák listázása"
+
+#: gitk:1977
+msgid "Start git gui"
+msgstr "Git gui indítása"
+
+#: gitk:1979
+msgid "Quit"
+msgstr "Kilépés"
+
+#: gitk:1971
+msgid "File"
+msgstr "Fájl"
+
+#: gitk:1983
+msgid "Preferences"
+msgstr "Beállítások"
+
+#: gitk:1982
+msgid "Edit"
+msgstr "Szerkesztés"
+
+#: gitk:1987
+msgid "New view..."
+msgstr "Új nézet ..."
+
+#: gitk:1988
+msgid "Edit view..."
+msgstr "Nézet szerkesztése ..."
+
+#: gitk:1989
+msgid "Delete view"
+msgstr "Nézet törlése"
+
+#: gitk:1991
+msgid "All files"
+msgstr "Minden fájl"
+
+#: gitk:1986 gitk:3805
+msgid "View"
+msgstr "Nézet"
+
+#: gitk:1996 gitk:2006 gitk:2777
+msgid "About gitk"
+msgstr "Gitk névjegy"
+
+#: gitk:1997 gitk:2011
+msgid "Key bindings"
+msgstr "Billentyűkombináció"
+
+#: gitk:1995 gitk:2010
+msgid "Help"
+msgstr "Segítség"
+
+#: gitk:2088
+msgid "SHA1 ID: "
+msgstr "SHA1 ID: "
+
+#: gitk:2119
+msgid "Row"
+msgstr "Sor"
+
+#: gitk:2157
+msgid "Find"
+msgstr "Keresés"
+
+#: gitk:2158
+msgid "next"
+msgstr "következő"
+
+#: gitk:2159
+msgid "prev"
+msgstr "előző"
+
+#: gitk:2160
+msgid "commit"
+msgstr "commit"
+
+#: gitk:2163 gitk:2165 gitk:4419 gitk:4442 gitk:4466 gitk:6407 gitk:6479
+#: gitk:6563
+msgid "containing:"
+msgstr "tartalmazás:"
+
+#: gitk:2166 gitk:3287 gitk:3292 gitk:4494
+msgid "touching paths:"
+msgstr "érintendő útvonalak:"
+
+#: gitk:2167 gitk:4499
+msgid "adding/removing string:"
+msgstr "string hozzáadása/törlése:"
+
+#: gitk:2176 gitk:2178
+msgid "Exact"
+msgstr "Pontos"
+
+#: gitk:2178 gitk:4574 gitk:6375
+msgid "IgnCase"
+msgstr "Kis/nagy betű nem számít"
+
+#: gitk:2178 gitk:4468 gitk:4572 gitk:6371
+msgid "Regexp"
+msgstr "Regexp"
+
+#: gitk:2180 gitk:2181 gitk:4593 gitk:4623 gitk:4630 gitk:6499 gitk:6567
+msgid "All fields"
+msgstr "Minden mező"
+
+#: gitk:2181 gitk:4591 gitk:4623 gitk:6438
+msgid "Headline"
+msgstr "Főcím"
+
+#: gitk:2182 gitk:4591 gitk:6438 gitk:6567 gitk:7000
+msgid "Comments"
+msgstr "Megjegyzések"
+
+#: gitk:2182 gitk:4591 gitk:4595 gitk:4630 gitk:6438 gitk:6935 gitk:8280
+#: gitk:8295
+msgid "Author"
+msgstr "Szerző"
+
+#: gitk:2182 gitk:4591 gitk:6438 gitk:6937
+msgid "Committer"
+msgstr "Commitoló"
+
+#: gitk:2213
+msgid "Search"
+msgstr "Keresés"
+
+#: gitk:2221
+msgid "Diff"
+msgstr "Diff"
+
+#: gitk:2223
+msgid "Old version"
+msgstr "Régi verzió"
+
+#: gitk:2225
+msgid "New version"
+msgstr "Új verzió"
+
+#: gitk:2227
+msgid "Lines of context"
+msgstr "Tartalmi sorok"
+
+#: gitk:2237
+msgid "Ignore space change"
+msgstr "Space váltás mellőzése"
+
+#: gitk:2296
+msgid "Patch"
+msgstr "Patch"
+
+#: gitk:2298
+msgid "Tree"
+msgstr "Tree"
+
+#: gitk:2453 gitk:2470
+msgid "Diff this -> selected"
+msgstr "Diff ezeket -> kiválasztott"
+
+#: gitk:2454 gitk:2471
+msgid "Diff selected -> this"
+msgstr "Diff kiválasztottakat -> ezt"
+
+#: gitk:2455 gitk:2472
+msgid "Make patch"
+msgstr "Patch készítése"
+
+#: gitk:2456 gitk:8687
+msgid "Create tag"
+msgstr "Tag készítése"
+
+#: gitk:2457 gitk:8793
+msgid "Write commit to file"
+msgstr "Commit fáljba írása"
+
+#: gitk:2458 gitk:8850
+msgid "Create new branch"
+msgstr "Új branch készítése"
+
+#: gitk:2459
+msgid "Cherry-pick this commit"
+msgstr "Cherry-pick erre a commitra"
+
+#: gitk:2460
+msgid "Reset HEAD branch to here"
+msgstr "HEAD branch újraindítása ide"
+
+#: gitk:2461
+msgid "Mark this commit"
+msgstr "Ezen commit megjelölése"
+
+#: gitk:2462
+msgid "Return to mark"
+msgstr "Visszatérés a megjelöléshez"
+
+#: gitk:2463
+msgid "Find descendant of this and mark"
+msgstr "Találd meg ezen utódokat és jelöld meg"
+
+#: gitk:2464
+msgid "Compare with marked commit"
+msgstr "Összehasonlítás a megjelölt commit-tal"
+
+#: gitk:2478
+msgid "Check out this branch"
+msgstr "Check out ezt a branchot"
+
+#: gitk:2479
+msgid "Remove this branch"
+msgstr "Töröld ezt a branch-ot"
+
+#: gitk:2486
+msgid "Highlight this too"
+msgstr "Emeld ki ezt is"
+
+#: gitk:2487
+msgid "Highlight this only"
+msgstr "Csak ezt emeld ki"
+
+#: gitk:2488
+msgid "External diff"
+msgstr "Külső diff"
+
+#: gitk:2489
+msgid "Blame parent commit"
+msgstr "Blame szülő kommitra"
+
+#: gitk:2496
+msgid "Show origin of this line"
+msgstr "Mutasd meg ennek a sornak az eredetét"
+
+#: gitk:2497
+msgid "Run git gui blame on this line"
+msgstr "Futtasd a git gui blame-t ezen a soron"
+
+#: gitk:2779
+msgid ""
+"\n"
+"Gitk - a commit viewer for git\n"
+"\n"
+"Copyright ©9 2005-2009 Paul Mackerras\n"
+"\n"
+"Use and redistribute under the terms of the GNU General Public License"
+msgstr ""
+"\n"
+"Gitk - commit nézegető a githez\n"
+"\n"
+"Szerzői jog ©9 2005-2009 Paul Mackerras\n"
+"\n"
+"Használd és terjeszd a GNU General Public License feltételei mellett"
+
+#: gitk:2787 gitk:2851 gitk:9215
+msgid "Close"
+msgstr "Bezárás"
+
+#: gitk:2808
+msgid "Gitk key bindings"
+msgstr "Gitk-billentyű hozzárendelés"
+
+#: gitk:2811
+msgid "Gitk key bindings:"
+msgstr "Gitk-billentyű hozzaárendelés:"
+
+#: gitk:2813
+#, tcl-format
+msgid "<%s-Q>\t\tQuit"
+msgstr "<%s-Q>\t\tKilépés"
+
+#: gitk:2814
+msgid "<Home>\t\tMove to first commit"
+msgstr "<Pos1>\t\tElső commithoz"
+
+#: gitk:2815
+msgid "<End>\t\tMove to last commit"
+msgstr "<Ende>\t\tUtolsó commithoz"
+
+#: gitk:2816
+msgid "<Up>, p, i\tMove up one commit"
+msgstr "<Hoch>, p, i\tEgy committal feljebb"
+
+#: gitk:2817
+msgid "<Down>, n, k\tMove down one commit"
+msgstr "<Runter>, n, k\tEgy committal lejjebb"
+
+#: gitk:2818
+msgid "<Left>, z, j\tGo back in history list"
+msgstr "<Links>, z, j\tVissza a history listába"
+
+#: gitk:2819
+msgid "<Right>, x, l\tGo forward in history list"
+msgstr "<Rechts>, x, l\tElőre a history listába"
+
+#: gitk:2820
+msgid "<PageUp>\tMove up one page in commit list"
+msgstr "<BildHoch>\tEgy lappal feljebb a commit listába"
+
+#: gitk:2821
+msgid "<PageDown>\tMove down one page in commit list"
+msgstr "<BildRunter>\tEgy lappal lejjebb a commit listába"
+
+#: gitk:2822
+#, tcl-format
+msgid "<%s-Home>\tScroll to top of commit list"
+msgstr "<%s-Pos1>\tGörgetés a commit lista tetejéhez"
+
+#: gitk:2823
+#, tcl-format
+msgid "<%s-End>\tScroll to bottom of commit list"
+msgstr "<%s-Ende>\tGörgetés a commit lista aljához"
+
+#: gitk:2824
+#, tcl-format
+msgid "<%s-Up>\tScroll commit list up one line"
+msgstr "<%s-Hoch>\tEgy sorral feljebb görgetés a commit listában"
+
+#: gitk:2825
+#, tcl-format
+msgid "<%s-Down>\tScroll commit list down one line"
+msgstr "<%s-Runter>\tEgy sorral lejjebb görgetés a commit listában"
+
+#: gitk:2826
+#, tcl-format
+msgid "<%s-PageUp>\tScroll commit list up one page"
+msgstr "<%s-BildHoch>\tEgy lappal feljebb görgetés a commit listában"
+
+#: gitk:2827
+#, tcl-format
+msgid "<%s-PageDown>\tScroll commit list down one page"
+msgstr "<%s-BildRunter>\tEgy sorral lejjebb görgetés a commit listában"
+
+#: gitk:2828
+msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
+msgstr "<Umschalt-Hoch>\tKeresés visszafele (felfele, utolsó commitok)"
+
+#: gitk:2829
+msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
+msgstr "<Umschalt-Runter>\tKeresés előre (lefelé; korábbi commitok)"
+
+#: gitk:2830
+msgid "<Delete>, b\tScroll diff view up one page"
+msgstr "<Entf>, b\t\tEgy lappal feljebb görgetés a diff nézetben"
+
+#: gitk:2831
+msgid "<Backspace>\tScroll diff view up one page"
+msgstr "<Löschtaste>\tEgy lappal feljebb görgetés a diff nézetben"
+
+#: gitk:2832
+msgid "<Space>\t\tScroll diff view down one page"
+msgstr "<Leertaste>\tEgy lappal lejjebb görgetés a diff nézetben"
+
+#: gitk:2833
+msgid "u\t\tScroll diff view up 18 lines"
+msgstr "u\t\t18 sorral felfelé görgetés diff nézetben"
+
+#: gitk:2834
+msgid "d\t\tScroll diff view down 18 lines"
+msgstr "d\t\t18 sorral lejjebb görgetés a diff nézetben"
+
+#: gitk:2835
+#, tcl-format
+msgid "<%s-F>\t\tFind"
+msgstr "<%s-F>\t\tKeresés"
+
+#: gitk:2836
+#, tcl-format
+msgid "<%s-G>\t\tMove to next find hit"
+msgstr "<%s-G>\t\tKövetkező találathoz"
+
+#: gitk:2837
+msgid "<Return>\tMove to next find hit"
+msgstr "<Eingabetaste>\tKövetkező találathoz"
+
+#: gitk:2838
+msgid "/\t\tFocus the search box"
+msgstr "/\t\tLépj a keresési mezőre"
+
+#: gitk:2839
+msgid "?\t\tMove to previous find hit"
+msgstr "?\t\tElőző találathoz"
+
+#: gitk:2840
+msgid "f\t\tScroll diff view to next file"
+msgstr "f\t\tKövetkező fájlra görgetés diff nézetben"
+
+#: gitk:2841
+#, tcl-format
+msgid "<%s-S>\t\tSearch for next hit in diff view"
+msgstr "<%s-S>\t\tKövetkező találatra keresés diff nézetben"
+
+#: gitk:2842
+#, tcl-format
+msgid "<%s-R>\t\tSearch for previous hit in diff view"
+msgstr "<%s-R>\t\tElőző találatra keresés diff nézetben"
+
+#: gitk:2843
+#, tcl-format
+msgid "<%s-KP+>\tIncrease font size"
+msgstr "<%s-Nummerblock-Plus>\tBetűméret növelése"
+
+#: gitk:2844
+#, tcl-format
+msgid "<%s-plus>\tIncrease font size"
+msgstr "<%s-Plus>\tBetűméret növelése"
+
+#: gitk:2845
+#, tcl-format
+msgid "<%s-KP->\tDecrease font size"
+msgstr "<%s-Nummernblock-Minus> Betűméret csökkentése"
+
+#: gitk:2846
+#, tcl-format
+msgid "<%s-minus>\tDecrease font size"
+msgstr "<%s-Minus>\tBetűméret csökkentése"
+
+#: gitk:2847
+msgid "<F5>\t\tUpdate"
+msgstr "<F5>\t\tFrissítés"
+
+#: gitk:3302 gitk:3311
+#, tcl-format
+msgid "Error creating temporary directory %s:"
+msgstr "Hiba történt az ideiglenes könyvtár létrehozása közben %s:"
+
+#: gitk:3324
+#, tcl-format
+msgid "Error getting \"%s\" from %s:"
+msgstr "Hiba történt \"%s\" letöltése közben %s-ről:"
+
+#: gitk:3387
+msgid "command failed:"
+msgstr "parancs hiba:"
+
+#: gitk:3536
+msgid "No such commit"
+msgstr "Nincs ilyen commit"
+
+#: gitk:3550
+msgid "git gui blame: command failed:"
+msgstr "git gui blame: parancs hiba:"
+
+#: gitk:3581
+#, tcl-format
+msgid "Couldn't read merge head: %s"
+msgstr "Nem sikerült a Merge head olvasása: %s"
+
+#: gitk:3589
+#, tcl-format
+msgid "Error reading index: %s"
+msgstr "Hiba történt az index olvasása közben: %s"
+
+#: gitk:3614
+#, tcl-format
+msgid "Couldn't start git blame: %s"
+msgstr "Nem sikerült a git blame indítása: %s"
+
+#: gitk:3617 gitk:6406
+msgid "Searching"
+msgstr "Keresés"
+
+#: gitk:3649
+#, tcl-format
+msgid "Error running git blame: %s"
+msgstr "Hiba történt a git blame futtatása közben: %s"
+
+#: gitk:3677
+#, tcl-format
+msgid "That line comes from commit %s, which is not in this view"
+msgstr ""
+"A %s commitból származik az a sor, amelyik nem található ebben a nézetben"
+
+#: gitk:3691
+msgid "External diff viewer failed:"
+msgstr "Külső diff nézegető hiba:"
+
+#: gitk:3809
+msgid "Gitk view definition"
+msgstr "Gitk nézet meghatározása"
+
+#: gitk:3813
+msgid "Remember this view"
+msgstr "Maradj ennél a nézetnél"
+
+#: gitk:3814
+msgid "References (space separated list):"
+msgstr "Referenciák (szóközzel tagolt lista"
+
+#: gitk:3815
+msgid "Branches & tags:"
+msgstr "Branch-ek & tagek:"
+
+#: gitk:3816
+msgid "All refs"
+msgstr "Minden ref"
+
+#: gitk:3817
+msgid "All (local) branches"
+msgstr "Minden (helyi) branch"
+
+#: gitk:3818
+msgid "All tags"
+msgstr "Minden tag"
+
+#: gitk:3819
+msgid "All remote-tracking branches"
+msgstr "Minden távoli követő branch"
+
+#: gitk:3820
+msgid "Commit Info (regular expressions):"
+msgstr "Commit Infó (reguláris kifejezés):"
+
+#: gitk:3821
+msgid "Author:"
+msgstr "Szerző:"
+
+#: gitk:3822
+msgid "Committer:"
+msgstr "Commitoló:"
+
+#: gitk:3823
+msgid "Commit Message:"
+msgstr "Commit üzenet:"
+
+#: gitk:3824
+msgid "Matches all Commit Info criteria"
+msgstr "Egyezik minen Commit Infó feltétellel"
+
+#: gitk:3825
+msgid "Changes to Files:"
+msgstr "Fájl változások:"
+
+#: gitk:3826
+msgid "Fixed String"
+msgstr "Fix String"
+
+#: gitk:3827
+msgid "Regular Expression"
+msgstr "Reguláris kifejezés"
+
+#: gitk:3828
+msgid "Search string:"
+msgstr "Keresés szöveg:"
+
+#: gitk:3829
+msgid ""
+"Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 "
+"15:27:38\"):"
+msgstr ""
+"Commit Dátumok (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 "
+"15:27:38\"):"
+
+#: gitk:3830
+msgid "Since:"
+msgstr "Ettől:"
+
+#: gitk:3831
+msgid "Until:"
+msgstr "Eddig:"
+
+#: gitk:3832
+msgid "Limit and/or skip a number of revisions (positive integer):"
+msgstr "Limitálva és/vagy kihagyva egy adott számú revíziót (pozitív egész):"
+
+#: gitk:3833
+msgid "Number to show:"
+msgstr "Mutatandó szám:"
+
+#: gitk:3834
+msgid "Number to skip:"
+msgstr "Kihagyandó szám:"
+
+#: gitk:3835
+msgid "Miscellaneous options:"
+msgstr "Különféle opciók:"
+
+#: gitk:3836
+msgid "Strictly sort by date"
+msgstr "Szigorú rendezás dátum alapján"
+
+#: gitk:3837
+msgid "Mark branch sides"
+msgstr "Jelölje meg az ágakat"
+
+#: gitk:3838
+msgid "Limit to first parent"
+msgstr "Korlátozás az első szülőre"
+
+#: gitk:3839
+msgid "Simple history"
+msgstr "Egyszerű history"
+
+#: gitk:3840
+msgid "Additional arguments to git log:"
+msgstr "További argumentok a git log-hoz:"
+
+#: gitk:3841
+msgid "Enter files and directories to include, one per line:"
+msgstr "Fájlok és könyvtárak bejegyzése amiket tartalmaz, soronként:"
+
+#: gitk:3842
+msgid "Command to generate more commits to include:"
+msgstr "Parancs több tartalmazó commit generálására:"
+
+#: gitk:3964
+msgid "Gitk: edit view"
+msgstr "Gitk: szerkesztés nézet"
+
+#: gitk:3972
+msgid "-- criteria for selecting revisions"
+msgstr "-- kritériumok a revíziók kiválasztásához"
+
+#: gitk:3977
+msgid "View Name"
+msgstr "Nézet neve"
+
+#: gitk:4052
+msgid "Apply (F5)"
+msgstr "Alkalmaz (F5)"
+
+#: gitk:4090
+msgid "Error in commit selection arguments:"
+msgstr "Hiba történt a commit argumentumok kiválasztása közben:"
+
+#: gitk:4143 gitk:4195 gitk:4643 gitk:4657 gitk:5918 gitk:11519 gitk:11520
+msgid "None"
+msgstr "Keine"
+
+#: gitk:4591 gitk:6438 gitk:8282 gitk:8297
+msgid "Date"
+msgstr "Dátum"
+
+#: gitk:4591 gitk:6438
+msgid "CDate"
+msgstr "Dátum"
+
+#: gitk:4740 gitk:4745
+msgid "Descendant"
+msgstr "Leszármazott"
+
+#: gitk:4741
+msgid "Not descendant"
+msgstr "Nem leszármazott"
+
+#: gitk:4748 gitk:4753
+msgid "Ancestor"
+msgstr "Előd"
+
+#: gitk:4749
+msgid "Not ancestor"
+msgstr "Nem előd"
+
+#: gitk:5039
+msgid "Local changes checked in to index but not committed"
+msgstr ""
+"Lokális változtatások, melyek be vannak téve az indexbe, de még nincsenek "
+"commitolva"
+
+#: gitk:5075
+msgid "Local uncommitted changes, not checked in to index"
+msgstr "Lokális nem commitolt változások, nincsenek betéve az indexbe"
+
+#: gitk:6756
+msgid "many"
+msgstr "sok"
+
+#: gitk:6939
+msgid "Tags:"
+msgstr "Tagek:"
+
+#: gitk:6956 gitk:6962 gitk:8275
+msgid "Parent"
+msgstr "Eltern"
+
+#: gitk:6967
+msgid "Child"
+msgstr "Gyerek"
+
+#: gitk:6976
+msgid "Branch"
+msgstr "Ág"
+
+#: gitk:6979
+msgid "Follows"
+msgstr "Következők"
+
+#: gitk:6982
+msgid "Precedes"
+msgstr "Megelőzők"
+
+#: gitk:7519
+#, tcl-format
+msgid "Error getting diffs: %s"
+msgstr "Hiba történt a diff-ek letöltése közben: %s"
+
+#: gitk:8103
+msgid "Goto:"
+msgstr "Menj:"
+
+#: gitk:8105
+msgid "SHA1 ID:"
+msgstr "SHA1 ID:"
+
+#: gitk:8124
+#, tcl-format
+msgid "Short SHA1 id %s is ambiguous"
+msgstr "Rövid SHA1 id %s félreérthető"
+
+#: gitk:8131
+msgid "Revision %s is not known"
+msgstr "A(z) %s revízió nem ismert"
+
+#: gitk:8141
+#, tcl-format
+msgid "SHA1 id %s is not known"
+msgstr "SHA1 id %s nem ismert"
+
+#: gitk:8143
+#, tcl-format
+msgid "Revision %s is not in the current view"
+msgstr "A(z) %s revízió nincs a jelenlegi nézetben"
+
+#: gitk:8285
+msgid "Children"
+msgstr "Gyerekek"
+
+#: gitk:8343
+#, tcl-format
+msgid "Reset %s branch to here"
+msgstr "Állítsd vissza a %s branch-ot ide"
+
+#: gitk:8345
+msgid "Detached head: can't reset"
+msgstr "Elkülönített head: nem lehet visszaállítani"
+
+#: gitk:8454 gitk:8460
+msgid "Skipping merge commit "
+msgstr "Merge commit kihagyása "
+
+#: gitk:8469 gitk:8474
+msgid "Error getting patch ID for "
+msgstr "Hiba történt a patch ID megszerzése közben a következőnél "
+
+#: gitk:8470 gitk:8475
+msgid " - stopping\n"
+msgstr " - abbahagyás\n"
+
+#: gitk:8480 gitk:8483 gitk:8491 gitk:8505 gitk:8514
+msgid "Commit "
+msgstr "Commit "
+
+#: gitk:8484
+msgid ""
+" is the same patch as\n"
+" "
+msgstr ""
+" Ugyanaz a patch mint\n"
+" "
+
+#: gitk:8492
+msgid ""
+" differs from\n"
+" "
+msgstr ""
+" különbözik innentől\n"
+" "
+
+#: gitk:8494
+msgid ""
+"Diff of commits:\n"
+"\n"
+msgstr ""
+"A commitok diffje:\n"
+"\n"
+
+#: gitk:8506 gitk:8515
+#, tcl-format
+msgid " has %s children - stopping\n"
+msgstr " %s gyereke van. abbahagyás\n"
+
+#: gitk:8534
+msgid "Error writing commit to file: %s"
+msgstr "Hiba történt a commit fájlba írása közben: %s"
+
+#: gitk:8540
+msgid "Error diffing commits: %s"
+msgstr "Hiba történt a commitok diffelése közben: %s"
+
+#: gitk:8570
+msgid "Top"
+msgstr "Teteje"
+
+#: gitk:8571
+msgid "From"
+msgstr "Innen"
+
+#: gitk:8576
+msgid "To"
+msgstr "Ide"
+
+#: gitk:8600
+msgid "Generate patch"
+msgstr "Patch generálása"
+
+#: gitk:8602
+msgid "From:"
+msgstr "Innen:"
+
+#: gitk:8611
+msgid "To:"
+msgstr "Ide:"
+
+#: gitk:8620
+msgid "Reverse"
+msgstr "Visszafele"
+
+#: gitk:8622 gitk:8807
+msgid "Output file:"
+msgstr "Kimeneti fájl:"
+
+#: gitk:8628
+msgid "Generate"
+msgstr "Generálás"
+
+#: gitk:8666
+msgid "Error creating patch:"
+msgstr "Hiba törtét a patch készítése közben:"
+
+#: gitk:8689 gitk:8795 gitk:8852
+msgid "ID:"
+msgstr "ID:"
+
+#: gitk:8698
+msgid "Tag name:"
+msgstr "Tag név:"
+
+#: gitk:8702 gitk:8861
+msgid "Create"
+msgstr "Létrehozás"
+
+#: gitk:8719
+msgid "No tag name specified"
+msgstr "A tag neve nincsen megadva"
+
+#: gitk:8723
+#, tcl-format
+msgid "Tag \"%s\" already exists"
+msgstr "%s Tag már létezik"
+
+#: gitk:8729
+msgid "Error creating tag:"
+msgstr "Hiba történt a tag létrehozása közben:"
+
+#: gitk:8804
+msgid "Command:"
+msgstr "Parancs:"
+
+#: gitk:8812
+msgid "Write"
+msgstr "Írás"
+
+#: gitk:8830
+msgid "Error writing commit:"
+msgstr "Hiba történt a commit írása közben:"
+
+#: gitk:8857
+msgid "Name:"
+msgstr "Név:"
+
+#: gitk:8880
+msgid "Please specify a name for the new branch"
+msgstr "Kérem adja meg a nevét az új branchhoz"
+
+#: gitk:8885
+#, tcl-format
+msgid "Branch '%s' already exists. Overwrite?"
+msgstr "%s branch már létezik. Felülírja?"
+
+#: gitk:8951
+#, tcl-format
+msgid "Commit %s is already included in branch %s -- really re-apply it?"
+msgstr ""
+"%s commit már benne van a %s branchban -- biztos hogy újra csinálja ?"
+"eintragen?"
+
+#: gitk:8956
+msgid "Cherry-picking"
+msgstr "Cherry-picking"
+
+#: gitk:8965
+#, tcl-format
+msgid ""
+"Cherry-pick failed because of local changes to file '%s'.\n"
+"Please commit, reset or stash your changes and try again."
+msgstr ""
+"Cherry-pick hiba történt lokális váltotások miatt a '%s' fájlban.\n"
+"Kérem commitolja, indítsa újra vagy rejtse el a változtatásait és próbálja "
+"újra."
+
+#: gitk:8971
+msgid ""
+"Cherry-pick failed because of merge conflict.\n"
+"Do you wish to run git citool to resolve it?"
+msgstr ""
+"Cherry-pick hiba történt merge konfliktus miatt.\n"
+"Kívánja futtatni a git citool-t a probléma megoldásához?"
+
+#: gitk:8987
+msgid "No changes committed"
+msgstr "Nincsen változás commitolva"
+
+#: gitk:9013
+msgid "Confirm reset"
+msgstr "Újraindítás megerősítése"
+
+#: gitk:9015
+#, tcl-format
+msgid "Reset branch %s to %s?"
+msgstr "Újraindítja a %s branchot %s-ig?"
+
+#: gitk:9017
+msgid "Reset type:"
+msgstr "Újraindítás típusa:"
+
+#: gitk:9020
+msgid "Soft: Leave working tree and index untouched"
+msgstr "Soft: Hagyd a working tree-t és az indexet érintetlenül"
+
+#: gitk:9023
+msgid "Mixed: Leave working tree untouched, reset index"
+msgstr "Kevert: Hagyd a working tree-t érintetlenül, töröld az indexet"
+
+#: gitk:9026
+msgid ""
+"Hard: Reset working tree and index\n"
+"(discard ALL local changes)"
+msgstr ""
+"Hard: Indítsd újra a working tree-t és az indexet\n"
+"(MINDEN lokális változás eldobása)"
+
+#: gitk:9043
+msgid "Resetting"
+msgstr "Újraindítás"
+
+#: gitk:9103
+msgid "Checking out"
+msgstr "Kivesz"
+
+#: gitk:9156
+msgid "Cannot delete the currently checked-out branch"
+msgstr "Nem lehet a jelenleg kivett branch-ot törölni"
+
+#: gitk:9162
+#, tcl-format
+msgid ""
+"The commits on branch %s aren't on any other branch.\n"
+"Really delete branch %s?"
+msgstr ""
+"A %s branchon található commit nem található meg semelyik másik branchon.\n"
+"Tényleg törli a %s branchot?"
+
+#: gitk:9193
+#, tcl-format
+msgid "Tags and heads: %s"
+msgstr "Tagek és headek: %s"
+
+#: gitk:9208
+msgid "Filter"
+msgstr "Szűrő"
+
+#: gitk:9503
+msgid ""
+"Error reading commit topology information; branch and preceding/following "
+"tag information will be incomplete."
+msgstr ""
+"Hiba történt a commit topológiai információ olvasása közben; branch ésa "
+"megelőző/következő információ nem lesz teljes."
+
+#: gitk:10489
+msgid "Tag"
+msgstr "Tag"
+
+#: gitk:10489
+msgid "Id"
+msgstr "Id"
+
+#: gitk:10539
+msgid "Gitk font chooser"
+msgstr "Gitk-betű kiválasztó"
+
+#: gitk:10556
+msgid "B"
+msgstr "F"
+
+#: gitk:10559
+msgid "I"
+msgstr "K"
+
+#: gitk:10677
+msgid "Gitk preferences"
+msgstr "Gitk beállítások"
+
+#: gitk:10679
+msgid "Commit list display options"
+msgstr "Commit lista kijelzési opciók"
+
+#: gitk:10682
+msgid "Maximum graph width (lines)"
+msgstr "Maximális grafikon szélesség (sorok)"
+
+#: gitk:10685
+#, tcl-format
+msgid "Maximum graph width (% of pane)"
+msgstr "Maximális grafikon szélesség (táble %-je)"
+
+#: gitk:10688
+msgid "Show local changes"
+msgstr "Mutasd a lokális változtatásokat"
+
+#: gitk:10691
+msgid "Auto-select SHA1"
+msgstr "SHA1 Automatikus kiválasztása"
+
+#: gitk:10694
+msgid "Hide remote refs"
+msgstr "A távoli refek elrejtése"
+
+#: gitk:10698
+msgid "Diff display options"
+msgstr "Diff kijelző opciók"
+
+#: gitk:10700
+msgid "Tab spacing"
+msgstr "Tab sorköz"
+
+#: gitk:10703
+msgid "Display nearby tags"
+msgstr "Szomszédos tagek kijelzése"
+
+#: gitk:10706
+msgid "Limit diffs to listed paths"
+msgstr "Korlátozott diffek a kilistázott útvonalakhoz"
+
+#: gitk:10709
+msgid "Support per-file encodings"
+msgstr "Fájlonkénti kódolás támgatása"
+
+#: gitk:10715 gitk:10804
+msgid "External diff tool"
+msgstr "Külső diff alkalmazás"
+
+#: gitk:10716
+msgid "Choose..."
+msgstr "Válaszd ..."
+
+#: gitk:10721
+msgid "General options"
+msgstr "Általános opciók"
+
+#: gitk:10724
+msgid "Use themed widgets"
+msgstr "Témázott vezérlők használata"
+
+#: gitk:10726
+msgid "(change requires restart)"
+msgstr "(a változás újraindítást igényel)"
+
+#: gitk:10728
+msgid "(currently unavailable)"
+msgstr "(jelenleg nem elérhető)"
+
+#: gitk:10732
+msgid "Colors: press to choose"
+msgstr "Színek: nyomja meg a kiválasztáshoz"
+
+#: gitk:10735
+msgid "Interface"
+msgstr "Interfész"
+
+#: gitk:10736
+msgid "interface"
+msgstr "interfész"
+
+#: gitk:10739
+msgid "Background"
+msgstr "Háttér"
+
+#: gitk:10740 gitk:10770
+msgid "background"
+msgstr "háttér"
+
+#: gitk:10743
+msgid "Foreground"
+msgstr "Előtér"
+
+#: gitk:10744
+msgid "foreground"
+msgstr "előtér"
+
+#: gitk:10747
+msgid "Diff: old lines"
+msgstr "Diff: régi sorok"
+
+#: gitk:10748
+msgid "diff old lines"
+msgstr "diff régi sorok"
+
+#: gitk:10752
+msgid "Diff: new lines"
+msgstr "Diff: új sorok"
+
+#: gitk:10753
+msgid "diff new lines"
+msgstr "diff - új sorok"
+
+#: gitk:10757
+msgid "Diff: hunk header"
+msgstr "Diff: nagy headerök"
+
+#: gitk:10759
+msgid "diff hunk header"
+msgstr "diff - nagy headerök"
+
+#: gitk:10763
+msgid "Marked line bg"
+msgstr "Megjelölt sor háttér"
+
+#: gitk:10765
+msgid "marked line background"
+msgstr "megjelölt sor háttér"
+
+#: gitk:10769
+msgid "Select bg"
+msgstr "Válasszon hátteret"
+
+#: gitk:10773
+msgid "Fonts: press to choose"
+msgstr "Betű: nyomja meg a kiválasztáshoz"
+
+#: gitk:10775
+msgid "Main font"
+msgstr "Fő betű"
+
+#: gitk:10776
+msgid "Diff display font"
+msgstr "Diff kijelző betű"
+
+#: gitk:10777
+msgid "User interface font"
+msgstr "Felhasználói interfész betű"
+
+#: gitk:10814
+#, tcl-format
+msgid "Gitk: choose color for %s"
+msgstr "Gitk: válasszon színt a %s-ra"
+
+#: gitk:11418
+msgid "Cannot find a git repository here."
+msgstr "Nem találhatü git repository itt."
+
+#: gitk:11422
+#, tcl-format
+msgid "Cannot find the git directory \"%s\"."
+msgstr "Nem található a \"%s\" könyvtár."
+
+#: gitk:11469
+#, tcl-format
+msgid "Ambiguous argument '%s': both revision and filename"
+msgstr "Félreérthető argumentum '%s': revízió és fájlnév is"
+
+#: gitk:11481
+msgid "Bad arguments to gitk:"
+msgstr "Rossz gitk argumentumok:"
+
+#: gitk:11572
+msgid "Command line"
+msgstr "Parancs sor"
+
+#~ msgid "Use all refs"
+#~ msgstr "Használd az összes referenciát"
+
+#~ msgid "Max count:"
+#~ msgstr "Max. szám:"
+
+#~ msgid "Skip:"
+#~ msgstr "Kihagy:"
+
+#~ msgid "Name"
+#~ msgstr "Név"
+
+#~ msgid "Tag/Head %s is not known"
+#~ msgstr "Tag/Head %s nem ismert"
+
+#~ msgid "- stopping\n"
+#~ msgstr "- abbahagyás.\n"
+
+#~ msgid ""
+#~ "Sorry, gitk cannot run with this version of Tcl/Tk.\n"
+#~ " Gitk requires at least Tcl/Tk 8.4."
+#~ msgstr ""
+#~ "Sajnáljuk, de a gitk nem futtatható ezzel a Tcl/Tk verzióval.\n"
+#~ "Gitk futtatásához legalább Tcl/Tk 8.4 szükséges."
msgstr ""
"Project-Id-Version: gitk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-10-18 22:03+1100\n"
-"PO-Revision-Date: 2008-03-13 17:34+0100\n"
+"POT-Creation-Date: 2010-01-28 18:40+0100\n"
+"PO-Revision-Date: 2010-01-28 18:41+0100\n"
"Last-Translator: Michele Ballabio <barra_cuda@katamail.com>\n"
"Language-Team: Italian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: gitk:113
+#: gitk:115
msgid "Couldn't get list of unmerged files:"
msgstr "Impossibile ottenere l'elenco dei file in attesa di fusione:"
-#: gitk:340
+#: gitk:274
+msgid "Error parsing revisions:"
+msgstr "Errore nella lettura delle revisioni:"
+
+#: gitk:329
+msgid "Error executing --argscmd command:"
+msgstr "Errore nell'esecuzione del comando specificato con --argscmd:"
+
+#: gitk:342
msgid "No files selected: --merge specified but no files are unmerged."
msgstr ""
"Nessun file selezionato: è stata specificata l'opzione --merge ma non ci "
"sono file in attesa di fusione."
-#: gitk:343
+#: gitk:345
msgid ""
"No files selected: --merge specified but no unmerged files are within file "
"limit."
"Nessun file selezionato: è stata specificata l'opzione --merge ma i file "
"specificati non sono in attesa di fusione."
-#: gitk:365 gitk:503
+#: gitk:367 gitk:514
msgid "Error executing git log:"
msgstr "Errore nell'esecuzione di git log:"
-#: gitk:378
+#: gitk:385 gitk:530
msgid "Reading"
msgstr "Lettura in corso"
-#: gitk:438 gitk:3462
+#: gitk:445 gitk:4261
msgid "Reading commits..."
msgstr "Lettura delle revisioni in corso..."
-#: gitk:441 gitk:1528 gitk:3465
+#: gitk:448 gitk:1578 gitk:4264
msgid "No commits selected"
msgstr "Nessuna revisione selezionata"
-#: gitk:1399
+#: gitk:1454
msgid "Can't parse git log output:"
msgstr "Impossibile elaborare i dati di git log:"
-#: gitk:1605
+#: gitk:1674
msgid "No commit information available"
msgstr "Nessuna informazione disponibile sulle revisioni"
-#: gitk:1709 gitk:1731 gitk:3259 gitk:7764 gitk:9293 gitk:9466
+#: gitk:1816
+msgid "mc"
+msgstr ""
+
+#: gitk:1851 gitk:4054 gitk:9044 gitk:10585 gitk:10804
msgid "OK"
msgstr "OK"
-#: gitk:1733 gitk:3260 gitk:7439 gitk:7510 gitk:7613 gitk:7660 gitk:7766
-#: gitk:9294 gitk:9467
+#: gitk:1853 gitk:4056 gitk:8634 gitk:8713 gitk:8828 gitk:8877 gitk:9046
+#: gitk:10586 gitk:10805
msgid "Cancel"
msgstr "Annulla"
-#: gitk:1811
+#: gitk:1975
msgid "Update"
msgstr "Aggiorna"
-#: gitk:1813
+#: gitk:1976
+msgid "Reload"
+msgstr "Ricarica"
+
+#: gitk:1977
msgid "Reread references"
msgstr "Rileggi riferimenti"
-#: gitk:1814
+#: gitk:1978
msgid "List references"
msgstr "Elenca riferimenti"
-#: gitk:1815
+#: gitk:1980
+msgid "Start git gui"
+msgstr "Avvia git gui"
+
+#: gitk:1982
msgid "Quit"
msgstr "Esci"
-#: gitk:1810
+#: gitk:1974
msgid "File"
msgstr "File"
-#: gitk:1818
+#: gitk:1986
msgid "Preferences"
msgstr "Preferenze"
-#: gitk:1817
+#: gitk:1985
msgid "Edit"
msgstr "Modifica"
-#: gitk:1821
+#: gitk:1990
msgid "New view..."
msgstr "Nuova vista..."
-#: gitk:1822
+#: gitk:1991
msgid "Edit view..."
msgstr "Modifica vista..."
-#: gitk:1823
+#: gitk:1992
msgid "Delete view"
msgstr "Elimina vista"
-#: gitk:1825
+#: gitk:1994
msgid "All files"
msgstr "Tutti i file"
-#: gitk:1820 gitk:3196
+#: gitk:1989 gitk:3808
msgid "View"
msgstr "Vista"
-#: gitk:1828 gitk:2487
+#: gitk:1999 gitk:2009 gitk:2780
msgid "About gitk"
msgstr "Informazioni su gitk"
-#: gitk:1829
+#: gitk:2000 gitk:2014
msgid "Key bindings"
msgstr "Scorciatoie da tastiera"
-#: gitk:1827
+#: gitk:1998 gitk:2013
msgid "Help"
msgstr "Aiuto"
-#: gitk:1887
-msgid "SHA1 ID: "
-msgstr "SHA1 ID: "
+#: gitk:2091 gitk:8110
+msgid "SHA1 ID:"
+msgstr "SHA1 ID:"
-#: gitk:1918
+#: gitk:2122
msgid "Row"
-msgstr ""
+msgstr "Riga"
-#: gitk:1949
+#: gitk:2160
msgid "Find"
msgstr "Trova"
-#: gitk:1950
+#: gitk:2161
msgid "next"
msgstr "succ"
-#: gitk:1951
+#: gitk:2162
msgid "prev"
msgstr "prec"
-#: gitk:1952
+#: gitk:2163
msgid "commit"
msgstr "revisione"
-#: gitk:1955 gitk:1957 gitk:3617 gitk:3640 gitk:3664 gitk:5550 gitk:5621
+#: gitk:2166 gitk:2168 gitk:4422 gitk:4445 gitk:4469 gitk:6410 gitk:6482
+#: gitk:6566
msgid "containing:"
msgstr "contenente:"
-#: gitk:1958 gitk:2954 gitk:2959 gitk:3692
+#: gitk:2169 gitk:3290 gitk:3295 gitk:4497
msgid "touching paths:"
msgstr "che riguarda i percorsi:"
-#: gitk:1959 gitk:3697
+#: gitk:2170 gitk:4502
msgid "adding/removing string:"
msgstr "che aggiunge/rimuove la stringa:"
-#: gitk:1968 gitk:1970
+#: gitk:2179 gitk:2181
msgid "Exact"
msgstr "Esatto"
-#: gitk:1970 gitk:3773 gitk:5518
+#: gitk:2181 gitk:4577 gitk:6378
msgid "IgnCase"
msgstr ""
-#: gitk:1970 gitk:3666 gitk:3771 gitk:5514
+#: gitk:2181 gitk:4471 gitk:4575 gitk:6374
msgid "Regexp"
msgstr ""
-#: gitk:1972 gitk:1973 gitk:3792 gitk:3822 gitk:3829 gitk:5641 gitk:5708
+#: gitk:2183 gitk:2184 gitk:4596 gitk:4626 gitk:4633 gitk:6502 gitk:6570
msgid "All fields"
msgstr "Tutti i campi"
-#: gitk:1973 gitk:3790 gitk:3822 gitk:5580
+#: gitk:2184 gitk:4594 gitk:4626 gitk:6441
msgid "Headline"
msgstr "Titolo"
-#: gitk:1974 gitk:3790 gitk:5580 gitk:5708 gitk:6109
+#: gitk:2185 gitk:4594 gitk:6441 gitk:6570 gitk:7003
msgid "Comments"
msgstr "Commenti"
-#: gitk:1974 gitk:3790 gitk:3794 gitk:3829 gitk:5580 gitk:6045 gitk:7285
-#: gitk:7300
+#: gitk:2185 gitk:4594 gitk:4598 gitk:4633 gitk:6441 gitk:6938 gitk:8285
+#: gitk:8300
msgid "Author"
msgstr "Autore"
-#: gitk:1974 gitk:3790 gitk:5580 gitk:6047
+#: gitk:2185 gitk:4594 gitk:6441 gitk:6940
msgid "Committer"
msgstr "Revisione creata da"
-#: gitk:2003
+#: gitk:2216
msgid "Search"
msgstr "Cerca"
-#: gitk:2010
+#: gitk:2224
msgid "Diff"
msgstr ""
-#: gitk:2012
+#: gitk:2226
msgid "Old version"
msgstr "Vecchia versione"
-#: gitk:2014
+#: gitk:2228
msgid "New version"
msgstr "Nuova versione"
-#: gitk:2016
+#: gitk:2230
msgid "Lines of context"
msgstr "Linee di contesto"
-#: gitk:2026
+#: gitk:2240
msgid "Ignore space change"
msgstr "Ignora modifiche agli spazi"
-#: gitk:2084
+#: gitk:2299
msgid "Patch"
msgstr "Modifiche"
-#: gitk:2086
+#: gitk:2301
msgid "Tree"
msgstr "Directory"
-#: gitk:2213 gitk:2226
+#: gitk:2456 gitk:2473
msgid "Diff this -> selected"
msgstr "Diff questo -> selezionato"
-#: gitk:2214 gitk:2227
+#: gitk:2457 gitk:2474
msgid "Diff selected -> this"
msgstr "Diff selezionato -> questo"
-#: gitk:2215 gitk:2228
+#: gitk:2458 gitk:2475
msgid "Make patch"
msgstr "Crea patch"
-#: gitk:2216 gitk:7494
+#: gitk:2459 gitk:8692
msgid "Create tag"
msgstr "Crea etichetta"
-#: gitk:2217 gitk:7593
+#: gitk:2460 gitk:8808
msgid "Write commit to file"
msgstr "Scrivi revisione in un file"
-#: gitk:2218 gitk:7647
+#: gitk:2461 gitk:8865
msgid "Create new branch"
msgstr "Crea un nuovo ramo"
-#: gitk:2219
+#: gitk:2462
msgid "Cherry-pick this commit"
msgstr "Porta questa revisione in cima al ramo attuale"
-#: gitk:2220
+#: gitk:2463
msgid "Reset HEAD branch to here"
msgstr "Aggiorna il ramo HEAD a questa revisione"
-#: gitk:2234
+#: gitk:2464
+msgid "Mark this commit"
+msgstr "Segna questa revisione"
+
+#: gitk:2465
+msgid "Return to mark"
+msgstr "Torna alla revisione segnata"
+
+#: gitk:2466
+msgid "Find descendant of this and mark"
+msgstr "Trova il discendente di questa revisione e di quella segnata"
+
+#: gitk:2467
+msgid "Compare with marked commit"
+msgstr "Confronta con la revisione segnata"
+
+#: gitk:2481
msgid "Check out this branch"
msgstr "Attiva questo ramo"
-#: gitk:2235
+#: gitk:2482
msgid "Remove this branch"
msgstr "Elimina questo ramo"
-#: gitk:2242
+#: gitk:2489
msgid "Highlight this too"
msgstr "Evidenzia anche questo"
-#: gitk:2243
+#: gitk:2490
msgid "Highlight this only"
msgstr "Evidenzia solo questo"
-#: gitk:2245
+#: gitk:2491
+msgid "External diff"
+msgstr "Visualizza differenze in un altro programma"
+
+#: gitk:2492
msgid "Blame parent commit"
-msgstr ""
+msgstr "Annota la revisione precedente"
+
+#: gitk:2499
+msgid "Show origin of this line"
+msgstr "Mostra la provenienza di questa riga"
-#: gitk:2488
+#: gitk:2500
+msgid "Run git gui blame on this line"
+msgstr "Esegui git gui blame su questa riga"
+
+#: gitk:2782
msgid ""
"\n"
"Gitk - a commit viewer for git\n"
"\n"
-"Copyright © 2005-2008 Paul Mackerras\n"
+"Copyright © 2005-2009 Paul Mackerras\n"
"\n"
"Use and redistribute under the terms of the GNU General Public License"
msgstr ""
"\n"
"Gitk - un visualizzatore di revisioni per git\n"
"\n"
-"Copyright © 2005-2008 Paul Mackerras\n"
+"Copyright © 2005-2009 Paul Mackerras\n"
"\n"
"Utilizzo e redistribuzione permessi sotto i termini della GNU General Public "
"License"
-#: gitk:2496 gitk:2557 gitk:7943
+#: gitk:2790 gitk:2854 gitk:9230
msgid "Close"
msgstr "Chiudi"
-#: gitk:2515
+#: gitk:2811
msgid "Gitk key bindings"
msgstr "Scorciatoie da tastiera di Gitk"
-#: gitk:2517
+#: gitk:2814
msgid "Gitk key bindings:"
msgstr "Scorciatoie da tastiera di Gitk:"
-#: gitk:2519
+#: gitk:2816
#, tcl-format
msgid "<%s-Q>\t\tQuit"
msgstr "<%s-Q>\t\tEsci"
-#: gitk:2520
+#: gitk:2817
msgid "<Home>\t\tMove to first commit"
msgstr "<Home>\t\tVai alla prima revisione"
-#: gitk:2521
+#: gitk:2818
msgid "<End>\t\tMove to last commit"
msgstr "<End>\t\tVai all'ultima revisione"
-#: gitk:2522
+#: gitk:2819
msgid "<Up>, p, i\tMove up one commit"
-msgstr "<Up>, p, i\tVai più in alto di una revisione"
+msgstr "<Su>, p, i\tVai più in alto di una revisione"
-#: gitk:2523
+#: gitk:2820
msgid "<Down>, n, k\tMove down one commit"
-msgstr "<Down>, n, k\tVai più in basso di una revisione"
+msgstr "<Giù>, n, k\tVai più in basso di una revisione"
-#: gitk:2524
+#: gitk:2821
msgid "<Left>, z, j\tGo back in history list"
-msgstr "<Left>, z, j\tTorna indietro nella cronologia"
+msgstr "<Sinistra>, z, j\tTorna indietro nella cronologia"
-#: gitk:2525
+#: gitk:2822
msgid "<Right>, x, l\tGo forward in history list"
-msgstr "<Right>, x, l\tVai avanti nella cronologia"
+msgstr "<Destra>, x, l\tVai avanti nella cronologia"
-#: gitk:2526
+#: gitk:2823
msgid "<PageUp>\tMove up one page in commit list"
-msgstr "<PageUp>\tVai più in alto di una pagina nella lista delle revisioni"
+msgstr "<PaginaSu>\tVai più in alto di una pagina nella lista delle revisioni"
-#: gitk:2527
+#: gitk:2824
msgid "<PageDown>\tMove down one page in commit list"
-msgstr "<PageDown>\tVai più in basso di una pagina nella lista delle revisioni"
+msgstr ""
+"<PaginaGiù>\tVai più in basso di una pagina nella lista delle revisioni"
-#: gitk:2528
+#: gitk:2825
#, tcl-format
msgid "<%s-Home>\tScroll to top of commit list"
msgstr "<%s-Home>\tScorri alla cima della lista delle revisioni"
-#: gitk:2529
+#: gitk:2826
#, tcl-format
msgid "<%s-End>\tScroll to bottom of commit list"
msgstr "<%s-End>\tScorri alla fine della lista delle revisioni"
-#: gitk:2530
+#: gitk:2827
#, tcl-format
msgid "<%s-Up>\tScroll commit list up one line"
-msgstr "<%s-Up>\tScorri la lista delle revisioni in alto di una riga"
+msgstr "<%s-Su>\tScorri la lista delle revisioni in alto di una riga"
-#: gitk:2531
+#: gitk:2828
#, tcl-format
msgid "<%s-Down>\tScroll commit list down one line"
-msgstr "<%s-Down>\tScorri la lista delle revisioni in basso di una riga"
+msgstr "<%s-Giù>\tScorri la lista delle revisioni in basso di una riga"
-#: gitk:2532
+#: gitk:2829
#, tcl-format
msgid "<%s-PageUp>\tScroll commit list up one page"
-msgstr "<%s-PageUp>\tScorri la lista delle revisioni in alto di una pagina"
+msgstr "<%s-PaginaSu>\tScorri la lista delle revisioni in alto di una pagina"
-#: gitk:2533
+#: gitk:2830
#, tcl-format
msgid "<%s-PageDown>\tScroll commit list down one page"
-msgstr "<%s-PageDown>\tScorri la lista delle revisioni in basso di una pagina"
+msgstr "<%s-PaginaGiù>\tScorri la lista delle revisioni in basso di una pagina"
-#: gitk:2534
+#: gitk:2831
msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
-msgstr "<Shift-Up>\tTrova all'indietro (verso l'alto, revisioni successive)"
+msgstr "<Shift-Su>\tTrova all'indietro (verso l'alto, revisioni successive)"
-#: gitk:2535
+#: gitk:2832
msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
-msgstr "<Shift-Down>\tTrova in avanti (verso il basso, revisioni precedenti)"
+msgstr "<Shift-Giù>\tTrova in avanti (verso il basso, revisioni precedenti)"
-#: gitk:2536
+#: gitk:2833
msgid "<Delete>, b\tScroll diff view up one page"
msgstr "<Delete>, b\tScorri la vista delle differenze in alto di una pagina"
-#: gitk:2537
+#: gitk:2834
msgid "<Backspace>\tScroll diff view up one page"
msgstr "<Backspace>\tScorri la vista delle differenze in alto di una pagina"
-#: gitk:2538
+#: gitk:2835
msgid "<Space>\t\tScroll diff view down one page"
-msgstr "<Space>\t\tScorri la vista delle differenze in basso di una pagina"
+msgstr "<Spazio>\t\tScorri la vista delle differenze in basso di una pagina"
-#: gitk:2539
+#: gitk:2836
msgid "u\t\tScroll diff view up 18 lines"
msgstr "u\t\tScorri la vista delle differenze in alto di 18 linee"
-#: gitk:2540
+#: gitk:2837
msgid "d\t\tScroll diff view down 18 lines"
msgstr "d\t\tScorri la vista delle differenze in basso di 18 linee"
-#: gitk:2541
+#: gitk:2838
#, tcl-format
msgid "<%s-F>\t\tFind"
msgstr "<%s-F>\t\tTrova"
-#: gitk:2542
+#: gitk:2839
#, tcl-format
msgid "<%s-G>\t\tMove to next find hit"
msgstr "<%s-G>\t\tTrova in avanti"
-#: gitk:2543
+#: gitk:2840
msgid "<Return>\tMove to next find hit"
-msgstr "<Return>\tTrova in avanti"
+msgstr "<Invio>\tTrova in avanti"
-#: gitk:2544
-msgid "/\t\tMove to next find hit, or redo find"
-msgstr "/\t\tTrova in avanti, o cerca di nuovo"
+#: gitk:2841
+msgid "/\t\tFocus the search box"
+msgstr "/\t\tCursore nel box di ricerca"
-#: gitk:2545
+#: gitk:2842
msgid "?\t\tMove to previous find hit"
msgstr "?\t\tTrova all'indietro"
-#: gitk:2546
+#: gitk:2843
msgid "f\t\tScroll diff view to next file"
msgstr "f\t\tScorri la vista delle differenze al file successivo"
-#: gitk:2547
+#: gitk:2844
#, tcl-format
msgid "<%s-S>\t\tSearch for next hit in diff view"
msgstr "<%s-S>\t\tCerca in avanti nella vista delle differenze"
-#: gitk:2548
+#: gitk:2845
#, tcl-format
msgid "<%s-R>\t\tSearch for previous hit in diff view"
msgstr "<%s-R>\t\tCerca all'indietro nella vista delle differenze"
-#: gitk:2549
+#: gitk:2846
#, tcl-format
msgid "<%s-KP+>\tIncrease font size"
-msgstr "<%s-KP+>\tAumenta grandezza carattere"
+msgstr "<%s-KP+>\tAumenta dimensione carattere"
-#: gitk:2550
+#: gitk:2847
#, tcl-format
msgid "<%s-plus>\tIncrease font size"
-msgstr "<%s-plus>\tAumenta grandezza carattere"
+msgstr "<%s-più>\tAumenta dimensione carattere"
-#: gitk:2551
+#: gitk:2848
#, tcl-format
msgid "<%s-KP->\tDecrease font size"
-msgstr "<%s-KP->\tDiminuisci grandezza carattere"
+msgstr "<%s-KP->\tDiminuisci dimensione carattere"
-#: gitk:2552
+#: gitk:2849
#, tcl-format
msgid "<%s-minus>\tDecrease font size"
-msgstr "<%s-minus>\tDiminuisci grandezza carattere"
+msgstr "<%s-meno>\tDiminuisci dimensione carattere"
-#: gitk:2553
+#: gitk:2850
msgid "<F5>\t\tUpdate"
msgstr "<F5>\t\tAggiorna"
-#: gitk:3200
+#: gitk:3305 gitk:3314
+#, tcl-format
+msgid "Error creating temporary directory %s:"
+msgstr "Errore durante la creazione della directory temporanea %s:"
+
+#: gitk:3327
+#, tcl-format
+msgid "Error getting \"%s\" from %s:"
+msgstr "Errore nella lettura di \"%s\" da %s:"
+
+#: gitk:3390
+msgid "command failed:"
+msgstr "impossibile eseguire il comando:"
+
+#: gitk:3539
+msgid "No such commit"
+msgstr "Revisione inesistente"
+
+#: gitk:3553
+msgid "git gui blame: command failed:"
+msgstr "git gui blame: impossibile eseguire il comando:"
+
+#: gitk:3584
+#, tcl-format
+msgid "Couldn't read merge head: %s"
+msgstr "Impossibile leggere merge head: %s"
+
+#: gitk:3592
+#, tcl-format
+msgid "Error reading index: %s"
+msgstr "Errore nella lettura dell'indice: %s"
+
+#: gitk:3617
+#, tcl-format
+msgid "Couldn't start git blame: %s"
+msgstr "Impossibile eseguire git blame: %s"
+
+#: gitk:3620 gitk:6409
+msgid "Searching"
+msgstr "Ricerca in corso"
+
+#: gitk:3652
+#, tcl-format
+msgid "Error running git blame: %s"
+msgstr "Errore nell'esecuzione di git blame: %s"
+
+#: gitk:3680
+#, tcl-format
+msgid "That line comes from commit %s, which is not in this view"
+msgstr "Quella riga proviene dalla revisione %s, non presente in questa vista"
+
+#: gitk:3694
+msgid "External diff viewer failed:"
+msgstr "Impossibile eseguire il visualizzatore di differenze:"
+
+#: gitk:3812
msgid "Gitk view definition"
msgstr "Scelta vista Gitk"
-#: gitk:3225
-msgid "Name"
-msgstr "Nome"
-
-#: gitk:3228
+#: gitk:3816
msgid "Remember this view"
msgstr "Ricorda questa vista"
-#: gitk:3232
-msgid "Commits to include (arguments to git log):"
-msgstr "Revisioni da includere (argomenti di git log):"
+#: gitk:3817
+msgid "References (space separated list):"
+msgstr "Riferimenti (lista di elementi separati da spazi)"
-#: gitk:3239
-msgid "Command to generate more commits to include:"
-msgstr "Comando che genera altre revisioni da visualizzare:"
+#: gitk:3818
+msgid "Branches & tags:"
+msgstr "Rami ed etichette"
+
+#: gitk:3819
+msgid "All refs"
+msgstr "Tutti i riferimenti"
+
+#: gitk:3820
+msgid "All (local) branches"
+msgstr "Tutti i rami (locali)"
+
+#: gitk:3821
+msgid "All tags"
+msgstr "Tutte le etichette"
+
+#: gitk:3822
+msgid "All remote-tracking branches"
+msgstr "Tutti i rami remoti"
+
+#: gitk:3823
+msgid "Commit Info (regular expressions):"
+msgstr "Informazioni sulla revisione (espressioni regolari):"
+
+#: gitk:3824
+msgid "Author:"
+msgstr "Autore:"
+
+#: gitk:3825
+msgid "Committer:"
+msgstr "Revisione creata da:"
+
+#: gitk:3826
+msgid "Commit Message:"
+msgstr "Messaggio di revisione:"
+
+#: gitk:3827
+msgid "Matches all Commit Info criteria"
+msgstr "Risponde a tutti i criteri di ricerca sulle revisioni"
+
+#: gitk:3828
+msgid "Changes to Files:"
+msgstr "Modifiche ai file:"
+
+#: gitk:3829
+msgid "Fixed String"
+msgstr "Stringa fissa"
+
+#: gitk:3830
+msgid "Regular Expression"
+msgstr "Espressione regolare"
+
+#: gitk:3831
+msgid "Search string:"
+msgstr "Cerca stringa:"
+
+#: gitk:3832
+msgid ""
+"Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 "
+"15:27:38\"):"
+msgstr ""
+"Date di revisione (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, "
+"2009 15:27:38\"):"
+
+#: gitk:3833
+msgid "Since:"
+msgstr "Da:"
+
+#: gitk:3834
+msgid "Until:"
+msgstr "A:"
+
+#: gitk:3835
+msgid "Limit and/or skip a number of revisions (positive integer):"
+msgstr "Limita e/o salta N revisioni (intero positivo):"
+
+#: gitk:3836
+msgid "Number to show:"
+msgstr "Numero di revisioni da mostrare:"
+
+#: gitk:3837
+msgid "Number to skip:"
+msgstr "Numero di revisioni da saltare:"
+
+#: gitk:3838
+msgid "Miscellaneous options:"
+msgstr "Altre opzioni:"
+
+#: gitk:3839
+msgid "Strictly sort by date"
+msgstr "Ordina solo per data"
+
+#: gitk:3840
+msgid "Mark branch sides"
+msgstr "Segna i lati del ramo"
+
+#: gitk:3841
+msgid "Limit to first parent"
+msgstr "Limita al primo genitore"
-#: gitk:3246
+#: gitk:3842
+msgid "Simple history"
+msgstr "Cronologia semplificata"
+
+#: gitk:3843
+msgid "Additional arguments to git log:"
+msgstr "Ulteriori argomenti da passare a git log:"
+
+#: gitk:3844
msgid "Enter files and directories to include, one per line:"
msgstr "Inserire file e directory da includere, uno per riga:"
-#: gitk:3293
+#: gitk:3845
+msgid "Command to generate more commits to include:"
+msgstr "Comando che genera altre revisioni da visualizzare:"
+
+#: gitk:3967
+msgid "Gitk: edit view"
+msgstr "Gitk: modifica vista"
+
+#: gitk:3975
+msgid "-- criteria for selecting revisions"
+msgstr "-- criteri per la scelta delle revisioni"
+
+#: gitk:3980
+msgid "View Name"
+msgstr "Nome vista"
+
+#: gitk:4055
+msgid "Apply (F5)"
+msgstr "Applica (F5)"
+
+#: gitk:4093
msgid "Error in commit selection arguments:"
msgstr "Errore negli argomenti di selezione delle revisioni:"
-#: gitk:3347 gitk:3399 gitk:3842 gitk:3856 gitk:5060 gitk:10141 gitk:10142
+#: gitk:4146 gitk:4198 gitk:4646 gitk:4660 gitk:5921 gitk:11534 gitk:11535
msgid "None"
msgstr "Nessuno"
-#: gitk:3790 gitk:5580 gitk:7287 gitk:7302
+#: gitk:4594 gitk:6441 gitk:8287 gitk:8302
msgid "Date"
msgstr "Data"
-#: gitk:3790 gitk:5580
+#: gitk:4594 gitk:6441
msgid "CDate"
msgstr ""
-#: gitk:3939 gitk:3944
+#: gitk:4743 gitk:4748
msgid "Descendant"
msgstr "Discendente"
-#: gitk:3940
+#: gitk:4744
msgid "Not descendant"
msgstr "Non discendente"
-#: gitk:3947 gitk:3952
+#: gitk:4751 gitk:4756
msgid "Ancestor"
msgstr "Ascendente"
-#: gitk:3948
+#: gitk:4752
msgid "Not ancestor"
msgstr "Non ascendente"
-#: gitk:4187
+#: gitk:5042
msgid "Local changes checked in to index but not committed"
msgstr "Modifiche locali presenti nell'indice ma non nell'archivio"
-#: gitk:4220
+#: gitk:5078
msgid "Local uncommitted changes, not checked in to index"
msgstr "Modifiche locali non presenti né nell'archivio né nell'indice"
-#: gitk:5549
-msgid "Searching"
-msgstr "Ricerca in corso"
+#: gitk:6759
+msgid "many"
+msgstr "molti"
-#: gitk:6049
+#: gitk:6942
msgid "Tags:"
msgstr "Etichette:"
-#: gitk:6066 gitk:6072 gitk:7280
+#: gitk:6959 gitk:6965 gitk:8280
msgid "Parent"
msgstr "Genitore"
-#: gitk:6077
+#: gitk:6970
msgid "Child"
msgstr "Figlio"
-#: gitk:6086
+#: gitk:6979
msgid "Branch"
msgstr "Ramo"
-#: gitk:6089
+#: gitk:6982
msgid "Follows"
msgstr "Segue"
-#: gitk:6092
+#: gitk:6985
msgid "Precedes"
msgstr "Precede"
-#: gitk:6378
-msgid "Error getting merge diffs:"
-msgstr "Errore nella lettura delle differenze di fusione:"
+#: gitk:7522
+#, tcl-format
+msgid "Error getting diffs: %s"
+msgstr "Errore nella lettura delle differenze:"
-#: gitk:7113
+#: gitk:8108
msgid "Goto:"
msgstr "Vai a:"
-#: gitk:7115
-msgid "SHA1 ID:"
-msgstr "SHA1 ID:"
-
-#: gitk:7134
+#: gitk:8129
#, tcl-format
msgid "Short SHA1 id %s is ambiguous"
msgstr "La SHA1 id abbreviata %s è ambigua"
-#: gitk:7146
+#: gitk:8136
+#, tcl-format
+msgid "Revision %s is not known"
+msgstr "La revisione %s è sconosciuta"
+
+#: gitk:8146
#, tcl-format
msgid "SHA1 id %s is not known"
msgstr "La SHA1 id %s è sconosciuta"
-#: gitk:7148
+#: gitk:8148
#, tcl-format
-msgid "Tag/Head %s is not known"
-msgstr "L'etichetta/ramo %s è sconosciuto"
+msgid "Revision %s is not in the current view"
+msgstr "La revisione %s non è presente nella vista attuale"
-#: gitk:7290
+#: gitk:8290
msgid "Children"
msgstr "Figli"
-#: gitk:7347
+#: gitk:8348
#, tcl-format
msgid "Reset %s branch to here"
msgstr "Aggiorna il ramo %s a questa revisione"
-#: gitk:7349
+#: gitk:8350
msgid "Detached head: can't reset"
+msgstr "Nessun ramo attivo: reset impossibile"
+
+#: gitk:8459 gitk:8465
+msgid "Skipping merge commit "
+msgstr "Salto la revisione di fusione "
+
+#: gitk:8474 gitk:8479
+msgid "Error getting patch ID for "
+msgstr "Errore nella identificazione della patch per "
+
+#: gitk:8475 gitk:8480
+msgid " - stopping\n"
+msgstr " - fine\n"
+
+#: gitk:8485 gitk:8488 gitk:8496 gitk:8510 gitk:8519
+msgid "Commit "
+msgstr "La revisione "
+
+#: gitk:8489
+msgid ""
+" is the same patch as\n"
+" "
msgstr ""
+" ha le stesse differenze di\n"
+" "
+
+#: gitk:8497
+msgid ""
+" differs from\n"
+" "
+msgstr ""
+" è diversa da\n"
+" "
+
+#: gitk:8499
+msgid ""
+"Diff of commits:\n"
+"\n"
+msgstr ""
+"Differenze tra le revisioni:\n"
+"\n"
+
+#: gitk:8511 gitk:8520
+#, tcl-format
+msgid " has %s children - stopping\n"
+msgstr " ha %s figli - fine\n"
+
+#: gitk:8539
+#, tcl-format
+msgid "Error writing commit to file: %s"
+msgstr "Errore nella scrittura della revisione nel file: %s"
-#: gitk:7381
+#: gitk:8545
+#, tcl-format
+msgid "Error diffing commits: %s"
+msgstr "Errore nelle differenze tra le revisioni: %s"
+
+#: gitk:8575
msgid "Top"
msgstr "Inizio"
-#: gitk:7382
+#: gitk:8576
msgid "From"
msgstr "Da"
-#: gitk:7387
+#: gitk:8581
msgid "To"
msgstr "A"
-#: gitk:7410
+#: gitk:8605
msgid "Generate patch"
msgstr "Genera patch"
-#: gitk:7412
+#: gitk:8607
msgid "From:"
msgstr "Da:"
-#: gitk:7421
+#: gitk:8616
msgid "To:"
msgstr "A:"
-#: gitk:7430
+#: gitk:8625
msgid "Reverse"
msgstr "Inverti"
-#: gitk:7432 gitk:7607
+#: gitk:8627 gitk:8822
msgid "Output file:"
msgstr "Scrivi sul file:"
-#: gitk:7438
+#: gitk:8633
msgid "Generate"
msgstr "Genera"
-#: gitk:7474
+#: gitk:8671
msgid "Error creating patch:"
msgstr "Errore nella creazione della patch:"
-#: gitk:7496 gitk:7595 gitk:7649
+#: gitk:8694 gitk:8810 gitk:8867
msgid "ID:"
msgstr "ID:"
-#: gitk:7505
+#: gitk:8703
msgid "Tag name:"
msgstr "Nome etichetta:"
-#: gitk:7509 gitk:7659
+#: gitk:8706
+msgid "Tag message is optional"
+msgstr "Il messaggio dell'etichetta è opzionale"
+
+#: gitk:8708
+msgid "Tag message:"
+msgstr "Messaggio dell'etichetta:"
+
+#: gitk:8712 gitk:8876
msgid "Create"
msgstr "Crea"
-#: gitk:7524
+#: gitk:8730
msgid "No tag name specified"
msgstr "Nessuna etichetta specificata"
-#: gitk:7528
+#: gitk:8734
#, tcl-format
msgid "Tag \"%s\" already exists"
msgstr "L'etichetta \"%s\" esiste già"
-#: gitk:7534
+#: gitk:8744
msgid "Error creating tag:"
msgstr "Errore nella creazione dell'etichetta:"
-#: gitk:7604
+#: gitk:8819
msgid "Command:"
msgstr "Comando:"
-#: gitk:7612
+#: gitk:8827
msgid "Write"
msgstr "Scrivi"
-#: gitk:7628
+#: gitk:8845
msgid "Error writing commit:"
msgstr "Errore nella scrittura della revisione:"
-#: gitk:7654
+#: gitk:8872
msgid "Name:"
msgstr "Nome:"
-#: gitk:7674
+#: gitk:8895
msgid "Please specify a name for the new branch"
msgstr "Specificare un nome per il nuovo ramo"
-#: gitk:7703
+#: gitk:8900
+#, tcl-format
+msgid "Branch '%s' already exists. Overwrite?"
+msgstr "Il ramo '%s' esiste già. Sovrascrivere?"
+
+#: gitk:8966
#, tcl-format
msgid "Commit %s is already included in branch %s -- really re-apply it?"
msgstr "La revisione %s è già inclusa nel ramo %s -- applicarla di nuovo?"
-#: gitk:7708
+#: gitk:8971
msgid "Cherry-picking"
msgstr ""
-#: gitk:7720
+#: gitk:8980
+#, tcl-format
+msgid ""
+"Cherry-pick failed because of local changes to file '%s'.\n"
+"Please commit, reset or stash your changes and try again."
+msgstr ""
+"Impossibile eseguire cherry-pick perché il file '%s' è stato modificato "
+"nella directory di lavoro.\n"
+"Prima di riprovare, bisogna creare una nuova revisione, annullare le "
+"modifiche o usare 'git stash'."
+
+#: gitk:8986
+msgid ""
+"Cherry-pick failed because of merge conflict.\n"
+"Do you wish to run git citool to resolve it?"
+msgstr ""
+"Impossibile eseguire cherry-pick a causa di un conflitto nella fusione.\n"
+"Vuoi avviare git citool per risolverlo?"
+
+#: gitk:9002
msgid "No changes committed"
msgstr "Nessuna modifica archiviata"
-#: gitk:7745
+#: gitk:9028
msgid "Confirm reset"
msgstr "Conferma git reset"
-#: gitk:7747
+#: gitk:9030
#, tcl-format
msgid "Reset branch %s to %s?"
msgstr "Aggiornare il ramo %s a %s?"
-#: gitk:7751
+#: gitk:9032
msgid "Reset type:"
msgstr "Tipo di aggiornamento:"
-#: gitk:7755
+#: gitk:9035
msgid "Soft: Leave working tree and index untouched"
msgstr "Soft: Lascia la direcory di lavoro e l'indice come sono"
-#: gitk:7758
+#: gitk:9038
msgid "Mixed: Leave working tree untouched, reset index"
msgstr "Mixed: Lascia la directory di lavoro come è, aggiorna l'indice"
-#: gitk:7761
+#: gitk:9041
msgid ""
"Hard: Reset working tree and index\n"
"(discard ALL local changes)"
"Hard: Aggiorna la directory di lavoro e l'indice\n"
"(abbandona TUTTE le modifiche locali)"
-#: gitk:7777
+#: gitk:9058
msgid "Resetting"
msgstr "git reset in corso"
-#: gitk:7834
+#: gitk:9118
msgid "Checking out"
msgstr "Attivazione in corso"
-#: gitk:7885
+#: gitk:9171
msgid "Cannot delete the currently checked-out branch"
msgstr "Impossibile cancellare il ramo attualmente attivo"
-#: gitk:7891
+#: gitk:9177
#, tcl-format
msgid ""
"The commits on branch %s aren't on any other branch.\n"
"Le revisioni nel ramo %s non sono presenti su altri rami.\n"
"Cancellare il ramo %s?"
-#: gitk:7922
+#: gitk:9208
#, tcl-format
msgid "Tags and heads: %s"
msgstr "Etichette e rami: %s"
-#: gitk:7936
+#: gitk:9223
msgid "Filter"
msgstr "Filtro"
-#: gitk:8230
+#: gitk:9518
msgid ""
"Error reading commit topology information; branch and preceding/following "
"tag information will be incomplete."
"Errore nella lettura della topologia delle revisioni: le informazioni sul "
"ramo e le etichette precedenti e seguenti saranno incomplete."
-#: gitk:9216
+#: gitk:10504
msgid "Tag"
msgstr "Etichetta"
-#: gitk:9216
+#: gitk:10504
msgid "Id"
msgstr "Id"
-#: gitk:9262
+#: gitk:10554
msgid "Gitk font chooser"
msgstr "Scelta caratteri gitk"
-#: gitk:9279
+#: gitk:10571
msgid "B"
msgstr "B"
-#: gitk:9282
+#: gitk:10574
msgid "I"
msgstr "I"
-#: gitk:9375
+#: gitk:10692
msgid "Gitk preferences"
msgstr "Preferenze gitk"
-#: gitk:9376
+#: gitk:10694
msgid "Commit list display options"
msgstr "Opzioni visualizzazione dell'elenco revisioni"
-#: gitk:9379
+#: gitk:10697
msgid "Maximum graph width (lines)"
msgstr "Larghezza massima del grafico (in linee)"
-#: gitk:9383
+#: gitk:10700
#, tcl-format
msgid "Maximum graph width (% of pane)"
msgstr "Larghezza massima del grafico (% del pannello)"
-#: gitk:9388
+#: gitk:10703
msgid "Show local changes"
msgstr "Mostra modifiche locali"
-#: gitk:9393
+#: gitk:10706
msgid "Auto-select SHA1"
msgstr "Seleziona automaticamente SHA1 hash"
-#: gitk:9398
+#: gitk:10709
+msgid "Hide remote refs"
+msgstr "Nascondi i riferimenti remoti"
+
+#: gitk:10713
msgid "Diff display options"
msgstr "Opzioni di visualizzazione delle differenze"
-#: gitk:9400
+#: gitk:10715
msgid "Tab spacing"
msgstr "Spaziatura tabulazioni"
-#: gitk:9404
+#: gitk:10718
msgid "Display nearby tags"
msgstr "Mostra etichette vicine"
-#: gitk:9409
+#: gitk:10721
msgid "Limit diffs to listed paths"
msgstr "Limita le differenze ai percorsi elencati"
-#: gitk:9414
+#: gitk:10724
msgid "Support per-file encodings"
-msgstr ""
+msgstr "Attiva codifica file per file"
-#: gitk:9421
+#: gitk:10730 gitk:10819
msgid "External diff tool"
-msgstr ""
+msgstr "Visualizzatore di differenze"
-#: gitk:9423
+#: gitk:10731
msgid "Choose..."
-msgstr ""
+msgstr "Scegli..."
-#: gitk:9428
+#: gitk:10736
+msgid "General options"
+msgstr "Opzioni generali"
+
+#: gitk:10739
+msgid "Use themed widgets"
+msgstr "Utilizza interfaccia a tema"
+
+#: gitk:10741
+msgid "(change requires restart)"
+msgstr "(una modifica richiede il riavvio)"
+
+#: gitk:10743
+msgid "(currently unavailable)"
+msgstr "(momentaneamente non disponibile)"
+
+#: gitk:10747
msgid "Colors: press to choose"
msgstr "Colori: premere per scegliere"
-#: gitk:9431
+#: gitk:10750
+msgid "Interface"
+msgstr "Interfaccia"
+
+#: gitk:10751
+msgid "interface"
+msgstr "interfaccia"
+
+#: gitk:10754
msgid "Background"
msgstr "Sfondo"
-#: gitk:9435
+#: gitk:10755 gitk:10785
+msgid "background"
+msgstr "sfondo"
+
+#: gitk:10758
msgid "Foreground"
msgstr "Primo piano"
-#: gitk:9439
+#: gitk:10759
+msgid "foreground"
+msgstr "primo piano"
+
+#: gitk:10762
msgid "Diff: old lines"
msgstr "Diff: vecchie linee"
-#: gitk:9444
+#: gitk:10763
+msgid "diff old lines"
+msgstr "vecchie linee"
+
+#: gitk:10767
msgid "Diff: new lines"
msgstr "Diff: nuove linee"
-#: gitk:9449
+#: gitk:10768
+msgid "diff new lines"
+msgstr "nuove linee"
+
+#: gitk:10772
msgid "Diff: hunk header"
msgstr "Diff: intestazione della sezione"
-#: gitk:9455
+#: gitk:10774
+msgid "diff hunk header"
+msgstr "intestazione della sezione"
+
+#: gitk:10778
+msgid "Marked line bg"
+msgstr "Sfondo riga selezionata"
+
+#: gitk:10780
+msgid "marked line background"
+msgstr "sfondo riga selezionata"
+
+#: gitk:10784
msgid "Select bg"
-msgstr "Sfondo selezione"
+msgstr "Sfondo"
-#: gitk:9459
+#: gitk:10788
msgid "Fonts: press to choose"
msgstr "Carattere: premere per scegliere"
-#: gitk:9461
+#: gitk:10790
msgid "Main font"
msgstr "Carattere principale"
-#: gitk:9462
+#: gitk:10791
msgid "Diff display font"
msgstr "Carattere per differenze"
-#: gitk:9463
+#: gitk:10792
msgid "User interface font"
msgstr "Carattere per interfaccia utente"
-#: gitk:9488
+#: gitk:10829
#, tcl-format
msgid "Gitk: choose color for %s"
msgstr "Gitk: scegliere un colore per %s"
-#: gitk:9934
-msgid ""
-"Sorry, gitk cannot run with this version of Tcl/Tk.\n"
-" Gitk requires at least Tcl/Tk 8.4."
-msgstr ""
-"Questa versione di Tcl/Tk non può avviare gitk.\n"
-" Gitk richiede Tcl/Tk versione 8.4 o superiore."
-
-#: gitk:10047
+#: gitk:11433
msgid "Cannot find a git repository here."
msgstr "Archivio git non trovato."
-#: gitk:10051
+#: gitk:11437
#, tcl-format
msgid "Cannot find the git directory \"%s\"."
msgstr "Directory git \"%s\" non trovata."
-#: gitk:10098
+#: gitk:11484
#, tcl-format
msgid "Ambiguous argument '%s': both revision and filename"
msgstr "Argomento ambiguo: '%s' è sia revisione che nome di file"
-#: gitk:10110
+#: gitk:11496
msgid "Bad arguments to gitk:"
msgstr "Gitk: argomenti errati:"
-#: gitk:10170
+#: gitk:11587
msgid "Command line"
msgstr "Linea di comando"
# Copyright (C) 2005-2009 Paul Mackerras
# This file is distributed under the same license as the gitk package.
#
-# Peter Krefting <peter@softwolves.pp.se>, 2008-2009.
+# Peter Krefting <peter@softwolves.pp.se>, 2008-2010.
# Mikael Magnusson <mikachu@gmail.com>, 2008.
msgid ""
msgstr ""
"Project-Id-Version: sv\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-13 13:38+0100\n"
-"PO-Revision-Date: 2009-08-13 13:40+0100\n"
+"POT-Creation-Date: 2010-01-28 13:16+0100\n"
+"PO-Revision-Date: 2010-01-28 13:48+0100\n"
"Last-Translator: Peter Krefting <peter@softwolves.pp.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit"
-#: gitk:113
+#: gitk:115
msgid "Couldn't get list of unmerged files:"
msgstr "Kunde inte hämta lista över ej sammanslagna filer:"
-#: gitk:269
+#: gitk:274
msgid "Error parsing revisions:"
msgstr "Fel vid tolkning av revisioner:"
-#: gitk:324
+#: gitk:329
msgid "Error executing --argscmd command:"
msgstr "Fel vid körning av --argscmd-kommando:"
-#: gitk:337
+#: gitk:342
msgid "No files selected: --merge specified but no files are unmerged."
msgstr ""
"Inga filer valdes: --merge angavs men det finns inga filer som inte har "
"slagits samman."
-#: gitk:340
+#: gitk:345
msgid ""
"No files selected: --merge specified but no unmerged files are within file "
"limit."
"Inga filer valdes: --merge angavs men det finns inga filer inom "
"filbegränsningen."
-#: gitk:362 gitk:509
+#: gitk:367 gitk:514
msgid "Error executing git log:"
msgstr "Fel vid körning av git log:"
-#: gitk:380 gitk:525
+#: gitk:385 gitk:530
msgid "Reading"
msgstr "Läser"
-#: gitk:440 gitk:4123
+#: gitk:445 gitk:4261
msgid "Reading commits..."
msgstr "Läser incheckningar..."
-#: gitk:443 gitk:1561 gitk:4126
+#: gitk:448 gitk:1578 gitk:4264
msgid "No commits selected"
msgstr "Inga incheckningar markerade"
-#: gitk:1437
+#: gitk:1454
msgid "Can't parse git log output:"
msgstr "Kan inte tolka utdata från git log:"
-#: gitk:1657
+#: gitk:1674
msgid "No commit information available"
msgstr "Ingen incheckningsinformation är tillgänglig"
-#: gitk:1793 gitk:1817 gitk:3916 gitk:8786 gitk:10322 gitk:10498
+#: gitk:1816
+msgid "mc"
+msgstr "mc"
+
+#: gitk:1851 gitk:4054 gitk:9044 gitk:10585 gitk:10804
msgid "OK"
msgstr "OK"
-#: gitk:1819 gitk:3918 gitk:8383 gitk:8457 gitk:8567 gitk:8616 gitk:8788
-#: gitk:10323 gitk:10499
+#: gitk:1853 gitk:4056 gitk:8634 gitk:8713 gitk:8828 gitk:8877 gitk:9046
+#: gitk:10586 gitk:10805
msgid "Cancel"
msgstr "Avbryt"
-#: gitk:1919
+#: gitk:1975
msgid "Update"
msgstr "Uppdatera"
-#: gitk:1920
+#: gitk:1976
msgid "Reload"
msgstr "Ladda om"
-#: gitk:1921
+#: gitk:1977
msgid "Reread references"
msgstr "Läs om referenser"
-#: gitk:1922
+#: gitk:1978
msgid "List references"
msgstr "Visa referenser"
-#: gitk:1924
+#: gitk:1980
msgid "Start git gui"
msgstr "Starta git gui"
-#: gitk:1926
+#: gitk:1982
msgid "Quit"
msgstr "Avsluta"
-#: gitk:1918
+#: gitk:1974
msgid "File"
msgstr "Arkiv"
-#: gitk:1930
+#: gitk:1986
msgid "Preferences"
msgstr "Inställningar"
-#: gitk:1929
+#: gitk:1985
msgid "Edit"
msgstr "Redigera"
-#: gitk:1934
+#: gitk:1990
msgid "New view..."
msgstr "Ny vy..."
-#: gitk:1935
+#: gitk:1991
msgid "Edit view..."
msgstr "Ändra vy..."
-#: gitk:1936
+#: gitk:1992
msgid "Delete view"
msgstr "Ta bort vy"
-#: gitk:1938
+#: gitk:1994
msgid "All files"
msgstr "Alla filer"
-#: gitk:1933 gitk:3670
+#: gitk:1989 gitk:3808
msgid "View"
msgstr "Visa"
-#: gitk:1943 gitk:1953 gitk:2654
+#: gitk:1999 gitk:2009 gitk:2780
msgid "About gitk"
msgstr "Om gitk"
-#: gitk:1944 gitk:1958
+#: gitk:2000 gitk:2014
msgid "Key bindings"
msgstr "Tangentbordsbindningar"
-#: gitk:1942 gitk:1957
+#: gitk:1998 gitk:2013
msgid "Help"
msgstr "Hjälp"
-#: gitk:2018
-msgid "SHA1 ID: "
-msgstr "SHA1-id: "
+#: gitk:2091 gitk:8110
+msgid "SHA1 ID:"
+msgstr "SHA1-id:"
-#: gitk:2049
+#: gitk:2122
msgid "Row"
msgstr "Rad"
-#: gitk:2080
+#: gitk:2160
msgid "Find"
msgstr "Sök"
-#: gitk:2081
+#: gitk:2161
msgid "next"
msgstr "nästa"
-#: gitk:2082
+#: gitk:2162
msgid "prev"
msgstr "föreg"
-#: gitk:2083
+#: gitk:2163
msgid "commit"
msgstr "incheckning"
-#: gitk:2086 gitk:2088 gitk:4284 gitk:4307 gitk:4331 gitk:6272 gitk:6344
-#: gitk:6428
+#: gitk:2166 gitk:2168 gitk:4422 gitk:4445 gitk:4469 gitk:6410 gitk:6482
+#: gitk:6566
msgid "containing:"
msgstr "som innehåller:"
-#: gitk:2089 gitk:3162 gitk:3167 gitk:4359
+#: gitk:2169 gitk:3290 gitk:3295 gitk:4497
msgid "touching paths:"
msgstr "som rör sökväg:"
-#: gitk:2090 gitk:4364
+#: gitk:2170 gitk:4502
msgid "adding/removing string:"
msgstr "som lägger/till tar bort sträng:"
-#: gitk:2099 gitk:2101
+#: gitk:2179 gitk:2181
msgid "Exact"
msgstr "Exakt"
-#: gitk:2101 gitk:4439 gitk:6240
+#: gitk:2181 gitk:4577 gitk:6378
msgid "IgnCase"
msgstr "IgnVersaler"
-#: gitk:2101 gitk:4333 gitk:4437 gitk:6236
+#: gitk:2181 gitk:4471 gitk:4575 gitk:6374
msgid "Regexp"
msgstr "Reg.uttr."
-#: gitk:2103 gitk:2104 gitk:4458 gitk:4488 gitk:4495 gitk:6364 gitk:6432
+#: gitk:2183 gitk:2184 gitk:4596 gitk:4626 gitk:4633 gitk:6502 gitk:6570
msgid "All fields"
msgstr "Alla fält"
-#: gitk:2104 gitk:4456 gitk:4488 gitk:6303
+#: gitk:2184 gitk:4594 gitk:4626 gitk:6441
msgid "Headline"
msgstr "Rubrik"
-#: gitk:2105 gitk:4456 gitk:6303 gitk:6432 gitk:6866
+#: gitk:2185 gitk:4594 gitk:6441 gitk:6570 gitk:7003
msgid "Comments"
msgstr "Kommentarer"
-#: gitk:2105 gitk:4456 gitk:4460 gitk:4495 gitk:6303 gitk:6801 gitk:8063
-#: gitk:8078
+#: gitk:2185 gitk:4594 gitk:4598 gitk:4633 gitk:6441 gitk:6938 gitk:8285
+#: gitk:8300
msgid "Author"
msgstr "Författare"
-#: gitk:2105 gitk:4456 gitk:6303 gitk:6803
+#: gitk:2185 gitk:4594 gitk:6441 gitk:6940
msgid "Committer"
msgstr "Incheckare"
-#: gitk:2134
+#: gitk:2216
msgid "Search"
msgstr "Sök"
-#: gitk:2141
+#: gitk:2224
msgid "Diff"
msgstr "Diff"
-#: gitk:2143
+#: gitk:2226
msgid "Old version"
msgstr "Gammal version"
-#: gitk:2145
+#: gitk:2228
msgid "New version"
msgstr "Ny version"
-#: gitk:2147
+#: gitk:2230
msgid "Lines of context"
msgstr "Rader sammanhang"
-#: gitk:2157
+#: gitk:2240
msgid "Ignore space change"
msgstr "Ignorera ändringar i blanksteg"
-#: gitk:2215
+#: gitk:2299
msgid "Patch"
msgstr "Patch"
-#: gitk:2217
+#: gitk:2301
msgid "Tree"
msgstr "Träd"
-#: gitk:2361 gitk:2378
+#: gitk:2456 gitk:2473
msgid "Diff this -> selected"
msgstr "Diff denna -> markerad"
-#: gitk:2362 gitk:2379
+#: gitk:2457 gitk:2474
msgid "Diff selected -> this"
msgstr "Diff markerad -> denna"
-#: gitk:2363 gitk:2380
+#: gitk:2458 gitk:2475
msgid "Make patch"
msgstr "Skapa patch"
-#: gitk:2364 gitk:8441
+#: gitk:2459 gitk:8692
msgid "Create tag"
msgstr "Skapa tagg"
-#: gitk:2365 gitk:8547
+#: gitk:2460 gitk:8808
msgid "Write commit to file"
msgstr "Skriv incheckning till fil"
-#: gitk:2366 gitk:8604
+#: gitk:2461 gitk:8865
msgid "Create new branch"
msgstr "Skapa ny gren"
-#: gitk:2367
+#: gitk:2462
msgid "Cherry-pick this commit"
msgstr "Plocka denna incheckning"
-#: gitk:2368
+#: gitk:2463
msgid "Reset HEAD branch to here"
msgstr "Återställ HEAD-grenen hit"
-#: gitk:2369
+#: gitk:2464
msgid "Mark this commit"
msgstr "Markera denna incheckning"
-#: gitk:2370
+#: gitk:2465
msgid "Return to mark"
msgstr "Återgå till markering"
-#: gitk:2371
+#: gitk:2466
msgid "Find descendant of this and mark"
msgstr "Hitta efterföljare till denna och markera"
-#: gitk:2372
+#: gitk:2467
msgid "Compare with marked commit"
msgstr "Jämför med markerad incheckning"
-#: gitk:2386
+#: gitk:2481
msgid "Check out this branch"
msgstr "Checka ut denna gren"
-#: gitk:2387
+#: gitk:2482
msgid "Remove this branch"
msgstr "Ta bort denna gren"
-#: gitk:2394
+#: gitk:2489
msgid "Highlight this too"
msgstr "Markera även detta"
-#: gitk:2395
+#: gitk:2490
msgid "Highlight this only"
msgstr "Markera bara detta"
-#: gitk:2396
+#: gitk:2491
msgid "External diff"
msgstr "Extern diff"
-#: gitk:2397
+#: gitk:2492
msgid "Blame parent commit"
msgstr "Klandra föräldraincheckning"
-#: gitk:2404
+#: gitk:2499
msgid "Show origin of this line"
msgstr "Visa ursprunget för den här raden"
-#: gitk:2405
+#: gitk:2500
msgid "Run git gui blame on this line"
msgstr "Kör git gui blame på den här raden"
-#: gitk:2656
+#: gitk:2782
msgid ""
"\n"
"Gitk - a commit viewer for git\n"
"\n"
-"Copyright © 2005-2008 Paul Mackerras\n"
+"Copyright ©9 2005-2009 Paul Mackerras\n"
"\n"
"Use and redistribute under the terms of the GNU General Public License"
msgstr ""
"\n"
"Gitk - en incheckningsvisare för git\n"
"\n"
-"Copyright © 2005-2008 Paul Mackerras\n"
+"Copyright © 2005-2009 Paul Mackerras\n"
"\n"
"Använd och vidareförmedla enligt villkoren i GNU General Public License"
-#: gitk:2664 gitk:2726 gitk:8969
+#: gitk:2790 gitk:2854 gitk:9230
msgid "Close"
msgstr "Stäng"
-#: gitk:2683
+#: gitk:2811
msgid "Gitk key bindings"
msgstr "Tangentbordsbindningar för Gitk"
-#: gitk:2686
+#: gitk:2814
msgid "Gitk key bindings:"
msgstr "Tangentbordsbindningar för Gitk:"
-#: gitk:2688
+#: gitk:2816
#, tcl-format
msgid "<%s-Q>\t\tQuit"
msgstr "<%s-Q>\t\tAvsluta"
-#: gitk:2689
+#: gitk:2817
msgid "<Home>\t\tMove to first commit"
msgstr "<Home>\t\tGå till första incheckning"
-#: gitk:2690
+#: gitk:2818
msgid "<End>\t\tMove to last commit"
msgstr "<End>\t\tGå till sista incheckning"
-#: gitk:2691
+#: gitk:2819
msgid "<Up>, p, i\tMove up one commit"
msgstr "<Upp>, p, i\tGå en incheckning upp"
-#: gitk:2692
+#: gitk:2820
msgid "<Down>, n, k\tMove down one commit"
msgstr "<Ned>, n, k\tGå en incheckning ned"
-#: gitk:2693
+#: gitk:2821
msgid "<Left>, z, j\tGo back in history list"
msgstr "<Vänster>, z, j\tGå bakåt i historiken"
-#: gitk:2694
+#: gitk:2822
msgid "<Right>, x, l\tGo forward in history list"
msgstr "<Höger>, x, l\tGå framåt i historiken"
-#: gitk:2695
+#: gitk:2823
msgid "<PageUp>\tMove up one page in commit list"
msgstr "<PageUp>\tGå upp en sida i incheckningslistan"
-#: gitk:2696
+#: gitk:2824
msgid "<PageDown>\tMove down one page in commit list"
msgstr "<PageDown>\tGå ned en sida i incheckningslistan"
-#: gitk:2697
+#: gitk:2825
#, tcl-format
msgid "<%s-Home>\tScroll to top of commit list"
msgstr "<%s-Home>\tRulla till början av incheckningslistan"
-#: gitk:2698
+#: gitk:2826
#, tcl-format
msgid "<%s-End>\tScroll to bottom of commit list"
msgstr "<%s-End>\tRulla till slutet av incheckningslistan"
-#: gitk:2699
+#: gitk:2827
#, tcl-format
msgid "<%s-Up>\tScroll commit list up one line"
msgstr "<%s-Upp>\tRulla incheckningslistan upp ett steg"
-#: gitk:2700
+#: gitk:2828
#, tcl-format
msgid "<%s-Down>\tScroll commit list down one line"
msgstr "<%s-Ned>\tRulla incheckningslistan ned ett steg"
-#: gitk:2701
+#: gitk:2829
#, tcl-format
msgid "<%s-PageUp>\tScroll commit list up one page"
msgstr "<%s-PageUp>\tRulla incheckningslistan upp en sida"
-#: gitk:2702
+#: gitk:2830
#, tcl-format
msgid "<%s-PageDown>\tScroll commit list down one page"
msgstr "<%s-PageDown>\tRulla incheckningslistan ned en sida"
-#: gitk:2703
+#: gitk:2831
msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
msgstr "<Skift-Upp>\tSök bakåt (uppåt, senare incheckningar)"
-#: gitk:2704
+#: gitk:2832
msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
msgstr "<Skift-Ned>\tSök framåt (nedåt, tidigare incheckningar)"
-#: gitk:2705
+#: gitk:2833
msgid "<Delete>, b\tScroll diff view up one page"
msgstr "<Delete>, b\tRulla diffvisningen upp en sida"
-#: gitk:2706
+#: gitk:2834
msgid "<Backspace>\tScroll diff view up one page"
msgstr "<Baksteg>\tRulla diffvisningen upp en sida"
-#: gitk:2707
+#: gitk:2835
msgid "<Space>\t\tScroll diff view down one page"
msgstr "<Blanksteg>\tRulla diffvisningen ned en sida"
-#: gitk:2708
+#: gitk:2836
msgid "u\t\tScroll diff view up 18 lines"
msgstr "u\t\tRulla diffvisningen upp 18 rader"
-#: gitk:2709
+#: gitk:2837
msgid "d\t\tScroll diff view down 18 lines"
msgstr "d\t\tRulla diffvisningen ned 18 rader"
-#: gitk:2710
+#: gitk:2838
#, tcl-format
msgid "<%s-F>\t\tFind"
msgstr "<%s-F>\t\tSök"
-#: gitk:2711
+#: gitk:2839
#, tcl-format
msgid "<%s-G>\t\tMove to next find hit"
msgstr "<%s-G>\t\tGå till nästa sökträff"
-#: gitk:2712
+#: gitk:2840
msgid "<Return>\tMove to next find hit"
msgstr "<Return>\t\tGå till nästa sökträff"
-#: gitk:2713
+#: gitk:2841
msgid "/\t\tFocus the search box"
msgstr "/\t\tFokusera sökrutan"
-#: gitk:2714
+#: gitk:2842
msgid "?\t\tMove to previous find hit"
msgstr "?\t\tGå till föregående sökträff"
-#: gitk:2715
+#: gitk:2843
msgid "f\t\tScroll diff view to next file"
msgstr "f\t\tRulla diffvisningen till nästa fil"
-#: gitk:2716
+#: gitk:2844
#, tcl-format
msgid "<%s-S>\t\tSearch for next hit in diff view"
msgstr "<%s-S>\t\tGå till nästa sökträff i diffvisningen"
-#: gitk:2717
+#: gitk:2845
#, tcl-format
msgid "<%s-R>\t\tSearch for previous hit in diff view"
msgstr "<%s-R>\t\tGå till föregående sökträff i diffvisningen"
-#: gitk:2718
+#: gitk:2846
#, tcl-format
msgid "<%s-KP+>\tIncrease font size"
msgstr "<%s-Num+>\tÖka teckenstorlek"
-#: gitk:2719
+#: gitk:2847
#, tcl-format
msgid "<%s-plus>\tIncrease font size"
msgstr "<%s-plus>\tÖka teckenstorlek"
-#: gitk:2720
+#: gitk:2848
#, tcl-format
msgid "<%s-KP->\tDecrease font size"
msgstr "<%s-Num->\tMinska teckenstorlek"
-#: gitk:2721
+#: gitk:2849
#, tcl-format
msgid "<%s-minus>\tDecrease font size"
msgstr "<%s-minus>\tMinska teckenstorlek"
-#: gitk:2722
+#: gitk:2850
msgid "<F5>\t\tUpdate"
msgstr "<F5>\t\tUppdatera"
-#: gitk:3177
-#, tcl-format
-msgid "Error getting \"%s\" from %s:"
-msgstr "Fel vid hämtning av \"%s\" från %s:"
-
-#: gitk:3234 gitk:3243
+#: gitk:3305 gitk:3314
#, tcl-format
msgid "Error creating temporary directory %s:"
msgstr "Fel vid skapande av temporär katalog %s:"
-#: gitk:3255
+#: gitk:3327
+#, tcl-format
+msgid "Error getting \"%s\" from %s:"
+msgstr "Fel vid hämtning av \"%s\" från %s:"
+
+#: gitk:3390
msgid "command failed:"
msgstr "kommando misslyckades:"
-#: gitk:3401
+#: gitk:3539
msgid "No such commit"
msgstr "Incheckning saknas"
-#: gitk:3415
+#: gitk:3553
msgid "git gui blame: command failed:"
msgstr "git gui blame: kommando misslyckades:"
-#: gitk:3446
+#: gitk:3584
#, tcl-format
msgid "Couldn't read merge head: %s"
msgstr "Kunde inte läsa sammanslagningshuvud: %s"
-#: gitk:3454
+#: gitk:3592
#, tcl-format
msgid "Error reading index: %s"
msgstr "Fel vid läsning av index: %s"
-#: gitk:3479
+#: gitk:3617
#, tcl-format
msgid "Couldn't start git blame: %s"
msgstr "Kunde inte starta git blame: %s"
-#: gitk:3482 gitk:6271
+#: gitk:3620 gitk:6409
msgid "Searching"
msgstr "Söker"
-#: gitk:3514
+#: gitk:3652
#, tcl-format
msgid "Error running git blame: %s"
msgstr "Fel vid körning av git blame: %s"
-#: gitk:3542
+#: gitk:3680
#, tcl-format
msgid "That line comes from commit %s, which is not in this view"
msgstr "Raden kommer från incheckningen %s, som inte finns i denna vy"
-#: gitk:3556
+#: gitk:3694
msgid "External diff viewer failed:"
msgstr "Externt diff-verktyg misslyckades:"
-#: gitk:3674
+#: gitk:3812
msgid "Gitk view definition"
msgstr "Definition av Gitk-vy"
-#: gitk:3678
+#: gitk:3816
msgid "Remember this view"
msgstr "Spara denna vy"
-#: gitk:3679
+#: gitk:3817
msgid "References (space separated list):"
msgstr "Referenser (blankstegsavdelad lista):"
-#: gitk:3680
+#: gitk:3818
msgid "Branches & tags:"
msgstr "Grenar & taggar:"
-#: gitk:3681
+#: gitk:3819
msgid "All refs"
msgstr "Alla referenser"
-#: gitk:3682
+#: gitk:3820
msgid "All (local) branches"
msgstr "Alla (lokala) grenar"
-#: gitk:3683
+#: gitk:3821
msgid "All tags"
msgstr "Alla taggar"
-#: gitk:3684
+#: gitk:3822
msgid "All remote-tracking branches"
msgstr "Alla fjärrspårande grenar"
-#: gitk:3685
+#: gitk:3823
msgid "Commit Info (regular expressions):"
msgstr "Incheckningsinfo (reguljära uttryck):"
-#: gitk:3686
+#: gitk:3824
msgid "Author:"
msgstr "Författare:"
-#: gitk:3687
+#: gitk:3825
msgid "Committer:"
msgstr "Incheckare:"
-#: gitk:3688
+#: gitk:3826
msgid "Commit Message:"
msgstr "Incheckningsmeddelande:"
-#: gitk:3689
+#: gitk:3827
msgid "Matches all Commit Info criteria"
msgstr "Motsvarar alla kriterier för incheckningsinfo"
-#: gitk:3690
+#: gitk:3828
msgid "Changes to Files:"
msgstr "Ändringar av filer:"
-#: gitk:3691
+#: gitk:3829
msgid "Fixed String"
msgstr "Fast sträng"
-#: gitk:3692
+#: gitk:3830
msgid "Regular Expression"
msgstr "Reguljärt uttryck"
-#: gitk:3693
+#: gitk:3831
msgid "Search string:"
msgstr "Söksträng:"
-#: gitk:3694
+#: gitk:3832
msgid ""
"Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 "
"15:27:38\"):"
"Incheckingsdatum (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 "
"15:27:38\"):"
-#: gitk:3695
+#: gitk:3833
msgid "Since:"
msgstr "Från:"
-#: gitk:3696
+#: gitk:3834
msgid "Until:"
msgstr "Till:"
-#: gitk:3697
+#: gitk:3835
msgid "Limit and/or skip a number of revisions (positive integer):"
msgstr "Begränsa och/eller hoppa över ett antal revisioner (positivt heltal):"
-#: gitk:3698
+#: gitk:3836
msgid "Number to show:"
msgstr "Antal att visa:"
-#: gitk:3699
+#: gitk:3837
msgid "Number to skip:"
msgstr "Antal att hoppa över:"
-#: gitk:3700
+#: gitk:3838
msgid "Miscellaneous options:"
msgstr "Diverse alternativ:"
-#: gitk:3701
+#: gitk:3839
msgid "Strictly sort by date"
msgstr "Strikt datumsortering"
-#: gitk:3702
+#: gitk:3840
msgid "Mark branch sides"
msgstr "Markera sidogrenar"
-#: gitk:3703
+#: gitk:3841
msgid "Limit to first parent"
msgstr "Begränsa till första förälder"
-#: gitk:3704
+#: gitk:3842
msgid "Simple history"
msgstr "Enkel historik"
-#: gitk:3705
+#: gitk:3843
msgid "Additional arguments to git log:"
msgstr "Ytterligare argument till git log:"
-#: gitk:3706
+#: gitk:3844
msgid "Enter files and directories to include, one per line:"
msgstr "Ange filer och kataloger att ta med, en per rad:"
-#: gitk:3707
+#: gitk:3845
msgid "Command to generate more commits to include:"
msgstr "Kommando för att generera fler incheckningar att ta med:"
-#: gitk:3829
+#: gitk:3967
msgid "Gitk: edit view"
msgstr "Gitk: redigera vy"
-#: gitk:3837
+#: gitk:3975
msgid "-- criteria for selecting revisions"
msgstr " - kriterier för val av revisioner"
-#: gitk:3842
-msgid "View Name:"
-msgstr "Namn på vy:"
+#: gitk:3980
+msgid "View Name"
+msgstr "Namn på vy"
-#: gitk:3917
+#: gitk:4055
msgid "Apply (F5)"
msgstr "Använd (F5)"
-#: gitk:3955
+#: gitk:4093
msgid "Error in commit selection arguments:"
msgstr "Fel i argument för val av incheckningar:"
-#: gitk:4008 gitk:4060 gitk:4508 gitk:4522 gitk:5783 gitk:11196 gitk:11197
+#: gitk:4146 gitk:4198 gitk:4646 gitk:4660 gitk:5921 gitk:11534 gitk:11535
msgid "None"
msgstr "Inget"
-#: gitk:4456 gitk:6303 gitk:8065 gitk:8080
+#: gitk:4594 gitk:6441 gitk:8287 gitk:8302
msgid "Date"
msgstr "Datum"
-#: gitk:4456 gitk:6303
+#: gitk:4594 gitk:6441
msgid "CDate"
msgstr "Skapat datum"
-#: gitk:4605 gitk:4610
+#: gitk:4743 gitk:4748
msgid "Descendant"
msgstr "Avkomling"
-#: gitk:4606
+#: gitk:4744
msgid "Not descendant"
msgstr "Inte avkomling"
-#: gitk:4613 gitk:4618
+#: gitk:4751 gitk:4756
msgid "Ancestor"
msgstr "Förfader"
-#: gitk:4614
+#: gitk:4752
msgid "Not ancestor"
msgstr "Inte förfader"
-#: gitk:4904
+#: gitk:5042
msgid "Local changes checked in to index but not committed"
msgstr "Lokala ändringar sparade i indexet men inte incheckade"
-#: gitk:4940
+#: gitk:5078
msgid "Local uncommitted changes, not checked in to index"
msgstr "Lokala ändringar, ej sparade i indexet"
-#: gitk:6621
+#: gitk:6759
msgid "many"
msgstr "många"
-#: gitk:6805
+#: gitk:6942
msgid "Tags:"
msgstr "Taggar:"
-#: gitk:6822 gitk:6828 gitk:8058
+#: gitk:6959 gitk:6965 gitk:8280
msgid "Parent"
msgstr "Förälder"
-#: gitk:6833
+#: gitk:6970
msgid "Child"
msgstr "Barn"
-#: gitk:6842
+#: gitk:6979
msgid "Branch"
msgstr "Gren"
-#: gitk:6845
+#: gitk:6982
msgid "Follows"
msgstr "Följer"
-#: gitk:6848
+#: gitk:6985
msgid "Precedes"
msgstr "Föregår"
-#: gitk:7346
+#: gitk:7522
#, tcl-format
msgid "Error getting diffs: %s"
msgstr "Fel vid hämtning av diff: %s"
-#: gitk:7886
+#: gitk:8108
msgid "Goto:"
msgstr "Gå till:"
-#: gitk:7888
-msgid "SHA1 ID:"
-msgstr "SHA1-id:"
-
-#: gitk:7907
+#: gitk:8129
#, tcl-format
msgid "Short SHA1 id %s is ambiguous"
msgstr "Förkortat SHA1-id %s är tvetydigt"
-#: gitk:7914
+#: gitk:8136
#, tcl-format
msgid "Revision %s is not known"
msgstr "Revisionen %s är inte känd"
-#: gitk:7924
+#: gitk:8146
#, tcl-format
msgid "SHA1 id %s is not known"
msgstr "SHA-id:t %s är inte känt"
-#: gitk:7926
+#: gitk:8148
#, tcl-format
msgid "Revision %s is not in the current view"
msgstr "Revisionen %s finns inte i den nuvarande vyn"
-#: gitk:8068
+#: gitk:8290
msgid "Children"
msgstr "Barn"
-#: gitk:8125
+#: gitk:8348
#, tcl-format
msgid "Reset %s branch to here"
msgstr "Återställ grenen %s hit"
-#: gitk:8127
+#: gitk:8350
msgid "Detached head: can't reset"
msgstr "Frånkopplad head: kan inte återställa"
-#: gitk:8236 gitk:8242
+#: gitk:8459 gitk:8465
msgid "Skipping merge commit "
msgstr "Hoppar över sammanslagningsincheckning "
-#: gitk:8251 gitk:8256
+#: gitk:8474 gitk:8479
msgid "Error getting patch ID for "
msgstr "Fel vid hämtning av patch-id för "
-#: gitk:8252 gitk:8257
+#: gitk:8475 gitk:8480
msgid " - stopping\n"
msgstr " - stannar\n"
-#: gitk:8262 gitk:8265 gitk:8273 gitk:8283 gitk:8292
+#: gitk:8485 gitk:8488 gitk:8496 gitk:8510 gitk:8519
msgid "Commit "
msgstr "Incheckning "
-#: gitk:8266
+#: gitk:8489
msgid ""
" is the same patch as\n"
" "
" är samma patch som\n"
" "
-#: gitk:8274
+#: gitk:8497
msgid ""
" differs from\n"
" "
" skiljer sig från\n"
" "
-#: gitk:8276
-msgid "- stopping\n"
-msgstr "- stannar\n"
+#: gitk:8499
+msgid ""
+"Diff of commits:\n"
+"\n"
+msgstr "Skillnad mellan incheckningar:\n"
+"\n"
+""
-#: gitk:8284 gitk:8293
+#: gitk:8511 gitk:8520
#, tcl-format
msgid " has %s children - stopping\n"
msgstr " har %s barn - stannar\n"
-#: gitk:8324
+#: gitk:8539
+#, tcl-format
+msgid "Error writing commit to file: %s"
+msgstr "Fel vid skrivning av incheckning till fil: %s"
+
+#: gitk:8545
+#, tcl-format
+msgid "Error diffing commits: %s"
+msgstr "Fel vid jämförelse av incheckningar: %s"
+
+#: gitk:8575
msgid "Top"
msgstr "Topp"
-#: gitk:8325
+#: gitk:8576
msgid "From"
msgstr "Från"
-#: gitk:8330
+#: gitk:8581
msgid "To"
msgstr "Till"
-#: gitk:8354
+#: gitk:8605
msgid "Generate patch"
msgstr "Generera patch"
-#: gitk:8356
+#: gitk:8607
msgid "From:"
msgstr "Från:"
-#: gitk:8365
+#: gitk:8616
msgid "To:"
msgstr "Till:"
-#: gitk:8374
+#: gitk:8625
msgid "Reverse"
msgstr "Vänd"
-#: gitk:8376 gitk:8561
+#: gitk:8627 gitk:8822
msgid "Output file:"
msgstr "Utdatafil:"
-#: gitk:8382
+#: gitk:8633
msgid "Generate"
msgstr "Generera"
-#: gitk:8420
+#: gitk:8671
msgid "Error creating patch:"
msgstr "Fel vid generering av patch:"
-#: gitk:8443 gitk:8549 gitk:8606
+#: gitk:8694 gitk:8810 gitk:8867
msgid "ID:"
msgstr "Id:"
-#: gitk:8452
+#: gitk:8703
msgid "Tag name:"
msgstr "Taggnamn:"
-#: gitk:8456 gitk:8615
+#: gitk:8706
+msgid "Tag message is optional"
+msgstr "Taggmeddelandet är valfritt"
+
+#: gitk:8708
+msgid "Tag message:"
+msgstr "Taggmeddelande:"
+
+#: gitk:8712 gitk:8876
msgid "Create"
msgstr "Skapa"
-#: gitk:8473
+#: gitk:8730
msgid "No tag name specified"
msgstr "Inget taggnamn angavs"
-#: gitk:8477
+#: gitk:8734
#, tcl-format
msgid "Tag \"%s\" already exists"
msgstr "Taggen \"%s\" finns redan"
-#: gitk:8483
+#: gitk:8744
msgid "Error creating tag:"
msgstr "Fel vid skapande av tagg:"
-#: gitk:8558
+#: gitk:8819
msgid "Command:"
msgstr "Kommando:"
-#: gitk:8566
+#: gitk:8827
msgid "Write"
msgstr "Skriv"
-#: gitk:8584
+#: gitk:8845
msgid "Error writing commit:"
msgstr "Fel vid skrivning av incheckning:"
-#: gitk:8611
+#: gitk:8872
msgid "Name:"
msgstr "Namn:"
-#: gitk:8634
+#: gitk:8895
msgid "Please specify a name for the new branch"
msgstr "Ange ett namn för den nya grenen"
-#: gitk:8639
+#: gitk:8900
#, tcl-format
msgid "Branch '%s' already exists. Overwrite?"
msgstr "Grenen \"%s\" finns redan. Skriva över?"
-#: gitk:8705
+#: gitk:8966
#, tcl-format
msgid "Commit %s is already included in branch %s -- really re-apply it?"
msgstr ""
"Incheckningen %s finns redan på grenen %s -- skall den verkligen appliceras "
"på nytt?"
-#: gitk:8710
+#: gitk:8971
msgid "Cherry-picking"
msgstr "Plockar"
-#: gitk:8719
+#: gitk:8980
#, tcl-format
msgid ""
"Cherry-pick failed because of local changes to file '%s'.\n"
"Checka in, återställ eller spara undan (stash) dina ändringar och försök "
"igen."
-#: gitk:8725
+#: gitk:8986
msgid ""
"Cherry-pick failed because of merge conflict.\n"
"Do you wish to run git citool to resolve it?"
"Cherry-pick misslyckades på grund av en sammanslagningskonflikt.\n"
"Vill du köra git citool för att lösa den?"
-#: gitk:8741
+#: gitk:9002
msgid "No changes committed"
msgstr "Inga ändringar incheckade"
-#: gitk:8767
+#: gitk:9028
msgid "Confirm reset"
msgstr "Bekräfta återställning"
-#: gitk:8769
+#: gitk:9030
#, tcl-format
msgid "Reset branch %s to %s?"
msgstr "Återställa grenen %s till %s?"
-#: gitk:8773
+#: gitk:9032
msgid "Reset type:"
msgstr "Typ av återställning:"
-#: gitk:8777
+#: gitk:9035
msgid "Soft: Leave working tree and index untouched"
msgstr "Mjuk: Rör inte utcheckning och index"
-#: gitk:8780
+#: gitk:9038
msgid "Mixed: Leave working tree untouched, reset index"
msgstr "Blandad: Rör inte utcheckning, återställ index"
-#: gitk:8783
+#: gitk:9041
msgid ""
"Hard: Reset working tree and index\n"
"(discard ALL local changes)"
"Hård: Återställ utcheckning och index\n"
"(förkastar ALLA lokala ändringar)"
-#: gitk:8800
+#: gitk:9058
msgid "Resetting"
msgstr "Återställer"
-#: gitk:8857
+#: gitk:9118
msgid "Checking out"
msgstr "Checkar ut"
-#: gitk:8910
+#: gitk:9171
msgid "Cannot delete the currently checked-out branch"
msgstr "Kan inte ta bort den just nu utcheckade grenen"
-#: gitk:8916
+#: gitk:9177
#, tcl-format
msgid ""
"The commits on branch %s aren't on any other branch.\n"
"Incheckningarna på grenen %s existerar inte på någon annan gren.\n"
"Vill du verkligen ta bort grenen %s?"
-#: gitk:8947
+#: gitk:9208
#, tcl-format
msgid "Tags and heads: %s"
msgstr "Taggar och huvuden: %s"
-#: gitk:8962
+#: gitk:9223
msgid "Filter"
msgstr "Filter"
-#: gitk:9257
+#: gitk:9518
msgid ""
"Error reading commit topology information; branch and preceding/following "
"tag information will be incomplete."
"Fel vid läsning av information om incheckningstopologi; information om "
"grenar och föregående/senare taggar kommer inte vara komplett."
-#: gitk:10243
+#: gitk:10504
msgid "Tag"
msgstr "Tagg"
-#: gitk:10243
+#: gitk:10504
msgid "Id"
msgstr "Id"
-#: gitk:10291
+#: gitk:10554
msgid "Gitk font chooser"
msgstr "Teckensnittsväljare för Gitk"
-#: gitk:10308
+#: gitk:10571
msgid "B"
msgstr "F"
-#: gitk:10311
+#: gitk:10574
msgid "I"
msgstr "K"
-#: gitk:10407
+#: gitk:10692
msgid "Gitk preferences"
msgstr "Inställningar för Gitk"
-#: gitk:10409
+#: gitk:10694
msgid "Commit list display options"
msgstr "Alternativ för incheckningslistvy"
-#: gitk:10412
+#: gitk:10697
msgid "Maximum graph width (lines)"
msgstr "Maximal grafbredd (rader)"
-#: gitk:10416
+#: gitk:10700
#, tcl-format
msgid "Maximum graph width (% of pane)"
msgstr "Maximal grafbredd (% av ruta)"
-#: gitk:10420
+#: gitk:10703
msgid "Show local changes"
msgstr "Visa lokala ändringar"
-#: gitk:10423
+#: gitk:10706
msgid "Auto-select SHA1"
msgstr "Välj SHA1 automatiskt"
-#: gitk:10427
+#: gitk:10709
+msgid "Hide remote refs"
+msgstr "Dölj fjärr-referenser"
+
+#: gitk:10713
msgid "Diff display options"
msgstr "Alternativ för diffvy"
-#: gitk:10429
+#: gitk:10715
msgid "Tab spacing"
msgstr "Blanksteg för tabulatortecken"
-#: gitk:10432
+#: gitk:10718
msgid "Display nearby tags"
msgstr "Visa närliggande taggar"
-#: gitk:10435
-msgid "Hide remote refs"
-msgstr "Dölj fjärr-referenser"
-
-#: gitk:10438
+#: gitk:10721
msgid "Limit diffs to listed paths"
msgstr "Begränsa diff till listade sökvägar"
-#: gitk:10441
+#: gitk:10724
msgid "Support per-file encodings"
msgstr "Stöd för filspecifika teckenkodningar"
-#: gitk:10447 gitk:10512
+#: gitk:10730 gitk:10819
msgid "External diff tool"
msgstr "Externt diff-verktyg"
-#: gitk:10449
+#: gitk:10731
msgid "Choose..."
msgstr "Välj..."
-#: gitk:10454
+#: gitk:10736
+msgid "General options"
+msgstr "Allmänna inställningar"
+
+#: gitk:10739
+msgid "Use themed widgets"
+msgstr "Använd tema på fönsterelement"
+
+#: gitk:10741
+msgid "(change requires restart)"
+msgstr "(ändringen kräver omstart)"
+
+#: gitk:10743
+msgid "(currently unavailable)"
+msgstr "(för närvarande inte tillgängligt)"
+
+#: gitk:10747
msgid "Colors: press to choose"
msgstr "Färger: tryck för att välja"
-#: gitk:10457
+#: gitk:10750
+msgid "Interface"
+msgstr "Gränssnitt"
+
+#: gitk:10751
+msgid "interface"
+msgstr "gränssnitt"
+
+#: gitk:10754
msgid "Background"
msgstr "Bakgrund"
-#: gitk:10458 gitk:10488
+#: gitk:10755 gitk:10785
msgid "background"
msgstr "bakgrund"
-#: gitk:10461
+#: gitk:10758
msgid "Foreground"
msgstr "Förgrund"
-#: gitk:10462
+#: gitk:10759
msgid "foreground"
msgstr "förgrund"
-#: gitk:10465
+#: gitk:10762
msgid "Diff: old lines"
msgstr "Diff: gamla rader"
-#: gitk:10466
+#: gitk:10763
msgid "diff old lines"
msgstr "diff gamla rader"
-#: gitk:10470
+#: gitk:10767
msgid "Diff: new lines"
msgstr "Diff: nya rader"
-#: gitk:10471
+#: gitk:10768
msgid "diff new lines"
msgstr "diff nya rader"
-#: gitk:10475
+#: gitk:10772
msgid "Diff: hunk header"
msgstr "Diff: delhuvud"
-#: gitk:10477
+#: gitk:10774
msgid "diff hunk header"
msgstr "diff delhuvud"
-#: gitk:10481
+#: gitk:10778
msgid "Marked line bg"
msgstr "Markerad rad bakgrund"
-#: gitk:10483
+#: gitk:10780
msgid "marked line background"
msgstr "markerad rad bakgrund"
-#: gitk:10487
+#: gitk:10784
msgid "Select bg"
msgstr "Markerad bakgrund"
-#: gitk:10491
+#: gitk:10788
msgid "Fonts: press to choose"
msgstr "Teckensnitt: tryck för att välja"
-#: gitk:10493
+#: gitk:10790
msgid "Main font"
msgstr "Huvudteckensnitt"
-#: gitk:10494
+#: gitk:10791
msgid "Diff display font"
msgstr "Teckensnitt för diffvisning"
-#: gitk:10495
+#: gitk:10792
msgid "User interface font"
msgstr "Teckensnitt för användargränssnitt"
-#: gitk:10522
+#: gitk:10829
#, tcl-format
msgid "Gitk: choose color for %s"
msgstr "Gitk: välj färg för %s"
-#: gitk:10973
-msgid ""
-"Sorry, gitk cannot run with this version of Tcl/Tk.\n"
-" Gitk requires at least Tcl/Tk 8.4."
-msgstr ""
-"Gitk kan tyvärr inte köra med denna version av Tcl/Tk.\n"
-" Gitk kräver åtminstone Tcl/Tk 8.4."
-
-#: gitk:11101
+#: gitk:11433
msgid "Cannot find a git repository here."
msgstr "Hittar inget gitk-arkiv här."
-#: gitk:11105
+#: gitk:11437
#, tcl-format
msgid "Cannot find the git directory \"%s\"."
msgstr "Hittar inte git-katalogen \"%s\"."
-#: gitk:11152
+#: gitk:11484
#, tcl-format
msgid "Ambiguous argument '%s': both revision and filename"
msgstr "Tvetydigt argument \"%s\": både revision och filnamn"
-#: gitk:11164
+#: gitk:11496
msgid "Bad arguments to gitk:"
msgstr "Felaktiga argument till gitk:"
-#: gitk:11249
+#: gitk:11587
msgid "Command line"
msgstr "Kommandorad"
+#~ msgid "SHA1 ID: "
+#~ msgstr "SHA1-id: "
+
+#~ msgid "- stopping\n"
+#~ msgstr "- stannar\n"
+
+#~ msgid ""
+#~ "Sorry, gitk cannot run with this version of Tcl/Tk.\n"
+#~ " Gitk requires at least Tcl/Tk 8.4."
+#~ msgstr ""
+#~ "Gitk kan tyvärr inte köra med denna version av Tcl/Tk.\n"
+#~ " Gitk kräver åtminstone Tcl/Tk 8.4."
+
#~ msgid "Tag/Head %s is not known"
#~ msgstr "Tagg/huvud %s är okänt"
--- /dev/null
+# The default target of this Makefile is...
+all::
+
+# Define V=1 to have a more verbose compile.
+#
+# Define JSMIN to point to JavaScript minifier that functions as
+# a filter to have gitweb.js minified.
+#
+
+prefix ?= $(HOME)
+bindir ?= $(prefix)/bin
+RM ?= rm -f
+
+# JavaScript minifier invocation that can function as filter
+JSMIN ?=
+
+# default configuration for gitweb
+GITWEB_CONFIG = gitweb_config.perl
+GITWEB_CONFIG_SYSTEM = /etc/gitweb.conf
+GITWEB_HOME_LINK_STR = projects
+GITWEB_SITENAME =
+GITWEB_PROJECTROOT = /pub/git
+GITWEB_PROJECT_MAXDEPTH = 2007
+GITWEB_EXPORT_OK =
+GITWEB_STRICT_EXPORT =
+GITWEB_BASE_URL =
+GITWEB_LIST =
+GITWEB_HOMETEXT = indextext.html
+GITWEB_CSS = gitweb.css
+GITWEB_LOGO = git-logo.png
+GITWEB_FAVICON = git-favicon.png
+ifdef JSMIN
+GITWEB_JS = gitweb.min.js
+else
+GITWEB_JS = gitweb.js
+endif
+GITWEB_SITE_HEADER =
+GITWEB_SITE_FOOTER =
+
+# include user config
+-include ../config.mak.autogen
+-include ../config.mak
+
+# determine version
+../GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
+ $(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) GIT-VERSION-FILE
+
+-include ../GIT-VERSION-FILE
+
+### Build rules
+
+SHELL_PATH ?= $(SHELL)
+PERL_PATH ?= /usr/bin/perl
+
+# Shell quote;
+bindir_SQ = $(subst ','\'',$(bindir)) #'
+SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) #'
+PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH)) #'
+
+# Quiet generation (unless V=1)
+QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir
+QUIET_SUBDIR1 =
+
+ifneq ($(findstring $(MAKEFLAGS),w),w)
+PRINT_DIR = --no-print-directory
+else # "make -w"
+NO_SUBDIR = :
+endif
+
+ifneq ($(findstring $(MAKEFLAGS),s),s)
+ifndef V
+ QUIET = @
+ QUIET_GEN = $(QUIET)echo ' ' GEN $@;
+ QUIET_SUBDIR0 = +@subdir=
+ QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
+ $(MAKE) $(PRINT_DIR) -C $$subdir
+ export V
+ export QUIET
+ export QUIET_GEN
+ export QUIET_SUBDIR0
+ export QUIET_SUBDIR1
+endif
+endif
+
+all:: gitweb.cgi
+
+ifdef JSMIN
+FILES=gitweb.cgi gitweb.min.js
+gitweb.cgi: gitweb.perl gitweb.min.js
+else # !JSMIN
+FILES=gitweb.cgi
+gitweb.cgi: gitweb.perl
+endif # JSMIN
+
+gitweb.cgi:
+ $(QUIET_GEN)$(RM) $@ $@+ && \
+ sed -e '1s|#!.*perl|#!$(PERL_PATH_SQ)|' \
+ -e 's|++GIT_VERSION++|$(GIT_VERSION)|g' \
+ -e 's|++GIT_BINDIR++|$(bindir)|g' \
+ -e 's|++GITWEB_CONFIG++|$(GITWEB_CONFIG)|g' \
+ -e 's|++GITWEB_CONFIG_SYSTEM++|$(GITWEB_CONFIG_SYSTEM)|g' \
+ -e 's|++GITWEB_HOME_LINK_STR++|$(GITWEB_HOME_LINK_STR)|g' \
+ -e 's|++GITWEB_SITENAME++|$(GITWEB_SITENAME)|g' \
+ -e 's|++GITWEB_PROJECTROOT++|$(GITWEB_PROJECTROOT)|g' \
+ -e 's|"++GITWEB_PROJECT_MAXDEPTH++"|$(GITWEB_PROJECT_MAXDEPTH)|g' \
+ -e 's|++GITWEB_EXPORT_OK++|$(GITWEB_EXPORT_OK)|g' \
+ -e 's|++GITWEB_STRICT_EXPORT++|$(GITWEB_STRICT_EXPORT)|g' \
+ -e 's|++GITWEB_BASE_URL++|$(GITWEB_BASE_URL)|g' \
+ -e 's|++GITWEB_LIST++|$(GITWEB_LIST)|g' \
+ -e 's|++GITWEB_HOMETEXT++|$(GITWEB_HOMETEXT)|g' \
+ -e 's|++GITWEB_CSS++|$(GITWEB_CSS)|g' \
+ -e 's|++GITWEB_LOGO++|$(GITWEB_LOGO)|g' \
+ -e 's|++GITWEB_FAVICON++|$(GITWEB_FAVICON)|g' \
+ -e 's|++GITWEB_JS++|$(GITWEB_JS)|g' \
+ -e 's|++GITWEB_SITE_HEADER++|$(GITWEB_SITE_HEADER)|g' \
+ -e 's|++GITWEB_SITE_FOOTER++|$(GITWEB_SITE_FOOTER)|g' \
+ $< >$@+ && \
+ chmod +x $@+ && \
+ mv $@+ $@
+
+ifdef JSMIN
+gitweb.min.js: gitweb.js
+ $(QUIET_GEN)$(JSMIN) <$< >$@
+endif # JSMIN
+
+clean:
+ $(RM) $(FILES)
+
+.PHONY: all clean .FORCE-GIT-VERSION-FILE
Base URL for relative URLs in pages generated by gitweb,
(e.g. $logo, $favicon, @stylesheets if they are relative URLs),
needed and used only for URLs with nonempty PATH_INFO via
- <base href="$base_url>. Usually gitweb sets its value correctly,
+ <base href="$base_url">. Usually gitweb sets its value correctly,
and there is no need to set this variable, e.g. to $my_uri or "/".
* $home_link
Target of the home link on top of all pages (the first part of view
repositories from launching cross-site scripting (XSS) attacks. Set this
to true if you don't trust the content of your repositories. The default
is false.
+ * $maxload
+ Used to set the maximum load that we will still respond to gitweb queries.
+ If server load exceed this value then return "503 Service Unavaliable" error.
+ Server load is taken to be 0 if gitweb cannot determine its value. Set it to
+ undefined value to turn it off. The default is 300.
Projects list file format
'double' => 32
);
+# Used to set the maximum load that we will still respond to gitweb queries.
+# If server load exceed this value then return "503 server busy" error.
+# If gitweb cannot determined server load, it is taken to be 0.
+# Leave it undefined (or set to 'undef') to turn off load checking.
+our $maxload = 300;
+
# You define site-wide feature defaults here; override them with
# $GITWEB_CONFIG as necessary.
our %feature = (
do $GITWEB_CONFIG_SYSTEM if -e $GITWEB_CONFIG_SYSTEM;
}
+# Get loadavg of system, to compare against $maxload.
+# Currently it requires '/proc/loadavg' present to get loadavg;
+# if it is not present it returns 0, which means no load checking.
+sub get_loadavg {
+ if( -e '/proc/loadavg' ){
+ open my $fd, '<', '/proc/loadavg'
+ or return 0;
+ my @load = split(/\s+/, scalar <$fd>);
+ close $fd;
+
+ # The first three columns measure CPU and IO utilization of the last one,
+ # five, and 10 minute periods. The fourth column shows the number of
+ # currently running processes and the total number of processes in the m/n
+ # format. The last column displays the last process ID used.
+ return $load[0] || 0;
+ }
+ # additional checks for load average should go here for things that don't export
+ # /proc/loadavg
+
+ return 0;
+}
+
# version of the core git binary
our $git_version = qx("$GIT" --version) =~ m/git version (.*)$/ ? $1 : "unknown";
$number_of_git_cmds++;
$projects_list ||= $projectroot;
+if (defined $maxload && get_loadavg() > $maxload) {
+ die_error(503, "The load average on the server is too high");
+}
+
# ======================================================================
# input validation and dispatch
# in utf-8 thanks to "binmode STDOUT, ':utf8'" at beginning
sub to_utf8 {
my $str = shift;
+ return undef unless defined $str;
if (utf8::valid($str)) {
utf8::decode($str);
return $str;
# correct, but quoted slashes look too horrible in bookmarks
sub esc_param {
my $str = shift;
+ return undef unless defined $str;
$str =~ s/([^A-Za-z0-9\-_.~()\/:@ ]+)/CGI::escape($1)/eg;
$str =~ s/ /\+/g;
return $str;
# quote unsafe chars in whole URL, so some charactrs cannot be quoted
sub esc_url {
my $str = shift;
+ return undef unless defined $str;
$str =~ s/([^A-Za-z0-9\-_.~();\/;?:@&=])/sprintf("%%%02X", ord($1))/eg;
$str =~ s/\+/%2B/g;
$str =~ s/ /\+/g;
my $str = shift;
my %opts = @_;
+ return undef unless defined $str;
+
$str = to_utf8($str);
$str = $cgi->escapeHTML($str);
if ($opts{'-nbsp'}) {
my $str = shift;
my %opts = @_;
+ return undef unless defined $str;
+
$str = to_utf8($str);
$str = $cgi->escapeHTML($str);
if ($opts{'-nbsp'}) {
$str =~ m/^(.*?)($begre)$/;
my ($lead, $body) = ($1, $2);
if (length($lead) > 4) {
- $body =~ s/^[^;]*;// if ($lead =~ m/&[^;]*$/);
$lead = " ...";
}
return "$lead$body";
$str =~ m/^(.*?)($begre)$/;
my ($mid, $right) = ($1, $2);
if (length($mid) > 5) {
- $left =~ s/&[^;]*$//;
- $right =~ s/^[^;]*;// if ($mid =~ m/&[^;]*$/);
$mid = " ... ";
}
return "$left$mid$right";
my $body = $1;
my $tail = $2;
if (length($tail) > 4) {
- $body =~ s/&[^;]*$//;
$tail = "... ";
}
return "$body$tail";
print "</head>\n" .
"<body>\n";
- if (-f $site_header) {
+ if (defined $site_header && -f $site_header) {
insert_file($site_header);
}
print "</div>\n"; # class="page_footer"
}
- if (-f $site_footer) {
+ if (defined $site_footer && -f $site_footer) {
insert_file($site_footer);
}
print qq!<script type="text/javascript" src="$javascript"></script>\n!;
- if ($action eq 'blame_incremental') {
+ if (defined $action &&
+ $action eq 'blame_incremental') {
print qq!<script type="text/javascript">\n!.
qq!startBlame("!. href(action=>"blame_data", -replay=>1) .qq!",\n!.
qq! "!. href() .qq!");\n!.
"</html>";
}
-# die_error(<http_status_code>, <error_message>)
+# die_error(<http_status_code>, <error_message>[, <detailed_html_description>])
# Example: die_error(404, 'Hash not found')
# By convention, use the following status codes (as defined in RFC 2616):
# 400: Invalid or missing CGI parameters, or
# 500: The server isn't configured properly, or
# an internal error occurred (e.g. failed assertions caused by bugs), or
# an unknown error occurred (e.g. the git binary died unexpectedly).
+# 503: The server is currently unavailable (because it is overloaded,
+# or down for maintenance). Generally, this is a temporary state.
sub die_error {
my $status = shift || 500;
- my $error = shift || "Internal server error";
-
- my %http_responses = (400 => '400 Bad Request',
- 403 => '403 Forbidden',
- 404 => '404 Not Found',
- 500 => '500 Internal Server Error');
+ my $error = esc_html(shift) || "Internal Server Error";
+ my $extra = shift;
+
+ my %http_responses = (
+ 400 => '400 Bad Request',
+ 403 => '403 Forbidden',
+ 404 => '404 Not Found',
+ 500 => '500 Internal Server Error',
+ 503 => '503 Service Unavailable',
+ );
git_header_html($http_responses{$status});
print <<EOF;
<div class="page_body">
<br /><br />
$status - $error
<br />
-</div>
EOF
+ if (defined $extra) {
+ print "<hr />\n" .
+ "$extra\n";
+ }
+ print "</div>\n";
+
git_footer_html();
exit;
}
}
sub print_local_time {
+ print format_local_time(@_);
+}
+
+sub format_local_time {
+ my $localtime = '';
my %date = @_;
if ($date{'hour_local'} < 6) {
- printf(" (<span class=\"atnight\">%02d:%02d</span> %s)",
+ $localtime .= sprintf(" (<span class=\"atnight\">%02d:%02d</span> %s)",
$date{'hour_local'}, $date{'minute_local'}, $date{'tz_local'});
} else {
- printf(" (%02d:%02d %s)",
+ $localtime .= sprintf(" (%02d:%02d %s)",
$date{'hour_local'}, $date{'minute_local'}, $date{'tz_local'});
}
+
+ return $localtime;
}
# Outputs the author name and date in long form
# print 'sort by' <th> element, generating 'sort by $name' replay link
# if that order is not selected
sub print_sort_th {
+ print format_sort_th(@_);
+}
+
+sub format_sort_th {
my ($name, $order, $header) = @_;
+ my $sort_th = "";
$header ||= ucfirst($name);
if ($order eq $name) {
- print "<th>$header</th>\n";
+ $sort_th .= "<th>$header</th>\n";
} else {
- print "<th>" .
- $cgi->a({-href => href(-replay=>1, order=>$name),
- -class => "header"}, $header) .
- "</th>\n";
+ $sort_th .= "<th>" .
+ $cgi->a({-href => href(-replay=>1, order=>$name),
+ -class => "header"}, $header) .
+ "</th>\n";
}
+
+ return $sort_th;
}
sub git_project_list_body {
}
git_header_html();
- if (-f $home_text) {
+ if (defined $home_text && -f $home_text) {
print "<div class=\"index_include\">\n";
insert_file($home_text);
print "</div>\n";
p->next = NULL;
}
+struct grep_opt *grep_opt_dup(const struct grep_opt *opt)
+{
+ struct grep_pat *pat;
+ struct grep_opt *ret = xmalloc(sizeof(struct grep_opt));
+ *ret = *opt;
+
+ ret->pattern_list = NULL;
+ ret->pattern_tail = &ret->pattern_list;
+
+ for(pat = opt->pattern_list; pat != NULL; pat = pat->next)
+ {
+ if(pat->token == GREP_PATTERN_HEAD)
+ append_header_grep_pattern(ret, pat->field,
+ pat->pattern);
+ else
+ append_grep_pattern(ret, pat->pattern, pat->origin,
+ pat->no, pat->token);
+ }
+
+ return ret;
+}
+
static void compile_regexp(struct grep_pat *p, struct grep_opt *opt)
{
int err;
p->word_regexp = opt->word_regexp;
p->ignore_case = opt->ignore_case;
+ p->fixed = opt->fixed;
- if (opt->fixed)
- p->fixed = 1;
- if (opt->regflags & REG_ICASE)
- p->fixed = 0;
if (p->fixed)
return;
static void show_name(struct grep_opt *opt, const char *name)
{
- printf("%s%c", name, opt->null_following_name ? '\0' : '\n');
+ opt->output(opt, name, strlen(name));
+ opt->output(opt, opt->null_following_name ? "\0" : "\n", 1);
}
const char *name, unsigned lno, char sign)
{
int rest = eol - bol;
+ char sign_str[1];
+ sign_str[0] = sign;
if (opt->pre_context || opt->post_context) {
if (opt->last_shown == 0) {
if (opt->show_hunk_mark)
- fputs("--\n", stdout);
+ opt->output(opt, "--\n", 3);
else
opt->show_hunk_mark = 1;
} else if (lno > opt->last_shown + 1)
- fputs("--\n", stdout);
+ opt->output(opt, "--\n", 3);
}
opt->last_shown = lno;
if (opt->null_following_name)
- sign = '\0';
- if (opt->pathname)
- printf("%s%c", name, sign);
- if (opt->linenum)
- printf("%d%c", lno, sign);
+ sign_str[0] = '\0';
+ if (opt->pathname) {
+ opt->output(opt, name, strlen(name));
+ opt->output(opt, sign_str, 1);
+ }
+ if (opt->linenum) {
+ char buf[32];
+ snprintf(buf, sizeof(buf), "%d", lno);
+ opt->output(opt, buf, strlen(buf));
+ opt->output(opt, sign_str, 1);
+ }
if (opt->color) {
regmatch_t match;
enum grep_context ctx = GREP_CONTEXT_BODY;
while (next_match(opt, bol, eol, ctx, &match, eflags)) {
if (match.rm_so == match.rm_eo)
break;
- printf("%.*s%s%.*s%s",
- (int)match.rm_so, bol,
- opt->color_match,
- (int)(match.rm_eo - match.rm_so), bol + match.rm_so,
- GIT_COLOR_RESET);
+
+ opt->output(opt, bol, match.rm_so);
+ opt->output(opt, opt->color_match,
+ strlen(opt->color_match));
+ opt->output(opt, bol + match.rm_so,
+ (int)(match.rm_eo - match.rm_so));
+ opt->output(opt, GIT_COLOR_RESET,
+ strlen(GIT_COLOR_RESET));
bol += match.rm_eo;
rest -= match.rm_eo;
eflags = REG_NOTBOL;
}
*eol = ch;
}
- printf("%.*s\n", rest, bol);
+ opt->output(opt, bol, rest);
+ opt->output(opt, "\n", 1);
}
static int match_funcname(struct grep_opt *opt, char *bol, char *eol)
if (p->fixed)
hit = !fixmatch(p->pattern, bol, p->ignore_case, &m);
- else
+ else {
+#ifdef REG_STARTEND
+ m.rm_so = 0;
+ m.rm_eo = *left_p;
+ hit = !regexec(&p->regexp, bol, 1, &m, REG_STARTEND);
+#else
hit = !regexec(&p->regexp, bol, 1, &m, 0);
+#endif
+ }
if (!hit || m.rm_so < 0 || m.rm_eo < 0)
continue;
if (earliest < 0 || m.rm_so < earliest)
return 0;
}
+int grep_threads_ok(const struct grep_opt *opt)
+{
+ /* If this condition is true, then we may use the attribute
+ * machinery in grep_buffer_1. The attribute code is not
+ * thread safe, so we disable the use of threads.
+ */
+ if (opt->funcname && !opt->unmatch_name_only && !opt->status_only &&
+ !opt->name_only)
+ return 0;
+
+ /* If we are showing hunk marks, we should not do it for the
+ * first match. The synchronization problem we get for this
+ * constraint is not yet solved, so we disable threading in
+ * this case.
+ */
+ if (opt->pre_context || opt->post_context)
+ return 0;
+
+ return 1;
+}
+
+static void std_output(struct grep_opt *opt, const void *buf, size_t size)
+{
+ fwrite(buf, size, 1, stdout);
+}
+
static int grep_buffer_1(struct grep_opt *opt, const char *name,
char *buf, unsigned long size, int collect_hits)
{
opt->last_shown = 0;
+ if (!opt->output)
+ opt->output = std_output;
+
if (buffer_is_binary(buf, size)) {
switch (opt->binary) {
case GREP_BINARY_DEFAULT:
if (opt->status_only)
return 1;
if (binary_match_only) {
- printf("Binary file %s matches\n", name);
+ opt->output(opt, "Binary file ", 12);
+ opt->output(opt, name, strlen(name));
+ opt->output(opt, " matches\n", 9);
return 1;
}
if (opt->name_only) {
* which feels mostly useless but sometimes useful. Maybe
* make it another option? For now suppress them.
*/
- if (opt->count && count)
- printf("%s%c%u\n", name,
- opt->null_following_name ? '\0' : ':', count);
+ if (opt->count && count) {
+ char buf[32];
+ opt->output(opt, name, strlen(name));
+ snprintf(buf, sizeof(buf), "%c%u\n",
+ opt->null_following_name ? '\0' : ':', count);
+ opt->output(opt, buf, strlen(buf));
+ }
return !!last_hit;
}
unsigned last_shown;
int show_hunk_mark;
void *priv;
+
+ void (*output)(struct grep_opt *opt, const void *data, size_t size);
+ void *output_priv;
};
extern void append_grep_pattern(struct grep_opt *opt, const char *pat, const char *origin, int no, enum grep_pat_token t);
extern void free_grep_patterns(struct grep_opt *opt);
extern int grep_buffer(struct grep_opt *opt, const char *name, char *buf, unsigned long size);
+extern struct grep_opt *grep_opt_dup(const struct grep_opt *opt);
+extern int grep_threads_ok(const struct grep_opt *opt);
+
#endif
return assumed;
}
- fprintf(stderr, "git: '%s' is not a git-command. See 'git --help'.\n", cmd);
+ fprintf(stderr, "git: '%s' is not a git command. See 'git --help'.\n", cmd);
if (SIMILAR_ENOUGH(best_similarity)) {
fprintf(stderr, "\nDid you mean %s?\n",
if (strncmp(key, imap_key, sizeof imap_key - 1))
return 0;
- if (!val)
- return config_error_nonbool(key);
-
key += sizeof imap_key - 1;
+ /* check booleans first, and barf on others */
+ if (!strcmp("sslverify", key))
+ server.ssl_verify = git_config_bool(key, val);
+ else if (!strcmp("preformattedhtml", key))
+ server.use_html = git_config_bool(key, val);
+ else if (!val)
+ return config_error_nonbool(key);
+
if (!strcmp("folder", key)) {
imap_folder = xstrdup(val);
} else if (!strcmp("host", key)) {
server.port = git_config_int(key, val);
else if (!strcmp("tunnel", key))
server.tunnel = xstrdup(val);
- else if (!strcmp("sslverify", key))
- server.ssl_verify = git_config_bool(key, val);
- else if (!strcmp("preformattedHTML", key))
- server.use_html = git_config_bool(key, val);
return 0;
}
#define LEVENSHTEIN_H
int levenshtein(const char *string1, const char *string2,
- int swap_penalty, int substition_penalty,
+ int swap_penalty, int substitution_penalty,
int insertion_penalty, int deletion_penalty);
#endif
/* now the result size */
size = get_delta_hdr_size(&data, top);
- dst_buf = xmalloc(size + 1);
- dst_buf[size] = 0;
+ dst_buf = xmallocz(size);
out = dst_buf;
while (data < top) {
if (access("objects", X_OK) == 0 && access("refs", X_OK) == 0 &&
validate_headref("HEAD") == 0) {
- setenv(GIT_DIR_ENVIRONMENT, ".", 1);
+ set_git_dir(".");
check_repository_format();
return path;
}
/*
* This resurrects the belts and suspenders paranoia check by HPA
* done in <435560F7.4080006@zytor.com> thread, now enter_repo()
- * does not do getcwd() based path canonicalizations.
+ * does not do getcwd() based path canonicalization.
*
* sl becomes true immediately after seeing '/' and continues to
* be true as long as dots continue after that without intervening
$dir = $opts{Directory};
unless (-d "$dir/refs" and -d "$dir/objects" and -e "$dir/HEAD") {
- # Mimick git-rev-parse --git-dir error message:
+ # Mimic git-rev-parse --git-dir error message:
throw Error::Simple("fatal: Not a git repository: $dir");
}
my $search = Git->repository(Repository => $dir);
try {
$search->command('symbolic-ref', 'HEAD');
} catch Git::Error::Command with {
- # Mimick git-rev-parse --git-dir error message:
+ # Mimic git-rev-parse --git-dir error message:
throw Error::Simple("fatal: Not a git repository: $dir");
}
if (ce_stage(ce))
continue;
+ if (S_ISGITLINK(ce->ce_mode))
+ continue;
if (ce_uptodate(ce))
continue;
if (!ce_path_match(ce, p->pathspec))
int ch;
len = next_quote_pos(p, maxlen);
- if (len == maxlen || !p[len])
+ if (len == maxlen || (maxlen < 0 && !p[len]))
break;
if (!no_dq && p == name)
EMIT('\\');
p += len;
ch = (unsigned char)*p++;
+ if (maxlen >= 0)
+ maxlen -= len + 1;
if (sq_lookup[ch] >= ' ') {
EMIT(sq_lookup[ch]);
} else {
#define CACHE_EXT(s) ( (s[0]<<24)|(s[1]<<16)|(s[2]<<8)|(s[3]) )
#define CACHE_EXT_TREE 0x54524545 /* "TREE" */
-#define CACHE_EXT_RESOLVE_UNDO 0x52455543 /* "REUN" */
+#define CACHE_EXT_RESOLVE_UNDO 0x52455543 /* "REUC" */
struct index_state the_index;
if (alias && !ce_stage(alias) && !ie_match_stat(istate, alias, st, ce_option)) {
/* Nothing changed, really */
free(ce);
- ce_mark_uptodate(alias);
+ if (!S_ISGITLINK(alias->ce_mode))
+ ce_mark_uptodate(alias);
alias->ce_flags |= CE_ADDED;
return 0;
}
* because CE_UPTODATE flag is in-core only;
* we are not going to write this change out.
*/
- ce_mark_uptodate(ce);
+ if (!S_ISGITLINK(ce->ce_mode))
+ ce_mark_uptodate(ce);
return ce;
}
}
has_glob_specials = strpbrk(pattern, "?*[");
if (!has_glob_specials) {
- /* Append impiled '/' '*' if not present. */
+ /* Append implied '/' '*' if not present. */
if (real_pattern.buf[real_pattern.len - 1] != '/')
strbuf_addch(&real_pattern, '/');
/* No need to check for '*', there is none. */
for (i = 0; i < 3; i++)
free(mmfile[i].ptr);
- memset(&io, 0, sizeof(&io));
+ memset(&io, 0, sizeof(io));
io.io.getline = rerere_mem_getline;
if (output)
io.io.output = fopen(output, "w");
for_each_string_list(write_one, resolve_undo, sb);
}
-struct string_list *resolve_undo_read(void *data, unsigned long size)
+struct string_list *resolve_undo_read(const char *data, unsigned long size)
{
struct string_list *resolve_undo;
size_t len;
continue;
if (size < 20)
goto error;
- hashcpy(ui->sha1[i], data);
+ hashcpy(ui->sha1[i], (const unsigned char *)data);
size -= 20;
data += 20;
}
extern void record_resolve_undo(struct index_state *, struct cache_entry *);
extern void resolve_undo_write(struct strbuf *, struct string_list *);
-extern struct string_list *resolve_undo_read(void *, unsigned long);
+extern struct string_list *resolve_undo_read(const char *, unsigned long);
extern void resolve_undo_clear_index(struct index_state *);
extern int unmerge_index_entry_at(struct index_state *, int);
extern void unmerge_index(struct index_state *, const char **);
{
if (revs->no_walk && (obj->flags & UNINTERESTING))
revs->no_walk = 0;
- if (revs->reflog_info && obj->type == OBJ_COMMIT &&
- add_reflog_for_walk(revs->reflog_info,
- (struct commit *)obj, name))
- return;
+ if (revs->reflog_info && obj->type == OBJ_COMMIT) {
+ struct strbuf buf = STRBUF_INIT;
+ int len = interpret_branch_name(name, &buf);
+ int st;
+
+ if (0 < len && name[len] && buf.len)
+ strbuf_addstr(&buf, name + len);
+ st = add_reflog_for_walk(revs->reflog_info,
+ (struct commit *)obj,
+ buf.buf[0] ? buf.buf: name);
+ strbuf_release(&buf);
+ if (st)
+ return;
+ }
add_object_array_with_mode(obj, name, &revs->pending, mode);
}
}
/*
- * set_work_tree() is only ever called if you set GIT_DIR explicitely.
+ * set_work_tree() is only ever called if you set GIT_DIR explicitly.
* The old behaviour (which we retain here) is to set the work tree root
* to the cwd, unless overridden by the config, the command line, or
* GIT_WORK_TREE.
inside_work_tree = 0;
if (offset != len) {
cwd[offset] = '\0';
- setenv(GIT_DIR_ENVIRONMENT, cwd, 1);
+ set_git_dir(cwd);
} else
- setenv(GIT_DIR_ENVIRONMENT, ".", 1);
+ set_git_dir(".");
check_repository_format_gently(nongit_ok);
return NULL;
}
static void *unpack_sha1_rest(z_stream *stream, void *buffer, unsigned long size, const unsigned char *sha1)
{
int bytes = strlen(buffer) + 1;
- unsigned char *buf = xmalloc(1+size);
+ unsigned char *buf = xmallocz(size);
unsigned long n;
int status = Z_OK;
while (status == Z_OK)
status = git_inflate(stream, Z_FINISH);
}
- buf[size] = 0;
if (status == Z_STREAM_END && !stream->avail_in) {
git_inflate_end(stream);
return buf;
z_stream stream;
unsigned char *buffer, *in;
- buffer = xmalloc(size + 1);
- buffer[size] = 0;
+ buffer = xmallocz(size);
memset(&stream, 0, sizeof(stream));
stream.next_out = buffer;
stream.avail_out = size + 1;
*ref = xstrdup(r);
if (!warn_ambiguous_refs)
break;
- } else if ((flag & REF_ISSYMREF) &&
- (len != 4 || strcmp(str, "HEAD")))
+ } else if ((flag & REF_ISSYMREF) && strcmp(fullref, "HEAD"))
warning("ignoring dangling symref %s.", fullref);
}
free(last_branch);
unsigned long co_time;
int co_tz, co_cnt;
+ /* a @{-N} placed anywhere except the start is an error */
+ if (str[at+2] == '-')
+ return -1;
+
/* Is it asking for N-th entry, or approxidate? */
for (i = nth = 0; 0 <= nth && i < reflog_len; i++) {
char ch = str[at+2+i];
} else if (0 <= nth)
at_time = 0;
else {
+ int errors = 0;
char *tmp = xstrndup(str + at + 2, reflog_len);
- at_time = approxidate(tmp);
+ at_time = approxidate_careful(tmp, &errors);
free(tmp);
+ if (errors)
+ return -1;
}
if (read_ref_at(real_ref, at_time, nth, sha1, NULL,
&co_time, &co_tz, &co_cnt)) {
if (!len)
return len; /* syntax Ok, not enough switches */
- if (0 < len)
- return len; /* consumed from the front */
+ if (0 < len && len == namelen)
+ return len; /* consumed all */
+ else if (0 < len) {
+ /* we have extra data, which might need further processing */
+ struct strbuf tmp = STRBUF_INIT;
+ int used = buf->len;
+ int ret;
+
+ strbuf_add(buf, name + len, namelen - len);
+ ret = interpret_branch_name(buf->buf, &tmp);
+ /* that data was not interpreted, remove our cruft */
+ if (ret < 0) {
+ strbuf_setlen(buf, used);
+ return len;
+ }
+ strbuf_reset(buf);
+ strbuf_addbuf(buf, &tmp);
+ strbuf_release(&tmp);
+ /* tweak for size of {-N} versus expanded ref name */
+ return ret - used + len;
+ }
+
cp = strchr(name, '@');
if (!cp)
return -1;
{
struct strbuf objects_directory = STRBUF_INIT;
struct alternate_object_database *alt_odb;
+ int ret = 0;
strbuf_addf(&objects_directory, "%s/.git/objects/", path);
- if (!is_directory(objects_directory.buf))
- return -1;
-
+ if (!is_directory(objects_directory.buf)) {
+ ret = -1;
+ goto done;
+ }
/* avoid adding it twice */
for (alt_odb = alt_odb_list; alt_odb; alt_odb = alt_odb->next)
if (alt_odb->name - alt_odb->base == objects_directory.len &&
!strncmp(alt_odb->base, objects_directory.buf,
objects_directory.len))
- return 0;
+ goto done;
alt_odb = xmalloc(objects_directory.len + 42 + sizeof(*alt_odb));
alt_odb->next = alt_odb_list;
alt_odb->name[41] = '\0';
alt_odb_list = alt_odb;
prepare_alt_odb();
- return 0;
+done:
+ strbuf_release(&objects_directory);
+ return ret;
}
void show_submodule_summary(FILE *f, const char *path,
unsigned char one[20], unsigned char two[20],
+ unsigned dirty_submodule,
const char *del, const char *add, const char *reset)
{
struct rev_info rev;
if (!fast_backward && !fast_forward)
strbuf_addch(&sb, '.');
strbuf_addf(&sb, "%s", find_unique_abbrev(two, DEFAULT_ABBREV));
+ if (dirty_submodule)
+ strbuf_add(&sb, "-dirty", 6);
if (message)
strbuf_addf(&sb, " %s\n", message);
else
"--porcelain",
NULL,
};
- char *env[3];
+ char *env[4];
struct strbuf buf = STRBUF_INIT;
strbuf_addf(&buf, "%s/.git/", path);
env[0] = strbuf_detach(&buf, NULL);
strbuf_addf(&buf, "GIT_DIR=%s/.git", path);
env[1] = strbuf_detach(&buf, NULL);
- env[2] = NULL;
+ strbuf_addf(&buf, "GIT_INDEX_FILE");
+ env[2] = strbuf_detach(&buf, NULL);
+ env[3] = NULL;
memset(&cp, 0, sizeof(cp));
cp.argv = argv;
free(env[0]);
free(env[1]);
+ free(env[2]);
strbuf_release(&buf);
return len != 0;
}
void show_submodule_summary(FILE *f, const char *path,
unsigned char one[20], unsigned char two[20],
+ unsigned dirty_submodule,
const char *del, const char *add, const char *reset);
int is_submodule_modified(const char *path);
our \$projects_list = '';
our \$export_ok = '';
our \$strict_export = '';
+our \$maxload = undef;
EOF
+: included from t2016 and others
+
. ./test-lib.sh
if ! test_have_prereq PERL; then
. ./test-lib.sh
-q_to_nul () {
- perl -pe 'y/Q/\000/'
-}
-
-q_to_cr () {
- tr Q '\015'
-}
-
-append_cr () {
- sed -e 's/$/Q/' | tr Q '\015'
-}
-
-remove_cr () {
- tr '\015' Q <"$1" | grep Q >/dev/null &&
- tr '\015' Q <"$1" | sed -ne 's/Q$//p'
+has_cr() {
+ tr '\015' Q <"$1" | grep Q >/dev/null
}
test_expect_success setup '
for f in one dir/two
do
- remove_cr "$f" >tmp && mv -f tmp $f &&
+ remove_cr <"$f" >tmp && mv -f tmp $f &&
git update-index -- $f || {
echo "Eh? $f"
false
for f in one dir/two
do
- if remove_cr "$f" >/dev/null
+ if has_cr "$f"
then
echo "Eh? $f"
false
git read-tree --reset -u HEAD &&
git apply patch.file &&
- test "$patched" = "`remove_cr one | git hash-object --stdin`" || {
+ test "$patched" = "`remove_cr <one | git hash-object --stdin`" || {
echo "Eh? apply without index"
false
}
git apply --index patch.file &&
test "$patched" = `git rev-parse :one` &&
- test "$patched" = "`remove_cr one | git hash-object --stdin`" || {
+ test "$patched" = "`remove_cr <one | git hash-object --stdin`" || {
echo "Eh? apply with --index"
false
}
git config core.autocrlf true &&
git read-tree --reset -u HEAD &&
- if remove_cr dir/two >/dev/null
+ if has_cr dir/two
then
echo "Huh?"
false
: happy
fi &&
- if remove_cr one >/dev/null
+ if has_cr one
then
: happy
else
false
fi &&
- if remove_cr three >/dev/null
+ if has_cr three
then
echo "Huh?"
false
echo "two crlf=input" >.gitattributes &&
git read-tree --reset -u HEAD &&
- if remove_cr dir/two >/dev/null
+ if has_cr dir/two
then
echo "Huh?"
false
echo "t* crlf" >.gitattributes &&
git read-tree --reset -u HEAD &&
- if remove_cr dir/two >/dev/null
+ if has_cr dir/two
then
: happy
else
false
fi &&
- if remove_cr three >/dev/null
+ if has_cr three
then
: happy
else
rm -rf tmp one dir .gitattributes patch.file three &&
git read-tree --reset -u HEAD &&
- if remove_cr one >/dev/null
+ if has_cr one
then
echo "Eh? one should not have CRLF"
false
else
: happy
fi &&
- remove_cr three >/dev/null || {
+ has_cr three || {
echo "Eh? three should still have CRLF"
false
}
git read-tree --reset HEAD &&
git checkout-index -f -q -u -a &&
- if remove_cr one >/dev/null
+ if has_cr one
then
echo "Eh? one should not have CRLF"
false
else
: happy
fi &&
- remove_cr three >/dev/null || {
+ has_cr three || {
echo "Eh? three should still have CRLF"
false
}
git checkout-index -u .gitattributes &&
git checkout-index -u one dir/two three &&
- if remove_cr one >/dev/null
+ if has_cr one
then
echo "Eh? one should not have CRLF"
false
else
: happy
fi &&
- remove_cr three >/dev/null || {
+ has_cr three || {
echo "Eh? three should still have CRLF"
false
}
git checkout-index -u one dir/two three &&
git checkout-index -u .gitattributes &&
- if remove_cr one >/dev/null
+ if has_cr one
then
echo "Eh? one should not have CRLF"
false
else
: happy
fi &&
- remove_cr three >/dev/null || {
+ has_cr three || {
echo "Eh? three should still have CRLF"
false
}
git checkout master~1 &&
git checkout master &&
- remove_cr .file2 >/dev/null
+ has_cr .file2
'
test_tick &&
git commit -m Initial &&
- sed -e "s/\$/\r/" "$TEST_DIRECTORY"/t0022-crlf-rename.sh >elpmas &&
+ append_cr <"$TEST_DIRECTORY"/t0022-crlf-rename.sh >elpmas &&
git add elpmas &&
rm -f sample &&
--- /dev/null
+#!/bin/sh
+
+test_description='various @{whatever} syntax tests'
+. ./test-lib.sh
+
+test_expect_success 'setup' '
+ test_commit one &&
+ test_commit two
+'
+
+check_at() {
+ echo "$2" >expect &&
+ git log -1 --format=%s "$1" >actual &&
+ test_cmp expect actual
+}
+
+test_expect_success '@{0} shows current' '
+ check_at @{0} two
+'
+
+test_expect_success '@{1} shows old' '
+ check_at @{1} one
+'
+
+test_expect_success '@{now} shows current' '
+ check_at @{now} two
+'
+
+test_expect_success '@{2001-09-17} (before the first commit) shows old' '
+ check_at @{2001-09-17} one
+'
+
+test_expect_success 'silly approxidates work' '
+ check_at @{3.hot.dogs.on.2001-09-17} one
+'
+
+test_expect_success 'notice misspelled upstream' '
+ test_must_fail git log -1 --format=%s @{usptream}
+'
+
+test_expect_success 'complain about total nonsense' '
+ test_must_fail git log -1 --format=%s @{utter.bogosity}
+'
+
+test_done
test_expect_success 'alternative GIT_CONFIG (--file)' \
'git config --file other-config -l > output && cmp output expect'
+test_expect_success 'refer config from subdirectory' '
+ mkdir x &&
+ (
+ cd x &&
+ echo strasse >expect
+ git config --get --file ../other-config ein.bahn >actual &&
+ test_cmp expect actual
+ )
+
+'
+
GIT_CONFIG=other-config git config anwohner.park ausweis
cat > expect << EOF
This is an invalid tag.
EOF
-test_expect_failure 'tag pointing to nonexistent' '
- tag=$(git hash-object -w --stdin < invalid-tag) &&
+test_expect_success 'tag pointing to nonexistent' '
+ tag=$(git hash-object -t tag -w --stdin < invalid-tag) &&
echo $tag > .git/refs/tags/invalid &&
- git fsck --tags 2>out &&
+ test_must_fail git fsck --tags >out &&
cat out &&
- grep "could not load tagged object" out &&
+ grep "broken link" out &&
rm .git/refs/tags/invalid
'
This is an invalid tag.
EOF
-test_expect_failure 'tag pointing to something else than its type' '
- tag=$(git hash-object -w --stdin < wrong-tag) &&
+test_expect_success 'tag pointing to something else than its type' '
+ tag=$(git hash-object -t tag -w --stdin < wrong-tag) &&
echo $tag > .git/refs/tags/wrong &&
- git fsck --tags 2>out &&
+ test_must_fail git fsck --tags 2>out &&
cat out &&
- grep "some sane error message" out &&
+ grep "error in tag.*broken links" out &&
rm .git/refs/tags/wrong
'
test_cmp expect actual
'
+cat >expect <<EOF
+commit 8f489d01d0cc65c3b0f09504ec50b5ed02a70bd5
+Reflog: master@{0} (C O Mitter <committer@example.com>)
+Reflog message: branch: Created from HEAD
+Author: A U Thor <author@example.com>
+Date: Thu Apr 7 15:15:13 2005 -0700
+
+ 3
+EOF
+test_expect_success 'log -g other@{u}' '
+ git log -1 -g other@{u} >actual &&
+ test_cmp expect actual
+'
+
+cat >expect <<EOF
+commit 8f489d01d0cc65c3b0f09504ec50b5ed02a70bd5
+Reflog: master@{Thu Apr 7 15:17:13 2005 -0700} (C O Mitter <committer@example.com>)
+Reflog message: branch: Created from HEAD
+Author: A U Thor <author@example.com>
+Date: Thu Apr 7 15:15:13 2005 -0700
+
+ 3
+EOF
+
+test_expect_success 'log -g other@{u}@{now}' '
+ git log -1 -g other@{u}@{now} >actual &&
+ test_cmp expect actual
+'
+
test_done
--- /dev/null
+#!/bin/sh
+
+test_description='test various @{X} syntax combinations together'
+. ./test-lib.sh
+
+check() {
+test_expect_${3:-success} "$1 = $2" "
+ echo '$2' >expect &&
+ git log -1 --format=%s '$1' >actual &&
+ test_cmp expect actual
+"
+}
+nonsense() {
+test_expect_${2:-success} "$1 is nonsensical" "
+ test_must_fail git log -1 '$1'
+"
+}
+fail() {
+ "$@" failure
+}
+
+test_expect_success 'setup' '
+ test_commit master-one &&
+ test_commit master-two &&
+ git checkout -b upstream-branch &&
+ test_commit upstream-one &&
+ test_commit upstream-two &&
+ git checkout -b old-branch &&
+ test_commit old-one &&
+ test_commit old-two &&
+ git checkout -b new-branch &&
+ test_commit new-one &&
+ test_commit new-two &&
+ git config branch.old-branch.remote . &&
+ git config branch.old-branch.merge refs/heads/master &&
+ git config branch.new-branch.remote . &&
+ git config branch.new-branch.merge refs/heads/upstream-branch
+'
+
+check HEAD new-two
+check "@{1}" new-one
+check "@{-1}" old-two
+check "@{-1}@{1}" old-one
+check "@{u}" upstream-two
+check "@{u}@{1}" upstream-one
+check "@{-1}@{u}" master-two
+check "@{-1}@{u}@{1}" master-one
+nonsense "@{u}@{-1}"
+nonsense "@{1}@{u}"
+
+test_done
test ! -s output.out
'
-q_to_cr () {
- tr Q '\015'
-}
-
test_expect_success 'Rebase a commit that sprinkles CRs in' '
(
echo "One"
git checkout side &&
git rebase master &&
- git cat-file commit HEAD | sed -e "1,/^$/d" >actual &&
- git cat-file commit side@{1} | sed -e "1,/^$/d" >expect &&
+ git cat-file commit HEAD | sed -e "1,/^\$/d" >actual &&
+ git cat-file commit side@{1} | sed -e "1,/^\$/d" >expect &&
test_cmp expect actual
'
test "$status" != 0
'
+test_expect_success 'rm removes subdirectories recursively' '
+ mkdir -p dir/subdir/subsubdir &&
+ echo content >dir/subdir/subsubdir/file &&
+ git add dir/subdir/subsubdir/file &&
+ git rm -f dir/subdir/subsubdir/file &&
+ ! test -d dir
+'
+
test_done
for name in \
Name "Name and a${LF}LF" "Name and an${HT}HT" "Name${DQ}" \
"$FN$HT$GN" "$FN$LF$GN" "$FN $GN" "$FN$GN" "$FN$DQ$GN" \
- "With SP in it"
+ "With SP in it" "$FN/file"
do
eval "$1"
done
test_expect_success setup '
+ mkdir "$FN" &&
for_each_name "echo initial >\"\$name\""
git add . &&
git commit -q -m Initial &&
"\346\277\261\351\207\216\n\347\264\224"
"\346\277\261\351\207\216 \347\264\224"
"\346\277\261\351\207\216\"\347\264\224"
+"\346\277\261\351\207\216/file"
"\346\277\261\351\207\216\347\264\224"
EOF
"濱野\n純"
濱野 純
"濱野\"純"
+濱野/file
濱野純
EOF
'
+test_expect_success 'check fully quoted output from ls-tree' '
+
+ git ls-tree --name-only -r HEAD >current &&
+ test_cmp expect.quoted current
+
+'
+
test_expect_success 'setting core.quotepath' '
git config --bool core.quotepath false
'
+test_expect_success 'check fully quoted output from ls-tree' '
+
+ git ls-tree --name-only -r HEAD >current &&
+ test_cmp expect.raw current
+
+'
+
test_done
test ! -s output.out
'
+test_expect_success 'pop -q --index works and is quiet' '
+ echo foo > file &&
+ git add file &&
+ git stash save --quiet &&
+ git stash pop -q --index > output.out 2>&1 &&
+ test foo = "$(git show :file)" &&
+ test ! -s output.out
+'
+
test_expect_success 'drop -q is quiet' '
git stash &&
git stash drop -q > output.out 2>&1 &&
tree1=`git write-tree` &&
test "$tree1" = "$tree0"'
-q_to_nul() {
- perl -pe 'y/Q/\000/'
-}
-
nul_to_q() {
perl -pe 'y/\000/Q/'
}
git config --add format.headers "Cc: S. E. Cipient <scipient@example.com>
" &&
git format-patch --stdout master..side > patch2 &&
- sed -e "/^$/q" patch2 > hdrs2 &&
- grep "^To: R. E. Cipient <rcipient@example.com>$" hdrs2 &&
- grep "^Cc: S. E. Cipient <scipient@example.com>$" hdrs2
+ sed -e "/^\$/q" patch2 > hdrs2 &&
+ grep "^To: R. E. Cipient <rcipient@example.com>\$" hdrs2 &&
+ grep "^Cc: S. E. Cipient <scipient@example.com>\$" hdrs2
'
git config --replace-all format.headers "To: R. E. Cipient <rcipient@example.com>" &&
git config --add format.headers "Cc: S. E. Cipient <scipient@example.com>" &&
git format-patch --stdout master..side >patch3 &&
- sed -e "/^$/q" patch3 > hdrs3 &&
- grep "^To: R. E. Cipient <rcipient@example.com>$" hdrs3 &&
- grep "^Cc: S. E. Cipient <scipient@example.com>$" hdrs3
+ sed -e "/^\$/q" patch3 > hdrs3 &&
+ grep "^To: R. E. Cipient <rcipient@example.com>\$" hdrs3 &&
+ grep "^Cc: S. E. Cipient <scipient@example.com>\$" hdrs3
'
git config --replace-all format.headers "To: R. E. Cipient <rcipient@example.com>" &&
git config --add format.headers "To: S. E. Cipient <scipient@example.com>" &&
git format-patch --stdout master..side > patch4 &&
- sed -e "/^$/q" patch4 > hdrs4 &&
- grep "^To: R. E. Cipient <rcipient@example.com>,$" hdrs4 &&
- grep "^ *S. E. Cipient <scipient@example.com>$" hdrs4
+ sed -e "/^\$/q" patch4 > hdrs4 &&
+ grep "^To: R. E. Cipient <rcipient@example.com>,\$" hdrs4 &&
+ grep "^ *S. E. Cipient <scipient@example.com>\$" hdrs4
'
test_expect_success 'additional command line cc' '
git config --replace-all format.headers "Cc: R. E. Cipient <rcipient@example.com>" &&
- git format-patch --cc="S. E. Cipient <scipient@example.com>" --stdout master..side | sed -e "/^$/q" >patch5 &&
- grep "^Cc: R. E. Cipient <rcipient@example.com>,$" patch5 &&
- grep "^ *S. E. Cipient <scipient@example.com>$" patch5
+ git format-patch --cc="S. E. Cipient <scipient@example.com>" --stdout master..side | sed -e "/^\$/q" >patch5 &&
+ grep "^Cc: R. E. Cipient <rcipient@example.com>,\$" patch5 &&
+ grep "^ *S. E. Cipient <scipient@example.com>\$" patch5
'
test_expect_success 'command line headers' '
git config --unset-all format.headers &&
- git format-patch --add-header="Cc: R. E. Cipient <rcipient@example.com>" --stdout master..side | sed -e "/^$/q" >patch6 &&
- grep "^Cc: R. E. Cipient <rcipient@example.com>$" patch6
+ git format-patch --add-header="Cc: R. E. Cipient <rcipient@example.com>" --stdout master..side | sed -e "/^\$/q" >patch6 &&
+ grep "^Cc: R. E. Cipient <rcipient@example.com>\$" patch6
'
test_expect_success 'configuration headers and command line headers' '
git config --replace-all format.headers "Cc: R. E. Cipient <rcipient@example.com>" &&
- git format-patch --add-header="Cc: S. E. Cipient <scipient@example.com>" --stdout master..side | sed -e "/^$/q" >patch7 &&
- grep "^Cc: R. E. Cipient <rcipient@example.com>,$" patch7 &&
- grep "^ *S. E. Cipient <scipient@example.com>$" patch7
+ git format-patch --add-header="Cc: S. E. Cipient <scipient@example.com>" --stdout master..side | sed -e "/^\$/q" >patch7 &&
+ grep "^Cc: R. E. Cipient <rcipient@example.com>,\$" patch7 &&
+ grep "^ *S. E. Cipient <scipient@example.com>\$" patch7
'
test_expect_success 'multiple files' '
git mv file foo &&
git commit -m foo &&
git format-patch --cover-letter -1 &&
- ! grep "file => foo .* 0 *$" 0000-cover-letter.patch &&
+ ! grep "file => foo .* 0 *\$" 0000-cover-letter.patch &&
git format-patch --cover-letter -1 -M &&
- grep "file => foo .* 0 *$" 0000-cover-letter.patch
+ grep "file => foo .* 0 *\$" 0000-cover-letter.patch
'
test_expect_success 'shortlog of cover-letter wraps overly-long onelines' '
git format-patch --cover-letter -2 &&
- sed -e "1,/A U Thor/d" -e "/^$/q" < 0000-cover-letter.patch > output &&
+ sed -e "1,/A U Thor/d" -e "/^\$/q" < 0000-cover-letter.patch > output &&
test_cmp expect output
'
test_expect_success 'format-patch respects -U' '
git format-patch -U4 -2 &&
- sed -e "1,/^$/d" -e "/^+5/q" < 0001-This-is-an-excessively-long-subject-line-for-a-messa.patch > output &&
+ sed -e "1,/^\$/d" -e "/^+5/q" < 0001-This-is-an-excessively-long-subject-line-for-a-messa.patch > output &&
test_cmp expect output
'
test_expect_success 'format-patch -p suppresses stat' '
git format-patch -p -2 &&
- sed -e "1,/^$/d" -e "/^+5/q" < 0001-This-is-an-excessively-long-subject-line-for-a-messa.patch > output &&
+ sed -e "1,/^\$/d" -e "/^+5/q" < 0001-This-is-an-excessively-long-subject-line-for-a-messa.patch > output &&
test_cmp expect output
'
verify_helper sidewithone
'
-test_expect_failure 'check combined output (2)' '
+test_expect_success 'check combined output (2)' '
git show sidesansone -- >sidesansone &&
verify_helper sidesansone
'
"
commit_file sm1 &&
+test_expect_success 'submodule is up to date' "
+ git diff-index -p --submodule=log HEAD >actual &&
+ diff actual - <<-EOF
+EOF
+"
+
+test_expect_success 'submodule contains untracked content' "
+ echo new > sm1/new-file &&
+ git diff-index -p --submodule=log HEAD >actual &&
+ diff actual - <<-EOF
+Submodule sm1 $head6..$head6-dirty:
+EOF
+"
+
+test_expect_success 'submodule contains untracked and modifed content' "
+ echo new > sm1/foo6 &&
+ git diff-index -p --submodule=log HEAD >actual &&
+ diff actual - <<-EOF
+Submodule sm1 $head6..$head6-dirty:
+EOF
+"
+
+test_expect_success 'submodule contains modifed content' "
+ rm -f sm1/new-file &&
+ git diff-index -p --submodule=log HEAD >actual &&
+ diff actual - <<-EOF
+Submodule sm1 $head6..$head6-dirty:
+EOF
+"
+
+(cd sm1; git commit -mchange foo6 >/dev/null) &&
+head8=$(cd sm1; git rev-parse --verify HEAD | cut -c1-7) &&
+test_expect_success 'submodule is modified' "
+ git diff-index -p --submodule=log HEAD >actual &&
+ diff actual - <<-EOF
+Submodule sm1 $head6..$head8:
+ > change
+EOF
+"
+
+test_expect_success 'modified submodule contains untracked content' "
+ echo new > sm1/new-file &&
+ git diff-index -p --submodule=log HEAD >actual &&
+ diff actual - <<-EOF
+Submodule sm1 $head6..$head8-dirty:
+ > change
+EOF
+"
+
+test_expect_success 'modified submodule contains untracked and modifed content' "
+ echo modification >> sm1/foo6 &&
+ git diff-index -p --submodule=log HEAD >actual &&
+ diff actual - <<-EOF
+Submodule sm1 $head6..$head8-dirty:
+ > change
+EOF
+"
+
+test_expect_success 'modified submodule contains modifed content' "
+ rm -f sm1/new-file &&
+ git diff-index -p --submodule=log HEAD >actual &&
+ diff actual - <<-EOF
+Submodule sm1 $head6..$head8-dirty:
+ > change
+EOF
+"
+
rm -rf sm1
test_expect_success 'deleted submodule' "
git diff-index -p --submodule=log HEAD >actual &&
# patch-2 is the same as patch-1 but is based
# on a version that already has whitespace fixed,
# and does not introduce whitespace breakages.
- sed -e "s/ $//" patch-1 >patch-2 &&
+ sed -e "s/ \$//" patch-1 >patch-2 &&
# If all whitespace breakages are fixed the contents
# should look like file-fixed
- sed -e "s/ $//" file-1 >file-fixed
+ sed -e "s/ \$//" file-1 >file-fixed
'
echo "X-Fake-Field: Line Three" &&
git format-patch --stdout first | sed -e "1d"
} > patch1.eml &&
+ {
+ echo "X-Fake-Field: Line One" &&
+ echo "X-Fake-Field: Line Two" &&
+ echo "X-Fake-Field: Line Three" &&
+ git format-patch --stdout first | sed -e "1d"
+ } | append_cr >patch1-crlf.eml &&
sed -n -e "3,\$p" msg >file &&
git add file &&
test_tick &&
test "$(git rev-parse second^)" = "$(git rev-parse HEAD^)"
'
+test_expect_success 'am applies patch e-mail not in a mbox with CRLF' '
+ git checkout first &&
+ git am patch1-crlf.eml &&
+ ! test -d .git/rebase-apply &&
+ test -z "$(git diff second)" &&
+ test "$(git rev-parse second)" = "$(git rev-parse HEAD)" &&
+ test "$(git rev-parse second^)" = "$(git rev-parse HEAD^)"
+'
+
GIT_AUTHOR_NAME="Another Thor"
GIT_AUTHOR_EMAIL="a.thor@example.com"
GIT_COMMITTER_NAME="Co M Miter"
git checkout first &&
test_tick &&
git am --committer-date-is-author-date patch1 &&
- git cat-file commit HEAD | sed -e "/^$/q" >head1 &&
+ git cat-file commit HEAD | sed -e "/^\$/q" >head1 &&
at=$(sed -ne "/^author /s/.*> //p" head1) &&
ct=$(sed -ne "/^committer /s/.*> //p" head1) &&
test "$at" = "$ct"
git checkout first &&
test_tick &&
git am patch1 &&
- git cat-file commit HEAD | sed -e "/^$/q" >head1 &&
+ git cat-file commit HEAD | sed -e "/^\$/q" >head1 &&
at=$(sed -ne "/^author /s/.*> //p" head1) &&
ct=$(sed -ne "/^committer /s/.*> //p" head1) &&
test "$at" != "$ct"
git checkout first &&
test_tick &&
git am --ignore-date patch1 &&
- git cat-file commit HEAD | sed -e "/^$/q" >head1 &&
+ git cat-file commit HEAD | sed -e "/^\$/q" >head1 &&
at=$(sed -ne "/^author /s/.*> //p" head1) &&
echo "$at" | grep "+0000"
'
test_expect_success 'log --graph with merge' '
git log --graph --date-order --pretty=tformat:%s |
- sed "s/ *$//" >actual &&
+ sed "s/ *\$//" >actual &&
test_cmp expect actual
'
test_expect_success 'log --graph with full output' '
git log --graph --date-order --pretty=short |
git name-rev --name-only --stdin |
- sed "s/Merge:.*/Merge: A B/;s/ *$//" >actual &&
+ sed "s/Merge:.*/Merge: A B/;s/ *\$//" >actual &&
test_cmp expect actual
'
test_expect_success 'log --graph with merge' '
git log --graph --date-order --pretty=tformat:%s |
- sed "s/ *$//" >actual &&
+ sed "s/ *\$//" >actual &&
test_cmp expect actual
'
'git archive --format=zip --output=d2.zip HEAD &&
test_cmp d.zip d2.zip'
+test_expect_success 'git archive with --output, inferring format' '
+ git archive --output=d3.zip HEAD &&
+ test_cmp d.zip d3.zip
+'
+
+test_expect_success 'git archive with --output, override inferred format' '
+ git archive --format=tar --output=d4.zip HEAD &&
+ test_cmp b.tar d4.zip
+'
+
$UNZIP -v >/dev/null 2>&1
if [ $? -eq 127 ]; then
say "Skipping ZIP tests, because unzip was not found"
perl -e "print \"a\" x 4096;" > a &&
perl -e "print \"b\" x 4096;" > b &&
perl -e "print \"c\" x 4096;" > c &&
- git update-index --add a b c &&
+ test-genrandom "seed a" 2097152 > a_big &&
+ test-genrandom "seed b" 2097152 > b_big &&
+ git update-index --add a a_big b b_big c &&
cat c >d && echo foo >>d && git update-index --add d &&
tree=`git write-tree` &&
commit=`git commit-tree $tree </dev/null` && {
:'
-test_expect_success \
- 'fake a SHA1 hash collision' \
- 'test -f .git/objects/c8/2de19312b6c3695c0c18f70709a6c535682a67 &&
- cp -f .git/objects/9d/235ed07cd19811a6ceb342de82f190e49c9f68 \
- .git/objects/c8/2de19312b6c3695c0c18f70709a6c535682a67'
-
-test_expect_success \
- 'make sure index-pack detects the SHA1 collision' \
- 'test_must_fail git index-pack -o bad.idx test-3.pack 2>msg &&
- grep "SHA1 COLLISION FOUND" msg'
-
-test_expect_success \
- 'honor pack.packSizeLimit' \
- 'git config pack.packSizeLimit 200 &&
- packname_4=$(git pack-objects test-4 <obj-list) &&
- test 3 = $(ls test-4-*.pack | wc -l)'
-
test_expect_success 'unpacking with --strict' '
- git config --unset pack.packsizelimit &&
for j in a b c d e f g
do
for i in 0 1 2 3 4 5 6 7 8 9
)
'
-test_expect_success 'tolerate absurdly small packsizelimit' '
- git config pack.packSizeLimit 2 &&
- packname_9=$(git pack-objects test-9 <obj-list) &&
- test $(wc -l <obj-list) = $(ls test-9-*.pack | wc -l)
+test_expect_success 'honor pack.packSizeLimit' '
+ git config pack.packSizeLimit 3m &&
+ packname_10=$(git pack-objects test-10 <obj-list) &&
+ test 2 = $(ls test-10-*.pack | wc -l)
+'
+
+test_expect_success 'verify resulting packs' '
+ git verify-pack test-10-*.pack
+'
+
+test_expect_success 'tolerate packsizelimit smaller than biggest object' '
+ git config pack.packSizeLimit 1 &&
+ packname_11=$(git pack-objects test-11 <obj-list) &&
+ test 5 = $(ls test-11-*.pack | wc -l)
'
+test_expect_success 'verify resulting packs' '
+ git verify-pack test-11-*.pack
+'
+
+#
+# WARNING!
+#
+# The following test is destructive. Please keep the next
+# two tests at the end of this file.
+#
+
+test_expect_success \
+ 'fake a SHA1 hash collision' \
+ 'test -f .git/objects/c8/2de19312b6c3695c0c18f70709a6c535682a67 &&
+ cp -f .git/objects/9d/235ed07cd19811a6ceb342de82f190e49c9f68 \
+ .git/objects/c8/2de19312b6c3695c0c18f70709a6c535682a67'
+
+test_expect_success \
+ 'make sure index-pack detects the SHA1 collision' \
+ 'test_must_fail git index-pack -o bad.idx test-3.pack 2>msg &&
+ grep "SHA1 COLLISION FOUND" msg'
+
test_done
'
test_expect_success 'non-fast-forward push shows help message' '
- grep \
-"To prevent you from losing history, non-fast-forward updates were rejected
-Merge the remote changes before pushing again. See the '"'non-fast-forward'"'
-section of '"'git push --help'"' for details." output
+ grep "To prevent you from losing history, non-fast-forward updates were rejected" \
+ output
'
test_expect_success 'push fails for non-fast-forward refs unmatched by remote helper' '
grep "^ + [a-f0-9]*\.\.\.[a-f0-9]* *master -> master (forced update)$" output &&
grep "^ ! \[rejected\] *master -> retsam (non-fast-forward)$" output &&
- grep \
-"To prevent you from losing history, non-fast-forward updates were rejected
-Merge the remote changes before pushing again. See the '"'non-fast-forward'"'
-section of '"'git push --help'"' for details." output
+ grep "To prevent you from losing history, non-fast-forward updates were rejected" \
+ output
'
stop_httpd
echo "data 5" &&
echo ">2gb" &&
cat commit) |
- git fast-import &&
+ git fast-import --big-file-threshold=2 &&
test ! -f exit-status
'
+: included from 6002 and others
+
[ -d .git/refs/tags ] || mkdir -p .git/refs/tags
:> sed.script
grep "Cannot merge binary files" merge.err
'
-sed -e "s/deerit.$/deerit;/" -e "s/me;$/me./" < new5.txt > new6.txt
-sed -e "s/deerit.$/deerit,/" -e "s/me;$/me,/" < new5.txt > new7.txt
+sed -e "s/deerit.\$/deerit;/" -e "s/me;\$/me./" < new5.txt > new6.txt
+sed -e "s/deerit.\$/deerit,/" -e "s/me;\$/me,/" < new5.txt > new7.txt
test_expect_success 'MERGE_ZEALOUS simplifies non-conflicts' '
#!/bin/sh
-append_cr () {
- sed -e 's/$/Q/' | tr Q '\015'
-}
-
-remove_cr () {
- tr '\015' Q | sed -e 's/Q$//'
-}
-
test_description='merge conflict in crlf repo
b---M
git tag baseline
'
-test_expect_failure 'do not lose a/b-2/c/d in merge (resolve)' '
+test_expect_success 'do not lose a/b-2/c/d in merge (resolve)' '
git reset --hard &&
git checkout baseline^0 &&
git merge -s resolve master &&
z:zzz
EOF
+test_expect_success 'grep -q, silently report matches' '
+ >empty &&
+ git grep -q mmap >actual &&
+ test_cmp empty actual &&
+ test_must_fail git grep -q qfwfq >actual &&
+ test_cmp empty actual
+'
+
# Create 1024 file names that sort between "y" and "z" to make sure
# the two files are handled by different calls to an external grep.
# This depends on MAXARGS in builtin-grep.c being 1024 or less.
)
'
+test_expect_success 'setup double-dash tests' '
+cat >double-dash <<EOF &&
+--
+->
+other
+EOF
+git add double-dash
+'
+
+cat >expected <<EOF
+double-dash:->
+EOF
+test_expect_success 'grep -- pattern' '
+ git grep -- "->" >actual &&
+ test_cmp expected actual
+'
+test_expect_success 'grep -- pattern -- pathspec' '
+ git grep -- "->" -- double-dash >actual &&
+ test_cmp expected actual
+'
+test_expect_success 'grep -e pattern -- path' '
+ git grep -e "->" -- double-dash >actual &&
+ test_cmp expected actual
+'
+
+cat >expected <<EOF
+double-dash:--
+EOF
+test_expect_success 'grep -e -- -- path' '
+ git grep -e -- -- double-dash >actual &&
+ test_cmp expected actual
+'
+
test_done
test $orig_invariant = $(git rev-parse invariant)
'
+test_expect_success 'setup submodule' '
+ rm -fr ?* .git &&
+ git init &&
+ test_commit file &&
+ mkdir submod &&
+ submodurl="$PWD/submod" &&
+ ( cd submod &&
+ git init &&
+ test_commit file-in-submod ) &&
+ git submodule add "$submodurl" &&
+ git commit -m "added submodule" &&
+ test_commit add-file &&
+ ( cd submod && test_commit add-in-submodule ) &&
+ git add submod &&
+ git commit -m "changed submodule" &&
+ git branch original HEAD
+'
+
+orig_head=`git show-ref --hash --head HEAD`
+
+test_expect_success 'rewrite submodule with another content' '
+ git filter-branch --tree-filter "test -d submod && {
+ rm -rf submod &&
+ git rm -rf --quiet submod &&
+ mkdir submod &&
+ : > submod/file
+ } || :" HEAD &&
+ test $orig_head != `git show-ref --hash --head HEAD`
+'
+
+test_expect_success 'replace submodule revision' '
+ git reset --hard original &&
+ git filter-branch -f --tree-filter \
+ "if git ls-files --error-unmatch -- submod > /dev/null 2>&1
+ then git update-index --cacheinfo 160000 0123456789012345678901234567890123456789 submod
+ fi" HEAD &&
+ test $orig_head != `git show-ref --hash --head HEAD`
+'
+
test_done
test_expect_success '--signoff' '
echo "yet another content *narf*" >> foo &&
echo "zort" | git commit -s -F - foo &&
- git cat-file commit HEAD | sed "1,/^$/d" > output &&
+ git cat-file commit HEAD | sed "1,/^\$/d" > output &&
test_cmp expect output
'
git --no-pager blame $COMMIT -- uno >/dev/null
'
+test_expect_success 'blame -L with invalid start' '
+ test_must_fail git blame -L5 tres 2>errors &&
+ grep "has only 2 lines" errors
+'
+
+test_expect_success 'blame -L with invalid end' '
+ test_must_fail git blame -L1,5 tres 2>errors &&
+ grep "has only 2 lines" errors
+'
+
test_done
--smtp-server="$(pwd)/fake.sendmail" \
$patches \
2>errors &&
- grep "^From: Example <from@example.com>$" msgtxt1 &&
- grep "^To: to@example.com$" msgtxt1
+ grep "^From: Example <from@example.com>\$" msgtxt1 &&
+ grep "^To: to@example.com\$" msgtxt1
'
test_expect_success 'cccmd works' '
--to=nobody@example.com \
--smtp-server="$(pwd)/fake.sendmail" \
$patches &&
- sed "1,/^$/d" < msgtxt1 > msgbody1
+ sed "1,/^\$/d" < msgtxt1 > msgbody1
grep "From: A <author@example.com>" msgbody1
'
--to=nobody@example.com \
--smtp-server="$(pwd)/fake.sendmail" \
$patches &&
- sed "1,/^$/d" < msgtxt1 > msgbody1
+ sed "1,/^\$/d" < msgtxt1 > msgbody1
! grep "From: A <author@example.com>" msgbody1
'
git fast-import <input
'
+##
+## R: very large blobs
+##
+blobsize=$((2*1024*1024 + 53))
+test-genrandom bar $blobsize >expect
+cat >input <<INPUT_END
+commit refs/heads/big-file
+committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+data <<COMMIT
+R - big file
+COMMIT
+
+M 644 inline big1
+data $blobsize
+INPUT_END
+cat expect >>input
+cat >>input <<INPUT_END
+M 644 inline big2
+data $blobsize
+INPUT_END
+cat expect >>input
+echo >>input
+
+test_expect_success \
+ 'R: blob bigger than threshold' \
+ 'test_create_repo R &&
+ git --git-dir=R/.git fast-import --big-file-threshold=1 <input'
+test_expect_success \
+ 'R: verify created pack' \
+ ': >verify &&
+ for p in R/.git/objects/pack/*.pack;
+ do
+ git verify-pack -v $p >>verify || exit;
+ done'
+test_expect_success \
+ 'R: verify written objects' \
+ 'git --git-dir=R/.git cat-file blob big-file:big1 >actual &&
+ test_cmp expect actual &&
+ a=$(git --git-dir=R/.git rev-parse big-file:big1) &&
+ b=$(git --git-dir=R/.git rev-parse big-file:big2) &&
+ test $a = $b'
+test_expect_success \
+ 'R: blob appears only once' \
+ 'n=$(grep $a verify | wc -l) &&
+ test 1 = $n'
+
test_done
test_expect_success 'pserver authentication' \
'cat request-anonymous | git-cvsserver pserver >log 2>&1 &&
- sed -ne \$p log | grep "^I LOVE YOU$"'
+ sed -ne \$p log | grep "^I LOVE YOU\$"'
test_expect_success 'pserver authentication failure (non-anonymous user)' \
'if cat request-git | git-cvsserver pserver >log 2>&1
else
true
fi &&
- sed -ne \$p log | grep "^I HATE YOU$"'
+ sed -ne \$p log | grep "^I HATE YOU\$"'
test_expect_success 'pserver authentication (login)' \
'cat login-anonymous | git-cvsserver pserver >log 2>&1 &&
- sed -ne \$p log | grep "^I LOVE YOU$"'
+ sed -ne \$p log | grep "^I LOVE YOU\$"'
test_expect_success 'pserver authentication failure (login/non-anonymous user)' \
'if cat login-git | git-cvsserver pserver >log 2>&1
else
true
fi &&
- sed -ne \$p log | grep "^I HATE YOU$"'
+ sed -ne \$p log | grep "^I HATE YOU\$"'
# misuse pserver authentication for testing of req_Root
test_expect_success 'req_Root (strict paths)' \
'cat request-anonymous | git-cvsserver --strict-paths pserver "$SERVERDIR" >log 2>&1 &&
- sed -ne \$p log | grep "^I LOVE YOU$"'
+ sed -ne \$p log | grep "^I LOVE YOU\$"'
test_expect_success 'req_Root failure (strict-paths)' '
! cat request-anonymous |
test_expect_success 'req_Root (w/o strict-paths)' \
'cat request-anonymous | git-cvsserver pserver "$WORKDIR/" >log 2>&1 &&
- sed -ne \$p log | grep "^I LOVE YOU$"'
+ sed -ne \$p log | grep "^I LOVE YOU\$"'
test_expect_success 'req_Root failure (w/o strict-paths)' '
! cat request-anonymous |
test_expect_success 'req_Root (base-path)' \
'cat request-base | git-cvsserver --strict-paths --base-path "$WORKDIR/" pserver "$SERVERDIR" >log 2>&1 &&
- sed -ne \$p log | grep "^I LOVE YOU$"'
+ sed -ne \$p log | grep "^I LOVE YOU\$"'
test_expect_success 'req_Root failure (base-path)' '
! cat request-anonymous |
test_expect_success 'req_Root (export-all)' \
'cat request-anonymous | git-cvsserver --export-all pserver "$WORKDIR" >log 2>&1 &&
- sed -ne \$p log | grep "^I LOVE YOU$"'
+ sed -ne \$p log | grep "^I LOVE YOU\$"'
test_expect_success 'req_Root failure (export-all w/o whitelist)' \
'! (cat request-anonymous | git-cvsserver --export-all pserver >log 2>&1 || false)'
test_expect_success 'req_Root (everything together)' \
'cat request-base | git-cvsserver --export-all --strict-paths --base-path "$WORKDIR/" pserver "$SERVERDIR" >log 2>&1 &&
- sed -ne \$p log | grep "^I LOVE YOU$"'
+ sed -ne \$p log | grep "^I LOVE YOU\$"'
GIT_DIR="$SERVERDIR" git config --bool gitcvs.enabled true || exit 1
. ./test-lib.sh
-q_to_nul () {
- perl -pe 'y/Q/\000/'
-}
-
-q_to_cr () {
- tr Q '\015'
-}
-
marked_as () {
foundEntry="$(grep "^/$2/" "$1/CVS/Entries")"
if [ x"$foundEntry" = x"" ] ; then
grep "403 - Snapshot format not allowed" gitweb.output &&
gitweb_run "p=.git;a=snapshot;h=HEAD;sf=zip" &&
grep "403 - Unsupported snapshot format" gitweb.output'
-test_debug 'cat gitweb.output'
cat >>gitweb_config.perl <<\EOF
grep "403 - Snapshot format not allowed" gitweb.output &&
gitweb_run "p=.git;a=snapshot;h=HEAD;sf=zip" &&
grep "Status: 200 OK" gitweb.output'
-test_debug 'cat gitweb.output'
cat >>gitweb_config.perl <<\EOF
'snapshots: tgz explicitly enabled' \
'gitweb_run "p=.git;a=snapshot;h=HEAD;sf=tgz" &&
grep "Status: 200 OK" gitweb.output'
-test_debug 'cat gitweb.output'
+test_debug 'cat gitweb.headers'
# ----------------------------------------------------------------------
gitweb_run "p=.git;a=snapshot;h=master;sf=tgz" &&
grep "Status: 200 OK" gitweb.output
'
-test_debug 'cat gitweb.output'
+test_debug 'cat gitweb.headers'
test_expect_success 'snapshots: bad tree-ish id' '
gitweb_run "p=.git;a=snapshot;h=frizzumFrazzum;sf=tgz" &&
gitweb_run "p=.git;a=snapshot;h=$ID;sf=tgz" &&
grep "Status: 200 OK" gitweb.output
'
-test_debug 'cat gitweb.output'
+test_debug 'cat gitweb.headers'
test_expect_success 'snapshots: bad object id' '
gitweb_run "p=.git;a=snapshot;h=abcdef01234;sf=tgz" &&
test_debug 'cat gitweb.output'
+# ----------------------------------------------------------------------
+# load checking
+
+# always hit the load limit
+cat >>gitweb_config.perl <<\EOF
+our $maxload = -1;
+EOF
+
+test_expect_success 'load checking: load too high (default action)' '
+ gitweb_run "p=.git" &&
+ grep "Status: 503 Service Unavailable" gitweb.headers &&
+ grep "503 - The load average on the server is too high" gitweb.body
+'
+test_debug 'cat gitweb.log' # just in case
+test_debug 'cat gitweb.headers'
+
+# turn off load checking
+cat >>gitweb_config.perl <<\EOF
+our $maxload = undef;
+EOF
+
+
test_done
-e 's/.\[m/<RESET>/g'
}
+q_to_nul () {
+ perl -pe 'y/Q/\000/'
+}
+
+q_to_cr () {
+ tr Q '\015'
+}
+
+append_cr () {
+ sed -e 's/$/Q/' | tr Q '\015'
+}
+
+remove_cr () {
+ tr '\015' Q | sed -e 's/Q$//'
+}
+
test_tick () {
if test -z "${test_tick+set}"
then
/*
* This program can either change modification time of the given
* file(s) or just print it. The program does not change atime nor
- * ctime (their values are explicitely preserved).
+ * ctime (their values are explicitly preserved).
*
* The mtime can be changed to an absolute value:
*
} else if (!strcmp(capname, "connect")) {
data->connect = 1;
} else if (mandatory) {
- die("Unknown madatory capability %s. This remote "
+ die("Unknown mandatory capability %s. This remote "
"helper probably needs newer version of Git.\n",
capname);
}
struct transport *transport_get(struct remote *remote, const char *url)
{
+ const char *helper;
struct transport *ret = xcalloc(1, sizeof(*ret));
if (!remote)
die("No remote provided to transport_get()");
ret->remote = remote;
+ helper = remote->foreign_vcs;
- if (!url && remote && remote->url)
+ if (!url && remote->url)
url = remote->url[0];
ret->url = url;
- /* In case previous URL had helper forced, reset it. */
- remote->foreign_vcs = NULL;
-
/* maybe it is a foreign URL? */
if (url) {
const char *p = url;
while (isalnum(*p))
p++;
if (!prefixcmp(p, "::"))
- remote->foreign_vcs = xstrndup(url, p - url);
+ helper = xstrndup(url, p - url);
}
- if (remote && remote->foreign_vcs) {
- transport_helper_init(ret, remote->foreign_vcs);
+ if (helper) {
+ transport_helper_init(ret, helper);
} else if (!prefixcmp(url, "rsync:")) {
ret->get_refs_list = get_refs_via_rsync;
ret->fetch = fetch_objs_via_rsync;
if (name[0] == '\0') {
hashcpy(sha1, root);
+ free(tree);
return 0;
}
return ret;
}
+void *xmallocz(size_t size)
+{
+ void *ret;
+ if (size + 1 < size)
+ die("Data too large to fit into virtual memory space.");
+ ret = xmalloc(size + 1);
+ ((char*)ret)[size] = 0;
+ return ret;
+}
+
/*
* xmemdupz() allocates (len + 1) bytes of memory, duplicates "len" bytes of
* "data" to the allocated memory, zero terminates the allocated memory,
*/
void *xmemdupz(const void *data, size_t len)
{
- char *p = xmalloc(len + 1);
- memcpy(p, data, len);
- p[len] = '\0';
- return p;
+ return memcpy(xmallocz(len), data, len);
}
char *xstrndup(const char *str, size_t len)