Re: [QGit PATCH] Remove most ASSERT warnings in Git::setStatus

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 5/20/07, Michael <barra_cuda@xxxxxxxxxxxx> wrote:
"Marco Costalba" <mcostalba@xxxxxxxxx>:
> On 5/20/07, Michael <barra_cuda@xxxxxxxxxxxx> wrote:
> > Signed-off-by: Michele Ballabio <barra_cuda@xxxxxxxxxxxx>
> > ---
> >
> > ...is this correct?
> >
> >  src/git_startup.cpp |    2 +-
> >  1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/src/git_startup.cpp b/src/git_startup.cpp
> > index a99edba..17312f9 100644
> > --- a/src/git_startup.cpp
> > +++ b/src/git_startup.cpp
> > @@ -329,7 +329,7 @@ void Git::parseDiffFormatLine(RevFile& rf, SCRef line, int parNum) {
> >
> >                 // TODO rename/copy is not supported for combined merges
> >                 appendFileName(rf, line.section('\t', -1));
> > -               setStatus(rf, line.section(' ', 6, 6).left(1));
> > +               setStatus(rf, line.section('\t', -2, -2).right(1));
> >                 rf.mergeParent.append(parNum);
> >         } else { // faster parsing in normal case
> >

From diff-format.txt we have that an output line is formatted this way:

------------------------------------------------
in-place edit  :100644 100644 bcd1234... 0123456... M file0
copy-edit      :100644 100644 abcd123... 1234567... C68 file1 file2
rename-edit    :100644 100644 abcd123... 1234567... R86 file1 file3
create         :000000 100644 0000000... 1234567... A file4
delete         :100644 000000 1234567... 0000000... D file5
unmerged       :000000 000000 0000000... 0000000... U file6
------------------------------------------------

That is, from the left to the right:

. a colon.
. mode for "src"; 000000 if creation or unmerged.
. a space.
. mode for "dst"; 000000 if deletion or unmerged.
. a space.
. sha1 for "src"; 0\{40\} if creation or unmerged.
. a space.
. sha1 for "dst"; 0\{40\} if creation, unmerged or "look at work tree".
. a space.
. status, followed by optional "score" number.
. a tab or a NUL when '-z' option is used.
. path for "src"
. a tab or a NUL when '-z' option is used; only exists for C or R.
. path for "dst"; only exists for C or R.
. an LF or a NUL when '-z' option is used, to terminate the record.

So I rather would prefer something like

 line.section('\t', 0, 0).section(' ', -1, -1).left(1)

because we could have more then one file separated by a tab, so

line.section('\t', -2, -2).right(1)

it seems to me a little bit fragile. What do you think?

Also I don't understand why you consider the right most (right(1)),
instead of the left most character as the status.


Thanks
Marco
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux