Mercurial > hg
view tests/test-convert-svn-branches.t @ 33269:ead6749354e1
phabricator: try to fetch differential revisions in batch
Previously, we read Differential Revisions one by one by calling
`differential.query`.
Fetching them one by one is suboptimal. Unfortunately, there is no Conduit
API that allows us to get a stack of diffids using a single API call.
This patch tries to be smarter using a simple heuristic: when fetching D59
as a stack, previous IDs like D51, D52, D53, ..., D58 are likely belonging
to a same stack so just fetch them as well. Since `differential.query` only
returns cheap metadata without expensive diff content, it shouldn't be a big
problem for the server.
Using a test Phabricator instance, this patch reduces `phabread` reading a
10 patch stack from about 13 to 30 seconds to 8 seconds.
author | Jun Wu <quark@fb.com> |
---|---|
date | Tue, 04 Jul 2017 16:36:48 -0700 |
parents | 584044e5ad57 |
children | 46da52f4b820 |
line wrap: on
line source
#require svn svn-bindings $ cat >> $HGRCPATH <<EOF > [extensions] > convert = > EOF $ svnadmin create svn-repo $ svnadmin load -q svn-repo < "$TESTDIR/svn/branches.svndump" Convert trunk and branches $ cat > branchmap <<EOF > old3 newbranch > > > EOF $ hg convert --branchmap=branchmap --datesort -r 10 svn-repo A-hg initializing destination A-hg repository scanning source... sorting... converting... 10 init projA 9 hello 8 branch trunk, remove c and dir 7 change a 6 change b 5 move and update c 4 move and update c 3 change b again 2 move to old2 1 move back to old 0 last change to a Test template keywords $ hg -R A-hg log --template '{rev} {svnuuid}{svnpath}@{svnrev}\n' 10 644ede6c-2b81-4367-9dc8-d786514f2cde/trunk@10 9 644ede6c-2b81-4367-9dc8-d786514f2cde/branches/old@9 8 644ede6c-2b81-4367-9dc8-d786514f2cde/branches/old2@8 7 644ede6c-2b81-4367-9dc8-d786514f2cde/branches/old@7 6 644ede6c-2b81-4367-9dc8-d786514f2cde/trunk@6 5 644ede6c-2b81-4367-9dc8-d786514f2cde/branches/old@6 4 644ede6c-2b81-4367-9dc8-d786514f2cde/branches/old@5 3 644ede6c-2b81-4367-9dc8-d786514f2cde/trunk@4 2 644ede6c-2b81-4367-9dc8-d786514f2cde/branches/old@3 1 644ede6c-2b81-4367-9dc8-d786514f2cde/trunk@2 0 644ede6c-2b81-4367-9dc8-d786514f2cde/trunk@1 Convert again $ hg convert --branchmap=branchmap --datesort svn-repo A-hg scanning source... sorting... converting... 0 branch trunk@1 into old3 $ cd A-hg $ hg log -G --template 'branch={branches} {rev} {desc|firstline} files: {files}\n' o branch=newbranch 11 branch trunk@1 into old3 files: | | o branch= 10 last change to a files: a | | | | o branch=old 9 move back to old files: | | | | | o branch=old2 8 move to old2 files: | | | | | o branch=old 7 change b again files: b | | | | o | branch= 6 move and update c files: b | | | | | o branch=old 5 move and update c files: c | | | | | o branch=old 4 change b files: b | | | | o | branch= 3 change a files: a | | | | | o branch=old 2 branch trunk, remove c and dir files: c | |/ | o branch= 1 hello files: a b c dir/e |/ o branch= 0 init projA files: $ hg branches newbranch 11:a6d7cc050ad1 default 10:6e2b33404495 old 9:93c4b0f99529 old2 8:b52884d7bead (inactive) $ hg tags -q tip $ cd .. Test hg failing to call itself $ HG=foobar hg convert svn-repo B-hg 2>&1 | grep abort abort: Mercurial failed to run itself, check hg executable is in PATH Convert 'trunk' to branch other than 'default' $ cat > branchmap <<EOF > default hgtrunk > > > EOF $ hg convert --branchmap=branchmap --datesort -r 10 svn-repo C-hg initializing destination C-hg repository scanning source... sorting... converting... 10 init projA 9 hello 8 branch trunk, remove c and dir 7 change a 6 change b 5 move and update c 4 move and update c 3 change b again 2 move to old2 1 move back to old 0 last change to a $ cd C-hg $ hg branches --template '{branch}\n' hgtrunk old old2 $ cd ..