* Re: git-prompt.sh vs leading white space in __git_ps1()::printf_format
From: Simon Oosthoek @ 2012-12-26 12:51 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Piotr Krukowiecki, git
In-Reply-To: <7vvcbpp846.fsf@alter.siamese.dyndns.org>
* Junio C Hamano <gitster@pobox.com> [2012-12-25 23:47:53 -0800]:
> Can we make it take an optional third parameter so that we could say
>
> PROMPT_COMMAND='__git_ps1 ": \h \W" "; " "/%s"'
>
> to do the same as what the command substitution mode would have
> given for
>
> PS1=': \h \W$(__git_ps1 "/%s"); '
>
> perhaps?
>
> Totally untested, but perhaps along this line.
>
I tried your patch and (to my surprise, after the first reading) it worked.
I've further modified git-prompt.sh to include more usage text and I changed
the name of ps1 to gitstring, as it might be confused with PS1 upon casual
reading.
I'll be sending a format-patch patchmail ASAP...
> contrib/completion/git-prompt.sh | 24 ++++++++++++++----------
> 1 file changed, 14 insertions(+), 10 deletions(-)
>
> diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
> index 9b074e1..b2579f4 100644
> --- a/contrib/completion/git-prompt.sh
> +++ b/contrib/completion/git-prompt.sh
> @@ -236,9 +236,10 @@ __git_ps1 ()
> local printf_format=' (%s)'
>
> case "$#" in
> - 2) pcmode=yes
> + 2|3) pcmode=yes
> ps1pc_start="$1"
> ps1pc_end="$2"
> + printf_format="${3:-$printf_format}"
> ;;
> 0|1) printf_format="${1:-$printf_format}"
> ;;
> @@ -339,6 +340,7 @@ __git_ps1 ()
>
> local f="$w$i$s$u"
> if [ $pcmode = yes ]; then
> + local ps1=
> if [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
> local c_red='\e[31m'
> local c_green='\e[32m'
> @@ -356,29 +358,31 @@ __git_ps1 ()
> branch_color="$bad_color"
> fi
>
> - # Setting PS1 directly with \[ and \] around colors
> + # Setting ps1 directly with \[ and \] around colors
> # is necessary to prevent wrapping issues!
> - PS1="$ps1pc_start (\[$branch_color\]$branchstring\[$c_clear\]"
> + ps1="\[$branch_color\]$branchstring\[$c_clear\]"
>
> if [ -n "$w$i$s$u$r$p" ]; then
> - PS1="$PS1 "
> + ps1="$ps1 "
> fi
> if [ "$w" = "*" ]; then
> - PS1="$PS1\[$bad_color\]$w"
> + ps1="$ps1\[$bad_color\]$w"
> fi
> if [ -n "$i" ]; then
> - PS1="$PS1\[$ok_color\]$i"
> + ps1="$ps1\[$ok_color\]$i"
> fi
> if [ -n "$s" ]; then
> - PS1="$PS1\[$flags_color\]$s"
> + ps1="$ps1\[$flags_color\]$s"
> fi
> if [ -n "$u" ]; then
> - PS1="$PS1\[$bad_color\]$u"
> + ps1="$ps1\[$bad_color\]$u"
> fi
> - PS1="$PS1\[$c_clear\]$r$p)$ps1pc_end"
> + ps1="$ps1\[$c_clear\]$r$p"
> else
> - PS1="$ps1pc_start ($c${b##refs/heads/}${f:+ $f}$r$p)$ps1pc_end"
> + ps1="$c${b##refs/heads/}${f:+ $f}$r$p"
> fi
> + ps1=$(printf -- "$printf_format" "$ps1")
> + PS1="$ps1pc_start$ps1$ps1pc_end"
> else
> # NO color option unless in PROMPT_COMMAND mode
> printf -- "$printf_format" "$c${b##refs/heads/}${f:+ $f}$r$p"
/Simon
^ permalink raw reply
* [PATCH v2] wt-status: Show ignored files in untracked dirs
From: Antoine Pelisse @ 2012-12-26 13:31 UTC (permalink / raw)
To: git; +Cc: Antoine Pelisse
In-Reply-To: <1356516985-31068-1-git-send-email-apelisse@gmail.com>
When looking for ignored files, we do not recurse into untracked
directory, and simply consider the directory ignored status.
As a consequence, we don't see ignored files in those directories.
Change that behavior by recursing into untracked directories, if not
ignored themselves, searching for ignored files.
Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
---
Actually, the previous patch breaks the case where the directory is ignored.
This one should fix both issues.
Let me know if you see any other use case that could be an issue.
dir.c | 7 +++++++
wt-status.c | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/dir.c b/dir.c
index 5a83aa7..2863799 100644
--- a/dir.c
+++ b/dir.c
@@ -1042,6 +1042,13 @@ static enum path_treatment treat_one_path(struct dir_struct *dir,
return path_ignored;
}
+ /*
+ * Don't recurse into ignored directories when looking for
+ * ignored files, but still show the directory as ignored.
+ */
+ if (exclude && (dir->flags & DIR_SHOW_IGNORED) && dtype == DT_DIR)
+ return path_handled;
+
switch (dtype) {
default:
return path_ignored;
diff --git a/wt-status.c b/wt-status.c
index 2a9658b..7c41488 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -516,7 +516,7 @@ static void wt_status_collect_untracked(struct wt_status *s)
if (s->show_ignored_files) {
dir.nr = 0;
- dir.flags = DIR_SHOW_IGNORED | DIR_SHOW_OTHER_DIRECTORIES;
+ dir.flags = DIR_SHOW_IGNORED;
fill_directory(&dir, s->pathspec);
for (i = 0; i < dir.nr; i++) {
struct dir_entry *ent = dir.entries[i];
--
1.8.1.rc3.12.g8864e38
^ permalink raw reply related
* Re: [PATCH v2 00/14] new git check-ignore sub-command
From: Adam Spiers @ 2012-12-26 15:44 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git list, Jeff King, Nguyễn Thái Ngọc
In-Reply-To: <7vsjac8j52.fsf@alter.siamese.dyndns.org>
On Thu, Sep 20, 2012 at 10:43 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Junio C Hamano <gitster@pobox.com> writes:
>> Adam Spiers <git@adamspiers.org> writes:
>>> Adam Spiers (14):
>>> Update directory listing API doc to match code
>>> Improve documentation and comments regarding directory traversal API
>>> Rename cryptic 'which' variable to more consistent name
>>> Rename path_excluded() to is_path_excluded()
>>> Rename excluded_from_list() to is_excluded_from_list()
>>> Rename excluded() to is_excluded()
>>> Refactor is_excluded_from_list()
>>> Refactor is_excluded()
>>> Refactor is_path_excluded()
>>> For each exclude pattern, store information about where it came from
>>> Refactor treat_gitlinks()
>>> Extract some useful pathspec handling code from builtin/add.c into a
>>> library
>>> Provide free_directory() for reclaiming dir_struct memory
>>> Add git-check-ignore sub-command
[snipped]
> As to the "who owns x->src and when is it freed" question, it may
> make sense to give el a "filename" field (command line and other
> special cases would get whatever value you deem appropriate, like
> NULL or "<command line>"), have x->src point at that field when you
> queue many x's to the el in add_exc_from_file_to_list(). Then when
> you pop an element in the exclude_stack, you can free el->filename
> to plug a potential leak.
I have done this, but it required a change to struct dir:
Currently, when dir->exclude_stack is more than one entry deep, the
exclude_list pointed to by dir->exclude_list[EXC_DIRS] is a
concatenation of exclude elements from multiple files, so there will
be different values for src. The same is true of EXC_FILE, which
typically mixes patterns from .git/info/exclude and core.excludesfile.
Therefore I have split each exclude_list into potentially multiple
exclude_lists, one per pattern source, whilst preserving the EXC_*
grouping and ordering.
My latest re-roll of as/check-ignore is nearly ready, and when I send
it, you will see a new patch in there covering the above change.
> Also I do not see why you need to have the strdup() in the caller of
> add_excludes_from_file_to_list(). If you need to keep it stable
> because you are copying it away in exclude or excludde_list,
> wouldn't it make more sense to do that at the beginning of the
> callee, i.e. add_excludes_from_file_to_list() function?
No, because in all other callers of add_excludes_from_file_to_list(),
the exclude source is already stable. The re-roll will make this
clearer.
^ permalink raw reply
* Re: [PATCH v2 10/14] For each exclude pattern, store information about where it came from
From: Adam Spiers @ 2012-12-26 15:46 UTC (permalink / raw)
To: git list
In-Reply-To: <7vzk4k8joy.fsf@alter.siamese.dyndns.org>
On Thu, Sep 20, 2012 at 02:31:57PM -0700, Junio C Hamano wrote:
> Adam Spiers <git@adamspiers.org> writes:
>
> > void add_exclude(const char *string, const char *base,
> > - int baselen, struct exclude_list *el)
> > + int baselen, struct exclude_list *el, const char *src, int srcpos)
> > {
> > struct exclude *x;
> > size_t len;
> > @@ -341,6 +341,8 @@ void add_exclude(const char *string, const char *base,
> > x->base = base;
> > x->baselen = baselen;
> > x->flags = flags;
> > + x->src = src;
> > + x->srcpos = srcpos;
>
> Hrm, don't all elements "x" in "el" share the same "src", even if
> their srcpos may be different?
No not currently - please see the other mail I just sent to the
[PATCH v2 00/14] thread.
^ permalink raw reply
* [PATCH] l10n: de.po: address the user formally
From: Ralf Thielow @ 2012-12-26 15:52 UTC (permalink / raw)
To: trast, jk, stimming, git; +Cc: git, Ralf Thielow
Suggested-by: Christian Stimming <stimming@tuhh.de>
Suggested-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
---
po/de.po | 484 +++++++++++++++++++++++++++++++--------------------------------
1 file changed, 242 insertions(+), 242 deletions(-)
diff --git a/po/de.po b/po/de.po
index 0e8ed54..c8ad2f0 100644
--- a/po/de.po
+++ b/po/de.po
@@ -33,10 +33,10 @@ msgid ""
"appropriate to mark resolution and make a commit,\n"
"or use 'git commit -a'."
msgstr ""
-"Korrigiere dies im Arbeitsbaum,\n"
-"und benutze dann 'git add/rm <Datei>'\n"
+"Korrigieren Sie dies im Arbeitsbaum,\n"
+"und benutzen Sie dann 'git add/rm <Datei>'\n"
"um die Auflösung entsprechend zu markieren und einzutragen,\n"
-"oder benutze 'git commit -a'."
+"oder benutzen Sie 'git commit -a'."
#: archive.c:10
msgid "git archive [options] <tree-ish> [<path>...]"
@@ -131,7 +131,7 @@ msgid ""
"Use '\\!' for literal leading exclamation."
msgstr ""
"Verneinende Muster sind in Git-Attributen verboten.\n"
-"Benutze '\\!' für führende Ausrufezeichen."
+"Benutzen Sie '\\!' für führende Ausrufezeichen."
#: bundle.c:36
#, c-format
@@ -381,7 +381,7 @@ msgstr "Vorhandene Git-Kommandos in '%s'"
#: help.c:219
msgid "git commands available from elsewhere on your $PATH"
-msgstr "Vorhandene Git-Kommandos irgendwo in deinem $PATH"
+msgstr "Vorhandene Git-Kommandos irgendwo in Ihrem $PATH"
#: help.c:275
#, c-format
@@ -394,7 +394,7 @@ msgstr ""
#: help.c:332
msgid "Uh oh. Your system reports no Git commands at all."
-msgstr "Uh oh. Keine Git-Kommandos auf deinem System vorhanden."
+msgstr "Uh oh. Keine Git-Kommandos auf Ihrem System vorhanden."
#: help.c:354
#, c-format
@@ -402,8 +402,8 @@ msgid ""
"WARNING: You called a Git command named '%s', which does not exist.\n"
"Continuing under the assumption that you meant '%s'"
msgstr ""
-"Warnung: Du hast das nicht existierende Git-Kommando '%s' ausgeführt.\n"
-"Setze fort unter der Annahme das du '%s' gemeint hast"
+"Warnung: Sie haben das nicht existierende Git-Kommando '%s' ausgeführt.\n"
+"Setze fort unter der Annahme, dass Sie '%s' gemeint haben"
#: help.c:359
#, c-format
@@ -424,10 +424,10 @@ msgid_plural ""
"Did you mean one of these?"
msgstr[0] ""
"\n"
-"Hast du das gemeint?"
+"Haben Sie das gemeint?"
msgstr[1] ""
"\n"
-"Hast du eines von diesen gemeint?"
+"Haben Sie eines von diesen gemeint?"
#: merge.c:56
msgid "failed to read the cache"
@@ -721,12 +721,12 @@ msgstr " %s"
#, c-format
msgid "Your branch is ahead of '%s' by %d commit.\n"
msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
-msgstr[0] "Dein Zweig ist vor '%s' um %d Version.\n"
-msgstr[1] "Dein Zweig ist vor '%s' um %d Versionen.\n"
+msgstr[0] "Ihr Zweig ist vor '%s' um %d Version.\n"
+msgstr[1] "Ihr Zweig ist vor '%s' um %d Versionen.\n"
#: remote.c:1637
msgid " (use \"git push\" to publish your local commits)\n"
-msgstr " (benutze \"git push\" um deine lokalen Versionen herauszubringen)\n"
+msgstr " (benutzen Sie \"git push\" um lokalen Versionen herauszubringen)\n"
#: remote.c:1640
#, c-format
@@ -734,15 +734,15 @@ msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
msgid_plural ""
"Your branch is behind '%s' by %d commits, and can be fast-forwarded.\n"
msgstr[0] ""
-"Dein Zweig ist zu '%s' um %d Version hinterher, und kann vorgespult werden.\n"
+"Ihr Zweig ist zu '%s' um %d Version hinterher, und kann vorgespult werden.\n"
msgstr[1] ""
-"Dein Zweig ist zu '%s' um %d Versionen hinterher, und kann vorgespult "
+"Ihr Zweig ist zu '%s' um %d Versionen hinterher, und kann vorgespult "
"werden.\n"
#: remote.c:1647
msgid " (use \"git pull\" to update your local branch)\n"
msgstr ""
-" (benutze \"git pull\" um deinen lokalen Zweig zu aktualisieren)\n"
+" (benutzen Sie \"git pull\" um Ihren lokalen Zweig zu aktualisieren)\n"
#: remote.c:1650
#, c-format
@@ -753,16 +753,16 @@ msgid_plural ""
"Your branch and '%s' have diverged,\n"
"and have %d and %d different commits each, respectively.\n"
msgstr[0] ""
-"Dein Zweig und '%s' sind divergiert,\n"
+"Ihr Zweig und '%s' sind divergiert,\n"
"und haben jeweils %d und %d unterschiedliche Versionen.\n"
msgstr[1] ""
-"Dein Zweig und '%s' sind divergiert,\n"
+"Ihr Zweig und '%s' sind divergiert,\n"
"und haben jeweils %d und %d unterschiedliche Versionen.\n"
#: remote.c:1659
msgid " (use \"git pull\" to merge the remote branch into yours)\n"
msgstr ""
-" (benutze \"git pull\" um deinen Zweig mit dem externen zusammenzuführen)\n"
+" (benutzen Sie \"git pull\" um Ihren Zweig mit dem externen zusammenzuführen)\n"
#: sequencer.c:123 builtin/merge.c:761 builtin/merge.c:874 builtin/merge.c:984
#: builtin/merge.c:994
@@ -781,7 +781,7 @@ msgid ""
"after resolving the conflicts, mark the corrected paths\n"
"with 'git add <paths>' or 'git rm <paths>'"
msgstr ""
-"nach Auflösung der Konflikte, markiere die korrigierten Pfade\n"
+"nach Auflösung der Konflikte, markieren Sie die korrigierten Pfade\n"
"mit 'git add <Pfade>' oder 'git rm <Pfade>'"
#: sequencer.c:149
@@ -790,9 +790,9 @@ msgid ""
"with 'git add <paths>' or 'git rm <paths>'\n"
"and commit the result with 'git commit'"
msgstr ""
-"nach Auflösung der Konflikte, markiere die korrigierten Pfade\n"
-"mit 'git add <Pfade>' oder 'git rm <Pfade>'und trage das Ergebnis ein mit "
-"'git commit'"
+"nach Auflösung der Konflikte, markieren Sie die korrigierten Pfade\n"
+"mit 'git add <Pfade>' oder 'git rm <Pfade>'und tragen Sie das Ergebnis mit\n"
+"'git commit' ein"
#: sequencer.c:162 sequencer.c:770 sequencer.c:853
#, c-format
@@ -807,15 +807,15 @@ msgstr "Fehler bei Nachbereitung von %s"
#: sequencer.c:180
msgid "Your local changes would be overwritten by cherry-pick."
msgstr ""
-"Deine lokalen Änderungen würden von \"cherry-pick\" überschrieben werden."
+"Ihre lokalen Änderungen würden von \"cherry-pick\" überschrieben werden."
#: sequencer.c:182
msgid "Your local changes would be overwritten by revert."
-msgstr "Deine lokalen Änderungen würden von \"revert\" überschrieben werden."
+msgstr "Ihre lokalen Änderungen würden von \"revert\" überschrieben werden."
#: sequencer.c:185
msgid "Commit your changes or stash them to proceed."
-msgstr "Trage deine Änderungen ein oder benutze \"stash\" um fortzufahren."
+msgstr "Tragen Sie Ihre Änderungen ein oder benutzen Sie \"stash\" um fortzufahren."
#. TRANSLATORS: %s will be "revert" or "cherry-pick"
#: sequencer.c:235
@@ -843,11 +843,11 @@ msgstr "Konnte Elternversion %s nicht parsen\n"
#: sequencer.c:403
msgid "Your index file is unmerged."
-msgstr "Deine Bereitstellungsdatei ist nicht zusammengeführt."
+msgstr "Ihre Bereitstellungsdatei ist nicht zusammengeführt."
#: sequencer.c:406
msgid "You do not have a valid HEAD"
-msgstr "Du hast keine gültige Zweigspitze (HEAD)"
+msgstr "Sie haben keine gültige Zweigspitze (HEAD)"
#: sequencer.c:421
#, c-format
@@ -953,7 +953,7 @@ msgstr "\"cherry-pick\" oder \"revert\" ist bereits im Gang"
#: sequencer.c:752
msgid "try \"git cherry-pick (--continue | --quit | --abort)\""
-msgstr "versuche \"git cherry-pick (--continue | --quit | --abort)\""
+msgstr "versuchen Sie \"git cherry-pick (--continue | --quit | --abort)\""
#: sequencer.c:756
#, c-format
@@ -1053,28 +1053,28 @@ msgstr "Nicht zusammengeführte Pfade:"
#, c-format
msgid " (use \"git reset %s <file>...\" to unstage)"
msgstr ""
-" (benutze \"git reset %s <Datei>...\" zum Herausnehmen aus der "
+" (benutzen Sie \"git reset %s <Datei>...\" zum Herausnehmen aus der "
"Bereitstellung)"
#: wt-status.c:169 wt-status.c:196
msgid " (use \"git rm --cached <file>...\" to unstage)"
msgstr ""
-" (benutze \"git rm --cached <Datei>...\" zum Herausnehmen aus der "
+" (benutzen Sie \"git rm --cached <Datei>...\" zum Herausnehmen aus der "
"Bereitstellung)"
#: wt-status.c:173
msgid " (use \"git add <file>...\" to mark resolution)"
-msgstr " (benutze \"git add/rm <Datei>...\" um die Auflösung zu markieren)"
+msgstr " (benutzen Sie \"git add/rm <Datei>...\" um die Auflösung zu markieren)"
#: wt-status.c:175 wt-status.c:179
msgid " (use \"git add/rm <file>...\" as appropriate to mark resolution)"
msgstr ""
-" (benutze \"git add/rm <Datei>...\" um die Auflösung entsprechend zu "
+" (benutzen Sie \"git add/rm <Datei>...\" um die Auflösung entsprechend zu "
"markieren)"
#: wt-status.c:177
msgid " (use \"git rm <file>...\" to mark resolution)"
-msgstr " (benutze \"git add/rm <Datei>...\" um die Auflösung zu markieren)"
+msgstr " (benutzen Sie \"git add/rm <Datei>...\" um die Auflösung zu markieren)"
#: wt-status.c:188
msgid "Changes to be committed:"
@@ -1086,29 +1086,29 @@ msgstr "Änderungen, die nicht zum Eintragen bereitgestellt sind:"
#: wt-status.c:210
msgid " (use \"git add <file>...\" to update what will be committed)"
-msgstr " (benutze \"git add <Datei>...\" zum Bereitstellen)"
+msgstr " (benutzen Sie \"git add <Datei>...\" zum Bereitstellen)"
#: wt-status.c:212
msgid " (use \"git add/rm <file>...\" to update what will be committed)"
-msgstr " (benutze \"git add/rm <Datei>...\" zum Bereitstellen)"
+msgstr " (benutzen Sie \"git add/rm <Datei>...\" zum Bereitstellen)"
#: wt-status.c:213
msgid ""
" (use \"git checkout -- <file>...\" to discard changes in working directory)"
msgstr ""
-" (benutze \"git checkout -- <Datei>...\" um die Änderungen im "
+" (benutzen Sie \"git checkout -- <Datei>...\" um die Änderungen im "
"Arbeitsverzeichnis zu verwerfen)"
#: wt-status.c:215
msgid " (commit or discard the untracked or modified content in submodules)"
msgstr ""
-" (trage ein oder verwerfe den unbeobachteten oder geänderten Inhalt in den "
+" (tragen Sie ein oder verwerfen Sie den unbeobachteten oder geänderten Inhalt in den "
"Unterprojekten)"
#: wt-status.c:227
#, c-format
msgid " (use \"git %s <file>...\" to include in what will be committed)"
-msgstr " (benutze \"git %s <Datei>...\" zum Einfügen in die Eintragung)"
+msgstr " (benutzen Sie \"git %s <Datei>...\" zum Einfügen in die Eintragung)"
#: wt-status.c:244
msgid "bug"
@@ -1201,20 +1201,20 @@ msgstr "Fehler: unbehandelter Differenz-Status %c"
#: wt-status.c:785
msgid "You have unmerged paths."
-msgstr "Du hast nicht zusammengeführte Pfade."
+msgstr "Sie haben nicht zusammengeführte Pfade."
#: wt-status.c:788 wt-status.c:912
msgid " (fix conflicts and run \"git commit\")"
-msgstr " (behebe die Konflikte und führe \"git commit\" aus)"
+msgstr " (beheben Sie die Konflikte und führen Sie \"git commit\" aus)"
#: wt-status.c:791
msgid "All conflicts fixed but you are still merging."
msgstr ""
-"Alle Konflikte sind behoben, aber du bist immer noch beim Zusammenführen."
+"Alle Konflikte sind behoben, aber Sie sind immer noch beim Zusammenführen."
#: wt-status.c:794
msgid " (use \"git commit\" to conclude merge)"
-msgstr " (benutze \"git commit\" um die Zusammenführung abzuschließen)"
+msgstr " (benutzen Sie \"git commit\" um die Zusammenführung abzuschließen)"
#: wt-status.c:804
msgid "You are in the middle of an am session."
@@ -1226,80 +1226,80 @@ msgstr "Der aktuelle Patch ist leer."
#: wt-status.c:811
msgid " (fix conflicts and then run \"git am --resolved\")"
-msgstr " (behebe die Konflikte und führe dann \"git am --resolved\" aus)"
+msgstr " (beheben Sie die Konflikte und führen Sie dann \"git am --resolved\" aus)"
#: wt-status.c:813
msgid " (use \"git am --skip\" to skip this patch)"
-msgstr " (benutze \"git am --skip\" um diesen Patch auszulassen)"
+msgstr " (benutzen Sie \"git am --skip\" um diesen Patch auszulassen)"
#: wt-status.c:815
msgid " (use \"git am --abort\" to restore the original branch)"
msgstr ""
-" (benutze \"git am --abort\" um den ursprünglichen Zweig wiederherzustellen)"
+" (benutzen Sie \"git am --abort\" um den ursprünglichen Zweig wiederherzustellen)"
#: wt-status.c:873 wt-status.c:883
msgid "You are currently rebasing."
-msgstr "Du bist gerade beim Neuaufbau."
+msgstr "Sie sind gerade beim Neuaufbau."
#: wt-status.c:876
msgid " (fix conflicts and then run \"git rebase --continue\")"
-msgstr " (behebe die Konflikte und führe dann \"git rebase --continue\" aus)"
+msgstr " (beheben Sie die Konflikte und führen Sie dann \"git rebase --continue\" aus)"
#: wt-status.c:878
msgid " (use \"git rebase --skip\" to skip this patch)"
-msgstr " (benutze \"git rebase --skip\" um diesen Patch auszulassen)"
+msgstr " (benutzen Sie \"git rebase --skip\" um diesen Patch auszulassen)"
#: wt-status.c:880
msgid " (use \"git rebase --abort\" to check out the original branch)"
msgstr ""
-" (benutze \"git rebase --abort\" um den ursprünglichen Zweig auszuchecken)"
+" (benutzen Sie \"git rebase --abort\" um den ursprünglichen Zweig auszuchecken)"
#: wt-status.c:886
msgid " (all conflicts fixed: run \"git rebase --continue\")"
-msgstr " (alle Konflikte behoben: führe \"git rebase --continue\" aus)"
+msgstr " (alle Konflikte behoben: führen Sie \"git rebase --continue\" aus)"
#: wt-status.c:888
msgid "You are currently splitting a commit during a rebase."
-msgstr "Du teilst gerade eine Version während eines Neuaufbaus auf."
+msgstr "Sie teilen gerade eine Version während eines Neuaufbaus auf."
#: wt-status.c:891
msgid " (Once your working directory is clean, run \"git rebase --continue\")"
msgstr ""
-" (Sobald dein Arbeitsverzeichnis sauber ist, führe \"git rebase --continue"
+" (Sobald Ihr Arbeitsverzeichnis sauber ist, führen Sie \"git rebase --continue"
"\" aus)"
#: wt-status.c:893
msgid "You are currently editing a commit during a rebase."
-msgstr "Du editierst gerade eine Version während eines Neuaufbaus."
+msgstr "Sie editieren gerade eine Version während eines Neuaufbaus."
#: wt-status.c:896
msgid " (use \"git commit --amend\" to amend the current commit)"
msgstr ""
-" (benutze \"git commit --amend\" um die aktuelle Version nachzubessern)"
+" (benutzen Sie \"git commit --amend\" um die aktuelle Version nachzubessern)"
#: wt-status.c:898
msgid ""
" (use \"git rebase --continue\" once you are satisfied with your changes)"
msgstr ""
-" (benutze \"git rebase --continue\" sobald deine Änderungen abgeschlossen "
+" (benutzen Sie \"git rebase --continue\" sobald Ihre Änderungen abgeschlossen "
"sind)"
#: wt-status.c:908
msgid "You are currently cherry-picking."
-msgstr "Du führst gerade \"cherry-pick\" aus."
+msgstr "Sie führen gerade \"cherry-pick\" aus."
#: wt-status.c:915
msgid " (all conflicts fixed: run \"git commit\")"
-msgstr " (alle Konflikte behoben: führe \"git commit\" aus)"
+msgstr " (alle Konflikte behoben: führen Sie \"git commit\" aus)"
#: wt-status.c:924
msgid "You are currently bisecting."
-msgstr "Du bist gerade beim Halbieren."
+msgstr "Sie sind gerade beim Halbieren."
#: wt-status.c:927
msgid " (use \"git bisect reset\" to get back to the original branch)"
msgstr ""
-" (benutze \"git bisect reset\" um zum ursprünglichen Zweig zurückzukehren)"
+" (benutzen Sie \"git bisect reset\" um zum ursprünglichen Zweig zurückzukehren)"
#: wt-status.c:978
msgid "On branch "
@@ -1328,7 +1328,7 @@ msgstr "Unbeobachtete Dateien nicht aufgelistet%s"
#: wt-status.c:1017
msgid " (use -u option to show untracked files)"
-msgstr " (benutze die Option -u um unbeobachteten Dateien anzuzeigen)"
+msgstr " (benutzen Sie die Option -u um unbeobachteten Dateien anzuzeigen)"
#: wt-status.c:1023
msgid "No changes"
@@ -1338,7 +1338,7 @@ msgstr "Keine Änderungen"
#, c-format
msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
msgstr ""
-"keine Änderungen zum Eintragen hinzugefügt (benutze \"git add\" und/oder "
+"keine Änderungen zum Eintragen hinzugefügt (benutzen Sie \"git add\" und/oder "
"\"git commit -a\")\n"
#: wt-status.c:1031
@@ -1353,7 +1353,7 @@ msgid ""
"track)\n"
msgstr ""
"nichts zum Eintragen hinzugefügt, aber es gibt unbeobachtete Dateien "
-"(benutze \"git add\" zum Beobachten)\n"
+"(benutzen Sie \"git add\" zum Beobachten)\n"
#: wt-status.c:1037
#, c-format
@@ -1364,8 +1364,8 @@ msgstr "nichts zum Eintragen hinzugefügt, aber es gibt unbeobachtete Dateien\n"
#, c-format
msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
msgstr ""
-"nichts einzutragen (Erstelle/Kopiere Dateien und benutze \"git add\" zum "
-"Beobachten)\n"
+"nichts einzutragen (Erstellen/Kopieren Sie Dateien und benutzen Sie \"git add\" "
+"zum Beobachten)\n"
#: wt-status.c:1043 wt-status.c:1048
#, c-format
@@ -1376,7 +1376,7 @@ msgstr "nichts einzutragen\n"
#, c-format
msgid "nothing to commit (use -u to show untracked files)\n"
msgstr ""
-"nichts einzutragen (benutze die Option -u, um unbeobachtete Dateien "
+"nichts einzutragen (benutzen Sie die Option -u, um unbeobachtete Dateien "
"anzuzeigen)\n"
#: wt-status.c:1050
@@ -1477,7 +1477,7 @@ msgstr "Konnte '%s' nicht anwenden."
#: builtin/add.c:313
msgid "The following paths are ignored by one of your .gitignore files:\n"
msgstr ""
-"Die folgenden Pfade werden durch eine deiner \".gitignore\" Dateien "
+"Die folgenden Pfade werden durch eine Ihrer \".gitignore\" Dateien "
"ignoriert:\n"
#: builtin/add.c:319 builtin/clean.c:52 builtin/fetch.c:78 builtin/mv.c:63
@@ -1538,7 +1538,7 @@ msgstr "prüft ob - auch fehlende - Dateien im Probelauf ignoriert werden"
#: builtin/add.c:353
#, c-format
msgid "Use -f if you really want to add them.\n"
-msgstr "Verwende -f wenn du diese wirklich hinzufügen möchtest.\n"
+msgstr "Verwenden Sie -f wenn Sie diese wirklich hinzufügen möchten.\n"
#: builtin/add.c:354
msgid "no files added"
@@ -1565,7 +1565,7 @@ msgstr "Nichts spezifiziert, nichts hinzugefügt.\n"
#: builtin/add.c:415
#, c-format
msgid "Maybe you wanted to say 'git add .'?\n"
-msgstr "Wolltest du vielleicht 'git add .' sagen?\n"
+msgstr "Wollten Sie vielleicht 'git add .' sagen?\n"
#: builtin/add.c:421 builtin/clean.c:95 builtin/commit.c:291 builtin/mv.c:82
#: builtin/rm.c:235
@@ -2269,7 +2269,7 @@ msgid ""
"If you are sure you want to delete it, run 'git branch -D %s'."
msgstr ""
"Der Zweig '%s' ist nicht vollständig zusammengeführt.\n"
-"Wenn du sicher bist diesen Zweig zu entfernen, führe 'git branch -D %s' aus."
+"Wenn Sie sicher sind diesen Zweig zu entfernen, führen Sie 'git branch -D %s' aus."
#: builtin/branch.c:180
msgid "Update of config-file failed"
@@ -2287,7 +2287,7 @@ msgstr "Konnte Versionsobjekt für Zweigspitze (HEAD) nicht nachschlagen."
#, c-format
msgid "Cannot delete the branch '%s' which you are currently on."
msgstr ""
-"Kann Zweig '%s' nicht entfernen, da du dich gerade auf diesem befindest."
+"Kann Zweig '%s' nicht entfernen, da Sie sich gerade auf diesem befinden."
#: builtin/branch.c:235
#, c-format
@@ -2365,7 +2365,7 @@ msgstr "Konnte einige Referenzen nicht lesen"
#: builtin/branch.c:638
msgid "cannot rename the current branch while not on any."
msgstr ""
-"Kann aktuellen Zweig nicht umbenennen, solange du dich auf keinem befindest."
+"Kann aktuellen Zweig nicht umbenennen, solange Sie sich auf keinem befinden."
#: builtin/branch.c:648
#, c-format
@@ -2527,8 +2527,8 @@ msgid ""
"The --set-upstream flag is deprecated and will be removed. Consider using --"
"track or --set-upstream-to\n"
msgstr ""
-"Die --set-upstream Option ist veraltet und wird entfernt. Benutze --track "
-"oder --set-upstream-to\n"
+"Die --set-upstream Option ist veraltet und wird entfernt. Benutzen Sie "
+"--track oder --set-upstream-to\n"
#: builtin/branch.c:934
#, c-format
@@ -2538,8 +2538,8 @@ msgid ""
"\n"
msgstr ""
"\n"
-"Wenn du wolltest, dass '%s' den Zweig '%s' als externen Übernahmezweig hat, "
-"führe aus:\n"
+"Wenn Sie wollten, dass '%s' den Zweig '%s' als externen Übernahmezweig hat, "
+"führen Sie aus:\n"
#: builtin/branch.c:935
#, c-format
@@ -2743,7 +2743,7 @@ msgstr "Pfad '%s' ist nicht zusammengeführt."
#: builtin/checkout.c:448
msgid "you need to resolve your current index first"
-msgstr "Du musst zuerst deine aktuelle Bereitstellung auflösen."
+msgstr "Sie müssen zuerst Ihre aktuelle Bereitstellung auflösen."
#: builtin/checkout.c:569
#, c-format
@@ -2798,13 +2798,13 @@ msgid_plural ""
"\n"
"%s\n"
msgstr[0] ""
-"Warnung: Du bist um %d Version hinterher, nicht verbunden zu\n"
-"einem deiner Zweige:\n"
+"Warnung: Sie sind um %d Version hinterher, nicht verbunden zu\n"
+"einem Ihrer Zweige:\n"
"\n"
"%s\n"
msgstr[1] ""
-"Warnung: Du bist um %d Versionen hinterher, nicht verbunden zu\n"
-"einem deiner Zweige:\n"
+"Warnung: Sie sind um %d Versionen hinterher, nicht verbunden zu\n"
+"einem Ihrer Zweige:\n"
"\n"
"%s\n"
@@ -2817,7 +2817,7 @@ msgid ""
" git branch new_branch_name %s\n"
"\n"
msgstr ""
-"Wenn du diese durch einen neuen Zweig behalten möchtest, dann könnte jetzt\n"
+"Wenn Sie diese durch einen neuen Zweig behalten möchten, dann könnte jetzt\n"
"ein guter Zeitpunkt sein dies zu tun mit:\n"
"\n"
" git branch neuer_zweig_name %s\n"
@@ -2833,7 +2833,7 @@ msgstr "Vorherige Position der Zweigspitze (HEAD) war"
#: builtin/checkout.c:761 builtin/checkout.c:950
msgid "You are on a branch yet to be born"
-msgstr "du bist auf einem Zweig, der noch geboren wird"
+msgstr "Sie sind auf einem Zweig, der noch geboren wird"
#. case (1)
#: builtin/checkout.c:886
@@ -2946,7 +2946,7 @@ msgstr "--track benötigt einen Zweignamen"
#: builtin/checkout.c:1081
msgid "Missing branch name; try -b"
-msgstr "Vermisse Zweignamen; versuche -b"
+msgstr "Vermisse Zweignamen; versuchen Sie -b"
#: builtin/checkout.c:1116
msgid "invalid path specification"
@@ -2959,7 +2959,7 @@ msgid ""
"Did you intend to checkout '%s' which can not be resolved as commit?"
msgstr ""
"Kann nicht gleichzeitig Pfade aktualisieren und zu Zweig '%s' wechseln.\n"
-"Hast du beabsichtigt '%s' auszuchecken, welcher nicht als Version aufgelöst "
+"Haben Sie beabsichtigt '%s' auszuchecken, welcher nicht als Version aufgelöst "
"werden kann?"
#: builtin/checkout.c:1128
@@ -2973,7 +2973,7 @@ msgid ""
"checking out of the index."
msgstr ""
"git checkout: --ours/--theirs, --force und --merge sind inkompatibel wenn\n"
-"du aus der Bereitstellung auscheckst."
+"Sie aus der Bereitstellung auschecken."
#: builtin/clean.c:19
msgid "git clean [-d] [-f] [-n] [-q] [-e <pattern>] [-x | -X] [--] <paths>..."
@@ -3203,7 +3203,7 @@ msgstr "Zu viele Argumente."
#: builtin/clone.c:694
msgid "You must specify a repository to clone."
-msgstr "Du musst ein Projektarchiv zum Klonen angeben."
+msgstr "Sie müssen ein Projektarchiv zum Klonen angeben."
#: builtin/clone.c:705
#, c-format
@@ -3217,7 +3217,7 @@ msgstr "Projektarchiv '%s' existiert nicht."
#: builtin/clone.c:724
msgid "--depth is ignored in local clones; use file:// instead."
-msgstr "--depth wird in lokalen Klonen ignoriert; benutze stattdessen file://."
+msgstr "--depth wird in lokalen Klonen ignoriert; benutzen Sie stattdessen file://."
#: builtin/clone.c:734
#, c-format
@@ -3261,7 +3261,7 @@ msgstr "externer Zweig %s nicht im anderen Projektarchiv %s gefunden"
#: builtin/clone.c:879
msgid "You appear to have cloned an empty repository."
-msgstr "Du scheinst ein leeres Projektarchiv geklont zu haben."
+msgstr "Sie scheinen ein leeres Projektarchiv geklont zu haben."
#: builtin/column.c:9
msgid "git column [options]"
@@ -3316,15 +3316,15 @@ msgid ""
"\n"
" git commit --amend --reset-author\n"
msgstr ""
-"Dein Name und E-Mail Adresse wurden automatisch auf Basis\n"
-"deines Benutzer- und Rechnernamens konfiguriert. Bitte prüfe, dass diese\n"
-"zutreffend sind. Du kannst diese Meldung unterdrücken, indem du diese\n"
-"explizit setzt:\n"
+"Ihr Name und E-Mail Adresse wurden automatisch auf Basis\n"
+"Ihres Benutzer- und Rechnernamens konfiguriert. Bitte prüfen Sie, dass\n"
+"diese zutreffend sind. Sie können diese Meldung unterdrücken, indem Sie\n"
+"diese explizit setzen:\n"
"\n"
-" git config --global user.name \"Dein Name\"\n"
-" git config --global user.email deine@emailadresse.de\n"
+" git config --global user.name \"Ihr Name\"\n"
+" git config --global user.email ihre@emailadresse.de\n"
"\n"
-"Nachdem du das getan hast, kannst du deine Identität für diese Version "
+"Nachdem Sie das getan hast, können Sie Ihre Identität für diese Version "
"ändern mit:\n"
"\n"
" git commit --amend --reset-author\n"
@@ -3335,8 +3335,8 @@ msgid ""
"it empty. You can repeat your command with --allow-empty, or you can\n"
"remove the commit entirely with \"git reset HEAD^\".\n"
msgstr ""
-"Du fragtest die jüngste Version nachzubessern, aber das würde diese leer\n"
-"machen. Du kannst Dein Kommando mit --allow-empty wiederholen, oder die\n"
+"Sie fragten die jüngste Version nachzubessern, aber das würde diese leer\n"
+"machen. Sie können Ihr Kommando mit --allow-empty wiederholen, oder die\n"
"Version mit \"git reset HEAD^\" vollständig entfernen.\n"
#: builtin/commit.c:61
@@ -3350,11 +3350,11 @@ msgid ""
msgstr ""
"Der letzte \"cherry-pick\" ist jetzt leer, möglicherweise durch eine "
"Konfliktauflösung.\n"
-"Wenn du dies trotzdem eintragen willst, benutze:\n"
+"Wenn Sie dies trotzdem eintragen wollen, benutzen Sie:\n"
"\n"
" git commit --allow-empty\n"
"\n"
-"Andernfalls benutze bitte 'git reset'\n"
+"Andernfalls benutzen Sie bitte 'git reset'\n"
#: builtin/commit.c:258
msgid "failed to unpack HEAD tree object"
@@ -3456,10 +3456,10 @@ msgid ""
"and try again.\n"
msgstr ""
"\n"
-"Es sieht so aus, als trägst du eine Zusammenführung ein.\n"
-"Falls das nicht korrekt ist, lösche bitte die Datei\n"
+"Es sieht so aus, als tragen Sie eine Zusammenführung ein.\n"
+"Falls das nicht korrekt ist, löschen Sie bitte die Datei\n"
"\t%s\n"
-"und versuche es erneut.\n"
+"und versuchen Sie es erneut.\n"
#: builtin/commit.c:723
#, c-format
@@ -3471,17 +3471,17 @@ msgid ""
"and try again.\n"
msgstr ""
"\n"
-"Es sieht so aus, als trägst du ein \"cherry-pick\" ein.\n"
-"Falls das nicht korrekt ist, lösche bitte die Datei\n"
+"Es sieht so aus, als tragen Sie ein \"cherry-pick\" ein.\n"
+"Falls das nicht korrekt ist, löschen Sie bitte die Datei\n"
"\t%s\n"
-"und versuche es erneut.\n"
+"und versuchen Sie es erneut.\n"
#: builtin/commit.c:735
msgid ""
"Please enter the commit message for your changes. Lines starting\n"
"with '#' will be ignored, and an empty message aborts the commit.\n"
msgstr ""
-"Bitte gebe eine Versionsbeschreibung für deine Änderungen ein. Zeilen,\n"
+"Bitte geben Sie eine Versionsbeschreibung für Ihre Änderungen ein. Zeilen,\n"
"die mit '#' beginnen, werden ignoriert, und eine leere Versionsbeschreibung\n"
"bricht die Eintragung ab.\n"
@@ -3491,8 +3491,8 @@ msgid ""
"with '#' will be kept; you may remove them yourself if you want to.\n"
"An empty message aborts the commit.\n"
msgstr ""
-"Bitte gebe eine Versionsbeschreibung für deine Änderungen ein. Zeilen, die\n"
-"mit '#' beginnen, werden beibehalten; wenn du möchtest, kannst du diese "
+"Bitte geben Sie eine Versionsbeschreibung für Ihre Änderungen ein. Zeilen, die\n"
+"mit '#' beginnen, werden beibehalten; wenn Sie möchten, können Sie diese "
"entfernen.\n"
"Eine leere Versionsbeschreibung bricht die Eintragung ab.\n"
@@ -3535,7 +3535,7 @@ msgstr "Verwendung von --reset-author und --author macht keinen Sinn."
#: builtin/commit.c:995
msgid "You have nothing to amend."
-msgstr "Du hast nichts zum nachbessern."
+msgstr "Sie haben nichts zum nachbessern."
#: builtin/commit.c:998
msgid "You are in the middle of a merge -- cannot amend."
@@ -3726,7 +3726,7 @@ msgstr ""
#: builtin/commit.c:1380
msgid "the commit is authored by me now (used with -C/-c/--amend)"
-msgstr "Setze mich als Autor der Version (benutzt mit -C/-c/--amend)"
+msgstr "Setzt Sie als Autor der Version (benutzt mit -C/-c/--amend)"
#: builtin/commit.c:1381 builtin/log.c:1073 builtin/revert.c:109
msgid "add Signed-off-by:"
@@ -3836,7 +3836,7 @@ msgstr "Konnte Versionsbeschreibung nicht lesen: %s"
#: builtin/commit.c:1534
#, c-format
msgid "Aborting commit; you did not edit the message.\n"
-msgstr "Eintragung abgebrochen; du hast die Beschreibung nicht editiert.\n"
+msgstr "Eintragung abgebrochen; Sie haben die Beschreibung nicht editiert.\n"
#: builtin/commit.c:1539
#, c-format
@@ -3862,8 +3862,8 @@ msgid ""
"not exceeded, and then \"git reset HEAD\" to recover."
msgstr ""
"Das Projektarchiv wurde aktualisiert, aber die \"new_index\"-Datei\n"
-"konnte nicht geschrieben werden. Prüfe, dass deine Festplatte nicht\n"
-"voll und Dein Kontingent nicht aufgebraucht ist und führe\n"
+"konnte nicht geschrieben werden. Prüfen Sie, dass Ihre Festplatte nicht\n"
+"voll und Ihr Kontingent nicht aufgebraucht ist und führen Sie\n"
"anschließend \"git reset HEAD\" zu Wiederherstellung aus."
#: builtin/config.c:7
@@ -4041,7 +4041,7 @@ msgid ""
"However, there were unannotated tags: try --tags."
msgstr ""
"Keine annotierten Markierungen können '%s' beschreiben.\n"
-"Jedoch gab es nicht annotierte Markierungen: versuche --tags."
+"Jedoch gab es nicht annotierte Markierungen: versuchen Sie --tags."
#: builtin/describe.c:357
#, c-format
@@ -4050,7 +4050,7 @@ msgid ""
"Try --always, or create some tags."
msgstr ""
"Keine Markierungen können '%s' beschreiben.\n"
-"Versuche --always oder erstelle einige Markierungen."
+"Versuchen Sie --always oder erstellen Sie einige Markierungen."
#: builtin/describe.c:378
#, c-format
@@ -4354,7 +4354,7 @@ msgid ""
"some local refs could not be updated; try running\n"
" 'git remote prune %s' to remove any old, conflicting branches"
msgstr ""
-"Einige lokale Referenzen konnten nicht aktualisiert werden; versuche\n"
+"Einige lokale Referenzen konnten nicht aktualisiert werden; versuchen Sie\n"
"'git remote prune %s' um jeden älteren, widersprüchlichen Zweig zu löschen."
#: builtin/fetch.c:549
@@ -4412,13 +4412,13 @@ msgid ""
"No remote repository specified. Please, specify either a URL or a\n"
"remote name from which new revisions should be fetched."
msgstr ""
-"Kein externes Projektarchiv angegeben. Bitte gebe entweder eine URL\n"
+"Kein externes Projektarchiv angegeben. Bitte geben Sie entweder eine URL\n"
"oder den Namen des externen Archivs an, von welchem neue\n"
"Versionen angefordert werden sollen."
#: builtin/fetch.c:932
msgid "You need to specify a tag name."
-msgstr "Du musst den Namen der Markierung angeben."
+msgstr "Sie müssen den Namen der Markierung angeben."
#: builtin/fetch.c:984
msgid "fetch --all does not take a repository argument"
@@ -4587,15 +4587,15 @@ msgid ""
"run \"git gc\" manually. See \"git help gc\" for more information.\n"
msgstr ""
"Die Datenbank des Projektarchivs wird für eine optimale Performance\n"
-"komprimiert. Du kannst auch \"git gc\" manuell ausführen.\n"
+"komprimiert. Sie können auch \"git gc\" manuell ausführen.\n"
"Siehe \"git help gc\" für weitere Informationen.\n"
#: builtin/gc.c:249
msgid ""
"There are too many unreachable loose objects; run 'git prune' to remove them."
msgstr ""
-"Es gibt zu viele unerreichbare lose Objekte; führe 'git prune' aus, um diese "
-"zu löschen."
+"Es gibt zu viele unerreichbare lose Objekte; führen Sie 'git prune' aus, um "
+"diese zu löschen."
#: builtin/grep.c:22
msgid "git grep [options] [-e] <pattern> [<rev>...] [[--] <path>...]"
@@ -4918,7 +4918,7 @@ msgid ""
"Please consider using 'man.<tool>.cmd' instead."
msgstr ""
"'%s': Pfad für nicht unterstützten Handbuchbetrachter.\n"
-"Du könntest stattdessen 'man.<Werkzeug>.cmd' benutzen."
+"Sie könnten stattdessen 'man.<Werkzeug>.cmd' benutzen."
#: builtin/help.c:229
#, c-format
@@ -4927,7 +4927,7 @@ msgid ""
"Please consider using 'man.<tool>.path' instead."
msgstr ""
"'%s': Kommando für unterstützten Handbuchbetrachter.\n"
-"Du könntest stattdessen 'man.<Werkzeug>.path' benutzen."
+"Sie könnten stattdessen 'man.<Werkzeug>.path' benutzen."
#: builtin/help.c:299
msgid "The most commonly used git commands are:"
@@ -5636,8 +5636,8 @@ msgstr "git cherry [-v] [<Übernahmezweig> [<Arbeitszweig> [<Limit>]]]"
msgid ""
"Could not find a tracked remote branch, please specify <upstream> manually.\n"
msgstr ""
-"Konnte gefolgten, externen Zweig nicht finden, bitte gebe <upstream> manuell "
-"an.\n"
+"Konnte gefolgten, externen Zweig nicht finden, bitte geben Sie <upstream> "
+"manuell an.\n"
#: builtin/log.c:1517 builtin/log.c:1519 builtin/log.c:1531
#, c-format
@@ -5956,7 +5956,7 @@ msgstr "konnte nicht von '%s' lesen"
#, c-format
msgid "Not committing merge; use 'git commit' to complete the merge.\n"
msgstr ""
-"Zusammenführung wurde nicht eingetragen; benutze 'git commit' um die "
+"Zusammenführung wurde nicht eingetragen; benutzen Sie 'git commit' um die "
"Zusammenführung abzuschließen.\n"
#: builtin/merge.c:788
@@ -5967,7 +5967,7 @@ msgid ""
"Lines starting with '#' will be ignored, and an empty message aborts\n"
"the commit.\n"
msgstr ""
-"Bitte gebe eine Versionsbeschreibung ein um zu erklären, warum diese "
+"Bitte geben Sie eine Versionsbeschreibung ein um zu erklären, warum diese "
"Zusammenführung erforderlich ist,\n"
"insbesondere wenn es einen aktualisierten, externen Zweig mit einem Thema-"
"Zweig zusammenführt.\n"
@@ -5988,8 +5988,8 @@ msgstr "Wunderbar.\n"
#, c-format
msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
msgstr ""
-"Automatische Zusammenführung fehlgeschlagen; behebe die Konflikte und trage "
-"dann das Ergebnis ein.\n"
+"Automatische Zusammenführung fehlgeschlagen; beheben Sie die Konflikte und tragen "
+"Sie dann das Ergebnis ein.\n"
#: builtin/merge.c:905
#, c-format
@@ -5998,7 +5998,7 @@ msgstr "'%s' ist keine Version"
#: builtin/merge.c:946
msgid "No current branch."
-msgstr "Du befindest dich auf keinem Zweig."
+msgstr "Sie befinden sich auf keinem Zweig."
#: builtin/merge.c:948
msgid "No remote for the current branch."
@@ -6029,34 +6029,34 @@ msgid ""
"You have not concluded your merge (MERGE_HEAD exists).\n"
"Please, commit your changes before you can merge."
msgstr ""
-"Du hast deine Zusammenführung nicht abgeschlossen (MERGE_HEAD existiert).\n"
-"Bitte trage deine Änderungen ein, bevor du zusammenführen kannst."
+"Sie haben Ihre Zusammenführung nicht abgeschlossen (MERGE_HEAD existiert).\n"
+"Bitte tragen Sie Ihre Änderungen ein, bevor Sie zusammenführen können."
#: builtin/merge.c:1129 git-pull.sh:34
msgid "You have not concluded your merge (MERGE_HEAD exists)."
msgstr ""
-"Du hast deine Zusammenführung nicht abgeschlossen (MERGE_HEAD existiert)."
+"Sie haben Ihre Zusammenführung nicht abgeschlossen (MERGE_HEAD existiert)."
#: builtin/merge.c:1133
msgid ""
"You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
"Please, commit your changes before you can merge."
msgstr ""
-"Du hast \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD existiert).\n"
-"Bitte trage deine Änderungen ein, bevor du zusammenführen kannst."
+"Sie haben \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD existiert).\n"
+"Bitte tragen Sie Ihre Änderungen ein, bevor Sie zusammenführen können."
#: builtin/merge.c:1136
msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
msgstr ""
-"Du hast \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD existiert)."
+"Sie haben \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD existiert)."
#: builtin/merge.c:1145
msgid "You cannot combine --squash with --no-ff."
-msgstr "Du kannst --squash nicht mit --no-ff kombinieren."
+msgstr "Sie können --squash nicht mit --no-ff kombinieren."
#: builtin/merge.c:1150
msgid "You cannot combine --no-ff with --ff-only."
-msgstr "Du kannst --no-ff nicht mit --ff--only kombinieren."
+msgstr "Sie können --no-ff nicht mit --ff--only kombinieren."
#: builtin/merge.c:1157
msgid "No commit specified and merge.defaultToUpstream not set."
@@ -6116,7 +6116,7 @@ msgstr "Zusammenführung mit Strategie %s fehlgeschlagen.\n"
#: builtin/merge.c:1491
#, c-format
msgid "Using the %s to prepare resolving by hand.\n"
-msgstr "Benutze \"%s\" um die Auflösung per Hand vorzubereiten.\n"
+msgstr "Benutzen Sie \"%s\" um die Auflösung per Hand vorzubereiten.\n"
#: builtin/merge.c:1503
#, c-format
@@ -6461,7 +6461,7 @@ msgstr "konnte Datei '%s' nicht erstellen"
#: builtin/notes.c:192
msgid "Please supply the note contents using either -m or -F option"
-msgstr "Bitte liefere den Notiz-Inhalt unter Verwendung der Option -m oder -F."
+msgstr "Bitte liefern Sie den Notiz-Inhalt unter Verwendung der Option -m oder -F."
#: builtin/notes.c:213 builtin/notes.c:976
#, c-format
@@ -6575,7 +6575,7 @@ msgid ""
"existing notes"
msgstr ""
"Konnte Notizen nicht hinzufügen. Existierende Notizen für Objekt %s "
-"gefunden. Verwende '-f' um die existierenden Notizen zu überschreiben."
+"gefunden. Verwenden Sie '-f' um die existierenden Notizen zu überschreiben."
#: builtin/notes.c:588 builtin/notes.c:665
#, c-format
@@ -6603,7 +6603,7 @@ msgid ""
"existing notes"
msgstr ""
"Kann Notizen nicht kopieren. Existierende Notizen für Objekt %s gefunden. "
-"Verwende '-f' um die existierenden Notizen zu überschreiben."
+"Verwenden Sie '-f' um die existierenden Notizen zu überschreiben."
#: builtin/notes.c:671
#, c-format
@@ -6617,7 +6617,7 @@ msgid ""
"Please use 'git notes add -f -m/-F/-c/-C' instead.\n"
msgstr ""
"Die Optionen -m/-F/-c/-C sind für das Unterkommando 'edit' veraltet.\n"
-"Bitte benutze stattdessen 'git notes add -f -m/-F/-c/-C'.\n"
+"Bitte benutzen Sie stattdessen 'git notes add -f -m/-F/-c/-C'.\n"
#: builtin/notes.c:867
msgid "General options"
@@ -6908,14 +6908,14 @@ msgid ""
" git push %s %s\n"
"%s"
msgstr ""
-"Der Name des externen Übernahmezweiges stimmt nicht mit dem Namen deines\n"
+"Der Name des externen Übernahmezweiges stimmt nicht mit dem Namen Ihres\n"
"aktuellen Zweiges überein. Um auf den Übernahmezweig in dem externen\n"
-"Projektarchiv zu versenden, benutze:\n"
+"Projektarchiv zu versenden, benutzen Sie:\n"
"\n"
" git push %s HEAD:%s\n"
"\n"
"Um auf den Zweig mit dem selben Namen in dem externen Projekarchiv\n"
-"zu versenden, benutze:\n"
+"zu versenden, benutzen Sie:\n"
"\n"
" git push %s %s\n"
"%s"
@@ -6929,9 +6929,9 @@ msgid ""
"\n"
" git push %s HEAD:<name-of-remote-branch>\n"
msgstr ""
-"Du befindest dich sich im Moment auf keinem Zweig.\n"
+"Sie befinden sich im Moment auf keinem Zweig.\n"
"Um die Historie, führend zum aktuellen (freistehende Zweigspitze (HEAD))\n"
-"Status zu versenden, benutze\n"
+"Status zu versenden, benutzen Sie\n"
"\n"
" git push %s HEAD:<Name-des-externen-Zweiges>\n"
@@ -6945,7 +6945,7 @@ msgid ""
msgstr ""
"Der aktuelle Zweig %s hat keinen Zweig im externen Projektarchiv.\n"
"Um den aktuellen Zweig zu versenden und das Fernarchiv als externes\n"
-"Projektarchiv zu verwenden, benutze\n"
+"Projektarchiv zu verwenden, benutzen Sie\n"
"\n"
" git push --set-upstream %s %s\n"
@@ -6961,7 +6961,7 @@ msgid ""
"your current branch '%s', without telling me what to push\n"
"to update which remote branch."
msgstr ""
-"Du versendest nach '%s', welches kein externes Projektarchiv deines\n"
+"Sie versenden nach '%s', welches kein externes Projektarchiv Ihres\n"
"aktuellen Zweiges '%s' ist, ohne mir mitzuteilen, was ich versenden\n"
"soll, um welchen externen Zweig zu aktualisieren."
@@ -6985,26 +6985,25 @@ msgstr ""
"'push.default' ist nicht gesetzt; der implizit gesetzte Wert\n"
"wird in Git 2.0 von 'matching' nach 'simple' geändert. Um diese Meldung zu\n"
"unterdrücken und das aktuelle Verhalten nach Änderung des Standardwertes\n"
-"beizubehalten, benutze:\n"
+"beizubehalten, benutzen Sie:\n"
" git config --global push.default matching\n"
"\n"
"Um diese Meldung zu unterdrücken und das neue Verhalten jetzt zu "
-"übernehmen,\n"
-"benutze:\n"
+"übernehmen, benutzen Sie:\n"
"\n"
" git config --global push.default simple\n"
"\n"
-"Führe 'git help config' aus und suche nach 'push.default' für weitere "
-"Informationen.\n"
+"Führen Sie 'git help config' aus und suchen Sie nach 'push.default' für "
+"weitere Informationen.\n"
"(Der Modus 'simple' wurde in Git 1.7.11 eingeführt. Benutze den ähnlichen "
-"Modus 'current' anstatt 'simple', falls du gelegentlich ältere Versionen von "
-"Git benutzt.)"
+"Modus 'current' anstatt 'simple', falls Sie gelegentlich ältere Versionen von "
+"Git benutzen.)"
#: builtin/push.c:199
msgid ""
"You didn't specify any refspecs to push, and push.default is \"nothing\"."
msgstr ""
-"Du hast keine Referenzspezifikationen zum Versenden angegeben, und push."
+"Sie haben keine Referenzspezifikationen zum Versenden angegeben, und push."
"default ist \"nothing\"."
#: builtin/push.c:206
@@ -7014,9 +7013,10 @@ msgid ""
"before pushing again.\n"
"See the 'Note about fast-forwards' in 'git push --help' for details."
msgstr ""
-"Aktualisierungen wurden zurückgewiesen, weil die Spitze deines aktuellen\n"
-"Zweiges hinter seinem externen Gegenstück zurückgefallen ist. Führe die\n"
-"externen Änderungen zusammen (z.B. 'git pull') bevor du erneut versendest.\n"
+"Aktualisierungen wurden zurückgewiesen, weil die Spitze Ihres aktuellen\n"
+"Zweiges hinter seinem externen Gegenstück zurückgefallen ist. Führen Sie\n"
+"die externen Änderungen zusammen (z.B. 'git pull') bevor Sie erneut\n"
+"versenden.\n"
"Siehe auch die Sektion 'Note about fast-forwards' in 'git push --help'\n"
"für weitere Details."
@@ -7028,8 +7028,8 @@ msgid ""
"to 'simple', 'current' or 'upstream' to push only the current branch."
msgstr ""
"Aktualisierungen wurden zurückgewiesen, weil die Spitze eines versendeten\n"
-"Zweiges hinter seinem externen Gegenstück zurückgefallen ist. Wenn du nicht\n"
-"beabsichtigt hast, diesen Zweig zu versenden, kannst du auch den zu "
+"Zweiges hinter seinem externen Gegenstück zurückgefallen ist. Wenn Sie nicht\n"
+"beabsichtigt haben, diesen Zweig zu versenden, können Sie auch den zu "
"versendenden\n"
"Zweig spezifizieren oder die Konfigurationsvariable 'push.default' zu "
"'simple', 'current'\n"
@@ -7043,9 +7043,9 @@ msgid ""
"See the 'Note about fast-forwards' in 'git push --help' for details."
msgstr ""
"Aktualisierungen wurden zurückgewiesen, weil die Spitze eines versendeten\n"
-"Zweiges hinter seinem externen Gegenstück zurückgefallen ist. Checke diesen\n"
-"Zweig aus und führe die externen Änderungen zusammen (z.B. 'git pull')\n"
-"bevor du erneut versendest.\n"
+"Zweiges hinter seinem externen Gegenstück zurückgefallen ist. Checken Sie\n"
+"diesen Zweig aus und führen Sie die externen Änderungen zusammen\n"
+"(z.B. 'git pull') bevor Sie erneut versenden.\n"
"Siehe auch die Sektion 'Note about fast-forwards' in 'git push --help'\n"
"für weitere Details."
@@ -7077,12 +7077,12 @@ msgid ""
" git push <name>\n"
msgstr ""
"Kein Ziel zum Versenden konfiguriert.\n"
-"Entweder spezifizierst du die URL von der Kommandozeile oder konfigurierst "
+"Entweder spezifizieren Sie die URL von der Kommandozeile oder konfigurieren "
"ein externes Projektarchiv unter Benutzung von\n"
"\n"
" git remote add <Name> <URL>\n"
"\n"
-"und versendest dann unter Benutzung dieses Namens\n"
+"und versenden dann unter Benutzung dieses Namens\n"
"\n"
" git push <Name>\n"
@@ -7331,7 +7331,7 @@ msgid ""
"\t use --mirror=fetch or --mirror=push instead"
msgstr ""
"--mirror ist gefährlich und veraltet; bitte\n"
-"\t benutze stattdessen --mirror=fetch oder --mirror=push"
+"\t benutzen Sie stattdessen --mirror=fetch oder --mirror=push"
#: builtin/remote.c:147
#, c-format
@@ -7440,7 +7440,7 @@ msgstr ""
"Keine Aktualisierung der nicht standardmäßigen Referenzspezifikation zum "
"Abholen\n"
"\t%s\n"
-"\tBitte aktualisiere, falls notwendig, die Konfiguration manuell."
+"\tBitte aktualisieren Sie, falls notwendig, die Konfiguration manuell."
#: builtin/remote.c:683
#, c-format
@@ -7477,11 +7477,11 @@ msgid_plural ""
msgstr[0] ""
"Hinweis: Ein Zweig außerhalb der /refs/remotes/ Hierachie wurde nicht "
"gelöscht;\n"
-"um diesen zu löschen, benutze:"
+"um diesen zu löschen, benutzen Sie:"
msgstr[1] ""
"Hinweis: Einige Zweige außer der /refs/remotes/ Hierarchie wurden nicht "
"entfernt;\n"
-"um diese zu entfernen, benutze:"
+"um diese zu entfernen, benutzen Sie:"
#: builtin/remote.c:943
#, c-format
@@ -7494,7 +7494,7 @@ msgstr " gefolgt"
#: builtin/remote.c:948
msgid " stale (use 'git remote prune' to remove)"
-msgstr " veraltet (benutze 'git remote prune' zum Löschen)"
+msgstr " veraltet (benutzen Sie 'git remote prune' zum Löschen)"
#: builtin/remote.c:950
msgid " ???"
@@ -7647,8 +7647,8 @@ msgstr "Kann Hauptzweig des externen Projektarchivs nicht bestimmen"
#: builtin/remote.c:1218
msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
msgstr ""
-"Mehrere Hauptzweige im externen Projektarchiv. Bitte wähle explizit einen "
-"aus mit:"
+"Mehrere Hauptzweige im externen Projektarchiv. Bitte wählen Sie explizit "
+"einen aus mit:"
#: builtin/remote.c:1228
#, c-format
@@ -7814,7 +7814,7 @@ msgstr "keep"
#: builtin/reset.c:77
msgid "You do not have a valid HEAD."
-msgstr "Du hast keine gültige Zweigspitze (HEAD)."
+msgstr "Sie haben keine gültige Zweigspitze (HEAD)."
#: builtin/reset.c:79
msgid "Failed to find tree of HEAD."
@@ -7881,7 +7881,8 @@ msgstr "--patch ist inkompatibel mit --{hard,mixed,soft}"
#: builtin/reset.c:317
msgid "--mixed with paths is deprecated; use 'git reset -- <paths>' instead."
msgstr ""
-"--mixed mit Pfaden ist veraltet; benutze stattdessen 'git reset -- <Pfade>'."
+"--mixed mit Pfaden ist veraltet; benutzen Sie stattdessen "
+"'git reset -- <Pfade>'."
#: builtin/reset.c:319
#, c-format
@@ -7922,7 +7923,7 @@ msgstr ""
" oder: git rev-parse --sq-quote [<Argumente>...]\n"
" oder: git rev-parse [Optionen] [<Argumente>...]\n"
"\n"
-"Führe \"git rev-parse --parseopt -h\" für weitere Informationen bei erster "
+"Führen Sie \"git rev-parse --parseopt -h\" für weitere Informationen bei erster "
"Verwendung aus."
#: builtin/revert.c:22
@@ -8025,8 +8026,8 @@ msgid ""
"(use 'rm -rf' if you really want to remove it including all of its history)"
msgstr ""
"Unterprojekt '%s' (oder ein geschachteltes Unterprojekt hiervon) verwendet\n"
-"ein .git-Verzeichnis (benutze 'rm -rf' wenn du dieses wirklich mitsamt\n"
-"seiner Historie löschen möchtest)"
+"ein .git-Verzeichnis (benutzen Sie 'rm -rf' wenn Sie dieses wirklich mitsamt\n"
+"seiner Historie löschen möchten)"
#: builtin/rm.c:174
#, c-format
@@ -8035,7 +8036,7 @@ msgid ""
"(use -f to force removal)"
msgstr ""
"'%s' hat bereitgestellten Inhalt unterschiedlich zu der Datei und der\n"
-"Zweigspitze (HEAD) (benutze -f um die Entfernung zu erzwingen)"
+"Zweigspitze (HEAD) (benutzen Sie -f um die Entfernung zu erzwingen)"
#: builtin/rm.c:180
#, c-format
@@ -8044,7 +8045,7 @@ msgid ""
"(use --cached to keep the file, or -f to force removal)"
msgstr ""
"'%s' hat Änderungen in der Bereitstellung\n"
-"(benutze --cached um die Datei zu behalten, oder -f um die Entfernung zu "
+"(benutzen Sie --cached um die Datei zu behalten, oder -f um die Entfernung zu "
"erzwingen)"
#: builtin/rm.c:191
@@ -8054,7 +8055,7 @@ msgid ""
"(use --cached to keep the file, or -f to force removal)"
msgstr ""
"'%s' hat lokale Modifikationen\n"
-"(benutze --cached um die Datei zu behalten, oder -f um die Entfernung zu "
+"(benutzen Sie --cached um die Datei zu behalten, oder -f um die Entfernung zu "
"erzwingen)"
#: builtin/rm.c:207
@@ -8334,7 +8335,7 @@ msgid ""
msgstr ""
"\n"
"#\n"
-"# Gebe eine Markierungsbeschreibung ein\n"
+"# Geben Sie eine Markierungsbeschreibung ein.\n"
"# Zeilen, die mit '#' beginnen, werden ignoriert.\n"
"#\n"
@@ -8349,9 +8350,9 @@ msgid ""
msgstr ""
"\n"
"#\n"
-"# Gebe eine Markierungsbeschreibung ein\n"
-"# Zeilen, die mit '#' beginnen, werden behalten; du darfst diese\n"
-"# selbst entfernen wenn du möchtest.\n"
+"# Geben Sie eine Markierungsbeschreibung ein.\n"
+"# Zeilen, die mit '#' beginnen, werden behalten; Sie dürfen diese\n"
+"# selbst entfernen wenn Sie möchten.\n"
"#\n"
#: builtin/tag.c:298
@@ -8790,14 +8791,14 @@ msgstr ""
#: git-am.sh:50
msgid "You need to set your committer info first"
-msgstr "Du musst zuerst die Informationen des Eintragenden setzen."
+msgstr "Sie müssen zuerst die Informationen des Eintragenden setzen."
#: git-am.sh:95
msgid ""
"You seem to have moved HEAD since the last 'am' failure.\n"
"Not rewinding to ORIG_HEAD"
msgstr ""
-"Du scheinst seit dem letzten gescheiterten 'am' die Zweigspitze (HEAD)\n"
+"Sie scheinen seit dem letzten gescheiterten 'am' die Zweigspitze (HEAD)\n"
"geändert zu haben.\n"
"Keine Zurücksetzung zu ORIG_HEAD."
@@ -8808,12 +8809,11 @@ msgid ""
"If you prefer to skip this patch, run \"$cmdline --skip\" instead.\n"
"To restore the original branch and stop patching, run \"$cmdline --abort\"."
msgstr ""
-"Wenn du das Problem gelöst hast, führe \"$cmdline --resolved\" aus.\n"
-"Falls du diesen Patch auslassen möchtest, führe stattdessen \"$cmdline --skip"
-"\" aus.\n"
-"Um den ursprünglichen Zweig wiederherzustellen und die Anwendung der "
-"Patches\n"
-"abzubrechen, führe \"$cmdline --abort\" aus."
+"Wenn Sie das Problem gelöst haben, führen Sie \"$cmdline --resolved\" aus.\n"
+"Falls Sie diesen Patch auslassen möchten, führen Sie stattdessen\n"
+"\"$cmdline --skip\" aus.\n"
+"Um den ursprünglichen Zweig wiederherzustellen und die Anwendung der\n"
+"Patches abzubrechen, führen Sie \"$cmdline --abort\" aus."
#: git-am.sh:121
msgid "Cannot fall back to three-way merge."
@@ -8836,7 +8836,7 @@ msgid ""
"Did you hand edit your patch?\n"
"It does not apply to blobs recorded in its index."
msgstr ""
-"Hast du den Patch per Hand editiert?\n"
+"Haben Sie den Patch per Hand editiert?\n"
"Er kann nicht auf die Blobs in seiner 'index' Zeile angewendet werden."
#: git-am.sh:163
@@ -8877,7 +8877,7 @@ msgstr ""
#: git-am.sh:482
msgid "Please make up your mind. --skip or --abort?"
-msgstr "Bitte werde dir klar. --skip oder --abort?"
+msgstr "Bitte werden Sie sich klar. --skip oder --abort?"
#: git-am.sh:509
msgid "Resolve operation not in progress, we are not resuming."
@@ -8897,11 +8897,11 @@ msgid ""
"To restore the original branch and stop patching run \"$cmdline --abort\"."
msgstr ""
"Patch ist leer. Wurde er falsch aufgeteilt?\n"
-"Wenn du diesen Patch auslassen möchtest, führe stattdessen \"$cmdline --skip"
-"\" aus.\n"
+"Wenn Sie diesen Patch auslassen möchten, führen Sie stattdessen\n"
+"\"$cmdline --skip\" aus.\n"
"Um den ursprünglichen Zweig wiederherzustellen und die Anwendung der "
"Patches\n"
-"abzubrechen, führe \"$cmdline --abort\" aus."
+"abzubrechen, führen Sie \"$cmdline --abort\" aus."
#: git-am.sh:706
msgid "Patch does not have a valid e-mail address."
@@ -8935,9 +8935,9 @@ msgid ""
"If there is nothing left to stage, chances are that something else\n"
"already introduced the same changes; you might want to skip this patch."
msgstr ""
-"Keine Änderungen - hast du vergessen 'git add' zu benutzen?\n"
+"Keine Änderungen - haben Sie vergessen 'git add' zu benutzen?\n"
"Wenn keine Änderungen mehr zum Bereitstellen vorhanden sind, könnten\n"
-"diese bereits anderweitig eingefügt worden sein; du könntest diesen Patch\n"
+"diese bereits anderweitig eingefügt worden sein; Sie könnten diesen Patch\n"
"auslassen."
#: git-am.sh:829
@@ -8945,8 +8945,8 @@ msgid ""
"You still have unmerged paths in your index\n"
"did you forget to use 'git add'?"
msgstr ""
-"Du hast immer noch nicht zusammengeführte Pfade in der Bereitstellung.\n"
-"Hast du vergessen 'git add' zu benutzen?"
+"Sie haben immer noch nicht zusammengeführte Pfade in der Bereitstellung.\n"
+"Haben Sie vergessen 'git add' zu benutzen?"
#: git-am.sh:845
msgid "No changes -- Patch already applied."
@@ -8972,14 +8972,14 @@ msgstr "wende zu leerer Historie an"
#: git-bisect.sh:48
msgid "You need to start by \"git bisect start\""
-msgstr "Du musst mit \"git bisect start\" beginnen."
+msgstr "Sie müssen mit \"git bisect start\" beginnen."
#. TRANSLATORS: Make sure to include [Y] and [n] in your
#. translation. The program will only accept English input
#. at this point.
#: git-bisect.sh:54
msgid "Do you want me to do it for you [Y/n]? "
-msgstr "Willst du, dass ich es für dich mache [Y/n]? "
+msgstr "Wollen Sie, dass ich es für Sie mache [Y/n]? "
#: git-bisect.sh:95
#, sh-format
@@ -9000,7 +9000,7 @@ msgstr "Ungültige Zweigspitze (HEAD) - Zweigspitze (HEAD) wird benötigt"
msgid ""
"Checking out '$start_head' failed. Try 'git bisect reset <validbranch>'."
msgstr ""
-"Auschecken von '$start_head' fehlgeschlagen. Versuche 'git bisect reset "
+"Auschecken von '$start_head' fehlgeschlagen. Versuchen Sie 'git bisect reset "
"<gueltigerzweig>'."
#: git-bisect.sh:140
@@ -9023,7 +9023,7 @@ msgstr "Ungültige Referenz-Eingabe: $arg"
#: git-bisect.sh:232
msgid "Please call 'bisect_state' with at least one argument."
-msgstr "Bitte rufe 'bisect_state' mit mindestens einem Argument auf."
+msgstr "Bitte rufen Sie 'bisect_state' mit mindestens einem Argument auf."
#: git-bisect.sh:244
#, sh-format
@@ -9045,15 +9045,15 @@ msgstr "Warnung: halbiere nur mit einer fehlerhaften Version"
#. at this point.
#: git-bisect.sh:279
msgid "Are you sure [Y/n]? "
-msgstr "Bist du sicher [Y/n]? "
+msgstr "Sind Sie sicher [Y/n]? "
#: git-bisect.sh:289
msgid ""
"You need to give me at least one good and one bad revisions.\n"
"(You can use \"git bisect bad\" and \"git bisect good\" for that.)"
msgstr ""
-"Du musst mindestens eine korrekte und eine fehlerhafte Version angeben.\n"
-"(Du kannst dafür \"git bisect bad\" und \"git bisect good\" benutzen.)"
+"Sie müssen mindestens eine korrekte und eine fehlerhafte Version angeben.\n"
+"(Sie können dafür \"git bisect bad\" und \"git bisect good\" benutzen.)"
#: git-bisect.sh:292
msgid ""
@@ -9061,10 +9061,10 @@ msgid ""
"You then need to give me at least one good and one bad revisions.\n"
"(You can use \"git bisect bad\" and \"git bisect good\" for that.)"
msgstr ""
-"Du musst mit \"git bisect start\" beginnen.\n"
-"Danach musst du mindestens eine korrekte und eine fehlerhafte Version "
+"Sie müssen mit \"git bisect start\" beginnen.\n"
+"Danach müssen Sie mindestens eine korrekte und eine fehlerhafte Version "
"angeben.\n"
-"(Du kannst dafür \"git bisect bad\" und \"git bisect good\" benutzen.)"
+"(Sie können dafür \"git bisect bad\" und \"git bisect good\" benutzen.)"
#: git-bisect.sh:347 git-bisect.sh:474
msgid "We are not bisecting."
@@ -9082,7 +9082,7 @@ msgid ""
"Try 'git bisect reset <commit>'."
msgstr ""
"Konnte die ursprüngliche Zweigspitze (HEAD) '$branch' nicht auschecken.\n"
-"Versuche 'git bisect reset <Version>'."
+"Versuchen Sie 'git bisect reset <Version>'."
#: git-bisect.sh:390
msgid "No logfile given"
@@ -9095,7 +9095,7 @@ msgstr "kann $file nicht für das Abspielen lesen"
#: git-bisect.sh:408
msgid "?? what are you talking about?"
-msgstr "?? Was redest du da?"
+msgstr "?? Was reden Sie da?"
#: git-bisect.sh:420
#, sh-format
@@ -9134,14 +9134,14 @@ msgid ""
"Please, fix them up in the work tree, and then use 'git add/rm <file>'\n"
"as appropriate to mark resolution, or use 'git commit -a'."
msgstr ""
-"\"pull\" ist nicht möglich, weil du nicht zusammengeführte Dateien hast.\n"
-"Bitte korrigiere dies im Arbeitsbaum und benutze dann 'git add/rm <Datei>'\n"
-"um die Auflösung entsprechend zu markieren, oder benutze 'git commit -a'."
+"\"pull\" ist nicht möglich, weil Sie nicht zusammengeführte Dateien haben.\n"
+"Bitte korrigieren Sie dies im Arbeitsbaum und benutzen Sie dann 'git add/rm <Datei>'\n"
+"um die Auflösung entsprechend zu markieren, oder benutzen Sie 'git commit -a'."
#: git-pull.sh:25
msgid "Pull is not possible because you have unmerged files."
msgstr ""
-"\"pull\" ist nicht möglich, weil du nicht zusammengeführte Dateien hast."
+"\"pull\" ist nicht möglich, weil Sie nicht zusammengeführte Dateien haben."
#: git-pull.sh:197
msgid "updating an unborn branch with changes added to the index"
@@ -9161,7 +9161,7 @@ msgid ""
"Warning: commit $orig_head."
msgstr ""
"Warnung: Die Anforderung aktualisierte die Spitze des aktuellen Zweiges.\n"
-"Warnung: Spule deinen Arbeitszweig von Version $orig_head vor."
+"Warnung: Spule Ihren Arbeitszweig von Version $orig_head vor."
#: git-pull.sh:254
msgid "Cannot merge multiple branches into empty head"
@@ -9178,12 +9178,12 @@ msgid ""
"To check out the original branch and stop rebasing, run \"git rebase --abort"
"\"."
msgstr ""
-"Wenn du das Problem aufgelöst hast, führe \"git rebase --continue\" aus.\n"
-"Falls du diesen Patch auslassen möchtest, führe stattdessen \"git rebase --"
+"Wenn Sie das Problem aufgelöst haben, führen Sie \"git rebase --continue\" aus.\n"
+"Falls Sie diesen Patch auslassen möchten, führen Sie stattdessen \"git rebase --"
"skip\" aus.\n"
"Um den ursprünglichen Zweig wiederherzustellen und den Neuaufbau "
"abzubrechen,\n"
-"führe \"git rebase --abort\" aus."
+"führen Sie \"git rebase --abort\" aus."
#: git-rebase.sh:160
msgid "The pre-rebase hook refused to rebase."
@@ -9215,7 +9215,7 @@ msgid ""
"You must edit all merge conflicts and then\n"
"mark them as resolved using git add"
msgstr ""
-"Du musst alle Zusammenführungskonflikte editieren und diese dann\n"
+"Sie müssen alle Zusammenführungskonflikte editieren und diese dann\n"
"mittels \"git add\" als aufgelöst markieren"
#: git-rebase.sh:340
@@ -9237,11 +9237,11 @@ msgid ""
msgstr ""
"Es sieht so aus, als ob es das Verzeichnis $state_dir_base bereits gibt\n"
"und es könnte ein anderer Neuaufbau im Gange sein. Wenn das der Fall ist,\n"
-"probiere bitte\n"
+"probieren Sie bitte\n"
"\t$cmd_live_rebase\n"
-"Wenn das nicht der Fall ist, probiere bitte\n"
+"Wenn das nicht der Fall ist, probieren Sie bitte\n"
"\t$cmd_clear_stale_rebase\n"
-"und führe dieses Kommando nochmal aus. Es wird angehalten, falls noch\n"
+"und führen Sie dieses Kommando nochmal aus. Es wird angehalten, falls noch\n"
"etwas Schützenswertes vorhanden ist."
#: git-rebase.sh:404
@@ -9271,7 +9271,7 @@ msgstr "fatal: Zweig $branch_name nicht gefunden"
#: git-rebase.sh:483
msgid "Please commit or stash them."
-msgstr "Bitte trage die Änderungen ein oder benutze \"stash\"."
+msgstr "Bitte tragen Sie die Änderungen ein oder benutzen Sie \"stash\"."
#: git-rebase.sh:501
#, sh-format
@@ -9293,7 +9293,7 @@ msgstr "Änderungen von $mb zu $onto:"
#: git-rebase.sh:524
msgid "First, rewinding head to replay your work on top of it..."
msgstr ""
-"Zunächst wird die Zweigspitze zurückgespult, um deine Änderungen\n"
+"Zunächst wird die Zweigspitze zurückgespult, um Ihre Änderungen\n"
"darauf neu anzuwenden..."
#: git-rebase.sh:532
@@ -9307,7 +9307,7 @@ msgstr "git stash clear mit Parametern ist nicht implementiert"
#: git-stash.sh:74
msgid "You do not have the initial commit yet"
-msgstr "Du hast bisher noch keine initiale Version"
+msgstr "Sie haben bisher noch keine initiale Version"
#: git-stash.sh:89
msgid "Cannot save the current index state"
@@ -9346,7 +9346,7 @@ msgid ""
" To provide a message, use git stash save -- '$option'"
msgstr ""
"Fehler: unbekannte Option für 'stash save': $option\n"
-" Um eine Beschreibung anzugeben, benutze \"git stash save -- "
+" Um eine Beschreibung anzugeben, benutzen Sie \"git stash save -- "
"'$option'\""
#: git-stash.sh:223
@@ -9400,7 +9400,7 @@ msgstr ""
#: git-stash.sh:424
msgid "Conflicts in index. Try without --index."
-msgstr "Konflikte in der Bereitstellung. Versuche es ohne --index."
+msgstr "Konflikte in der Bereitstellung. Versuchen Sie es ohne --index."
#: git-stash.sh:426
msgid "Could not save index tree"
@@ -9430,7 +9430,7 @@ msgstr "Kein Zweigname spezifiziert"
#: git-stash.sh:571
msgid "(To restore them type \"git stash apply\")"
-msgstr "(Zur Wiederherstellung gebe \"git stash apply\" ein)"
+msgstr "(Zur Wiederherstellung geben Sie \"git stash apply\" ein)"
#: git-submodule.sh:89
#, sh-format
@@ -9471,9 +9471,9 @@ msgid ""
"$sm_path\n"
"Use -f if you really want to add it."
msgstr ""
-"Der folgende Pfad wird durch eine deiner \".gitignore\" Dateien ignoriert:\n"
+"Der folgende Pfad wird durch eine Ihrer \".gitignore\" Dateien ignoriert:\n"
"$sm_path\n"
-"Benutze -f wenn du diesen wirklich hinzufügen möchtest."
+"Benutzen Sie -f wenn Sie diesen wirklich hinzufügen möchten."
#: git-submodule.sh:355
#, sh-format
@@ -9497,7 +9497,7 @@ msgstr "Ein Git-Verzeichnis für '$sm_name' wurde lokal gefunden mit den "
msgid ""
"If you want to reuse this local git directory instead of cloning again from"
msgstr ""
-"Wenn du dieses lokale Git-Verzeichnis wiederverwenden möchtest, anstatt "
+"Wenn Sie dieses lokale Git-Verzeichnis wiederverwenden möchtest, anstatt "
"erneut zu klonen"
#: git-submodule.sh:369
@@ -9505,7 +9505,7 @@ msgstr ""
msgid ""
"use the '--force' option. If the local git directory is not the correct repo"
msgstr ""
-"benutze die Option '--force'. Wenn das lokale Git-Verzeichnis nicht das "
+"benutzen Sie die Option '--force'. Wenn das lokale Git-Verzeichnis nicht das "
"korrekte Projektarchiv ist"
#: git-submodule.sh:370
@@ -9514,8 +9514,8 @@ msgid ""
"or you are unsure what this means choose another name with the '--name' "
"option."
msgstr ""
-"oder du dir unsicher bist, was das bedeutet, wähle einen anderen Namen mit "
-"der Option '--name'."
+"oder Sie sich unsicher sind, was das bedeutet, wählen Sie einen anderen Namen"
+"mit der Option '--name'."
#: git-submodule.sh:372
#, sh-format
@@ -9576,7 +9576,7 @@ msgid ""
"Maybe you want to use 'update --init'?"
msgstr ""
"Unterprojekt-Pfad '$sm_path' ist nicht initialisiert\n"
-"Vielleicht möchtest du 'update --init' benutzen?"
+"Vielleicht möchten Sie 'update --init' benutzen?"
#: git-submodule.sh:627
#, sh-format
--
1.8.1.rc3.dirty
^ permalink raw reply related
* Re: [PATCH 2/2] log: add log.mailmap configuration option
From: Junio C Hamano @ 2012-12-26 16:14 UTC (permalink / raw)
To: Antoine Pelisse; +Cc: git
In-Reply-To: <7v8v8ppf6f.fsf@alter.siamese.dyndns.org>
Junio C Hamano <gitster@pobox.com> writes:
> Antoine Pelisse <apelisse@gmail.com> writes:
>
>> I'm wondering if it would be needed to add a no-use-mailmap option to
>> log command so that it can cancel this configuration option.
>
> The usual way for adding a new feature is to add a --enable-feature
> long-option without any configuration variable to let users try it
> out in the field, and then add the configuration to let it be
> default for users who opt in. The first step should also allow a
> command line option to disable (which should come for free if you
> use parse-options API correctly).
It should be sufficient to squash something like this in. Use the
configured value, if available, to initialize the existing "mailmap"
variable, which is in turn updated from the command line option with
either --use-mailmap or --no-use-mailmap. What is left in "mailmap"
after the command line parsing returns is what the user told us to
use.
Thanks.
builtin/log.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/builtin/log.c b/builtin/log.c
index f6936ff..16e6520 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -31,7 +31,7 @@ static int default_abbrev_commit;
static int default_show_root = 1;
static int decoration_style;
static int decoration_given;
-static int use_mailmap;
+static int use_mailmap_config;
static const char *fmt_patch_subject_prefix = "PATCH";
static const char *fmt_pretty;
@@ -107,6 +107,7 @@ static void cmd_log_init_finish(int argc, const char **argv, const char *prefix,
OPT_END()
};
+ mailmap = use_mailmap_config;
argc = parse_options(argc, argv, prefix,
builtin_log_options, builtin_log_usage,
PARSE_OPT_KEEP_ARGV0 | PARSE_OPT_KEEP_UNKNOWN |
@@ -139,7 +140,7 @@ static void cmd_log_init_finish(int argc, const char **argv, const char *prefix,
if (source)
rev->show_source = 1;
- if (mailmap || use_mailmap) {
+ if (mailmap) {
rev->mailmap = xcalloc(1, sizeof(struct string_list));
read_mailmap(rev->mailmap, NULL);
}
@@ -360,7 +361,7 @@ static int git_log_config(const char *var, const char *value, void *cb)
if (!prefixcmp(var, "color.decorate."))
return parse_decorate_color_config(var, 15, value);
if (!strcmp(var, "log.mailmap")) {
- use_mailmap = git_config_bool(var, value);
+ use_mailmap_config = git_config_bool(var, value);
return 0;
}
^ permalink raw reply related
* Re: [PATCH 2/2] log: add log.mailmap configuration option
From: Antoine Pelisse @ 2012-12-26 16:42 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
In-Reply-To: <7vlickpz81.fsf@alter.siamese.dyndns.org>
I was planning to send you a fix pretty close to that,
Thanks a lot Junio!
On Wed, Dec 26, 2012 at 5:14 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Junio C Hamano <gitster@pobox.com> writes:
>
>> Antoine Pelisse <apelisse@gmail.com> writes:
>>
>>> I'm wondering if it would be needed to add a no-use-mailmap option to
>>> log command so that it can cancel this configuration option.
>>
>> The usual way for adding a new feature is to add a --enable-feature
>> long-option without any configuration variable to let users try it
>> out in the field, and then add the configuration to let it be
>> default for users who opt in. The first step should also allow a
>> command line option to disable (which should come for free if you
>> use parse-options API correctly).
>
> It should be sufficient to squash something like this in. Use the
> configured value, if available, to initialize the existing "mailmap"
> variable, which is in turn updated from the command line option with
> either --use-mailmap or --no-use-mailmap. What is left in "mailmap"
> after the command line parsing returns is what the user told us to
> use.
>
> Thanks.
>
> builtin/log.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/builtin/log.c b/builtin/log.c
> index f6936ff..16e6520 100644
> --- a/builtin/log.c
> +++ b/builtin/log.c
> @@ -31,7 +31,7 @@ static int default_abbrev_commit;
> static int default_show_root = 1;
> static int decoration_style;
> static int decoration_given;
> -static int use_mailmap;
> +static int use_mailmap_config;
> static const char *fmt_patch_subject_prefix = "PATCH";
> static const char *fmt_pretty;
>
> @@ -107,6 +107,7 @@ static void cmd_log_init_finish(int argc, const char **argv, const char *prefix,
> OPT_END()
> };
>
> + mailmap = use_mailmap_config;
> argc = parse_options(argc, argv, prefix,
> builtin_log_options, builtin_log_usage,
> PARSE_OPT_KEEP_ARGV0 | PARSE_OPT_KEEP_UNKNOWN |
> @@ -139,7 +140,7 @@ static void cmd_log_init_finish(int argc, const char **argv, const char *prefix,
> if (source)
> rev->show_source = 1;
>
> - if (mailmap || use_mailmap) {
> + if (mailmap) {
> rev->mailmap = xcalloc(1, sizeof(struct string_list));
> read_mailmap(rev->mailmap, NULL);
> }
> @@ -360,7 +361,7 @@ static int git_log_config(const char *var, const char *value, void *cb)
> if (!prefixcmp(var, "color.decorate."))
> return parse_decorate_color_config(var, 15, value);
> if (!strcmp(var, "log.mailmap")) {
> - use_mailmap = git_config_bool(var, value);
> + use_mailmap_config = git_config_bool(var, value);
> return 0;
> }
>
^ permalink raw reply
* Re: [PATCH 2/8] wildmatch: rename constants and update prototype
From: Junio C Hamano @ 2012-12-26 18:44 UTC (permalink / raw)
To: Nguyễn Thái Ngọc Duy; +Cc: git
In-Reply-To: <1356163028-29967-3-git-send-email-pclouds@gmail.com>
Nguyễn Thái Ngọc Duy <pclouds@gmail.com> writes:
> @@ -134,101 +131,102 @@ static int dowild(const uchar *p, const uchar *text, int force_lower_case)
> p_ch = NEGATE_CLASS;
> #endif
> /* Assign literal TRUE/FALSE because of "matched" comparison. */
> - special = p_ch == NEGATE_CLASS? TRUE : FALSE;
> + special = p_ch == NEGATE_CLASS;
Leftover comment needs to be reworded as well???
> if (special) {
> /* Inverted character class. */
> p_ch = *++p;
> }
I'd prefer "special" used in the "case '['" given a more sensible
name here.
^ permalink raw reply
* [PATCH] make __git_ps1 accept a third parameter in pcmode
From: Simon Oosthoek @ 2012-12-26 19:15 UTC (permalink / raw)
To: gitster; +Cc: s.oosthoek, piotr.krukowiecki, git
In-Reply-To: <7vvcbpp846.fsf@alter.siamese.dyndns.org>
The optional third parameter when __git_ps1 is used in
PROMPT_COMMAND mode as format string for printf to further
customize the way the git status string is embedded in the
user's PS1 prompt.
Signed-off-by: Simon Oosthoek <s.oosthoek@xs4all.nl>
---
contrib/completion/git-prompt.sh | 32 ++++++++++++++++++++------------
1 file changed, 20 insertions(+), 12 deletions(-)
diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
index 9b074e1..2922bb3 100644
--- a/contrib/completion/git-prompt.sh
+++ b/contrib/completion/git-prompt.sh
@@ -24,6 +24,8 @@
# will show username, at-sign, host, colon, cwd, then
# various status string, followed by dollar and SP, as
# your prompt.
+# Optionally, you can supply a third argument with a printf
+# format string to finetune the output of the branch status
#
# The argument to __git_ps1 will be displayed only if you are currently
# in a git repository. The %s token will be the name of the current
@@ -222,10 +224,12 @@ __git_ps1_show_upstream ()
# when called from PS1 using command substitution
# in this mode it prints text to add to bash PS1 prompt (includes branch name)
#
-# __git_ps1 requires 2 arguments when called from PROMPT_COMMAND (pc)
+# __git_ps1 requires 2 or 3 arguments when called from PROMPT_COMMAND (pc)
# in that case it _sets_ PS1. The arguments are parts of a PS1 string.
-# when both arguments are given, the first is prepended and the second appended
+# when two arguments are given, the first is prepended and the second appended
# to the state string when assigned to PS1.
+# The optional third parameter will be used as printf format string to further
+# customize the output of the git-status string.
# In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true
__git_ps1 ()
{
@@ -236,9 +240,10 @@ __git_ps1 ()
local printf_format=' (%s)'
case "$#" in
- 2) pcmode=yes
+ 2|3) pcmode=yes
ps1pc_start="$1"
ps1pc_end="$2"
+ printf_format="${3:-$printf_format}"
;;
0|1) printf_format="${1:-$printf_format}"
;;
@@ -339,6 +344,7 @@ __git_ps1 ()
local f="$w$i$s$u"
if [ $pcmode = yes ]; then
+ local gitstring=
if [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
local c_red='\e[31m'
local c_green='\e[32m'
@@ -356,29 +362,31 @@ __git_ps1 ()
branch_color="$bad_color"
fi
- # Setting PS1 directly with \[ and \] around colors
+ # Setting gitstring directly with \[ and \] around colors
# is necessary to prevent wrapping issues!
- PS1="$ps1pc_start (\[$branch_color\]$branchstring\[$c_clear\]"
+ gitstring="\[$branch_color\]$branchstring\[$c_clear\]"
if [ -n "$w$i$s$u$r$p" ]; then
- PS1="$PS1 "
+ gitstring="$gitstring "
fi
if [ "$w" = "*" ]; then
- PS1="$PS1\[$bad_color\]$w"
+ gitstring="$gitstring\[$bad_color\]$w"
fi
if [ -n "$i" ]; then
- PS1="$PS1\[$ok_color\]$i"
+ gitstring="$gitstring\[$ok_color\]$i"
fi
if [ -n "$s" ]; then
- PS1="$PS1\[$flags_color\]$s"
+ gitstring="$gitstring\[$flags_color\]$s"
fi
if [ -n "$u" ]; then
- PS1="$PS1\[$bad_color\]$u"
+ gitstring="$gitstring\[$bad_color\]$u"
fi
- PS1="$PS1\[$c_clear\]$r$p)$ps1pc_end"
+ gitstring="$gitstring\[$c_clear\]$r$p"
else
- PS1="$ps1pc_start ($c${b##refs/heads/}${f:+ $f}$r$p)$ps1pc_end"
+ gitstring="$c${b##refs/heads/}${f:+ $f}$r$p"
fi
+ gitstring=$(printf -- "$printf_format" "$gitstring")
+ PS1="$ps1pc_start$gitstring$ps1pc_end"
else
# NO color option unless in PROMPT_COMMAND mode
printf -- "$printf_format" "$c${b##refs/heads/}${f:+ $f}$r$p"
--
1.7.9.5
PS, I was surprised that this worked, because I was under the impression that the \[ \] special characters needed to be put in PS1 directly. This is apparently not exactly the case, but I'm now more confused than before ;-)
^ permalink raw reply related
* Re: [PATCH 1/2] log: grep author/committer using mailmap
From: Junio C Hamano @ 2012-12-26 19:27 UTC (permalink / raw)
To: Antoine Pelisse; +Cc: git
In-Reply-To: <1356195512-4846-2-git-send-email-apelisse@gmail.com>
Antoine Pelisse <apelisse@gmail.com> writes:
> Currently mailmap can be used to display log authors and committers
> but there no way to use mailmap to find commits with mapped values.
>
> This commit allows those commands to work:
>
> git log --use-mailmap --author mapped_name_or_email
> git log --use-mailmap --committer mapped_name_or_email
>
> Of course it only works if the --use-mailmap option is used.
>
> Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
> ---
> I probably missed something but I didn't find the connection with
> commit 2d10c55. Let me know if I went the wrong direction.
>
> revision.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++
> t/t4203-mailmap.sh | 18 ++++++++++++++++++
> 2 files changed, 71 insertions(+)
>
> diff --git a/revision.c b/revision.c
> index 95d21e6..fb9fd41 100644
> --- a/revision.c
> +++ b/revision.c
> @@ -13,6 +13,7 @@
> #include "decorate.h"
> #include "log-tree.h"
> #include "string-list.h"
> +#include "mailmap.h"
>
> volatile show_early_output_fn_t show_early_output;
>
> @@ -2219,6 +2220,50 @@ static int rewrite_parents(struct rev_info *revs, struct commit *commit)
> return 0;
> }
>
> +static int commit_rewrite_authors(struct strbuf *buf, const char *what, struct string_list *mailmap)
> +{
> + char *author, *endp;
> + size_t len;
> + struct strbuf name = STRBUF_INIT;
> + struct strbuf mail = STRBUF_INIT;
> + struct ident_split ident;
> +
> + author = strstr(buf->buf, what);
> + if (!author)
> + goto error;
This does not stop at the end of the header part and would match a
random line in the log message that happens to begin with "author ";
is this something we would worry about, or would we leave it to "fsck"?
> + author += strlen(what);
> + endp = strstr(author, "\n");
Using strchr(author, '\n') would feel more natural. Also rename
"author" to "person" or something, as you would be using this
function for the committer information as well?
> + if (!endp)
> + goto error;
> +
> + len = endp - author;
> +
> + if (split_ident_line(&ident, author, len)) {
> + error:
> + strbuf_release(&name);
> + strbuf_release(&mail);
> +
> + return 1;
We usually signal error by returning a negative integer. It does
not matter too much in this case as no callers seem to check the
return value from this function, though.
> + }
> +
> + strbuf_add(&name, ident.name_begin, ident.name_end - ident.name_begin);
> + strbuf_add(&mail, ident.mail_begin, ident.mail_end - ident.mail_begin);
> +
> + map_user(mailmap, &mail, &name);
> +
> + strbuf_addf(&name, " <%s>", mail.buf);
> +
> + strbuf_splice(buf, ident.name_begin - buf->buf,
> + ident.mail_end - ident.name_begin + 1,
> + name.buf, name.len);
Would it give us better performance if we splice only when
map_user() tells us that we actually rewrote the ident?
> + strbuf_release(&name);
> + strbuf_release(&mail);
> +
> + return 0;
> +}
> +
> static int commit_match(struct commit *commit, struct rev_info *opt)
> {
> int retval;
> @@ -2237,6 +2282,14 @@ static int commit_match(struct commit *commit, struct rev_info *opt)
> if (buf.len)
> strbuf_addstr(&buf, commit->buffer);
>
> + if (opt->mailmap) {
> + if (!buf.len)
> + strbuf_addstr(&buf, commit->buffer);
> +
> + commit_rewrite_authors(&buf, "\nauthor ", opt->mailmap);
> + commit_rewrite_authors(&buf, "\ncommitter ", opt->mailmap);
> + }
> +
> /* Append "fake" message parts as needed */
> if (opt->show_notes) {
> if (!buf.len)
> diff --git a/t/t4203-mailmap.sh b/t/t4203-mailmap.sh
> index db043dc..e16187f 100755
> --- a/t/t4203-mailmap.sh
> +++ b/t/t4203-mailmap.sh
> @@ -248,11 +248,29 @@ Author: Other Author <other@author.xx>
> Author: Some Dude <some@dude.xx>
> Author: A U Thor <author@example.com>
> EOF
> +
> test_expect_success 'Log output with --use-mailmap' '
> git log --use-mailmap | grep Author >actual &&
> test_cmp expect actual
> '
>
> +cat >expect <<\EOF
> +Author: Santa Claus <santa.claus@northpole.xx>
> +Author: Santa Claus <santa.claus@northpole.xx>
> +EOF
> +
> +test_expect_success 'Grep author with --use-mailmap' '
> + git log --use-mailmap --author Santa | grep Author >actual &&
> + test_cmp expect actual
> +'
> +
> +>expect
> +
> +test_expect_success 'Only grep replaced author with --use-mailmap' '
> + git log --use-mailmap --author "<cto@coompany.xx>" >actual &&
> + test_cmp expect actual
> +'
> +
> # git blame
> cat >expect <<\EOF
> ^OBJI (A U Thor DATE 1) one
> --
> 1.7.9.5
^ permalink raw reply
* Re: [PATCH] make __git_ps1 accept a third parameter in pcmode
From: Junio C Hamano @ 2012-12-26 19:45 UTC (permalink / raw)
To: Simon Oosthoek; +Cc: piotr.krukowiecki, git
In-Reply-To: <20121226191505.GA29210@simaj.xs4all.nl>
Simon Oosthoek <s.oosthoek@xs4all.nl> writes:
> The optional third parameter when __git_ps1 is used in
> PROMPT_COMMAND mode as format string for printf to further
> customize the way the git status string is embedded in the
> user's PS1 prompt.
>
> Signed-off-by: Simon Oosthoek <s.oosthoek@xs4all.nl>
> ---
Thanks.
If we do not care about the existing users (and in this case,
because PROMPT_COMMAND mode is in no released version, we could
declare there is no existing user), another and simpler approach is
to just drop " (" and ")" altogether and have the user give these as
part of the pre/post strings.
Or we could go the other way and drop "pre/post" strings, making
them part of the printf_format string. Perhaps that might be a
better interface in the longer term. Then people can use the same
"<pre>%s<post>" format string and do either of these:
PS1=$(__git_ps1 "<pre>%s<post>")
PROMPT_COMMAND='PS1=$(__git_ps1 "<pre>%s<post>")'
without __git_ps1 having a special "prompt command" mode, no?
I have a feeling that I am missing something major, though...
> if [ "$w" = "*" ]; then
> - PS1="$PS1\[$bad_color\]$w"
> + gitstring="$gitstring\[$bad_color\]$w"
> fi
Every time I looked at this line, I wondered why '*' state is
"bad". Does a user go into any "bad" state by having a dirty
working tree? Same for untracked ($u) and detached. These are all
perfectly normal part of a workflow, so while choice of red may be
fine to attract attention, calling it "bad" sounds misguided.
^ permalink raw reply
* generating format-patch options from an e-mail
From: Simon Oosthoek @ 2012-12-26 20:06 UTC (permalink / raw)
To: git
Hi all
I've been very frustrated by the process to setup a commandline for git format-patch, to include everyone in the cc list and reply to the right message-id.
In my frustration I created a perl script to generate the options from a saved e-mail, I realise that it may be non-general and perhaps it could be written better using a module which understands e-mails, but well, it worked for me ;-)
Anyway, I could imagine this as optional flag of git format-patch, so you could say:
$ git format-patch -s --in-reply-to-email <mboxfile> a7fe7de8
But I'll save that as an exercise for the reader (or the future)
Cheers
Simon
^ permalink raw reply
* Re: [PATCH] make __git_ps1 accept a third parameter in pcmode
From: Simon Oosthoek @ 2012-12-26 20:19 UTC (permalink / raw)
To: Junio C Hamano; +Cc: piotr.krukowiecki, git
In-Reply-To: <7vmwx0oavn.fsf@alter.siamese.dyndns.org>
* Junio C Hamano <gitster@pobox.com> [2012-12-26 11:45:48 -0800]:
> Simon Oosthoek <s.oosthoek@xs4all.nl> writes:
>
> > The optional third parameter when __git_ps1 is used in
> > PROMPT_COMMAND mode as format string for printf to further
> > customize the way the git status string is embedded in the
> > user's PS1 prompt.
> >
> > Signed-off-by: Simon Oosthoek <s.oosthoek@xs4all.nl>
> > ---
>
> Thanks.
>
> If we do not care about the existing users (and in this case,
> because PROMPT_COMMAND mode is in no released version, we could
> declare there is no existing user), another and simpler approach is
> to just drop " (" and ")" altogether and have the user give these as
> part of the pre/post strings.
>
The problem with doing it in pre-post is when inside non-git directories. You want to avoid any gitstring output, including the brackets, when not inside a repository.
Doing it all in the third parameter is perhaps a better approach, but then it becomes mandatory instead of optional.
> Or we could go the other way and drop "pre/post" strings, making
> them part of the printf_format string. Perhaps that might be a
> better interface in the longer term. Then people can use the same
> "<pre>%s<post>" format string and do either of these:
>
> PS1=$(__git_ps1 "<pre>%s<post>")
> PROMPT_COMMAND='PS1=$(__git_ps1 "<pre>%s<post>")'
>
> without __git_ps1 having a special "prompt command" mode, no?
But how to determine which mode to use?
In pcmode, you must set the PS1, in command-subsitute mode, you must print a formatted gitstring.
>
> I have a feeling that I am missing something major, though...
I think the fundamentally different way of setting the PS1 between the two modes is very confusing. Which is why I originally made a different function (with duplicated code) for both modes.
>
> > if [ "$w" = "*" ]; then
> > - PS1="$PS1\[$bad_color\]$w"
> > + gitstring="$gitstring\[$bad_color\]$w"
> > fi
>
> Every time I looked at this line, I wondered why '*' state is
> "bad". Does a user go into any "bad" state by having a dirty
> working tree? Same for untracked ($u) and detached. These are all
> perfectly normal part of a workflow, so while choice of red may be
> fine to attract attention, calling it "bad" sounds misguided.
Well, I'm most often a really casual user of git and to make this function work the way I want to, I found out by trial-and-error that this was a way to test whether it's time to colour the string red or green ;-)
I'm very open to better ways to determine the colour modes. Anyway, the colours are now more or less the same as what git itself uses when printing the status with colour hints in git status.
Cheers
Simon
^ permalink raw reply
* generating format-patch options from an e-mail
From: Simon Oosthoek @ 2012-12-26 20:28 UTC (permalink / raw)
To: git
[-- Attachment #1: Type: text/plain, Size: 655 bytes --]
Hi all
I've been very frustrated by the process to setup a commandline for git format-patch, to include everyone in the cc list and reply to the right message-id.
In my frustration I created a perl script to generate the options from a saved e-mail, I realise that it may be non-general and perhaps it could be written better using a module which understands e-mails, but well, it worked for me ;-)
Anyway, I could imagine this as optional flag of git format-patch, so you could say:
$ git format-patch -s --in-reply-to-email <mboxfile> a7fe7de8
But I'll save that as an exercise for the reader (or the future)
Cheers
Simon
PS, now with the script
[-- Attachment #2: formatpatchreply.pl --]
[-- Type: text/x-perl, Size: 1136 bytes --]
#!/usr/bin/perl
use warnings;
use strict;
our @to;
our @cc;
our @id;
our $emptyline=0;
if (defined $ARGV[0] and -f $ARGV[0]) {
open (MAIL, "<$ARGV[0]") or die "cannot open $ARGV[0]\n";
#while (my $line=<MAIL> && ($emptyline == 0) ) {
while (my $line=<MAIL> ) {
chomp $line;
my $header="";
my $content="";
if ($line =~ /^(.*?):.*[ ,<](.*?@.*?)[>, ]/ ||
$line =~ /^(.*ID?):.*[ ,<](.*?)[>, ]/) {
$header=$1;
$content=$2;
if ($header eq "From") {
push(@to, $content);
} if ($header eq "To") {
push(@cc, $content);
} elsif ($header eq "Cc") {
$line =~ /:(.*)$/;
my @ccs=split(/,/, $1);
foreach my $addr (@ccs) {
if ($addr =~ /<(.*)>/) {
push(@cc, $1);
} else {
push(@cc, $addr);
}
}
} elsif ($header eq "Message-ID") {
push(@id, $content);
}
}
$emptyline++ if (length($line) == 0);
}
close (MAIL);
}
foreach my $item (@to) {
print " --to \"$item\"";
}
foreach my $item (@cc) {
print " --cc \"$item\"";
}
foreach my $item (@id) {
print " --in-reply-to \"$item\"";
}
^ permalink raw reply
* Re: [PATCH] make __git_ps1 accept a third parameter in pcmode
From: Junio C Hamano @ 2012-12-26 20:32 UTC (permalink / raw)
To: Simon Oosthoek; +Cc: piotr.krukowiecki, git
In-Reply-To: <20121226201944.GA15039@xs4all.nl>
Simon Oosthoek <s.oosthoek@xs4all.nl> writes:
> The problem with doing it in pre-post is when inside non-git
> directories. You want to avoid any gitstring output, including the
> brackets, when not inside a repository.
Ah, Ok, that is probably what I missed.
>> Or we could go the other way and drop "pre/post" strings, making
>> them part of the printf_format string. Perhaps that might be a
>> better interface in the longer term. Then people can use the same
>> "<pre>%s<post>" format string and do either of these:
>>
>> PS1=$(__git_ps1 "<pre>%s<post>")
>> PROMPT_COMMAND='PS1=$(__git_ps1 "<pre>%s<post>")'
>>
>> without __git_ps1 having a special "prompt command" mode, no?
>
> But how to determine which mode to use?
> In pcmode, you must set the PS1, in command-subsitute mode, you must print a formatted gitstring.
The point of the above two was that __git_ps1 does not have to set
PS1 as long as the insn says user to use PROMPT_COMMAND that sets
PS1 himself, exactly as illustrated above. In other words, replace
the last PS1=... in the "prompt command" mode with an echo or
something and make the user responsible for assigning it to PS1 in
his PROMPT_COMMAND.
Or put it in another way, I was hoping that we can do without adding
the prompt command mode---if there is no two modes, there is no need
to switch between them.
But as I said, there probably is a reason why that approach does not
work, that is why I said...
>> I have a feeling that I am missing something major, though...
^ permalink raw reply
* Re: generating format-patch options from an e-mail
From: Junio C Hamano @ 2012-12-26 20:35 UTC (permalink / raw)
To: Simon Oosthoek; +Cc: git
In-Reply-To: <20121226200623.GA29446@simaj.xs4all.nl>
Simon Oosthoek <s.oosthoek@xs4all.nl> writes:
> Hi all
>
> I've been very frustrated by the process to setup a commandline for git format-patch, to include everyone in the cc list and reply to the right message-id.
>
> In my frustration I created a perl script to generate the options from a saved e-mail, I realise that it may be non-general and perhaps it could be written better using a module which understands e-mails, but well, it worked for me ;-)
>
> Anyway, I could imagine this as optional flag of git format-patch, so you could say:
> $ git format-patch -s --in-reply-to-email <mboxfile> a7fe7de8
>
> But I'll save that as an exercise for the reader (or the future)
I think a much more general approach would be to turn your script
into "get-msg-id" script and use it like so:
$ git format-patch --in-reply-to $(get-msg-id <mboxfile>) a7fe7de8
Then you can reuse that script in a context outside format-patch,
whereever you need the message-id in a single message in the
mailbox.
^ permalink raw reply
* Re: [PATCH] make __git_ps1 accept a third parameter in pcmode
From: Junio C Hamano @ 2012-12-26 20:42 UTC (permalink / raw)
To: Simon Oosthoek; +Cc: piotr.krukowiecki, git
In-Reply-To: <20121226201944.GA15039@xs4all.nl>
Simon Oosthoek <s.oosthoek@xs4all.nl> writes:
>> Every time I looked at this line, I wondered why '*' state is
>> "bad". Does a user go into any "bad" state by having a dirty
>> working tree? Same for untracked ($u) and detached. These are all
>> perfectly normal part of a workflow, so while choice of red may be
>> fine to attract attention, calling it "bad" sounds misguided.
>
> Well, I'm most often a really casual user of git and to make this
> function work the way I want to, I found out by trial-and-error
> that this was a way to test whether it's time to colour the string
> red or green ;-)
>
> I'm very open to better ways to determine the colour
> modes. Anyway, the colours are now more or less the same as what
> git itself uses when printing the status with colour hints in git
> status.
Oh, I am not opposed to the choice of colors; something that wants
an attention from the user may be better in red.
I was merely commenting on the choice of the variable name, the user
of word "bad" as if the conditions that use this color were "bad" in
some way.
^ permalink raw reply
* Re: [PATCH] make __git_ps1 accept a third parameter in pcmode
From: Junio C Hamano @ 2012-12-26 20:54 UTC (permalink / raw)
To: Simon Oosthoek; +Cc: piotr.krukowiecki, git
In-Reply-To: <7vfw2so8q3.fsf@alter.siamese.dyndns.org>
Junio C Hamano <gitster@pobox.com> writes:
> But as I said, there probably is a reason why that approach does not
> work, that is why I said...
>
>>> I have a feeling that I am missing something major, though...
In any case, this was more like "if we were doing this from scratch"
conversation.
I think PROMPT_COMMAND mode that takes <pre> and <post> string has
been advertised throughout the pre-release freeze, which is long
enough in Git timescale to avoid backward incompatibility, so we are
already stuck with the function in two modes even if what I said in
the previous message (i.e. "why not just one mode") worked.
I am considering to fast-track the "optional third parameter" patch
to the 1.8.1 final, so that we can have the same degree of
customizability in both modes.
Thanks.
^ permalink raw reply
* Re: generating format-patch options from an e-mail
From: Simon Oosthoek @ 2012-12-26 21:07 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
In-Reply-To: <7vbodgo8kv.fsf@alter.siamese.dyndns.org>
* Junio C Hamano <gitster@pobox.com> [2012-12-26 12:35:28 -0800]:
> >
> > Anyway, I could imagine this as optional flag of git format-patch, so you could say:
> > $ git format-patch -s --in-reply-to-email <mboxfile> a7fe7de8
> >
> > But I'll save that as an exercise for the reader (or the future)
>
> I think a much more general approach would be to turn your script
> into "get-msg-id" script and use it like so:
>
> $ git format-patch --in-reply-to $(get-msg-id <mboxfile>) a7fe7de8
>
> Then you can reuse that script in a context outside format-patch,
> whereever you need the message-id in a single message in the
> mailbox.
>
That would work for the message-ID, but not for the various To: and Cc: addresses.
The hacky script that I sent afterwards produces a string with the various options to git format-patch (--to --cc --in-reply-to) based on the headers To:/Cc:/From:/Message-ID:
Cheers
Simon
^ permalink raw reply
* Re: [PATCH] make __git_ps1 accept a third parameter in pcmode
From: Simon Oosthoek @ 2012-12-26 21:03 UTC (permalink / raw)
To: Junio C Hamano; +Cc: piotr.krukowiecki, git
In-Reply-To: <7vfw2so8q3.fsf@alter.siamese.dyndns.org>
* Junio C Hamano <gitster@pobox.com> [2012-12-26 12:32:20 -0800]:
> The point of the above two was that __git_ps1 does not have to set
> PS1 as long as the insn says user to use PROMPT_COMMAND that sets
> PS1 himself, exactly as illustrated above. In other words, replace
> the last PS1=... in the "prompt command" mode with an echo or
> something and make the user responsible for assigning it to PS1 in
> his PROMPT_COMMAND.
>
> Or put it in another way, I was hoping that we can do without adding
> the prompt command mode---if there is no two modes, there is no need
> to switch between them.
>
> But as I said, there probably is a reason why that approach does not
> work, that is why I said...
>
The only reason to my knowledge is that bash's handling of zero-length strings, like terminal colour commands, is producing a PS1 that outputs less visible characters than bash thinks and thus bash makes mistakes when wrapping the commandline. The way to prevent that is to use \[ and \] around those and that doesn't seem to work from a string produced from command-substitution. (BTW, the colours come through just fine, just the \[ and \] don't)
Another approach could be to split up the functionality and have a few support functions to set various variables (corresponding with the gitstring features, like *%+ characters and colour hints). These variables could then be used by a custom PROMPT_COMMAND function or a command substitution function to produce a gitstring. I suppose that would mean a complete rewrite or very close to it ;-)
/Simon
^ permalink raw reply
* Re: [PATCH 1/2] log: grep author/committer using mailmap
From: Antoine Pelisse @ 2012-12-26 21:12 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
In-Reply-To: <7vr4mcobpu.fsf@alter.siamese.dyndns.org>
>>
>> +static int commit_rewrite_authors(struct strbuf *buf, const char *what, struct string_list *mailmap)
>> +{
>> + char *author, *endp;
>> + size_t len;
>> + struct strbuf name = STRBUF_INIT;
>> + struct strbuf mail = STRBUF_INIT;
>> + struct ident_split ident;
>> +
>> + author = strstr(buf->buf, what);
>> + if (!author)
>> + goto error;
>
> This does not stop at the end of the header part and would match a
> random line in the log message that happens to begin with "author ";
> is this something we would worry about, or would we leave it to "fsck"?
The only worrying case would be:
- commit doesn't have "\nauthor" in the header (can that happen
without corruption?)
- commit has "\nauthor" in the commit log
- This line from commit log contains an <email> (split_ident_line works)
Then, I guess it's going to replace the name in the commit log.
Otherwise, it would not replace anything, as there is no author to
replace anyway.
It looks like most mechanisms using mailmap would have the same issue.
>> + author += strlen(what);
>> + endp = strstr(author, "\n");
>
> Using strchr(author, '\n') would feel more natural. Also rename
> "author" to "person" or something, as you would be using this
> function for the committer information as well?
Both fixed
>> + if (!endp)
>> + goto error;
>> +
>> + len = endp - author;
>> +
>> + if (split_ident_line(&ident, author, len)) {
>> + error:
>> + strbuf_release(&name);
>> + strbuf_release(&mail);
>> +
>> + return 1;
>
> We usually signal error by returning a negative integer. It does
> not matter too much in this case as no callers seem to check the
> return value from this function, though.
Fixed, or would you rather see it `void` ?
>> + }
>> +
>> + strbuf_add(&name, ident.name_begin, ident.name_end - ident.name_begin);
>> + strbuf_add(&mail, ident.mail_begin, ident.mail_end - ident.mail_begin);
>> +
>> + map_user(mailmap, &mail, &name);
>> +
>> + strbuf_addf(&name, " <%s>", mail.buf);
>> +
>> + strbuf_splice(buf, ident.name_begin - buf->buf,
>> + ident.mail_end - ident.name_begin + 1,
>> + name.buf, name.len);
>
> Would it give us better performance if we splice only when
> map_user() tells us that we actually rewrote the ident?
My intuition was that the cost of splice belongs to "memoving", when the
size is different. Yet, Fixed, as it removes two copies.
^ permalink raw reply
* RE: generating format-patch options from an e-mail
From: Pyeron, Jason J CTR (US) @ 2012-12-26 21:31 UTC (permalink / raw)
To: git@vger.kernel.org
In-Reply-To: <20121226210737.GB20704@xs4all.nl>
[-- Attachment #1: Type: text/plain, Size: 1555 bytes --]
> -----Original Message-----
> From: Simon Oosthoek
> Sent: Wednesday, December 26, 2012 4:08 PM
>
> * Junio C Hamano <gitster@pobox.com> [2012-12-26 12:35:28 -0800]:
> > >
> > > Anyway, I could imagine this as optional flag of git format-patch,
> so you could say:
> > > $ git format-patch -s --in-reply-to-email <mboxfile> a7fe7de8
Anyway you would need a --in-reply-to-email and a --in-reply-to-all-email, both should support stdin. Then you can feel free to --[no-]to and --[no-]cc (where is the --bcc?) to your heart's content.
It would be a nice addition.
> > >
> > > But I'll save that as an exercise for the reader (or the future)
> >
> > I think a much more general approach would be to turn your script
> > into "get-msg-id" script and use it like so:
> >
> > $ git format-patch --in-reply-to $(get-msg-id <mboxfile>) a7fe7de8
> >
> > Then you can reuse that script in a context outside format-patch,
> > whereever you need the message-id in a single message in the
> > mailbox.
> >
>
> That would work for the message-ID, but not for the various To: and Cc:
> addresses.
>
> The hacky script that I sent afterwards produces a string with the
Nit, it does not make use of the reply-to header if present.
> various options to git format-patch (--to --cc --in-reply-to) based on
> the headers To:/Cc:/From:/Message-ID:
>
> Cheers
>
> Simon
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5615 bytes --]
^ permalink raw reply
* Re: [PATCH 1/2] log: grep author/committer using mailmap
From: Junio C Hamano @ 2012-12-26 21:37 UTC (permalink / raw)
To: Antoine Pelisse; +Cc: git
In-Reply-To: <CALWbr2xW6r5ysJ8KQZa1eGYehG8ZbEp6K+s5JkG2goK9ef7rcA@mail.gmail.com>
Antoine Pelisse <apelisse@gmail.com> writes:
>>>
>>> +static int commit_rewrite_authors(struct strbuf *buf, const char *what, struct string_list *mailmap)
>>> +{
>>> + char *author, *endp;
>>> + size_t len;
>>> + struct strbuf name = STRBUF_INIT;
>>> + struct strbuf mail = STRBUF_INIT;
>>> + struct ident_split ident;
>>> +
>>> + author = strstr(buf->buf, what);
>>> + if (!author)
>>> + goto error;
>>
>> This does not stop at the end of the header part and would match a
>> random line in the log message that happens to begin with "author ";
>> is this something we would worry about, or would we leave it to "fsck"?
>
> The only worrying case would be:
> ...
Yeah, that pretty much matches what I had in mind (the short answer:
leave it to "git fsck").
>> We usually signal error by returning a negative integer. It does
>> not matter too much in this case as no callers seem to check the
>> return value from this function, though.
>
> Fixed, or would you rather see it `void` ?
Just like you can take advantage of map_user() that signals the
caller if it did anything to optimize this function, in the longer
run, it may help the (future) callers of this function if it gave "I
did something" vs "I left it intact". In the particular case of
this function, the "error" cases fall into the latter (it merely
explains why it left it intact, and there is no sensible error
recovery the caller _could_ do in any case) and I think it is not
necessary to differenciate between "Returned as-is because there is
no mapping" and "Returned as-is because I couldn't parse the
commit".
So "return 0 when it didn't do anything, return 1 when it rewrote"
feels good enough, at least to me.
>>> + }
>>> +
>>> + strbuf_add(&name, ident.name_begin, ident.name_end - ident.name_begin);
>>> + strbuf_add(&mail, ident.mail_begin, ident.mail_end - ident.mail_begin);
>>> +
>>> + map_user(mailmap, &mail, &name);
>>> +
>>> + strbuf_addf(&name, " <%s>", mail.buf);
>>> +
>>> + strbuf_splice(buf, ident.name_begin - buf->buf,
>>> + ident.mail_end - ident.name_begin + 1,
>>> + name.buf, name.len);
>>
>> Would it give us better performance if we splice only when
>> map_user() tells us that we actually rewrote the ident?
>
> My intuition was that the cost of splice belongs to "memoving", when the
> size is different. Yet, Fixed, as it removes two copies.
Thanks.
I wonder if we can further restructure the code so that it first
inspects the existing buffer to see if it even needs to copy the
original commit buffer into a "strbuf only for grepping". If that
can be easily done, then we will save even more copying, I think.
The reason I alluded to revamping the grep API to get rid of the use
of "header grep" mode in this codepath was exactly that. We could:
- change the command line parser for --author= and --committer= so
that these do not become part of the main "grep" expression.
Instead we keep them as separate grep expressions (one "author"
expression that OR'es the --author= options together, the other
for the --committer= options);
- in this codepath, inspect the "author" and "committer" in the
commit object buffer, map them if necessary via the mailmap
mechanism into temporary buffers (that is different from the
"buf" in the commit_match() function), then run grep_buffer()
with the author and committer grep expressions we separated in
the previous step. Then we combine the results from "author" and
"committer" grep and the main grep_buffer() result ourselves in
this function.
That may essentially amount to going in the totally opposite
direction from what 2d10c55 (git log: Unify header_filter and
message_filter into one., 2006-09-20) attempted to do. We used to
have two grep expressions (one for header, the other one for body)
commit_match() runs grep_buffer() on and combined the results.
2d10c55 merged them into one grep expression by introducing a term
that matches only header elements. But we would instead split the
"header" expression into "author" and "committer" expressions
(making it three from one) if we go the above route.
That would eliminate the need to copy and rewrite the contents of
the commit object in this codepath, which may be a big win when
names and emails that need to be rewritten are minority cases.
But I suspect that is a much larger change. If we can reduce the
amount of copies necessary without changing the code structure, that
may be enough to reduce the performance hit from this change.
Thanks.
^ permalink raw reply
* Re: generating format-patch options from an e-mail
From: Jeff King @ 2012-12-26 21:57 UTC (permalink / raw)
To: Pyeron, Jason J CTR (US); +Cc: git@vger.kernel.org
In-Reply-To: <871B6C10EBEFE342A772D1159D1320853A00DD2E@umechphj.easf.csd.disa.mil>
On Wed, Dec 26, 2012 at 09:31:46PM +0000, Pyeron, Jason J CTR (US) wrote:
> > That would work for the message-ID, but not for the various To: and Cc:
> > addresses.
> >
> > The hacky script that I sent afterwards produces a string with the
>
> Nit, it does not make use of the reply-to header if present.
I do something very similar to Simon, except that rather than generating
a reply with my script, I generate the cover letter in my MUA, and then
use that response as a template. So the MUA does the heavy lifting,
understanding reply-to, culling my own address from cc, etc. The
format-patch replies then have the exact same to/cc headers as the
template, and use the template's message-id as the in-reply-to (for
proper threading).
My perl looks like this (feed the template via stdin):
perl -ne '
if (defined $opt && /^\s+(.*)/) {
$val .= " $1";
next;
}
if (defined $opt) {
print "--$opt=", quotemeta($val), " ";
$opt = $val = undef;
}
if (/^(cc|to):\s*(.*)/i) {
$opt = lc($1);
$val = $2;
}
elsif (/^message-id:\s*(.*)/i) {
$opt = "in-reply-to";
$val = $1;
}
'
That, of course, presupposes a cover letter. If I am sending a single
patch, then I just do "format-patch --stdout" right into my MUA's
editor), and let it handle the headers.
-Peff
^ permalink raw reply
* Re: GIT get corrupted on lustre
From: Jeff King @ 2012-12-26 22:51 UTC (permalink / raw)
To: Eric Chamberland; +Cc: git
In-Reply-To: <50D861EE.6020105@giref.ulaval.ca>
On Mon, Dec 24, 2012 at 09:08:46AM -0500, Eric Chamberland wrote:
> Doing a "git clone" always work fine, but when we "git pull" or "git
> gc" or "git fsck", often (1/5) the local repository get corrupted.
> for example, I got this error two days ago while doing "git gc":
>
> error: index file .git/objects/pack/pack-7b43b1c613a851392aaf4f66916dff2577931576.idx is too small
> error: refs/heads/mail_seekable does not point to a valid object!
> [...]
> We think it could be related to the fact that we are on a *Lustre*
> filesystem, which I think doesn't fully support file locking.
I don't think locking is a problem here. The problem is that you have a
corrupt .idx file (the second error is almost certainly an effect of the
first one; git cannot look in the packfile, and therefore cannot find
the object the ref points to). But we do not ever lock the .idx files.
They are generated in tmpfiles and then atomically moved into place
using a hard link.
So if anything, I would suspect that lustre has trouble with the
write/fsync/close/link sequence. Is it possible that it does not keep
the ordering, and readers might see a linked file that is missing some
data? If you wait (or do some synchronizing operation on the filesystem,
like "sync", or an unmount/mount), does the repo later work, or is it
broken forever?
> #1) However, how can we *test* the filesystem (lustre) compatibility
> with git? (Is there a unit test we can run?)
Running "make test" in git.git would be a good start. You could also try
running the C program I'm including below. It repeatedly runs a
write/close/fsync/link sequence like the one that index-pack runs, and
then verifies the result. If it does not run forever without error, that
would be a sign of the possible ordering problem I mentioned above.
> #2) Is there a way to compile GIT to be compatible with lustre? (ex:
> no threads?)
This isn't a known issue, so I don't know offhand what compile flags
might help. The complete list is at the top of Makefile. You might try
with NO_PTHREADS=Yes, but I kind of doubt that threads are at work here.
> #3) If you *know* your filesystem doesn't allow file locking, how
> would you configure/compile GIT to work on it?
I think locking is a red herring here, as it is not used to create the
.idx files at all (and we don't do flock locking anyway; everything
happens via O_EXCL creation).
-Peff
-- >8 --
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
static int randomize(unsigned char *buf, int len)
{
int i;
len = rand() % len;
for (i = 0; i < len; i++)
buf[i] = rand() & 0xff;
return len;
}
static int check_eof(int fd)
{
int ch;
int r = read(fd, &ch, 1);
if (r < 0) {
perror("read error after expected EOF");
return -1;
}
if (r > 0) {
fprintf(stderr, "extra byte after expected EOF");
return -1;
}
return 0;
}
static int verify(int fd, const unsigned char *buf, int len)
{
while (len) {
char to_check[4096];
int got = read(fd, to_check,
len < sizeof(to_check) ? len : sizeof(to_check));
if (got < 0) {
perror("unable to read");
return -1;
}
if (got == 0) {
fprintf(stderr, "premature EOF (%d bytes remaining)", len);
return -1;
}
if (memcmp(buf, to_check, got)) {
fprintf(stderr, "bytes differ");
return -1;
}
buf += got;
len -= got;
}
return check_eof(fd);
}
int write_in_full(int fd, const unsigned char *buf, int len)
{
while (len) {
int r = write(fd, buf, len);
if (r < 0)
return -1;
buf += r;
len -= r;
}
return 0;
}
int move_into_place(const char *old, const char *new)
{
if (link(old, new) < 0) {
perror("unable to create hard link");
return 1;
}
unlink(old);
return 0;
}
int main(void)
{
while (1) {
static unsigned char junk[1024*1024];
int len = randomize(junk, sizeof(junk));
int fd;
/* clean up from any previous round */
unlink("tmpfile");
unlink("final.idx");
fd = open("tmpfile", O_WRONLY|O_CREAT, 0666);
if (fd < 0) {
perror("unable to open tmpfile");
return 1;
}
if (write_in_full(fd, junk, len) < 0 ||
fsync(fd) < 0 ||
close(fd) < 0) {
perror("unable to write");
return 1;
}
if (move_into_place("tmpfile", "final.idx") < 0)
return 1;
fd = open("final.idx", O_RDONLY);
if (fd < 0) {
perror("unable to open index file");
return 1;
}
if (verify(fd, junk, len) < 0)
return 1;
close(fd);
}
}
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox