Mercurial > hg
annotate tests/test-default-push.t @ 39764:e4e881572382
localrepo: iteratively derive local repository type
This commit implements the dynamic local repository type derivation
that was explained in the recent commit
bfeab472e3c0 "localrepo: create new function for instantiating a local
repo object."
Instead of a static localrepository class/type which must be customized
after construction, we now dynamically construct a type by building up
base classes/types to represent specific repository interfaces.
Conceptually, the end state is similar to what was happening when
various extensions would monkeypatch the __class__ of newly-constructed
repo instances. However, the approach is inverted. Instead of making
the instance then customizing it, we do the customization up front
by influencing the behavior of the type then we instantiate that
custom type.
This approach gives us much more flexibility. For example, we can
use completely separate classes for implementing different aspects
of the repository. For example, we could have one class representing
revlog-based file storage and another representing non-revlog based
file storage. When then choose which implementation to use based on
the presence of repo requirements.
A concern with this approach is that it creates a lot more types
and complexity and that complexity adds overhead. Yes, it is true that
this approach will result in more types being created. Yes, this is
more complicated than traditional "instantiate a static type." However,
I believe the alternatives to supporting alternate storage backends
are just as complicated. (Before I arrived at this solution, I had
patches storing factory functions on local repo instances for e.g.
constructing a file storage instance. We ended up having a handful
of these. And this was logically identical to assigning custom
methods. Since we were logically changing the type of the instance,
I figured it would be better to just use specialized types instead
of introducing levels of abstraction at run-time.)
On the performance front, I don't believe that having N base classes
has any significant performance overhead compared to just a single base
class. Intuition says that Python will need to iterate the base classes
to find an attribute. However, CPython caches method lookups: as long as
the __class__ or MRO isn't changing, method attribute lookup should be
constant time after first access. And non-method attributes are stored
in __dict__, of which there is only 1 per object, so the number of
base classes for __dict__ is irrelevant.
Anyway, this commit splits up the monolithic completelocalrepository
interface into sub-interfaces: 1 for file storage and 1 representing
everything else.
We've taught ``makelocalrepository()`` to call a series of factory
functions which will produce types implementing specific interfaces.
It then calls type() to create a new type from the built-up list of
base types.
This commit should be considered a start and not the end state. I
suspect we'll hit a number of problems as we start to implement
alternate storage backends:
* Passing custom arguments to __init__ and setting custom attributes
on __dict__.
* Customizing the set of interfaces that are needed. e.g. the
"readonly" intent could translate to not requesting an interface
providing methods related to writing.
* More ergonomic way for extensions to insert themselves so their
callbacks aren't unconditionally called.
* Wanting to modify vfs instances, other arguments passed to __init__.
That being said, this code is usable in its current state and I'm
convinced future commits will demonstrate the value in this approach.
Differential Revision: https://phab.mercurial-scm.org/D4642
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Tue, 18 Sep 2018 15:29:42 -0700 |
parents | 2a258985ffeb |
children | 1bf1dcbc9950 |
rev | line source |
---|---|
12287
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
1 $ hg init a |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
2 |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
3 $ echo a > a/a |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
4 $ hg --cwd a ci -Ama |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
5 adding a |
2496
6dbb8ae0a0b3
add test for default-push.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff
changeset
|
6 |
12287
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
7 $ hg clone a c |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
8 updating to branch default |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
9 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
2496
6dbb8ae0a0b3
add test for default-push.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff
changeset
|
10 |
12287
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
11 $ hg clone a b |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
12 updating to branch default |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
13 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
14 |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
15 $ echo b >> b/a |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
16 $ hg --cwd b ci -mb |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
17 |
20558
c4f45ce85351
push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents:
15447
diff
changeset
|
18 Push should provide a hint when both 'default' and 'default-push' not set: |
c4f45ce85351
push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents:
15447
diff
changeset
|
19 $ cd c |
c4f45ce85351
push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents:
15447
diff
changeset
|
20 $ hg push --config paths.default= |
c4f45ce85351
push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents:
15447
diff
changeset
|
21 abort: default repository not configured! |
29965
b3100653bafd
push: update help hint to point to config.paths section
timeless <timeless@mozdev.org>
parents:
29413
diff
changeset
|
22 (see 'hg help config.paths') |
20558
c4f45ce85351
push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents:
15447
diff
changeset
|
23 [255] |
c4f45ce85351
push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents:
15447
diff
changeset
|
24 |
c4f45ce85351
push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents:
15447
diff
changeset
|
25 $ cd .. |
c4f45ce85351
push: provide a hint when no paths in configured (issue3692)
anuraggoel <anurag.dsps@gmail.com>
parents:
15447
diff
changeset
|
26 |
12287
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
27 Push should push to 'default' when 'default-push' not set: |
2496
6dbb8ae0a0b3
add test for default-push.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff
changeset
|
28 |
12287
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
29 $ hg --cwd b push |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
29965
diff
changeset
|
30 pushing to $TESTTMP/a |
12287
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
31 searching for changes |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
32 adding changesets |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
33 adding manifests |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
34 adding file changes |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
35 added 1 changesets with 1 changes to 1 files |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
36 |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
37 Push should push to 'default-push' when set: |
2496
6dbb8ae0a0b3
add test for default-push.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff
changeset
|
38 |
22837
2be7d5ebd4d0
config: use the same hgrc for a cloned repo as for an uninitted repo
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
20558
diff
changeset
|
39 $ echo '[paths]' >> b/.hg/hgrc |
12287
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
40 $ echo 'default-push = ../c' >> b/.hg/hgrc |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
41 $ hg --cwd b push |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
29965
diff
changeset
|
42 pushing to $TESTTMP/c |
12287
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
43 searching for changes |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
44 adding changesets |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
45 adding manifests |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
46 adding file changes |
d8707306d667
tests: unify test-default-push
Adrian Buehlmann <adrian@cadifra.com>
parents:
2496
diff
changeset
|
47 added 1 changesets with 1 changes to 1 files |
26189
663fbc336e22
ui: change default path fallback mechanism (issue4796)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26057
diff
changeset
|
48 |
27555
ca8ada499529
push: restore old behavior of default-push (issue5000)
Yuya Nishihara <yuya@tcha.org>
parents:
26820
diff
changeset
|
49 But push should push to 'default' if explicitly specified (issue5000): |
ca8ada499529
push: restore old behavior of default-push (issue5000)
Yuya Nishihara <yuya@tcha.org>
parents:
26820
diff
changeset
|
50 |
ca8ada499529
push: restore old behavior of default-push (issue5000)
Yuya Nishihara <yuya@tcha.org>
parents:
26820
diff
changeset
|
51 $ hg --cwd b push default |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
29965
diff
changeset
|
52 pushing to $TESTTMP/a |
27555
ca8ada499529
push: restore old behavior of default-push (issue5000)
Yuya Nishihara <yuya@tcha.org>
parents:
26820
diff
changeset
|
53 searching for changes |
ca8ada499529
push: restore old behavior of default-push (issue5000)
Yuya Nishihara <yuya@tcha.org>
parents:
26820
diff
changeset
|
54 no changes found |
ca8ada499529
push: restore old behavior of default-push (issue5000)
Yuya Nishihara <yuya@tcha.org>
parents:
26820
diff
changeset
|
55 [1] |
ca8ada499529
push: restore old behavior of default-push (issue5000)
Yuya Nishihara <yuya@tcha.org>
parents:
26820
diff
changeset
|
56 |
26820
71d5238f92e9
ui: support paths.default-push without paths.default set (issue4914)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26189
diff
changeset
|
57 Push should push to 'default-push' when 'default' is not set |
71d5238f92e9
ui: support paths.default-push without paths.default set (issue4914)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26189
diff
changeset
|
58 |
71d5238f92e9
ui: support paths.default-push without paths.default set (issue4914)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26189
diff
changeset
|
59 $ hg -q clone a push-default-only |
71d5238f92e9
ui: support paths.default-push without paths.default set (issue4914)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26189
diff
changeset
|
60 $ cd push-default-only |
71d5238f92e9
ui: support paths.default-push without paths.default set (issue4914)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26189
diff
changeset
|
61 $ rm .hg/hgrc |
71d5238f92e9
ui: support paths.default-push without paths.default set (issue4914)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26189
diff
changeset
|
62 |
71d5238f92e9
ui: support paths.default-push without paths.default set (issue4914)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26189
diff
changeset
|
63 $ touch foo |
71d5238f92e9
ui: support paths.default-push without paths.default set (issue4914)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26189
diff
changeset
|
64 $ hg -q commit -A -m 'add foo' |
71d5238f92e9
ui: support paths.default-push without paths.default set (issue4914)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26189
diff
changeset
|
65 $ hg --config paths.default-push=../a push |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
29965
diff
changeset
|
66 pushing to $TESTTMP/a |
26820
71d5238f92e9
ui: support paths.default-push without paths.default set (issue4914)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26189
diff
changeset
|
67 searching for changes |
71d5238f92e9
ui: support paths.default-push without paths.default set (issue4914)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26189
diff
changeset
|
68 adding changesets |
71d5238f92e9
ui: support paths.default-push without paths.default set (issue4914)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26189
diff
changeset
|
69 adding manifests |
71d5238f92e9
ui: support paths.default-push without paths.default set (issue4914)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26189
diff
changeset
|
70 adding file changes |
71d5238f92e9
ui: support paths.default-push without paths.default set (issue4914)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26189
diff
changeset
|
71 added 1 changesets with 1 changes to 1 files |
71d5238f92e9
ui: support paths.default-push without paths.default set (issue4914)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26189
diff
changeset
|
72 |
71d5238f92e9
ui: support paths.default-push without paths.default set (issue4914)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26189
diff
changeset
|
73 $ cd .. |
71d5238f92e9
ui: support paths.default-push without paths.default set (issue4914)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26189
diff
changeset
|
74 |
26189
663fbc336e22
ui: change default path fallback mechanism (issue4796)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26057
diff
changeset
|
75 Pushing to a path that isn't defined should not fall back to default |
663fbc336e22
ui: change default path fallback mechanism (issue4796)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26057
diff
changeset
|
76 |
663fbc336e22
ui: change default path fallback mechanism (issue4796)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26057
diff
changeset
|
77 $ hg --cwd b push doesnotexist |
663fbc336e22
ui: change default path fallback mechanism (issue4796)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26057
diff
changeset
|
78 abort: repository doesnotexist does not exist! |
663fbc336e22
ui: change default path fallback mechanism (issue4796)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26057
diff
changeset
|
79 [255] |
27266
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
80 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
81 :pushurl is used when defined |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
82 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
83 $ hg -q clone a pushurlsource |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
84 $ hg -q clone a pushurldest |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
85 $ cd pushurlsource |
27437
52ae742c8035
tests: make `pwd` URL compatible on Windows in test-default-push
Matt Harbison <matt_harbison@yahoo.com>
parents:
27266
diff
changeset
|
86 |
52ae742c8035
tests: make `pwd` URL compatible on Windows in test-default-push
Matt Harbison <matt_harbison@yahoo.com>
parents:
27266
diff
changeset
|
87 Windows needs a leading slash to make a URL that passes all of the checks |
52ae742c8035
tests: make `pwd` URL compatible on Windows in test-default-push
Matt Harbison <matt_harbison@yahoo.com>
parents:
27266
diff
changeset
|
88 $ WD=`pwd` |
52ae742c8035
tests: make `pwd` URL compatible on Windows in test-default-push
Matt Harbison <matt_harbison@yahoo.com>
parents:
27266
diff
changeset
|
89 #if windows |
52ae742c8035
tests: make `pwd` URL compatible on Windows in test-default-push
Matt Harbison <matt_harbison@yahoo.com>
parents:
27266
diff
changeset
|
90 $ WD="/$WD" |
52ae742c8035
tests: make `pwd` URL compatible on Windows in test-default-push
Matt Harbison <matt_harbison@yahoo.com>
parents:
27266
diff
changeset
|
91 #endif |
27266
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
92 $ cat > .hg/hgrc << EOF |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
93 > [paths] |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
94 > default = https://example.com/not/relevant |
27437
52ae742c8035
tests: make `pwd` URL compatible on Windows in test-default-push
Matt Harbison <matt_harbison@yahoo.com>
parents:
27266
diff
changeset
|
95 > default:pushurl = file://$WD/../pushurldest |
27266
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
96 > EOF |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
97 |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
98 $ touch pushurl |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
99 $ hg -q commit -A -m 'add pushurl' |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
100 $ hg push |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
101 pushing to file:/*/$TESTTMP/pushurlsource/../pushurldest (glob) |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
102 searching for changes |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
103 adding changesets |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
104 adding manifests |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
105 adding file changes |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
106 added 1 changesets with 1 changes to 1 files |
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
107 |
29413
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
108 :pushrev is used when no -r is passed |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
109 |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
110 $ cat >> .hg/hgrc << EOF |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
111 > default:pushrev = . |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
112 > EOF |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
113 $ hg -q up -r 0 |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
114 $ echo head1 > foo |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
115 $ hg -q commit -A -m head1 |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
116 $ hg -q up -r 0 |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
117 $ echo head2 > foo |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
118 $ hg -q commit -A -m head2 |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
119 $ hg push -f |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
120 pushing to file:/*/$TESTTMP/pushurlsource/../pushurldest (glob) |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
121 searching for changes |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
122 adding changesets |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
123 adding manifests |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
124 adding file changes |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
125 added 1 changesets with 1 changes to 1 files (+1 heads) |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
126 |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
127 $ hg --config 'paths.default:pushrev=draft()' push -f |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
128 pushing to file:/*/$TESTTMP/pushurlsource/../pushurldest (glob) |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
129 searching for changes |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
130 adding changesets |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
131 adding manifests |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
132 adding file changes |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
133 added 1 changesets with 1 changes to 1 files (+1 heads) |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
134 |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
135 Invalid :pushrev raises appropriately |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
136 |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
137 $ hg --config 'paths.default:pushrev=notdefined()' push |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
138 pushing to file:/*/$TESTTMP/pushurlsource/../pushurldest (glob) |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
139 hg: parse error: unknown identifier: notdefined |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
140 [255] |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
141 |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
142 $ hg --config 'paths.default:pushrev=(' push |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
143 pushing to file:/*/$TESTTMP/pushurlsource/../pushurldest (glob) |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
144 hg: parse error at 1: not a prefix: end |
36685
2a258985ffeb
revsetlang: add a hint for more useful parse errors
Ryan McElroy <rmcelroy@fb.com>
parents:
35393
diff
changeset
|
145 (( |
2a258985ffeb
revsetlang: add a hint for more useful parse errors
Ryan McElroy <rmcelroy@fb.com>
parents:
35393
diff
changeset
|
146 ^ here) |
29413
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
147 [255] |
31d3ab7985b8
ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27570
diff
changeset
|
148 |
27266
4dccc37b87bd
ui: support declaring path push urls as sub-options
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26820
diff
changeset
|
149 $ cd .. |