> > I am interested in seeing what happens if you block for a while on
> > server side during push. But I guess that means that the gate is locked
> > for another push, if not even for pull. I can whip some examples to have
> > something to start with.
> 
> If you install any pretxnchangegroup hooks, you will want to consider 
> going to a write-only gate/read-only clone arrangement.
> 
> When a changegroup is pushed, Mercurial opens a transaction, 
> incorporates the changeset(s) into the repository, and then runs the 
> pretxnchangegroup hooks.  If any of those hooks fail, the transaction is 
> rolled back, and the repository restored to the state prior to the 
> transaction.  If all of those hooks pass, the transaction is closed, and 
> then the changegroup hooks are run.
> 
> While that transaction is open, other users may pull the new changesets, 
> which is bad, because if you reject them and rollback, they still exist 
> in the other user's repository.

Hmm, actually hg does not behave as you described (and as I found in
documentation). There seems to be some sort of locking.

In my setup I have gate repository, which has

[hooks]
pretxnchangegroup.01_test = 
/home/vm156888/Documents/sfw/hg/scripts/display_all_changesets
pretxnchangegroup.02_test = sleep 10
pretxnchangegroup.03_test = 
/home/vm156888/Documents/sfw/hg/scripts/just_one_changeset

just_one_changeset fails, so the transaction is rolled back.


If I during the 'sleep 10' hook try to clone the gate, I'll get:

$ hg clone gate tmp
waiting for lock on repository gate held by 'pub:6267' <--- waiting here 10sec
updating working directory
1 files updated, 0 files merged, 0 files removed, 0 files unresolved

and the newly cloned repository does not have anything from the rolled
back change.

If I try to push, it is also locked out until all the
pretxnchangegroup-s finish.

I'm using hg 1.0.2

If this is correct behavior, the advantage of having two repositories
lies only in the fact, that readers are not locked during write.
-- 
        Vlad
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 193 bytes
Desc: not available
URL: 
<http://mail.opensolaris.org/pipermail/sfwnv-discuss/attachments/20080926/70fa56b1/attachment.bin>

Reply via email to