Mercurial > hg > mercurial-crew-with-dirclash
view tests/test-merge6 @ 635:85e2209d401c
Protocol switch from using generators to stream-like objects.
This allows the the pull side to precisely control how much data is
read so that another encapsulation layer is not needed.
An http client gets a response with a finite size. Because ssh clients
need to keep the stream open, we must not read more data than is sent
in a response. But due to the streaming nature of the changegroup
scheme, only the piece that's parsing the data knows how far it's
allowed to read.
This means the generator scheme isn't fine-grained enough. Instead we
need file-like objects with a read(x) method. This switches everything
for push/pull over to using file-like objects rather than generators.
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Wed, 06 Jul 2005 22:20:12 -0800 |
parents | d96c1153b25d |
children | 7e4843b7efd2 |
line wrap: on
line source
#!/bin/sh -x cat <<'EOF' > merge #!/bin/sh echo merging for `basename $1` EOF chmod +x merge export HGMERGE=./merge mkdir A1 cd A1 hg init echo This is file foo1 > foo echo This is file bar1 > bar hg add foo bar hg commit -t "commit text" -d "0 0" -u user cd .. hg clone A1 B1 cd A1 rm bar hg remove bar hg commit -t "commit test" -d "0 0" -u user cd ../B1 echo This is file foo22 > foo hg commit -t "commit test" -d "0 0" -u user cd .. hg clone A1 A2 hg clone B1 B2 cd A1 hg pull ../B1 hg update -m hg commit -t "commit test" -d "0 0" -u user echo bar should remain deleted. hg manifest cd ../B2 hg pull ../A2 hg update -m hg commit -t "commit test" -d "0 0" -u user echo bar should remain deleted. hg manifest