mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 08:47:12 +03:00
b9e9255ab9
"diff" command might cause redundant message, "No differences encountered" on Solaris for example. But suppressing option like "-q" isn't portable, because POSIX specification doesn't define it. pdiff script was introduced by f4cba8b2e7b4 to stabilize output of standard diff command on each platforms.
98 lines
2.4 KiB
Raku
98 lines
2.4 KiB
Raku
Enable obsolete markers
|
|
|
|
$ cat >> $HGRCPATH << EOF
|
|
> [experimental]
|
|
> stabilization=createmarkers
|
|
> [phases]
|
|
> publish=False
|
|
> EOF
|
|
|
|
Build a repo with some cacheable bits:
|
|
|
|
$ hg init a
|
|
$ cd a
|
|
|
|
$ echo a > a
|
|
$ hg ci -qAm0
|
|
$ hg tag t1
|
|
$ hg book -i bk1
|
|
|
|
$ hg branch -q b2
|
|
$ hg ci -Am1
|
|
$ hg tag t2
|
|
|
|
$ echo dumb > dumb
|
|
$ hg ci -qAmdumb
|
|
$ hg debugobsolete b1174d11b69e63cb0c5726621a43c859f0858d7f
|
|
obsoleted 1 changesets
|
|
|
|
$ hg phase -pr t1
|
|
$ hg phase -fsr t2
|
|
|
|
Make a helper function to check cache damage invariants:
|
|
|
|
- command output shouldn't change
|
|
- cache should be present after first use
|
|
- corruption/repair should be silent (no exceptions or warnings)
|
|
- cache should survive deletion, overwrite, and append
|
|
- unreadable / unwriteable caches should be ignored
|
|
- cache should be rebuilt after corruption
|
|
|
|
$ damage() {
|
|
> CMD=$1
|
|
> CACHE=.hg/cache/$2
|
|
> CLEAN=$3
|
|
> hg $CMD > before
|
|
> test -f $CACHE || echo "not present"
|
|
> echo bad > $CACHE
|
|
> test -z "$CLEAN" || $CLEAN
|
|
> hg $CMD > after
|
|
> "$RUNTESTDIR/pdiff" before after || echo "*** overwrite corruption"
|
|
> echo corruption >> $CACHE
|
|
> test -z "$CLEAN" || $CLEAN
|
|
> hg $CMD > after
|
|
> "$RUNTESTDIR/pdiff" before after || echo "*** append corruption"
|
|
> rm $CACHE
|
|
> mkdir $CACHE
|
|
> test -z "$CLEAN" || $CLEAN
|
|
> hg $CMD > after
|
|
> "$RUNTESTDIR/pdiff" before after || echo "*** read-only corruption"
|
|
> test -d $CACHE || echo "*** directory clobbered"
|
|
> rmdir $CACHE
|
|
> test -z "$CLEAN" || $CLEAN
|
|
> hg $CMD > after
|
|
> "$RUNTESTDIR/pdiff" before after || echo "*** missing corruption"
|
|
> test -f $CACHE || echo "not rebuilt"
|
|
> }
|
|
|
|
Beat up tags caches:
|
|
|
|
$ damage "tags --hidden" tags2
|
|
$ damage tags tags2-visible
|
|
$ damage "tag -f t3" hgtagsfnodes1
|
|
|
|
Beat up branch caches:
|
|
|
|
$ damage branches branch2-base "rm .hg/cache/branch2-[vs]*"
|
|
$ damage branches branch2-served "rm .hg/cache/branch2-[bv]*"
|
|
$ damage branches branch2-visible
|
|
$ damage "log -r branch(.)" rbc-names-v1
|
|
$ damage "log -r branch(default)" rbc-names-v1
|
|
$ damage "log -r branch(b2)" rbc-revs-v1
|
|
|
|
We currently can't detect an rbc cache with unknown names:
|
|
|
|
$ damage "log -qr branch(b2)" rbc-names-v1
|
|
--- before * (glob)
|
|
+++ after * (glob)
|
|
@@ -1,8 +?,0 @@ (glob)
|
|
-2:5fb7d38b9dc4
|
|
-3:60b597ffdafa
|
|
-4:b1174d11b69e
|
|
-5:6354685872c0
|
|
-6:5ebc725f1bef
|
|
-7:7b76eec2f273
|
|
-8:ef3428d9d644
|
|
-9:ba7a936bc03c
|
|
*** append corruption
|