1. Augie Fackler
  2. hgsubversion
  3. Issues
Issue #199 new

SVN externals remove and refetch if revision is specified.

Cliff Dyer
created an issue

If an external does not specify a revision number, hg svn updateexternals updates the code gracefully, but if a revision has been specified, it deletes the old code, and re-fetches it. This can cause severe slowdown on large externals. For instance:

{{{ $ hg svn updateexternals

updating external on contrib/anyjson@HEAD removing external contrib/pytz fetching external contrib/pytz@1 removing external contrib/beautiful_soup fetching external contrib/beautiful_soup@4 updating external on contrib/tagging@HEAD updating external on contrib/httplib2@HEAD }}}

Comments (6)

  1. Dominik Guder

    Hi,

    I checked this and this is true if you use pegrev in .hgsvnexternals file. If you you use -r <rev> instead the behavior should be as expected. So instead of:

    http://svn.example.com/beautiful_soup@4 contrib/beautiful_soup   (remove and fetch again)
    

    use either one from below:

    -r4 http://svn.example.com/beautiful_soup contrib/beautiful_soup
    contrib/beautiful_soup -r4 http://svn.example.com/beautiful_soup
    

    hth Dominik

  2. Anonymous

    Dominik,

    Thanks for the hint. We use -rn in our svn:externals property, but the .hgsvnexternals file I'm using is the autogenerated one. I haven't looked at it yet, but I'll try your alternate syntax when I get to work.

    Thanks, Cliff

  3. Anonymous

    I also had this problem (both for head as fixed revision numbers). I found the cause to be subtle formatting issuses of the URL: 1) CR/LF made comparison fail, the .hgsvnexternals file must use linux line endings 2) I had a trailing / on some of my externals

  4. Log in to comment