git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: git svn show-ignore is excrutiatingly slow

From
EWEric Wong <normalperson@yhbt.net>
Date
Oct 30, 2009, 06:39 UTC
Message-ID
<20091030063936.GA13527@dcvr.yhbt.net>
In-Reply-To
<20091028174307.GA5691@atlantic.linksys.moosehall>
Adam Spiers <git@adamspiers.org> wrote:
> Mail-Followup-To: git mailing list <git@vger.kernel.org>
Hi Adam, MFT is frowned upon here.
Show 13 quoted lines
> Something is badly wrong here ...
> 
> $ cd $svn_wd
> $ time svn propget -R svn:ignore >/dev/null
> svn propget -R svn:ignore > /dev/null  0.28s user 0.20s system 98% cpu 0.490 total
> $ cd $git_wd
> $ time git svn show-ignore > show-ignore.out
> git svn show-ignore > show-ignore.out  20.52s user 33.69s system 1% cpu 1:23:42.17 total
> 
> That's 10,000 times slower for what is effectively the same source
> tree!  Admittedly the svn propget was a "warm" run and took longer the
> first time around, but even so there are several orders of magnitude
> difference.

It's the difference between reading locally vs remotely. git svn always looks at the remote repository for this information. In your example, svn was looking at the working copy where it already has that information in an easily accessible form.

Try running svn against your repository URL instead for a comparison:
  time svn propget -R svn:ignore $SVN_URL >/dev/null
> I had a quick look at the code and it seemed to be doing the svn tree
> recursion itself via Git::SVN::prop_walk(), which might explain why.
> However I did not have time to dig deeper, so would welcome any ideas.

It would be possible to reconstruct the information given untouched copies of unhandled.log inside $GIT_DIR/svn/**. On the other hand, it does require running through the history of the project and I don't think it's worth it for an operation that should be rarely needed. I designed the output of "git svn show-ignore" be stored in $GIT_DIR/info/exclude

-- 
Eric Wong
Previous: Adam Spiers
Message 2 of 2 in “git svn show-ignore is excrutiatingly slow”
  1. Adam SpiersOct 28, 2009
  2. Eric WongOct 30, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.