* Re: [PATCH 1/4] Suppress spurious linefeeds in git-add--interactive
From: Jeff King @ 2007-11-22 8:59 UTC (permalink / raw)
To: Wincent Colaiuta; +Cc: git, gitster
In-Reply-To: <1195689773-28601-2-git-send-email-win@wincent.com>
On Thu, Nov 22, 2007 at 01:02:50AM +0100, Wincent Colaiuta wrote:
> + return undef if ($#diff == -1);
Style nit: I think the rest of the code generally uses (and I prefer)
"@diff" to get the number of elements. So:
return undef unless @diff;
or I might even have written
my @diff = ...
or return undef;
but perhaps I am the only one who finds $#array comparisons to -1 hard
on the eyes.
-Peff
^ permalink raw reply
* Re: [PATCH 3/4] Teach builtin-add to pass multiple paths to git-add--interactive
From: Jeff King @ 2007-11-22 9:08 UTC (permalink / raw)
To: Wincent Colaiuta; +Cc: git, gitster
In-Reply-To: <1195689773-28601-4-git-send-email-win@wincent.com>
On Thu, Nov 22, 2007 at 01:02:52AM +0100, Wincent Colaiuta wrote:
> -int interactive_add(const char *path)
> +int interactive_add(const char **argv, int argc)
> {
> - const char *argv[3] = { "add--interactive", path, NULL };
> -
> - return run_command_v_opt(argv, RUN_GIT_CMD);
> + int status;
> + const char **args = xmalloc(sizeof(const char *) * (argc + 1));
> + args[0] = "add--interactive";
> + memcpy((void *)args + sizeof(const char *), argv, sizeof(const char *) * argc);
The source for the memcpy (argv) is sometimes NULL. The standard forbids
this, even when the size field is 0. I have no idea if any reasonable
implementations actually care.
But...
> + if (argc > 0)
> + exit(interactive_add(argv, argc));
> else
> - exit(interactive_add(NULL));
> + exit(interactive_add(NULL, 0));
There really is no reason to pass NULL at all (since the argc limits us
anyway), so we can just get rid of the conditional and simplify to:
exit(interactive_add(argv, argc));
for both cases.
-Peff
^ permalink raw reply
* Re: [PATCH] Add path-limiting to git-add--interactive
From: Junio C Hamano @ 2007-11-22 9:13 UTC (permalink / raw)
To: Wincent Colaiuta; +Cc: git, gitster, peff
In-Reply-To: <1195695384-41329-1-git-send-email-win@wincent.com>
Wincent Colaiuta <win@wincent.com> writes:
> @@ -56,9 +56,14 @@ sub list_modified {
> my ($only) = @_;
> my (%data, @return);
> my ($add, $del, $adddel, $file);
> + my @tracked = grep {
> + defined run_cmd_pipe(qw(git ls-files
> + --exclude-standard --), $_)
> + } @ARGV;
> + return if $#tracked == -1 && $#ARGV != -1;
Eek. why?
Did you mean to say:
my @tracked = run_cmd_pipe(gw(git ls-files --exclude-standard --) @ARGV);
It would also make sense to use --error-unmatch and perhaps --with-tree=HEAD
like git-commit.sh does.
^ permalink raw reply
* Re: [PATCH 2/4] Teach git-add--interactive to accept a file path to patch
From: Jeff King @ 2007-11-22 9:13 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Wincent Colaiuta, git
In-Reply-To: <7vk5obb09a.fsf@gitster.siamese.dyndns.org>
On Wed, Nov 21, 2007 at 04:18:57PM -0800, Junio C Hamano wrote:
> What I meant was that if "git add -i" (unrestricted) shows paths
> from a set A, "git add -i paths..." should show paths from a
> subset of the set A and that subset should be defined with the
> existing ls-files pathspec semantics.
Ah, I think that is definitely the right behavior. But it does raise one
more question: is going right into the 'add hunk' interface the correct
behavior, or is that an orthogonal issue?
IOW, do we actually want to support:
# go to patch menu for each file
git-add -i -p file1 file2 ...
# add untracked for each file
git-add -i -a file1 file2 ...
Which is of course tricky because the '-p' is contextually dependent on
the presence of '-i'.
But perhaps there is no need, since for just these two operations you
can do something like:
foreach my $file (@ARGV) {
if(tracked($file)) {
patch_update_file($file);
}
else {
add_tracked($file);
}
}
Are there any other per-file operations that would make sense to start
with? Or might somebody just want to path-limit _without_ starting the
hunk selector?
-Peff
^ permalink raw reply
* Reordering lines in "git-rebase -i" task sheet
From: Junio C Hamano @ 2007-11-22 9:21 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: git
When you start "git rebase -i" to reorder a few commits, you are
presented with an editor buffer with 9 or so lines of help text
and then lines you are supposed to edit, but most editors start
with your edit cursor at line 1. IOW, _everybody_ has to move
their cursor down at least 9 lines before doing anything
meaningful (or they can remove 9 lines but that is the same
thing).
Could we please reorder the lines so that list of initial
"pick"s come first and have the help comment lines at the very
end?
That is the reason why git commit leaves the first line empty in
its initial template. It is to allow the user to immediately
start typing.
^ permalink raw reply
* Re: Wishlist for a bundle-only transport mode
From: Santi Béjar @ 2007-11-22 9:42 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: Jakub Narebski, git
In-Reply-To: <Pine.LNX.4.64.0711211719330.27959@racer.site>
On Nov 21, 2007 6:26 PM, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> Hi,
>
> On Wed, 21 Nov 2007, Jakub Narebski wrote:
>
> > Johannes Schindelin wrote:
> > > On Wed, 21 Nov 2007, Jakub Narebski wrote:
> > >
> > >> That has the disadvantage of pushing to bundle when you make an error
> > >> in the lastpart of path to existing repository.
> > >
> > > As I wrote in another reply, I would not allow overwriting an existing
> > > file.
> >
> > > Specifying a non-existing file should be good enough.
> >
> > What I meant here that if you do "git push /some/path/to/rpeo.git", with
> > mistake in the last part of path to repository, you would end up with a
> > bundle, and you would have to really watch what happened to catch the
> > error.
>
> I use tab completion all the time, so this would not happen to me. IMHO
> that is a lesser issue than to introduce a "protocol".
>
> > I'd rather use "git push bundle:///some/path/to/bundle" or "git push
> > --bundle bundlename" to catch errors better.
I would vote for the later, and a way to configure this in the config.
> >
> > Besides it should be IMHO be possible to overwrite bundle if you are
> > doing fast-forward push...
>
> Not as far as I can see. A push there would see what the bundle has
> already, and put them into the new bundle as _prerequisites_. So the
> bundle would lose information.
I prefer not to overwrite an existing bundle.
>
> BTW this was my gripe (that I decided not to make public earlier) with
> Santi's proposal to begin with: a push would not have any way to specify
> what the other side has already. So I think "git push <bundle>" is the
> wrong way of creating a bundle.
Sorry but I do not understand this. I think this two lines could be equivalent:
git push --bundle bundle.bdl "refs/heads/master:refs/remotes/bundle/master"
git bundle create bundle.bdl refs/heads/master ^refs/remotes/bundle/master
>
> Except if we add some cunning strategy not to overwrite, ever, but to
> create <bundle>.<n> with an incrementing <n>. But that might be too much.
That make sense.
Santi
^ permalink raw reply
* Re: [PATCH] Add path-limiting to git-add--interactive
From: Junio C Hamano @ 2007-11-22 9:45 UTC (permalink / raw)
To: Wincent Colaiuta; +Cc: git, peff
In-Reply-To: <7vpry27id0.fsf@gitster.siamese.dyndns.org>
Junio C Hamano <gitster@pobox.com> writes:
> Wincent Colaiuta <win@wincent.com> writes:
>
>> @@ -56,9 +56,14 @@ sub list_modified {
>> my ($only) = @_;
>> my (%data, @return);
>> my ($add, $del, $adddel, $file);
>> + my @tracked = grep {
>> + defined run_cmd_pipe(qw(git ls-files
>> + --exclude-standard --), $_)
>> + } @ARGV;
>> + return if $#tracked == -1 && $#ARGV != -1;
>
> Eek. why?
>
> Did you mean to say:
>
> my @tracked = run_cmd_pipe(gw(git ls-files --exclude-standard --) @ARGV);
>
> It would also make sense to use --error-unmatch and perhaps --with-tree=HEAD
> like git-commit.sh does.
Actually, the ls-files need to be chomped, but I'd prefer to
run -z form of the command and split with NUL. Does run_cmd_pipe()
crap^Wstuff support that?
On top of:
* refactor patch_update_cmd,
* teach builtin-add to pass multiple paths,
* add path-limiting to git-add--interacgtive (with an obvious
suggested above),
the attached patch teaches [p]atch subcommand to take multiple
selections. With these, you can do:
$ git add -i 'u*.h'
What now> p
staged unstaged path
1: unchanged +1/-0 unpack-trees.h
2: unchanged +1/-0 utf8.h
Patch update>> *
diff --git a/unpack-trees.h b/unpack-trees.h
...
Stage this hunk [y/n/a/d/?]? y
...
diff --git a/utf8.h b/utf8.h
...
-- >8 --
git-add -i: allow multiple selection in [p]atch subcommand
This allows more than one files from the list to be chosen from
the patch subcommand instead of going through the file one by
one.
This also updates the "list-and-choose" UI for usability. When
the prompt ends with ">>", if you type '*' to choose all
choices, the prompt immediately returns the choice without
requiring an extra empty line to confirm the selection.
---
diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index 9236ffc..372dc2c 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -256,7 +256,7 @@ sub list_and_choose {
$chosen[$i] = $choose;
}
}
- last if ($opts->{IMMEDIATE});
+ last if ($opts->{IMMEDIATE} || $line eq '*');
}
for ($i = 0; $i < @stuff; $i++) {
if ($chosen[$i]) {
@@ -563,12 +563,12 @@ sub patch_update_cmd {
@mods = grep { !($_->{BINARY}) } @mods;
return if (!@mods);
- my ($it) = list_and_choose({ PROMPT => 'Patch update',
- SINGLETON => 1,
- IMMEDIATE => 1,
- HEADER => $status_head, },
- @mods);
- patch_update_file($it->{VALUE}) if ($it);
+ my (@them) = list_and_choose({ PROMPT => 'Patch update',
+ HEADER => $status_head, },
+ @mods);
+ for (@them) {
+ patch_update_file($_->{VALUE});
+ }
}
sub patch_update_file {
^ permalink raw reply related
* Re: [PATCH 2/4] Teach git-add--interactive to accept a file path to patch
From: Junio C Hamano @ 2007-11-22 9:50 UTC (permalink / raw)
To: Jeff King; +Cc: Wincent Colaiuta, git
In-Reply-To: <20071122091356.GD7153@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
> On Wed, Nov 21, 2007 at 04:18:57PM -0800, Junio C Hamano wrote:
>
>> What I meant was that if "git add -i" (unrestricted) shows paths
>> from a set A, "git add -i paths..." should show paths from a
>> subset of the set A and that subset should be defined with the
>> existing ls-files pathspec semantics.
>
> Ah, I think that is definitely the right behavior. But it does raise one
> more question: is going right into the 'add hunk' interface the correct
> behavior, or is that an orthogonal issue?
I am moderately negative about "paths imply jump to patch
subcommand". An option to git-add--interactive that tells which
subcommand to initially choose is probably acceptable, though.
Would the patch I just sent out (you need to assemble the parts)
make things easier?
^ permalink raw reply
* Re: [PATCH 2/4] Teach git-add--interactive to accept a file path to patch
From: Jeff King @ 2007-11-22 9:57 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Wincent Colaiuta, git
In-Reply-To: <7v8x4q7gns.fsf@gitster.siamese.dyndns.org>
On Thu, Nov 22, 2007 at 01:50:31AM -0800, Junio C Hamano wrote:
> I am moderately negative about "paths imply jump to patch
> subcommand". An option to git-add--interactive that tells which
> subcommand to initially choose is probably acceptable, though.
I agree that an option is nicer; it's just that it may be awkward since
'-i' is itself already an option.
> Would the patch I just sent out (you need to assemble the parts)
> make things easier?
Perhaps. This feature doesn't come up all that often for me, but I will
try running with your patch for a while to see if I like it.
-Peff
^ permalink raw reply
* Re: [PATCH 3/3] Replace setenv(GIT_DIR_ENVIRONMENT, ...) with set_git_dir()
From: Johannes Sixt @ 2007-11-22 9:58 UTC (permalink / raw)
To: Steffen Prohaska; +Cc: Junio C Hamano, Johannes Schindelin, git, Dmitry Kakurin
In-Reply-To: <52415F60-C080-4260-86CD-32A379482341@zib.de>
Steffen Prohaska schrieb:
> On Nov 22, 2007, at 8:52 AM, Junio C Hamano wrote:
>> I suspect that if there are even earlier callers than these
>> early parts in the codepaths (handle_options, enter_repo, and
>> setup_git_directory_gently), maybe these earlier callers are
>> doing something wrong. Logically, if you are somewhere very
>> early in the codepath that you can still change the value of
>> GIT_DIR, you shouldn't have assumed the unknown value of GIT_DIR
>> and cached locations relative to that directory, no? What are
>> the problematic callers? What values do they access and why?
>
>
> I thought about these questions, too. But only very briefly.
> I did not analyze the code path that lead to calls of getenv().
>
> I'm not sure if it's really necessary. Calling set_git_dir()
> looks more sensible too me than the old code. I believe using
> set_git_dir() is the safer choice, and should not do any harm.
> So I stopped analyzing too much, and instead proposed to use
> set_git_dir().
Junio's point is this: If we stumble over a dangling pointer that getenv()
produced, then this has obviously happened before setenv(GIT_DIR), and
caching that pointer is probably the wrong thing to do anyway (because it
refers to the wrong GIT_DIR) and needs to be fixed.
So the task is to find those traps. Dmitry obviously stumbled over one case,
but I haven't ever encountered any problems with the current code. But then
this might be sheer luck. And I'm not a heavy user of export GIT_DIR=foo,
either. Do *you* know a problematic case?
> Interesting, though, is to find out if we have other potentially
> dangerous calls to getenv() that are not removed by this patch.
Side note for other readers: This is a Windows specific problem for the
moment because its getenv() does not behave well.
-- Hannes
^ permalink raw reply
* Re: Wishlist for a bundle-only transport mode
From: Junio C Hamano @ 2007-11-22 10:02 UTC (permalink / raw)
To: Santi Béjar; +Cc: Johannes Schindelin, Jakub Narebski, git
In-Reply-To: <8aa486160711220142w25e9c9b6vbafa34a287dde7eb@mail.gmail.com>
"Santi Béjar" <sbejar@gmail.com> writes:
> Sorry but I do not understand this. I think this two lines could be equivalent:
>
> git push --bundle bundle.bdl "refs/heads/master:refs/remotes/bundle/master"
> git bundle create bundle.bdl refs/heads/master ^refs/remotes/bundle/master
Interesting.
$ git push $something ours:theirs
has defined semantics for any value of $something.
* give $something objects it lacks, so that the object $ours
become complete in there;
* set the ref in $theirs to point at the object $ours.
So "git push bundle.bdl refspec" should:
* First read bundle.bdl, to find out what objects it gives to
the recipients;
* Add missing objects to it to make it up to date wrt "ours",
iow, fetching from the updated bundle would now give "ours";
* Record the object "ours" as "theirs" ref, iow, listing
the updated bundle would show "theis" ref pointing at that
object.
If bundle.bdl does not exist yet, it is like pushing into a
freshly initialized empty repository.
^ permalink raw reply
* Re: [PATCH] Authenticate only once in git-send-email
From: Wincent Colaiuta @ 2007-11-22 10:07 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
In-Reply-To: <7vwssa7jii.fsf@gitster.siamese.dyndns.org>
El 22/11/2007, a las 9:48, Junio C Hamano escribió:
> Wincent Colaiuta <win@wincent.com> writes:
>
>> This commit teaches git-send-email to authenticate once and only
>> once at
>> the beginning of the series.
>
> Ok. What does $smtp->auth() return? Presumably a true value,
True on success, false on failure.
> but I do not find it the best coding style to hide a call made
> primarily for its effects not for its return value behind a
> conditional assignment to a boolean. Eek.
>
>> if ((defined $smtp_authuser) && (defined $smtp_authpass)) {
>> - $smtp->auth( $smtp_authuser, $smtp_authpass ) or die $smtp-
>> >message;
>> + $auth ||= $smtp->auth( $smtp_authuser, $smtp_authpass ) or die
>> $smtp->message;
>> }
>
> Perhaps something along the lines of...
>
>> if ((defined $smtp_authuser) && (defined $smtp_authpass)) {
>> $smtp->auth( $smtp_authuser, $smtp_authpass ) or die $smtp-
>> >message;
>> + undef $smtp_authpass;
>> }
>
> ... or using a separate boolean variable "my $auth_happened"
> may be more appropriate.
Of the alternatives you suggest, I think an "$auth_happened" or
"$auth_done" flag is probably the nicest/cleanest.
> But I am just saying this; I do not care _too_ deeply about it.
> Will apply as-is.
Yes, I don't really care either. My reasoning for doing it the way I
did is that I'm not much of a Perl hacker so I basically wanted to
make the change as minimally invasive as possible (in this case
prepending "$auth ||= "). But above all, all that I really care about
is that the problem gets fixed.
Cheers,
Wincent
^ permalink raw reply
* Re: [PATCH 1/4] Suppress spurious linefeeds in git-add--interactive
From: Wincent Colaiuta @ 2007-11-22 10:18 UTC (permalink / raw)
To: Jeff King; +Cc: git, gitster
In-Reply-To: <20071122085919.GB7153@sigill.intra.peff.net>
El 22/11/2007, a las 9:59, Jeff King escribió:
> On Thu, Nov 22, 2007 at 01:02:50AM +0100, Wincent Colaiuta wrote:
>
>> + return undef if ($#diff == -1);
>
> Style nit: I think the rest of the code generally uses (and I prefer)
> "@diff" to get the number of elements. So:
>
> return undef unless @diff;
>
> or I might even have written
>
> my @diff = ...
> or return undef;
>
> but perhaps I am the only one who finds $#array comparisons to -1 hard
> on the eyes.
No, I agree with you; it does read nicer. I'm not a real Perl
programmer, so everything I do I have to do it with a copy of
"Programming Perl" next to me to find out how to do things. It's handy
to have advice from people more familiar with the idioms. Will
incorporate something like this into the series:
diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index a5a07bc..0a8f0a9 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -60,7 +60,7 @@ sub list_modified {
defined run_cmd_pipe(qw(git ls-files
--exclude-standard --), $_)
} @ARGV;
- return if $#tracked == -1 && $#ARGV != -1;
+ return if !@tracked && @ARGV;
for (run_cmd_pipe(qw(git diff-index --cached
--numstat --summary HEAD --), @tracked)) {
@@ -340,8 +340,8 @@ sub add_untracked_cmd {
sub parse_diff {
my ($path) = @_;
- my @diff = run_cmd_pipe(qw(git diff-files -p --), $path);
- return undef if ($#diff == -1);
+ my @diff = run_cmd_pipe(qw(git diff-files -p --), $path)
+ or return undef;
my (@hunk) = { TEXT => [] };
for (@diff) {
Cheers,
Wincent
^ permalink raw reply related
* Re: [PATCH 3/4] Teach builtin-add to pass multiple paths to git-add--interactive
From: Wincent Colaiuta @ 2007-11-22 10:28 UTC (permalink / raw)
To: Jeff King; +Cc: git, gitster
In-Reply-To: <20071122090828.GC7153@sigill.intra.peff.net>
El 22/11/2007, a las 10:08, Jeff King escribió:
> On Thu, Nov 22, 2007 at 01:02:52AM +0100, Wincent Colaiuta wrote:
>
>> -int interactive_add(const char *path)
>> +int interactive_add(const char **argv, int argc)
>> {
>> - const char *argv[3] = { "add--interactive", path, NULL };
>> -
>> - return run_command_v_opt(argv, RUN_GIT_CMD);
>> + int status;
>> + const char **args = xmalloc(sizeof(const char *) * (argc + 1));
>> + args[0] = "add--interactive";
>> + memcpy((void *)args + sizeof(const char *), argv, sizeof(const
>> char *) * argc);
>
> The source for the memcpy (argv) is sometimes NULL. The standard
> forbids
> this, even when the size field is 0. I have no idea if any reasonable
> implementations actually care.
Good point. I've now conditionalized the memcpy with an "if (argc >
0)". While I was at it I also got rid of the unneeded cast to void *.
> But...
>
>> + if (argc > 0)
>> + exit(interactive_add(argv, argc));
>> else
>> - exit(interactive_add(NULL));
>> + exit(interactive_add(NULL, 0));
>
> There really is no reason to pass NULL at all (since the argc limits
> us
> anyway), so we can just get rid of the conditional and simplify to:
>
> exit(interactive_add(argv, argc));
>
> for both cases.
Yes, that's a nice cleanup. Thanks for suggesting it.
Cheers,
Wincent
^ permalink raw reply
* Re: [PATCH 3/4] Teach builtin-add to pass multiple paths to git-add--interactive
From: Jeff King @ 2007-11-22 10:33 UTC (permalink / raw)
To: Wincent Colaiuta; +Cc: git, gitster
In-Reply-To: <825BAB3C-FAB4-4A48-AB94-FAAF5B808CD1@wincent.com>
On Thu, Nov 22, 2007 at 11:28:17AM +0100, Wincent Colaiuta wrote:
>>> + memcpy((void *)args + sizeof(const char *), argv, sizeof(const char *) *
>>> argc);
>>
>> The source for the memcpy (argv) is sometimes NULL. The standard forbids
>> this, even when the size field is 0. I have no idea if any reasonable
>> implementations actually care.
>
> Good point. I've now conditionalized the memcpy with an "if (argc > 0)".
> While I was at it I also got rid of the unneeded cast to void *.
I don't think you need it if you do the other cleanup (since you will
always be passing a valid argv pointer).
-Peff
^ permalink raw reply
* Re: Addendum to "MaintNotes"
From: Jeff King @ 2007-11-22 10:36 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Git Mailing List, Ping Yin
In-Reply-To: <7vhcjf9l1k.fsf@gitster.siamese.dyndns.org>
Thanks for writing this, Junio. It is always interesting to see git
workflows discussed in detail, and yours is more interesting than most.
On Wed, Nov 21, 2007 at 04:32:55PM -0800, Junio C Hamano wrote:
> - Obviously correct fixes that pertain to the tip of 'master'
> are directly applied to 'master'.
>
> This step is done with "git am".
>
> $ git checkout maint ;# or "git checkout maint"
One of those "maints" should probably be "master".
-Peff
^ permalink raw reply
* Re: [PATCH 1/4] Suppress spurious linefeeds in git-add--interactive
From: Junio C Hamano @ 2007-11-22 10:38 UTC (permalink / raw)
To: Wincent Colaiuta; +Cc: Jeff King, git, gitster
In-Reply-To: <B649FFCA-C85F-4BB4-884A-525676ABCA9B@wincent.com>
Wincent Colaiuta <win@wincent.com> writes:
> No, I agree with you; it does read nicer. I'm not a real Perl
> programmer, so everything I do I have to do it with a copy of
> "Programming Perl" next to me to find out how to do things. It's handy
> to have advice from people more familiar with the idioms. Will
> incorporate something like this into the series:
I took the liberty of rewriting them and will push out on pu
shortly hopefully before I go to bed.
^ permalink raw reply
* [PATCH] git-gui: update it.po and glossary/it.po
From: Michele Ballabio @ 2007-11-22 10:46 UTC (permalink / raw)
To: git; +Cc: Shawn O. Pearce, Junio C Hamano
In-Reply-To: <20071121073645.GV14735@spearce.org>
Updates and fixes:
* current -> attuale
* failed -> impossibile/non riuscito
* corrupt -> danneggiato
Signed-off-by: Michele Ballabio <barra_cuda@katamail.com>
---
po/glossary/it.po | 16 ++-
po/it.po | 461 +++++++++++++++++++++++++++++------------------------
2 files changed, 261 insertions(+), 216 deletions(-)
diff --git a/po/glossary/it.po b/po/glossary/it.po
index 8e3d9a2..bb46b48 100644
--- a/po/glossary/it.po
+++ b/po/glossary/it.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: git-gui glossary\n"
-"POT-Creation-Date: 2007-10-05 22:30+0200\n"
+"POT-Creation-Date: 2007-10-19 21:43+0200\n"
"PO-Revision-Date: 2007-10-10 15:24+0200\n"
"Last-Translator: Michele Ballabio <barra_cuda@katamail.com>\n"
"Language-Team: Italian \n"
@@ -50,8 +50,8 @@ msgstr "attivazione, checkout, revisione attiva, prelievo (TortoiseCVS)?"
#. "The action of updating the working tree to a revision which was stored in the object database."
msgid "checkout [verb]"
msgstr ""
-"attivare, effettuare un checkout, attivare revisione, prelevare (TortoiseCVS), "
-"ritirare (TSVN)?"
+"attivare, effettuare un checkout, attivare revisione, prelevare "
+"(TortoiseCVS), ritirare (TSVN)?"
#. ""
msgid "clone [verb]"
@@ -99,7 +99,7 @@ msgstr "effettuare la fusione, unire, fondere, eseguire la fusione"
msgid "message"
msgstr "messaggio, commento"
-#. ""
+#. "Deletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in 'remotes/<name>'."
msgid "prune"
msgstr "potatura"
@@ -117,6 +117,10 @@ msgstr "propaga"
msgid "redo"
msgstr "ripeti, rifai"
+#. "An other repository ('remote'). One might have a set of remotes whose branches one tracks."
+msgid "remote"
+msgstr "remoto"
+
#. "A collection of refs (?) together with an object database containing all objects which are reachable from the refs... (oops, you've lost me here. Again, please an explanation for mere mortals?)"
msgid "repository"
msgstr "archivio, repository, database? deposito (rapidsvn)?"
@@ -160,8 +164,8 @@ msgstr "etichettare"
#. "A regular git branch that is used to follow changes from another repository."
msgid "tracking branch"
msgstr ""
-"duplicato locale di ramo remoto, ramo in 'tracking', ramo inseguitore? ramo di {inseguimento,allineamento,"
-"rilevamento,puntamento}?"
+"duplicato locale di ramo remoto, ramo in 'tracking', ramo inseguitore? ramo "
+"di {inseguimento,allineamento,rilevamento,puntamento}?"
#. ""
msgid "undo"
diff --git a/po/it.po b/po/it.po
index 7668414..33a8399 100644
--- a/po/it.po
+++ b/po/it.po
@@ -9,41 +9,41 @@ msgid ""
msgstr ""
"Project-Id-Version: git-gui\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-10-10 14:42+0200\n"
-"PO-Revision-Date: 2007-10-10 15:27+0200\n"
-"Last-Translator: Paolo Ciarrocchi <paolo.ciarrocchi@gmail.com>\n"
+"POT-Creation-Date: 2007-11-09 11:18+0100\n"
+"PO-Revision-Date: 2007-11-01 21:05+0100\n"
+"Last-Translator: Michele Ballabio <barra_cuda@katamail.com>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: git-gui.sh:41 git-gui.sh:634 git-gui.sh:648 git-gui.sh:661 git-gui.sh:744
-#: git-gui.sh:763
+#: git-gui.sh:41 git-gui.sh:604 git-gui.sh:618 git-gui.sh:631 git-gui.sh:714
+#: git-gui.sh:733
msgid "git-gui: fatal error"
msgstr "git-gui: errore grave"
-#: git-gui.sh:595
+#: git-gui.sh:565
#, tcl-format
msgid "Invalid font specified in %s:"
msgstr "Caratteri non validi specificati in %s:"
-#: git-gui.sh:620
+#: git-gui.sh:590
msgid "Main Font"
msgstr "Caratteri principali"
-#: git-gui.sh:621
+#: git-gui.sh:591
msgid "Diff/Console Font"
msgstr "Caratteri per confronti e terminale"
-#: git-gui.sh:635
+#: git-gui.sh:605
msgid "Cannot find git in PATH."
msgstr "Impossibile trovare git nel PATH"
-#: git-gui.sh:662
+#: git-gui.sh:632
msgid "Cannot parse Git version string:"
msgstr "Impossibile determinare la versione di Git:"
-#: git-gui.sh:680
+#: git-gui.sh:650
#, tcl-format
msgid ""
"Git version cannot be determined.\n"
@@ -54,7 +54,7 @@ msgid ""
"\n"
"Assume '%s' is version 1.5.0?\n"
msgstr ""
-"La versione di GIT non può essere determinata.\n"
+"La versione di Git non può essere determinata.\n"
"\n"
"%s riporta che la versione è '%s'.\n"
"\n"
@@ -62,79 +62,79 @@ msgstr ""
"\n"
"Assumere che '%s' sia alla versione 1.5.0?\n"
-#: git-gui.sh:853
+#: git-gui.sh:888
msgid "Git directory not found:"
msgstr "Non trovo la directory di git: "
-#: git-gui.sh:860
+#: git-gui.sh:895
msgid "Cannot move to top of working directory:"
msgstr "Impossibile spostarsi sulla directory principale del progetto:"
-#: git-gui.sh:867
+#: git-gui.sh:902
msgid "Cannot use funny .git directory:"
msgstr "Impossibile usare una .git directory strana:"
-#: git-gui.sh:872
+#: git-gui.sh:907
msgid "No working directory"
msgstr "Nessuna directory di lavoro"
-#: git-gui.sh:1019
+#: git-gui.sh:1054
msgid "Refreshing file status..."
msgstr "Controllo dello stato dei file in corso..."
-#: git-gui.sh:1084
+#: git-gui.sh:1119
msgid "Scanning for modified files ..."
msgstr "Ricerca di file modificati in corso..."
-#: git-gui.sh:1259 lib/browser.tcl:245
+#: git-gui.sh:1294 lib/browser.tcl:245
msgid "Ready."
msgstr "Pronto."
-#: git-gui.sh:1525
+#: git-gui.sh:1560
msgid "Unmodified"
msgstr "Non modificato"
-#: git-gui.sh:1527
+#: git-gui.sh:1562
msgid "Modified, not staged"
msgstr "Modificato, non preparato per una nuova revisione"
-#: git-gui.sh:1528 git-gui.sh:1533
+#: git-gui.sh:1563 git-gui.sh:1568
msgid "Staged for commit"
msgstr "Preparato per una nuova revisione"
-#: git-gui.sh:1529 git-gui.sh:1534
+#: git-gui.sh:1564 git-gui.sh:1569
msgid "Portions staged for commit"
msgstr "Parti preparate per una nuova revisione"
-#: git-gui.sh:1530 git-gui.sh:1535
+#: git-gui.sh:1565 git-gui.sh:1570
msgid "Staged for commit, missing"
msgstr "Preparato per una nuova revisione, mancante"
-#: git-gui.sh:1532
+#: git-gui.sh:1567
msgid "Untracked, not staged"
msgstr "Non tracciato, non preparato per una nuova revisione"
-#: git-gui.sh:1537
+#: git-gui.sh:1572
msgid "Missing"
msgstr "Mancante"
-#: git-gui.sh:1538
+#: git-gui.sh:1573
msgid "Staged for removal"
msgstr "Preparato per la rimozione"
-#: git-gui.sh:1539
+#: git-gui.sh:1574
msgid "Staged for removal, still present"
msgstr "Preparato alla rimozione, ancora presente"
-#: git-gui.sh:1541 git-gui.sh:1542 git-gui.sh:1543 git-gui.sh:1544
+#: git-gui.sh:1576 git-gui.sh:1577 git-gui.sh:1578 git-gui.sh:1579
msgid "Requires merge resolution"
msgstr "Richiede risoluzione dei conflitti"
-#: git-gui.sh:1579
+#: git-gui.sh:1614
msgid "Starting gitk... please wait..."
msgstr "Avvio di gitk... attendere..."
-#: git-gui.sh:1588
+#: git-gui.sh:1623
#, tcl-format
msgid ""
"Unable to start gitk:\n"
@@ -145,297 +145,297 @@ msgstr ""
"\n"
"%s non esiste"
-#: git-gui.sh:1788 lib/choose_repository.tcl:32
+#: git-gui.sh:1823 lib/choose_repository.tcl:35
msgid "Repository"
msgstr "Archivio"
-#: git-gui.sh:1789
+#: git-gui.sh:1824
msgid "Edit"
msgstr "Modifica"
-#: git-gui.sh:1791 lib/choose_rev.tcl:560
+#: git-gui.sh:1826 lib/choose_rev.tcl:560
msgid "Branch"
msgstr "Ramo"
-#: git-gui.sh:1794 lib/choose_rev.tcl:547
+#: git-gui.sh:1829 lib/choose_rev.tcl:547
msgid "Commit@@noun"
msgstr "Revisione"
-#: git-gui.sh:1797 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168
+#: git-gui.sh:1832 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168
msgid "Merge"
msgstr "Fusione (Merge)"
-#: git-gui.sh:1798 lib/choose_rev.tcl:556
+#: git-gui.sh:1833 lib/choose_rev.tcl:556
msgid "Remote"
msgstr "Remoto"
-#: git-gui.sh:1807
+#: git-gui.sh:1842
msgid "Browse Current Branch's Files"
-msgstr "Esplora i file del ramo corrente"
+msgstr "Esplora i file del ramo attuale"
-#: git-gui.sh:1811
+#: git-gui.sh:1846
msgid "Browse Branch Files..."
msgstr "Esplora i file del ramo..."
-#: git-gui.sh:1816
+#: git-gui.sh:1851
msgid "Visualize Current Branch's History"
-msgstr "Visualizza la cronologia del ramo corrente"
+msgstr "Visualizza la cronologia del ramo attuale"
-#: git-gui.sh:1820
+#: git-gui.sh:1855
msgid "Visualize All Branch History"
msgstr "Visualizza la cronologia di tutti i rami"
-#: git-gui.sh:1827
+#: git-gui.sh:1862
#, tcl-format
msgid "Browse %s's Files"
msgstr "Esplora i file di %s"
-#: git-gui.sh:1829
+#: git-gui.sh:1864
#, tcl-format
msgid "Visualize %s's History"
msgstr "Visualizza la cronologia di %s"
-#: git-gui.sh:1834 lib/database.tcl:27 lib/database.tcl:67
+#: git-gui.sh:1869 lib/database.tcl:27 lib/database.tcl:67
msgid "Database Statistics"
msgstr "Statistiche dell'archivio"
-#: git-gui.sh:1837 lib/database.tcl:34
+#: git-gui.sh:1872 lib/database.tcl:34
msgid "Compress Database"
msgstr "Comprimi l'archivio"
-#: git-gui.sh:1840
+#: git-gui.sh:1875
msgid "Verify Database"
msgstr "Verifica l'archivio"
-#: git-gui.sh:1847 git-gui.sh:1851 git-gui.sh:1855 lib/shortcut.tcl:9
-#: lib/shortcut.tcl:45 lib/shortcut.tcl:84
+#: git-gui.sh:1882 git-gui.sh:1886 git-gui.sh:1890 lib/shortcut.tcl:7
+#: lib/shortcut.tcl:39 lib/shortcut.tcl:71
msgid "Create Desktop Icon"
msgstr "Crea icona desktop"
-#: git-gui.sh:1860 lib/choose_repository.tcl:36 lib/choose_repository.tcl:95
+#: git-gui.sh:1895 lib/choose_repository.tcl:176 lib/choose_repository.tcl:184
msgid "Quit"
msgstr "Esci"
-#: git-gui.sh:1867
+#: git-gui.sh:1902
msgid "Undo"
msgstr "Annulla"
-#: git-gui.sh:1870
+#: git-gui.sh:1905
msgid "Redo"
msgstr "Ripeti"
-#: git-gui.sh:1874 git-gui.sh:2366
+#: git-gui.sh:1909 git-gui.sh:2403
msgid "Cut"
msgstr "Taglia"
-#: git-gui.sh:1877 git-gui.sh:2369 git-gui.sh:2440 git-gui.sh:2512
+#: git-gui.sh:1912 git-gui.sh:2406 git-gui.sh:2477 git-gui.sh:2549
#: lib/console.tcl:67
msgid "Copy"
msgstr "Copia"
-#: git-gui.sh:1880 git-gui.sh:2372
+#: git-gui.sh:1915 git-gui.sh:2409
msgid "Paste"
msgstr "Incolla"
-#: git-gui.sh:1883 git-gui.sh:2375 lib/branch_delete.tcl:26
+#: git-gui.sh:1918 git-gui.sh:2412 lib/branch_delete.tcl:26
#: lib/remote_branch_delete.tcl:38
msgid "Delete"
msgstr "Elimina"
-#: git-gui.sh:1887 git-gui.sh:2379 git-gui.sh:2516 lib/console.tcl:69
+#: git-gui.sh:1922 git-gui.sh:2416 git-gui.sh:2553 lib/console.tcl:69
msgid "Select All"
msgstr "Seleziona tutto"
-#: git-gui.sh:1896
+#: git-gui.sh:1931
msgid "Create..."
msgstr "Crea..."
-#: git-gui.sh:1902
+#: git-gui.sh:1937
msgid "Checkout..."
msgstr "Attiva..."
-#: git-gui.sh:1908
+#: git-gui.sh:1943
msgid "Rename..."
msgstr "Rinomina"
-#: git-gui.sh:1913 git-gui.sh:2012
+#: git-gui.sh:1948 git-gui.sh:2048
msgid "Delete..."
msgstr "Elimina..."
-#: git-gui.sh:1918
+#: git-gui.sh:1953
msgid "Reset..."
msgstr "Ripristina..."
-#: git-gui.sh:1930 git-gui.sh:2313
+#: git-gui.sh:1965 git-gui.sh:2350
msgid "New Commit"
msgstr "Nuova revisione"
-#: git-gui.sh:1938 git-gui.sh:2320
+#: git-gui.sh:1973 git-gui.sh:2357
msgid "Amend Last Commit"
msgstr "Correggi l'ultima revisione"
-#: git-gui.sh:1947 git-gui.sh:2280 lib/remote_branch_delete.tcl:99
+#: git-gui.sh:1982 git-gui.sh:2317 lib/remote_branch_delete.tcl:99
msgid "Rescan"
msgstr "Analizza nuovamente"
-#: git-gui.sh:1953
+#: git-gui.sh:1988
msgid "Stage To Commit"
msgstr "Prepara per una nuova revisione"
-#: git-gui.sh:1958
+#: git-gui.sh:1994
msgid "Stage Changed Files To Commit"
msgstr "Prepara i file modificati per una nuova revisione"
-#: git-gui.sh:1964
+#: git-gui.sh:2000
msgid "Unstage From Commit"
msgstr "Annulla preparazione"
-#: git-gui.sh:1969 lib/index.tcl:352
+#: git-gui.sh:2005 lib/index.tcl:393
msgid "Revert Changes"
msgstr "Annulla modifiche"
-#: git-gui.sh:1976 git-gui.sh:2292 git-gui.sh:2390
+#: git-gui.sh:2012 git-gui.sh:2329 git-gui.sh:2427
msgid "Sign Off"
msgstr "Sign Off"
-#: git-gui.sh:1980 git-gui.sh:2296
+#: git-gui.sh:2016 git-gui.sh:2333
msgid "Commit@@verb"
msgstr "Nuova revisione"
-#: git-gui.sh:1991
+#: git-gui.sh:2027
msgid "Local Merge..."
msgstr "Fusione locale..."
-#: git-gui.sh:1996
+#: git-gui.sh:2032
msgid "Abort Merge..."
msgstr "Interrompi fusione..."
-#: git-gui.sh:2008
+#: git-gui.sh:2044
msgid "Push..."
msgstr "Propaga..."
-#: git-gui.sh:2019 lib/choose_repository.tcl:41
+#: git-gui.sh:2055 lib/choose_repository.tcl:40
msgid "Apple"
msgstr "Apple"
-#: git-gui.sh:2022 git-gui.sh:2044 lib/about.tcl:13
-#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:50
+#: git-gui.sh:2058 git-gui.sh:2080 lib/about.tcl:13
+#: lib/choose_repository.tcl:43 lib/choose_repository.tcl:49
#, tcl-format
msgid "About %s"
msgstr "Informazioni su %s"
-#: git-gui.sh:2026
+#: git-gui.sh:2062
msgid "Preferences..."
msgstr "Preferenze..."
-#: git-gui.sh:2034 git-gui.sh:2558
+#: git-gui.sh:2070 git-gui.sh:2595
msgid "Options..."
msgstr "Opzioni..."
-#: git-gui.sh:2040 lib/choose_repository.tcl:47
+#: git-gui.sh:2076 lib/choose_repository.tcl:46
msgid "Help"
msgstr "Aiuto"
-#: git-gui.sh:2081
+#: git-gui.sh:2117
msgid "Online Documentation"
msgstr "Documentazione sul web"
-#: git-gui.sh:2165
+#: git-gui.sh:2201
#, tcl-format
msgid "fatal: cannot stat path %s: No such file or directory"
msgstr ""
"errore grave: impossibile effettuare lo stat del path %s: file o directory "
"non trovata"
-#: git-gui.sh:2198
+#: git-gui.sh:2234
msgid "Current Branch:"
msgstr "Ramo attuale:"
-#: git-gui.sh:2219
+#: git-gui.sh:2255
msgid "Staged Changes (Will Commit)"
msgstr "Modifiche preparate (saranno nella nuova revisione)"
-#: git-gui.sh:2239
+#: git-gui.sh:2274
msgid "Unstaged Changes"
msgstr "Modifiche non preparate"
-#: git-gui.sh:2286
+#: git-gui.sh:2323
msgid "Stage Changed"
msgstr "Prepara modificati"
-#: git-gui.sh:2302 lib/transport.tcl:93 lib/transport.tcl:182
+#: git-gui.sh:2339 lib/transport.tcl:93 lib/transport.tcl:182
msgid "Push"
msgstr "Propaga (Push)"
-#: git-gui.sh:2332
+#: git-gui.sh:2369
msgid "Initial Commit Message:"
msgstr "Messaggio di revisione iniziale:"
-#: git-gui.sh:2333
+#: git-gui.sh:2370
msgid "Amended Commit Message:"
msgstr "Messaggio di revisione corretto:"
-#: git-gui.sh:2334
+#: git-gui.sh:2371
msgid "Amended Initial Commit Message:"
msgstr "Messaggio iniziale di revisione corretto:"
-#: git-gui.sh:2335
+#: git-gui.sh:2372
msgid "Amended Merge Commit Message:"
msgstr "Messaggio di fusione corretto:"
-#: git-gui.sh:2336
+#: git-gui.sh:2373
msgid "Merge Commit Message:"
msgstr "Messaggio di fusione:"
-#: git-gui.sh:2337
+#: git-gui.sh:2374
msgid "Commit Message:"
msgstr "Messaggio di revisione:"
-#: git-gui.sh:2382 git-gui.sh:2520 lib/console.tcl:71
+#: git-gui.sh:2419 git-gui.sh:2557 lib/console.tcl:71
msgid "Copy All"
msgstr "Copia tutto"
-#: git-gui.sh:2406 lib/blame.tcl:104
+#: git-gui.sh:2443 lib/blame.tcl:104
msgid "File:"
msgstr "File:"
-#: git-gui.sh:2508
+#: git-gui.sh:2545
msgid "Refresh"
msgstr "Rinfresca"
-#: git-gui.sh:2529
+#: git-gui.sh:2566
msgid "Apply/Reverse Hunk"
msgstr "Applica/Inverti sezione"
-#: git-gui.sh:2535
+#: git-gui.sh:2572
msgid "Decrease Font Size"
msgstr "Diminuisci dimensione caratteri"
-#: git-gui.sh:2539
+#: git-gui.sh:2576
msgid "Increase Font Size"
msgstr "Aumenta dimensione caratteri"
-#: git-gui.sh:2544
+#: git-gui.sh:2581
msgid "Show Less Context"
msgstr "Mostra meno contesto"
-#: git-gui.sh:2551
+#: git-gui.sh:2588
msgid "Show More Context"
msgstr "Mostra più contesto"
-#: git-gui.sh:2565
+#: git-gui.sh:2602
msgid "Unstage Hunk From Commit"
msgstr "Sezione non preparata per una nuova revisione"
-#: git-gui.sh:2567
+#: git-gui.sh:2604
msgid "Stage Hunk For Commit"
msgstr "Prepara sezione per una nuova revisione"
-#: git-gui.sh:2586
+#: git-gui.sh:2623
msgid "Initializing..."
msgstr "Inizializzazione..."
-#: git-gui.sh:2677
+#: git-gui.sh:2718
#, tcl-format
msgid ""
"Possible environment issues exist.\n"
@@ -452,7 +452,7 @@ msgstr ""
"da %s:\n"
"\n"
-#: git-gui.sh:2707
+#: git-gui.sh:2748
msgid ""
"\n"
"This is due to a known issue with the\n"
@@ -462,7 +462,7 @@ msgstr ""
"Ciò è dovuto a un problema conosciuto\n"
"causato dall'eseguibile Tcl distribuito da Cygwin."
-#: git-gui.sh:2712
+#: git-gui.sh:2753
#, tcl-format
msgid ""
"\n"
@@ -582,7 +582,7 @@ msgstr "Crea ramo"
msgid "Create New Branch"
msgstr "Crea nuovo ramo"
-#: lib/branch_create.tcl:31 lib/choose_repository.tcl:199
+#: lib/branch_create.tcl:31 lib/choose_repository.tcl:375
msgid "Create"
msgstr "Crea"
@@ -682,7 +682,7 @@ msgid ""
"Failed to delete branches:\n"
"%s"
msgstr ""
-"Cancellazione rami fallita:\n"
+"Impossibile cancellare i rami:\n"
"%s"
#: lib/branch_rename.tcl:14 lib/branch_rename.tcl:22
@@ -736,9 +736,9 @@ msgstr "[Directory superiore]"
msgid "Browse Branch Files"
msgstr "Esplora i file del ramo"
-#: lib/browser.tcl:277 lib/choose_repository.tcl:215
-#: lib/choose_repository.tcl:305 lib/choose_repository.tcl:315
-#: lib/choose_repository.tcl:811
+#: lib/browser.tcl:277 lib/choose_repository.tcl:391
+#: lib/choose_repository.tcl:482 lib/choose_repository.tcl:492
+#: lib/choose_repository.tcl:989
msgid "Browse"
msgstr "Sfoglia"
@@ -782,11 +782,12 @@ msgstr "La strategia di fusione '%s' non è supportata."
#: lib/checkout_op.tcl:239
#, tcl-format
msgid "Failed to update '%s'."
-msgstr "Aggiornamento di '%s' fallito."
+msgstr "Impossibile aggiornare '%s'."
#: lib/checkout_op.tcl:251
msgid "Staging area (index) is already locked."
-msgstr "L'area di preparazione per una nuova revisione (indice) è già bloccata."
+msgstr ""
+"L'area di preparazione per una nuova revisione (indice) è già bloccata."
#: lib/checkout_op.tcl:266
msgid ""
@@ -801,7 +802,7 @@ msgstr ""
"\n"
"Un altro programma Git ha modificato questo archivio dall'ultima analisi. "
"Bisogna effettuare una nuova analisi prima di poter cambiare il ramo "
-"corrente.\n"
+"attuale.\n"
"\n"
"La nuova analisi comincerà ora.\n"
@@ -870,7 +871,7 @@ msgid ""
"\n"
"This should not have occurred. %s will now close and give up."
msgstr ""
-"Preparazione ramo corrente fallita.\n"
+"Impossibile preparare il ramo attuale.\n"
"\n"
"Questa directory di lavoro è stata convertita solo parzialmente. I file sono "
"stati aggiornati correttamente, ma l'aggiornamento di un file di Git ha "
@@ -902,214 +903,230 @@ msgstr ""
"Questo è un testo d'esempio.\n"
"Se ti piace questo testo, può essere il carattere giusto."
-#: lib/choose_repository.tcl:25
+#: lib/choose_repository.tcl:27
msgid "Git Gui"
msgstr "Git Gui"
-#: lib/choose_repository.tcl:69 lib/choose_repository.tcl:204
+#: lib/choose_repository.tcl:80 lib/choose_repository.tcl:380
msgid "Create New Repository"
msgstr "Crea nuovo archivio"
-#: lib/choose_repository.tcl:74 lib/choose_repository.tcl:291
+#: lib/choose_repository.tcl:86
+msgid "New..."
+msgstr "Nuovo..."
+
+#: lib/choose_repository.tcl:93 lib/choose_repository.tcl:468
msgid "Clone Existing Repository"
msgstr "Clona archivio esistente"
-#: lib/choose_repository.tcl:79 lib/choose_repository.tcl:800
+#: lib/choose_repository.tcl:99
+msgid "Clone..."
+msgstr "Clona..."
+
+#: lib/choose_repository.tcl:106 lib/choose_repository.tcl:978
msgid "Open Existing Repository"
msgstr "Apri archivio esistente"
-#: lib/choose_repository.tcl:91
-msgid "Next >"
-msgstr "Successivo >"
+#: lib/choose_repository.tcl:112
+msgid "Open..."
+msgstr "Apri..."
+
+#: lib/choose_repository.tcl:125
+msgid "Recent Repositories"
+msgstr "Archivi recenti"
+
+#: lib/choose_repository.tcl:131
+msgid "Open Recent Repository:"
+msgstr "Apri archivio recente:"
-#: lib/choose_repository.tcl:152
+#: lib/choose_repository.tcl:294
#, tcl-format
msgid "Location %s already exists."
msgstr "La posizione %s esiste già."
-#: lib/choose_repository.tcl:158 lib/choose_repository.tcl:165
-#: lib/choose_repository.tcl:172
+#: lib/choose_repository.tcl:300 lib/choose_repository.tcl:307
+#: lib/choose_repository.tcl:314
#, tcl-format
msgid "Failed to create repository %s:"
msgstr "Impossibile creare l'archivio %s:"
-#: lib/choose_repository.tcl:209 lib/choose_repository.tcl:309
+#: lib/choose_repository.tcl:385 lib/choose_repository.tcl:486
msgid "Directory:"
msgstr "Directory:"
-#: lib/choose_repository.tcl:238 lib/choose_repository.tcl:363
-#: lib/choose_repository.tcl:834
+#: lib/choose_repository.tcl:415 lib/choose_repository.tcl:544
+#: lib/choose_repository.tcl:1013
msgid "Git Repository"
msgstr "Archivio Git"
-#: lib/choose_repository.tcl:253 lib/choose_repository.tcl:260
+#: lib/choose_repository.tcl:430 lib/choose_repository.tcl:437
#, tcl-format
msgid "Directory %s already exists."
msgstr "La directory %s esiste già."
-#: lib/choose_repository.tcl:265
+#: lib/choose_repository.tcl:442
#, tcl-format
msgid "File %s already exists."
msgstr "Il file %s esiste già."
-#: lib/choose_repository.tcl:286
+#: lib/choose_repository.tcl:463
msgid "Clone"
msgstr "Clona"
-#: lib/choose_repository.tcl:299
+#: lib/choose_repository.tcl:476
msgid "URL:"
msgstr "URL:"
-#: lib/choose_repository.tcl:319
+#: lib/choose_repository.tcl:496
msgid "Clone Type:"
msgstr "Tipo di clone:"
-#: lib/choose_repository.tcl:325
+#: lib/choose_repository.tcl:502
msgid "Standard (Fast, Semi-Redundant, Hardlinks)"
msgstr "Standard (veloce, semi-ridondante, con hardlink)"
-#: lib/choose_repository.tcl:331
+#: lib/choose_repository.tcl:508
msgid "Full Copy (Slower, Redundant Backup)"
msgstr "Copia completa (più lento, backup ridondante)"
-#: lib/choose_repository.tcl:337
+#: lib/choose_repository.tcl:514
msgid "Shared (Fastest, Not Recommended, No Backup)"
msgstr "Shared (il più veloce, non raccomandato, nessun backup)"
-#: lib/choose_repository.tcl:369 lib/choose_repository.tcl:418
-#: lib/choose_repository.tcl:560 lib/choose_repository.tcl:630
-#: lib/choose_repository.tcl:840 lib/choose_repository.tcl:848
+#: lib/choose_repository.tcl:550 lib/choose_repository.tcl:597
+#: lib/choose_repository.tcl:738 lib/choose_repository.tcl:808
+#: lib/choose_repository.tcl:1019 lib/choose_repository.tcl:1027
#, tcl-format
msgid "Not a Git repository: %s"
msgstr "%s non è un archivio Git."
-#: lib/choose_repository.tcl:405
+#: lib/choose_repository.tcl:586
msgid "Standard only available for local repository."
msgstr "Standard è disponibile solo per archivi locali."
-#: lib/choose_repository.tcl:409
+#: lib/choose_repository.tcl:590
msgid "Shared only available for local repository."
msgstr "Shared è disponibile solo per archivi locali."
-#: lib/choose_repository.tcl:439
+#: lib/choose_repository.tcl:617
msgid "Failed to configure origin"
msgstr "Impossibile configurare origin"
-#: lib/choose_repository.tcl:451
+#: lib/choose_repository.tcl:629
msgid "Counting objects"
msgstr "Calcolo oggetti"
-#: lib/choose_repository.tcl:452
+#: lib/choose_repository.tcl:630
msgid "buckets"
msgstr ""
-#: lib/choose_repository.tcl:476
+#: lib/choose_repository.tcl:654
#, tcl-format
msgid "Unable to copy objects/info/alternates: %s"
msgstr "Impossibile copiare oggetti/info/alternate: %s"
-#: lib/choose_repository.tcl:512
+#: lib/choose_repository.tcl:690
#, tcl-format
msgid "Nothing to clone from %s."
msgstr "Niente da clonare da %s."
-#: lib/choose_repository.tcl:514 lib/choose_repository.tcl:728
-#: lib/choose_repository.tcl:740
+#: lib/choose_repository.tcl:692 lib/choose_repository.tcl:906
+#: lib/choose_repository.tcl:918
msgid "The 'master' branch has not been initialized."
msgstr "Il ramo 'master' non è stato inizializzato."
-#: lib/choose_repository.tcl:527
+#: lib/choose_repository.tcl:705
msgid "Hardlinks are unavailable. Falling back to copying."
msgstr "Impossibile utilizzare gli hardlink. Si ricorrerà alla copia."
-#: lib/choose_repository.tcl:539
+#: lib/choose_repository.tcl:717
#, tcl-format
msgid "Cloning from %s"
msgstr "Clonazione da %s"
-#: lib/choose_repository.tcl:570
+#: lib/choose_repository.tcl:748
msgid "Copying objects"
msgstr "Copia degli oggetti"
-#: lib/choose_repository.tcl:571
+#: lib/choose_repository.tcl:749
msgid "KiB"
msgstr "KiB"
-#: lib/choose_repository.tcl:595
+#: lib/choose_repository.tcl:773
#, tcl-format
msgid "Unable to copy object: %s"
msgstr "Impossibile copiare oggetto: %s"
-#: lib/choose_repository.tcl:605
+#: lib/choose_repository.tcl:783
msgid "Linking objects"
msgstr "Collegamento oggetti"
-#: lib/choose_repository.tcl:606
+#: lib/choose_repository.tcl:784
msgid "objects"
msgstr "oggetti"
-#: lib/choose_repository.tcl:614
+#: lib/choose_repository.tcl:792
#, tcl-format
msgid "Unable to hardlink object: %s"
msgstr "Hardlink impossibile sull'oggetto: %s"
-#: lib/choose_repository.tcl:669
+#: lib/choose_repository.tcl:847
msgid "Cannot fetch branches and objects. See console output for details."
msgstr ""
"Impossibile recuperare rami e oggetti. Controllare i dettagli forniti dalla "
"console."
-#: lib/choose_repository.tcl:680
+#: lib/choose_repository.tcl:858
msgid "Cannot fetch tags. See console output for details."
msgstr ""
"Impossibile recuperare le etichette. Controllare i dettagli forniti dalla "
"console."
-#: lib/choose_repository.tcl:704
+#: lib/choose_repository.tcl:882
msgid "Cannot determine HEAD. See console output for details."
msgstr ""
"Impossibile determinare HEAD. Controllare i dettagli forniti dalla console."
-#: lib/choose_repository.tcl:713
+#: lib/choose_repository.tcl:891
#, tcl-format
msgid "Unable to cleanup %s"
msgstr "Impossibile ripulire %s"
-#: lib/choose_repository.tcl:719
+#: lib/choose_repository.tcl:897
msgid "Clone failed."
-msgstr "Clonazione fallita."
+msgstr "Clonazione non riuscita."
-#: lib/choose_repository.tcl:726
+#: lib/choose_repository.tcl:904
msgid "No default branch obtained."
msgstr "Non è stato trovato un ramo predefinito."
-#: lib/choose_repository.tcl:737
+#: lib/choose_repository.tcl:915
#, tcl-format
msgid "Cannot resolve %s as a commit."
msgstr "Impossibile risolvere %s come una revisione."
-#: lib/choose_repository.tcl:749
+#: lib/choose_repository.tcl:927
msgid "Creating working directory"
msgstr "Creazione directory di lavoro"
-#: lib/choose_repository.tcl:750 lib/index.tcl:15 lib/index.tcl:80
-#: lib/index.tcl:149
+#: lib/choose_repository.tcl:928 lib/index.tcl:65 lib/index.tcl:127
+#: lib/index.tcl:193
msgid "files"
msgstr "file"
-#: lib/choose_repository.tcl:779
+#: lib/choose_repository.tcl:957
msgid "Initial file checkout failed."
-msgstr "Attivazione iniziale impossibile."
+msgstr "Attivazione iniziale non riuscita."
-#: lib/choose_repository.tcl:795
+#: lib/choose_repository.tcl:973
msgid "Open"
msgstr "Apri"
-#: lib/choose_repository.tcl:805
+#: lib/choose_repository.tcl:983
msgid "Repository:"
msgstr "Archivio:"
-#: lib/choose_repository.tcl:854
+#: lib/choose_repository.tcl:1033
#, tcl-format
msgid "Failed to open repository %s:"
msgstr "Impossibile accedere all'archivio %s:"
@@ -1164,8 +1181,8 @@ msgid ""
msgstr ""
"Non c'è niente da correggere.\n"
"\n"
-"Stai per creare la revisione iniziale. Non esiste una revisione "
-"precedente da correggere.\n"
+"Stai per creare la revisione iniziale. Non esiste una revisione precedente "
+"da correggere.\n"
#: lib/commit.tcl:18
msgid ""
@@ -1242,8 +1259,8 @@ msgid ""
msgstr ""
"Nessuna modifica per la nuova revisione.\n"
"\n"
-"Devi preparare per una nuova revisione almeno 1 file prima di effettuare questa "
-"operazione.\n"
+"Devi preparare per una nuova revisione almeno 1 file prima di effettuare "
+"questa operazione.\n"
#: lib/commit.tcl:183
msgid ""
@@ -1265,12 +1282,12 @@ msgstr ""
#: lib/commit.tcl:257
msgid "write-tree failed:"
-msgstr "write-tree fallito:"
+msgstr "write-tree non riuscito:"
#: lib/commit.tcl:275
#, tcl-format
msgid "Commit %s appears to be corrupt"
-msgstr "La revisione %s sembra essere corrotta"
+msgstr "La revisione %s sembra essere danneggiata"
#: lib/commit.tcl:279
msgid ""
@@ -1297,11 +1314,11 @@ msgstr "attenzione: Tcl non supporta la codifica '%s'."
#: lib/commit.tcl:317
msgid "commit-tree failed:"
-msgstr "commit-tree fallito:"
+msgstr "commit-tree non riuscito:"
#: lib/commit.tcl:339
msgid "update-ref failed:"
-msgstr "update-ref fallito:"
+msgstr "update-ref non riuscito:"
#: lib/commit.tcl:430
#, tcl-format
@@ -1318,7 +1335,7 @@ msgstr "Successo"
#: lib/console.tcl:196
msgid "Error: Command Failed"
-msgstr "Errore: comando fallito"
+msgstr "Errore: comando non riuscito"
#: lib/database.tcl:43
msgid "Number of loose objects"
@@ -1429,7 +1446,7 @@ msgstr "Errore nel caricamento delle differenze:"
#: lib/diff.tcl:302
msgid "Failed to unstage selected hunk."
-msgstr "La sezione scelta è ancora pronta per una nuova revisione."
+msgstr "Impossibile rimuovere la sezione scelta dalla nuova revisione."
#: lib/diff.tcl:309
msgid "Failed to stage selected hunk."
@@ -1445,35 +1462,60 @@ msgstr "attenzione"
#: lib/error.tcl:81
msgid "You must correct the above errors before committing."
-msgstr "Bisogna correggere gli errori suddetti prima di creare una nuova revisione."
+msgstr ""
+"Bisogna correggere gli errori suddetti prima di creare una nuova revisione."
-#: lib/index.tcl:241
+#: lib/index.tcl:6
+msgid "Unable to unlock the index."
+msgstr "Impossibile sbloccare l'accesso all'indice"
+
+#: lib/index.tcl:15
+msgid "Index Error"
+msgstr "Errore nell'indice"
+
+#: lib/index.tcl:21
+msgid ""
+"Updating the Git index failed. A rescan will be automatically started to "
+"resynchronize git-gui."
+msgstr ""
+"Impossibile aggiornare l'indice. Ora sarà avviata una nuova analisi che "
+"aggiornerà git-gui."
+
+#: lib/index.tcl:27
+msgid "Continue"
+msgstr "Continua"
+
+#: lib/index.tcl:31
+msgid "Unlock Index"
+msgstr "Sblocca l'accesso all'indice"
+
+#: lib/index.tcl:282
#, tcl-format
msgid "Unstaging %s from commit"
msgstr "%s non farà parte della prossima revisione"
-#: lib/index.tcl:285
+#: lib/index.tcl:326
#, tcl-format
msgid "Adding %s"
msgstr "Aggiunta di %s in corso"
-#: lib/index.tcl:340
+#: lib/index.tcl:381
#, tcl-format
msgid "Revert changes in file %s?"
msgstr "Annullare le modifiche nel file %s?"
-#: lib/index.tcl:342
+#: lib/index.tcl:383
#, tcl-format
msgid "Revert changes in these %i files?"
msgstr "Annullare le modifiche in questi %i file?"
-#: lib/index.tcl:348
+#: lib/index.tcl:389
msgid "Any unstaged changes will be permanently lost by the revert."
msgstr ""
"Tutte le modifiche non preparate per una nuova revisione saranno perse per "
"sempre."
-#: lib/index.tcl:351
+#: lib/index.tcl:392
msgid "Do Nothing"
msgstr "Non fare niente"
@@ -1519,8 +1561,8 @@ msgstr ""
"Il file %s ha dei conflitti.\n"
"\n"
"Bisogna risolvere i conflitti, preparare il file per una nuova revisione ed "
-"infine crearla per completare la fusione corrente. Solo a questo punto "
-"potrai iniziare un'altra fusione.\n"
+"infine crearla per completare la fusione attuale. Solo a questo punto potrai "
+"iniziare un'altra fusione.\n"
#: lib/merge.tcl:54
#, tcl-format
@@ -1536,9 +1578,9 @@ msgstr ""
"\n"
"Il file %s è stato modificato.\n"
"\n"
-"Bisogna completare la creazione della revisione corrente prima di iniziare una fusione. "
-"In questo modo sarà più facile interrompere una fusione non riuscita, nel "
-"caso ce ne fosse bisogno.\n"
+"Bisogna completare la creazione della revisione attuale prima di iniziare "
+"una fusione. In questo modo sarà più facile interrompere una fusione non "
+"riuscita, nel caso ce ne fosse bisogno.\n"
#: lib/merge.tcl:106
#, tcl-format
@@ -1556,7 +1598,7 @@ msgstr "Fusione completata con successo."
#: lib/merge.tcl:133
msgid "Merge failed. Conflict resolution is required."
-msgstr "Fusione fallita. Bisogna risolvere i conflitti."
+msgstr "Fusione non riuscita. Bisogna risolvere i conflitti."
#: lib/merge.tcl:158
#, tcl-format
@@ -1587,10 +1629,10 @@ msgid ""
msgstr ""
"Interrompere fusione?\n"
"\n"
-"L'interruzione della fusione corrente causerà la perdita di *TUTTE* le "
+"L'interruzione della fusione attuale causerà la perdita di *TUTTE* le "
"modifiche non ancora presenti nell'archivio.\n"
"\n"
-"Continuare con l'interruzione della fusione corrente?"
+"Continuare con l'interruzione della fusione attuale?"
#: lib/merge.tcl:228
msgid ""
@@ -1605,7 +1647,7 @@ msgstr ""
"L'annullamento delle modifiche causerà la perdita di *TUTTE* le modifiche "
"non ancora presenti nell'archivio.\n"
"\n"
-"Continuare con l'annullamento delle modifiche correnti?"
+"Continuare con l'annullamento delle modifiche attuali?"
#: lib/merge.tcl:239
msgid "Aborting"
@@ -1613,7 +1655,7 @@ msgstr "Interruzione in corso"
#: lib/merge.tcl:266
msgid "Abort failed."
-msgstr "Interruzione fallita."
+msgstr "Interruzione non riuscita."
#: lib/merge.tcl:268
msgid "Abort completed. Ready."
@@ -1621,7 +1663,7 @@ msgstr "Interruzione completata. Pronto."
#: lib/option.tcl:82
msgid "Restore Defaults"
-msgstr "Ripristina predefiniti"
+msgstr "Ripristina valori predefiniti"
#: lib/option.tcl:86
msgid "Save"
@@ -1763,8 +1805,8 @@ msgid ""
"One or more of the merge tests failed because you have not fetched the "
"necessary commits. Try fetching from %s first."
msgstr ""
-"Una o più verifiche di fusione sono fallite perché mancano le revisioni "
-"necessarie. Prova prima a recuperarle da %s."
+"Impossibile verificare una o più fusioni: mancano le revisioni necessarie. "
+"Prova prima a recuperarle da %s."
#: lib/remote_branch_delete.tcl:207
msgid "Please select one or more branches to delete."
@@ -1794,18 +1836,18 @@ msgstr "Nessun archivio selezionato."
msgid "Scanning %s..."
msgstr "Analisi in corso %s..."
-#: lib/shortcut.tcl:26 lib/shortcut.tcl:74
-msgid "Cannot write script:"
-msgstr "Impossibile scrivere script:"
+#: lib/shortcut.tcl:20 lib/shortcut.tcl:61
+msgid "Cannot write shortcut:"
+msgstr "Impossibile scrivere shortcut:"
-#: lib/shortcut.tcl:149
+#: lib/shortcut.tcl:136
msgid "Cannot write icon:"
msgstr "Impossibile scrivere icona:"
#: lib/status_bar.tcl:83
#, tcl-format
msgid "%s ... %*i of %*i %s (%3i%%)"
-msgstr "%s ... %*i di %*i %s (%3i%%)"
+msgstr "%1$s ... %6$s: %2$*i di %4$*i (%7$3i%%)"
#: lib/transport.tcl:6
#, tcl-format
@@ -1869,4 +1911,3 @@ msgstr "Utilizza 'thin pack' (per connessioni lente)"
#: lib/transport.tcl:168
msgid "Include tags"
msgstr "Includi etichette"
-
--
1.5.3.5
^ permalink raw reply related
* Re: Addendum to "MaintNotes"
From: Junio C Hamano @ 2007-11-22 10:42 UTC (permalink / raw)
To: Jeff King; +Cc: Git Mailing List, Ping Yin
In-Reply-To: <20071122103600.GA10389@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
> Thanks for writing this, Junio. It is always interesting to see git
> workflows discussed in detail, and yours is more interesting than most.
Now I've written this down, I can sleep well at night, knowing
that I can safely be hit by a bus any day ;-)
> On Wed, Nov 21, 2007 at 04:32:55PM -0800, Junio C Hamano wrote:
>
>> - Obviously correct fixes that pertain to the tip of 'master'
>> are directly applied to 'master'.
>>
>> This step is done with "git am".
>>
>> $ git checkout maint ;# or "git checkout maint"
>
> One of those "maints" should probably be "master".
Heh, thanks. I am hoping somebody do grammartical copyediting
and throw back a patch to add it in Documentation/howto.
^ permalink raw reply
* Re: Temporary directories getting errantly added into trees
From: Jeff King @ 2007-11-22 10:43 UTC (permalink / raw)
To: Sam Vilain; +Cc: Git Mailing List
In-Reply-To: <4744FCD9.7020102@vilain.net>
On Thu, Nov 22, 2007 at 04:51:53PM +1300, Sam Vilain wrote:
> I think it would be a good thing for all if you had to work very hard to
> put files like this in the tree, or perhaps it would be better to go
> through and make all the tools that create these temporary directories
> create them under .git instead.
Personally, I think they should all go under .git with very descriptive,
public names (the name ".dotest" is not really hidden from the user, and
I have never really been able to make sense of it. Surely there is some
more useful name?).
But I think there is the real possibility of damaging user scripts which
make assumptions based on the presence of .dotest (to see if we're in a
git-am or rebase session, etc). I have no idea how common such scripts
are.
-Peff
^ permalink raw reply
* Re: [PATCH 2/4] Teach git-add--interactive to accept a file path to patch
From: Wincent Colaiuta @ 2007-11-22 10:44 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Jeff King, git
In-Reply-To: <7v8x4q7gns.fsf@gitster.siamese.dyndns.org>
El 22/11/2007, a las 10:50, Junio C Hamano escribió:
> Jeff King <peff@peff.net> writes:
>
>> On Wed, Nov 21, 2007 at 04:18:57PM -0800, Junio C Hamano wrote:
>>
>>> What I meant was that if "git add -i" (unrestricted) shows paths
>>> from a set A, "git add -i paths..." should show paths from a
>>> subset of the set A and that subset should be defined with the
>>> existing ls-files pathspec semantics.
>>
>> Ah, I think that is definitely the right behavior. But it does
>> raise one
>> more question: is going right into the 'add hunk' interface the
>> correct
>> behavior, or is that an orthogonal issue?
>
> I am moderately negative about "paths imply jump to patch
> subcommand". An option to git-add--interactive that tells which
> subcommand to initially choose is probably acceptable, though.
Let me explain a little why I started this series. Basically, given
file "foo" which had multiple changes in it I wanted to stage only
selected hunks; so I typed:
git add -i foo
Which of course didn't work. What I wanted to do was jump straight
into the patch subcommand (hence this series).
If I wanted to add entire files I would have just typed:
git add foo
So I don't think the proposal to add "-p" (jump to "patch" subcommand)
and "-a" (jump to "add untracked" subcommand) are a very good idea,
seeing as we already have builtin-add for adding entire files.
Cheers,
Wincent
^ permalink raw reply
* Re: Addendum to "MaintNotes"
From: David Kastrup @ 2007-11-22 10:48 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Jeff King, Git Mailing List, Ping Yin
In-Reply-To: <7vve7u5zoz.fsf@gitster.siamese.dyndns.org>
Junio C Hamano <gitster@pobox.com> writes:
> Jeff King <peff@peff.net> writes:
>
>> Thanks for writing this, Junio. It is always interesting to see git
>> workflows discussed in detail, and yours is more interesting than most.
>
> Now I've written this down, I can sleep well at night, knowing
> that I can safely be hit by a bus any day ;-)
So regarding git development, a bus error will no longer imply a core
dump?
--
David Kastrup, Kriemhildstr. 15, 44793 Bochum
^ permalink raw reply
* Re: [PATCH v2] builtin-commit: Include the diff in the commit message when verbose.
From: Johannes Schindelin @ 2007-11-22 10:52 UTC (permalink / raw)
To: Kristian Høgsberg; +Cc: gitster, git
In-Reply-To: <1195700089-8326-1-git-send-email-krh@redhat.com>
[-- Attachment #1: Type: TEXT/PLAIN, Size: 834 bytes --]
Hi,
On Wed, 21 Nov 2007, Kristian Høgsberg wrote:
> @@ -758,6 +758,12 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
> rollback_index_files();
> exit(1);
> }
> +
> + /* Truncate the message just before the diff, if any. */
> + p = strstr(sb.buf, "\ndiff --git a/");
> + if (p != NULL)
> + strbuf_setlen(&sb, p - sb.buf);
> +
Is this related to the change in wt_status? If so, wouldn't we want to
suppress the diff, instead of generating it, and then killing it later?
Besides, you'd want to leave the \n there: strbuf_setlen(&sb, p + 1 -
sb.buf);
> + /* Sigh, the entire diff machinery is hardcoded to output to
> + * stdout. Do the dup-dance...*/
I wonder how much effort it would be to change that. Not that it would
help too much, since we want the output in a strbuf anyway.
Ciao,
Dscho
^ permalink raw reply
* Re: Temporary directories getting errantly added into trees
From: Johannes Schindelin @ 2007-11-22 10:55 UTC (permalink / raw)
To: Sam Vilain; +Cc: Git Mailing List
In-Reply-To: <4744FCD9.7020102@vilain.net>
Hi,
On Thu, 22 Nov 2007, Sam Vilain wrote:
> I just got through a rather nasty debugging session with git-rebase,
> which relies on a .dotest directory. Turns out that .dotest was
> accidentally added to the tree in the history of the commit that was
> being rebased onto.
While we're at it, could we change the name so that it is .git/rebase, and
not .dotest or .git/.dotest-merge?
Yes, I know, existing tools could rely on the location. But then, I do
not think that tools should be allowed to be _that_ married to particular
implementations. And indeed, I see no reason why a tool should access
.dotest, except for accessing .dotest/patch, and then it will be very
obvious where it fails.
But I don't know about QGit, StGit, etc...
Ciao,
Dscho
^ permalink raw reply
* [PATCH 5/5] Added diff hunk coloring to git-add--interactive
From: Dan Zwell @ 2007-11-22 10:56 UTC (permalink / raw)
To: Git Mailing List
Cc: Jeff King, Junio C Hamano, Shawn O. Pearce, Wincent Colaiuta,
Jonathan del Strother, Johannes Schindelin, Frank Lichtenheld,
Jakub Narebski
In-Reply-To: <20071110180109.34febc3f@paradox.zwell.net>
Added and integrated method "color_diff_hunk", which colors
lines, and returns them in an array. Coloring bad whitespace is
not yet supported.
Signed-off-by: Dan Zwell <dzwell@zwell.net>
---
git-add--interactive.perl | 93 ++++++++++++++++++++++++++++++++++----------
1 files changed, 72 insertions(+), 21 deletions(-)
diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index f76f008..ba9430c 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -4,9 +4,12 @@ use strict;
use Git;
my ($use_color, $prompt_color, $header_color, $help_color, $normal_color);
+my ($diff_use_color, $new_color, $old_color, $fraginfo_color,
+ $metainfo_color, $whitespace_color);
{
my $repo = Git->repository();
+
# set interactive color options:
my $color_config = $repo->config('color.interactive');
$use_color = 0;
@@ -21,27 +24,55 @@ my ($use_color, $prompt_color, $header_color, $help_color, $normal_color);
$use_color = 1;
}
- if ($use_color) {
+ # set diff color options
+ my $diff_color_config = $repo->config('color.diff');
+ if (!defined $diff_color_config) {
+ $diff_use_color = 0;
+ }
+ elsif ($diff_color_config =~ /true|always/) {
+ $diff_use_color = 1;
+ }
+ elsif ($diff_color_config eq 'auto' && -t STDOUT &&
+ $ENV{'TERM'} ne 'dumb') {
+ $diff_use_color = 1;
+ }
+
+ # load color library if needed
+ if ($use_color || $diff_use_color) {
eval { require Term::ANSIColor; };
if ($@) {
# library did not load.
$use_color = 0;
+ $diff_use_color = 0;
}
- else { # set up colors
- # Grab the 3 main colors in git color string format, with sane
- # (visible) defaults:
- $prompt_color = Git::color_to_ansi_code(
- scalar $repo->config_default('color.interactive.prompt',
- 'bold blue'));
- $header_color = Git::color_to_ansi_code(
- scalar $repo->config_default('color.interactive.header',
- 'bold'));
- $help_color = Git::color_to_ansi_code(
- scalar $repo->config_default('color.interactive.help',
- 'red bold'));
+ }
- $normal_color = Git::color_to_ansi_code('normal');
- }
+ # convenience function:
+ sub get_color {
+ my ($key, $default) = @_;
+ return Git::color_to_ansi_code(
+ scalar $repo->config_default($key, $default));
+ }
+ # set interactive colors
+ if ($use_color) {
+ # Grab the 3 main colors in git color string format, with sane
+ # (visible) defaults:
+ $prompt_color = get_color('color.interactive.prompt', 'bold blue');
+ $header_color = get_color('color.interactive.header', 'bold');
+ $help_color = get_color('color.interactive.help', 'red bold');
+ $normal_color = Git::color_to_ansi_code('normal');
+ }
+
+ # set diff colors
+ if ($diff_use_color) {
+ $new_color = get_color('color.diff.new', 'green');
+ $old_color = get_color('color.diff.old', 'red');
+ $fraginfo_color = get_color('color.diff.frag', 'cyan');
+ $metainfo_color = get_color('color.diff.meta', 'bold');
+ $normal_color = Git::color_to_ansi_code('normal');
+ # Not implemented:
+ #$whitespace_color = get_color('color.diff.whitespace',
+ #'normal red');
}
}
@@ -410,6 +441,30 @@ sub parse_diff {
return @hunk;
}
+sub color_diff_hunk {
+ # return the colored text, so that it can be passed to print()
+ my ($text) = @_;
+ if (!$diff_use_color) {
+ return @$text;
+ }
+
+ my @ret;
+ for (@$text) {
+ if (/^\+/) {
+ push @ret, colored($new_color, $_);
+ } elsif (/^\-/) {
+ push @ret, colored($old_color, $_);
+ } elsif (/^\@/) {
+ push @ret, colored($fraginfo_color, $_);
+ } elsif (/^ /) {
+ push @ret, colored($normal_color, $_);
+ } else {
+ push @ret, colored($metainfo_color, $_);
+ }
+ }
+ return @ret;
+}
+
sub hunk_splittable {
my ($text) = @_;
@@ -632,9 +687,7 @@ sub patch_update_cmd {
my ($ix, $num);
my $path = $it->{VALUE};
my ($head, @hunk) = parse_diff($path);
- for (@{$head->{TEXT}}) {
- print;
- }
+ print color_diff_hunk($head->{TEXT});
$num = scalar @hunk;
$ix = 0;
@@ -676,9 +729,7 @@ sub patch_update_cmd {
if (hunk_splittable($hunk[$ix]{TEXT})) {
$other .= '/s';
}
- for (@{$hunk[$ix]{TEXT}}) {
- print;
- }
+ print color_diff_hunk($hunk[$ix]{TEXT});
print colored($prompt_color, "Stage this hunk [y/n/a/d$other/?]? ");
my $line = <STDIN>;
if ($line) {
--
1.5.3.5.565.gf0b83-dirty
^ permalink raw reply related
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