##// END OF EJS Templates
phases: do not exchange secret changesets...
Pierre-Yves David -
r15713:cff25e4b default
parent child Browse files
Show More
@@ -85,12 +85,28 b' def prepush(repo, remote, force, revs, n'
85 _common, inc, remoteheads = commoninc
85 _common, inc, remoteheads = commoninc
86
86
87 cl = repo.changelog
87 cl = repo.changelog
88 outg = cl.findmissing(common, revs)
88 alloutg = cl.findmissing(common, revs)
89 outg = []
90 secret = []
91 for o in alloutg:
92 if repo[o].phase() >= 2:
93 secret.append(o)
94 else:
95 outg.append(o)
89
96
90 if not outg:
97 if not outg:
91 repo.ui.status(_("no changes found\n"))
98 if secret:
99 repo.ui.status(_("no changes to push but %i secret changesets\n")
100 % len(secret))
101 else:
102 repo.ui.status(_("no changes found\n"))
92 return None, 1, common
103 return None, 1, common
93
104
105 if secret:
106 # recompute target revs
107 revs = [ctx.node() for ctx in repo.set('heads(::(%ld))',
108 map(repo.changelog.rev, outg))]
109
94 if not force and remoteheads != [nullid]:
110 if not force and remoteheads != [nullid]:
95 if remote.capable('branchmap'):
111 if remote.capable('branchmap'):
96 # Check for each named branch if we're creating new remote heads.
112 # Check for each named branch if we're creating new remote heads.
@@ -9,6 +9,7 b''
9 from node import nullid
9 from node import nullid
10 from i18n import _
10 from i18n import _
11 import random, collections, util, dagutil
11 import random, collections, util, dagutil
12 import phases
12
13
13 def _updatesample(dag, nodes, sample, always, quicksamplesize=0):
14 def _updatesample(dag, nodes, sample, always, quicksamplesize=0):
14 # if nodes is empty we scan the entire graph
15 # if nodes is empty we scan the entire graph
@@ -99,7 +100,7 b' def findcommonheads(ui, local, remote,'
99 sample = ownheads
100 sample = ownheads
100 if remote.local():
101 if remote.local():
101 # stopgap until we have a proper localpeer that supports batch()
102 # stopgap until we have a proper localpeer that supports batch()
102 srvheadhashes = remote.heads()
103 srvheadhashes = phases.visibleheads(remote)
103 yesno = remote.known(dag.externalizeall(sample))
104 yesno = remote.known(dag.externalizeall(sample))
104 elif remote.capable('batch'):
105 elif remote.capable('batch'):
105 batch = remote.batch()
106 batch = remote.batch()
@@ -10,6 +10,7 b' from i18n import _'
10 from node import bin, hex
10 from node import bin, hex
11 import changegroup as changegroupmod
11 import changegroup as changegroupmod
12 import repo, error, encoding, util, store
12 import repo, error, encoding, util, store
13 import phases
13
14
14 # abstract batching support
15 # abstract batching support
15
16
@@ -449,7 +450,7 b' def getbundle(repo, proto, others):'
449 return streamres(proto.groupchunks(cg))
450 return streamres(proto.groupchunks(cg))
450
451
451 def heads(repo, proto):
452 def heads(repo, proto):
452 h = repo.heads()
453 h = phases.visibleheads(repo)
453 return encodelist(h) + "\n"
454 return encodelist(h) + "\n"
454
455
455 def hello(repo, proto):
456 def hello(repo, proto):
@@ -7,7 +7,9 b''
7 $ mkcommit() {
7 $ mkcommit() {
8 > echo "$1" > "$1"
8 > echo "$1" > "$1"
9 > hg add "$1"
9 > hg add "$1"
10 > hg ci -m "$1"
10 > message="$1"
11 > shift
12 > hg ci -m "$message" $*
11 > }
13 > }
12
14
13 $ hg init alpha
15 $ hg init alpha
@@ -478,6 +480,7 b' Pushing to Publish=False (common changes'
478
480
479 Pushing to Publish=True (common changeset from publish=False)
481 Pushing to Publish=True (common changeset from publish=False)
480
482
483 (in mu)
481 $ hg push ../alpha
484 $ hg push ../alpha
482 pushing to ../alpha
485 pushing to ../alpha
483 searching for changes
486 searching for changes
@@ -506,3 +509,62 b' Pushing to Publish=True (common changese'
506 1 0 a-B - 548a3d25dbf0
509 1 0 a-B - 548a3d25dbf0
507 0 0 a-A - 054250a37db4
510 0 0 a-A - 054250a37db4
508
511
512
513 Discovery locally secret changeset on a remote repository:
514
515 - should make it non-secret
516
517 $ cd ../alpha
518 $ mkcommit A-secret --config phases.new-commit=2
519 $ hgph
520 11 2 A-secret - 435b5d83910c
521 10 0 a-H - 967b449fbc94
522 9 1 a-G - 3e27b6f1eee1
523 8 0 a-F - b740e3e5c05d
524 7 0 a-E - e9f537e46dea
525 6 0 n-B - 145e75495359
526 5 0 n-A - d6bcb4f74035
527 4 0 b-A - f54f1bb90ff3
528 3 0 a-D - b555f63b6063
529 2 0 a-C - 54acac6f23ab
530 1 0 a-B - 548a3d25dbf0
531 0 0 a-A - 054250a37db4
532 $ hg bundle --base 'parents(.)' -r . ../secret-bundle.hg
533 1 changesets found
534 $ hg -R ../mu unbundle ../secret-bundle.hg
535 adding changesets
536 adding manifests
537 adding file changes
538 added 1 changesets with 1 changes to 1 files
539 (run 'hg update' to get a working copy)
540 $ hgph -R ../mu
541 10 1 A-secret - 435b5d83910c
542 9 0 a-H - 967b449fbc94
543 8 0 a-F - b740e3e5c05d
544 7 0 a-E - e9f537e46dea
545 6 0 n-B - 145e75495359
546 5 0 n-A - d6bcb4f74035
547 4 0 a-D - b555f63b6063
548 3 0 a-C - 54acac6f23ab
549 2 0 b-A - f54f1bb90ff3
550 1 0 a-B - 548a3d25dbf0
551 0 0 a-A - 054250a37db4
552 $ hg pull ../mu
553 pulling from ../mu
554 searching for changes
555 no changes found
556 $ hgph
557 11 1 A-secret - 435b5d83910c
558 10 0 a-H - 967b449fbc94
559 9 1 a-G - 3e27b6f1eee1
560 8 0 a-F - b740e3e5c05d
561 7 0 a-E - e9f537e46dea
562 6 0 n-B - 145e75495359
563 5 0 n-A - d6bcb4f74035
564 4 0 b-A - f54f1bb90ff3
565 3 0 a-D - b555f63b6063
566 2 0 a-C - 54acac6f23ab
567 1 0 a-B - 548a3d25dbf0
568 0 0 a-A - 054250a37db4
569
570
@@ -88,3 +88,49 b' Even on merge'
88 1 0 B
88 1 0 B
89 0 0 A
89 0 0 A
90
90
91 Test secret changeset are not pushed
92
93 $ hg init ../push-dest
94 $ hg push ../push-dest -f # force because we push multiple heads
95 pushing to ../push-dest
96 searching for changes
97 adding changesets
98 adding manifests
99 adding file changes
100 added 5 changesets with 5 changes to 5 files (+1 heads)
101 $ hglog
102 7 2 merge B' and E
103 6 0 B'
104 5 2 H
105 4 2 E
106 3 0 D
107 2 0 C
108 1 0 B
109 0 0 A
110 $ cd ../push-dest
111 $ hglog
112 4 0 B'
113 3 0 D
114 2 0 C
115 1 0 B
116 0 0 A
117 $ cd ..
118
119 Test secret changeset are not pull
120
121 $ hg init pull-dest
122 $ cd pull-dest
123 $ hg pull ../initialrepo
124 pulling from ../initialrepo
125 requesting all changes
126 adding changesets
127 adding manifests
128 adding file changes
129 added 5 changesets with 5 changes to 5 files (+1 heads)
130 (run 'hg heads' to see heads, 'hg merge' to merge)
131 $ hglog
132 4 0 B'
133 3 0 D
134 2 0 C
135 1 0 B
136 0 0 A
General Comments 0
You need to be logged in to leave comments. Login now