view tests/test-permissions.t @ 49881:b3ae17037b54

dirstate: swap pathto() and get_entry() in idirstate This way the order of methods in dirstate and idirstate classes is the same. Just to make it easier to use diff tools to compare the two classes.
author Anton Shestakov <av6@dwimlabs.net>
date Thu, 05 Jan 2023 19:52:00 +0400
parents 2f2682f40ea0
children adecb1ab4a0d
line wrap: on
line source

#require unix-permissions no-root reporevlogstore

#testcases dirstate-v1 dirstate-v2

#if dirstate-v2
  $ cat >> $HGRCPATH << EOF
  > [format]
  > use-dirstate-v2=1
  > [storage]
  > dirstate-v2.slow-path=allow
  > EOF
#endif

  $ hg init t
  $ cd t

  $ echo foo > a
  $ hg add a

  $ hg commit -m "1"

  $ hg verify -q

  $ chmod -r .hg/store/data/a.i

  $ hg verify -q
  abort: Permission denied: '$TESTTMP/t/.hg/store/data/a.i'
  [255]

  $ chmod +r .hg/store/data/a.i

  $ hg verify -q

  $ chmod -w .hg/store/data/a.i

  $ echo barber > a
  $ hg commit -m "2"
  trouble committing a!
  abort: Permission denied: '$TESTTMP/t/.hg/store/data/a.i'
  [255]

  $ chmod -w .

  $ hg diff --nodates
  diff -r 2a18120dc1c9 a
  --- a/a
  +++ b/a
  @@ -1,1 +1,1 @@
  -foo
  +barber

  $ chmod +w .

  $ chmod +w .hg/store/data/a.i
  $ mkdir dir
  $ touch dir/a
  $ hg status
  M a
  ? dir/a
  $ chmod -rx dir

#if no-fsmonitor

(fsmonitor makes "hg status" avoid accessing to "dir")

  $ hg status
  dir: Permission denied* (glob)
  M a

#endif

Reenable perm to allow deletion:

  $ chmod +rx dir

  $ cd ..