tests/test-convert-bzr-114.t
author Gregory Szorc <gregory.szorc@gmail.com>
Wed, 08 Jul 2015 16:19:09 -0700
changeset 25761 0d37b9b21467
parent 22046 7a9cbb315d84
child 26066 89872688893f
permissions -rw-r--r--
hg: support for auto sharing stores when cloning Many 3rd party consumers of Mercurial have created wrappers to essentially perform clone+share as a single operation. This is especially popular in automated processes like continuous integration systems. The Jenkins CI software and Mozilla's Firefox release automation infrastructure have both implemented custom code that effectively perform clone+share. The common use case here is that clients want to obtain N>1 checkouts while minimizing disk space and network requirements. Furthermore, they often don't care that a clone is an exact mirror of a remote: they are simply looking to obtain checkouts of specific revisions. When multiple third parties implement a similar feature, it's a good sign that the feature is worth adding to the core product. This patch adds support for an easy-to-use clone+share feature. The internal "clone" function now accepts options to control auto sharing during clone. When the auto share mode is active, a store will be created/updated under the base directory specified and a new repository pointing to the shared store will be created at the path specified by the user. The share extension has grown the ability to pass these options into the clone command/function. No command line options for this feature are added because we don't feel the feature will be popular enough to warrant their existence. There are two modes for auto share mode. In the default mode, the shared repo is derived from the first changeset (rev 0) in the remote repository. This enables related repositories existing at different URLs to automatically use the same storage. In environments that operate several repositories (separate repo for branch/head/bookmark or separate repo per user), this has the potential to drastically reduce storage and network requirements. In the other mode, the name is derived from the remote's path/URL.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22046
7a9cbb315d84 tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents: 12513
diff changeset
     1
#require bzr114
12513
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
     2
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
     3
  $ . "$TESTDIR/bzr-definitions"
8126
13b36eb14324 convert/bzr: handle files replaced by directories (issue1623)
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     4
12513
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
     5
The file/directory replacement can only be reproduced on
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
     6
bzr >= 1.4. Merge it back in test-convert-bzr-directories once
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
     7
this version becomes mainstream.
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
     8
replace file with dir
8126
13b36eb14324 convert/bzr: handle files replaced by directories (issue1623)
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     9
12513
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    10
  $ mkdir test-replace-file-with-dir
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    11
  $ cd test-replace-file-with-dir
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    12
  $ bzr init -q source
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    13
  $ cd source
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    14
  $ echo d > d
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    15
  $ bzr add -q d
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    16
  $ bzr commit -q -m 'add d file'
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    17
  $ rm d
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    18
  $ mkdir d
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    19
  $ bzr add -q d
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    20
  $ bzr commit -q -m 'replace with d dir'
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    21
  $ echo a > d/a
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    22
  $ bzr add -q d/a
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    23
  $ bzr commit -q -m 'add d/a'
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    24
  $ cd ..
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    25
  $ hg convert source source-hg
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    26
  initializing destination source-hg repository
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    27
  scanning source...
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    28
  sorting...
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    29
  converting...
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    30
  2 add d file
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    31
  1 replace with d dir
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    32
  0 add d/a
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    33
  $ manifest source-hg tip
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    34
  % manifest of tip
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    35
  644   d/a
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    36
  $ cd source-hg
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    37
  $ hg update
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    38
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    39
  $ cd ../..