git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Catalin Marinas" <catalin.marinas@gmail.com>
To: "Karl Hasselström" <kha@treskal.com>
Cc: git@vger.kernel.org
Subject: Re: [StGit PATCH 2/2] Write to a stack log when stack is modified
Date: Fri, 22 Feb 2008 14:05:55 +0000	[thread overview]
Message-ID: <b0943d9e0802220605t56257718p850c677a59671862@mail.gmail.com> (raw)
In-Reply-To: <20080221071819.GA8250@diana.vm.bytemark.co.uk>

On 21/02/2008, Karl Hasselström <kha@treskal.com> wrote:
> On 2008-02-20 22:46:48 +0000, Catalin Marinas wrote:
>
>  > The abstractions are really nice (and I still wonder how StGIT
>  > codebase increased that much when all I needed two years ago was a
>  > simple script-like application to reorder commits :-)).
>
>
> :-) I'll take some of the blame, but StGit was quite large already
>  when I started submitting patches to it.

Anyway, the new restructuring is much cleaner, though heavily OO and
some people might not like it (me not included).

>
>
>  > Anyway, I don't really like the idea of an additional commit (I
>  > don't even like the old patch log implementation) when the stack is
>  > modified. It needs some profiling but it has a visible impact on
>  > stacks with a big number of patches (my last kernel release at
>  > www.linux-arm.org/git had 80 patches and it takes a lot of time to
>  > push them).
>
>
> One thing to remember is that my patch stack log gets one new commit
>  per StGit operation, not one per changed patch. So if you push 80
>  patches with one command, that will give you just one commit on the
>  log. (If someone makes a scripts that calls push 80 times this won't
>  help, of course.)

Ah, I got it now. Indeed, it would be faster than the current
per-patch log. I no longer that worried :-)

>  > In my kernel repository I have several branches with many patches
>  > and, even after "git gc" and repacking, it is still slow (mainly
>  > because of git-read-tree but I'd like to reduce the number of calls
>  > to GIT).
>
>
> When you say "it's still slow", are you referring to the existing
>  per-patch log, my per-branch log, or just StGit in general?

I think it's more GIT in general. Checking the tree status takes some
time and a 3-way merge on a 512MB RAM machine with GIT using over
200MB gets a bit slow.

>  Have you noticed any difference between commands using the old and new
>  infrastructure (say, stg push vs. stg goto)? The latter should be
>  taking less time, due to touching the worktree only when necessary.

In the patch pushing functions, it now first calls simple_merge()
which is still a 3-way merge but without rename detection. The old
StGIT implementation was using "git-diff | git-apply" and falling back
to the recursive merge. Most of the patches apply cleanly and we don't
need the three-way merge which uses more RAM.

The "(modified)" information was also displayed for a three-way merge
(either read-tree or recursive-merge) but now it is only shown for the
recursive one. Correctly, merging git-read-tree modifies a patch as
well since it no longer applied cleanly. We could use this "modified"
feature to automatically export patches (some people asked for this in
the past, as means for backup in case of StGIT failures).

-- 
Catalin

  reply	other threads:[~2008-02-22 14:06 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-14  1:25 [StGit PATCH 0/2] Patch stack logging Karl Hasselström
2008-02-14  1:29 ` [StGit PATCH 1/2] Library functions for tree and blob manipulation Karl Hasselström
2008-02-14  1:32 ` [StGit PATCH 2/2] Write to a stack log when stack is modified Karl Hasselström
2008-02-20 22:46   ` Catalin Marinas
2008-02-21  7:18     ` Karl Hasselström
2008-02-22 14:05       ` Catalin Marinas [this message]
2008-02-22 14:56         ` Karl Hasselström
2008-02-22 15:58           ` Catalin Marinas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b0943d9e0802220605t56257718p850c677a59671862@mail.gmail.com \
    --to=catalin.marinas@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=kha@treskal.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).