* subversion/libsvn_repos/repos.c
[svn.git] / notes / locking / svn-needs-lock-impl.txt
blob4371803f0cb5e8571e00d6142a7be03516efff64
1 [[This is a light weight implementation specification for the
2 "svn:needs-lock" feature on the locking branch.  Its purpose is
3 primarily to help me iterate through the development of the feature,
4 and secondarily to allow any reviewers to get better idea of my game
5 plan.  -Fitz ]]
7 svn:needs-lock behaviors:
8 =========================
10 Checkout:
11 - If svn:needs-lock is set on a file when the file is checked out, set
12   the file to read-only.
14 Update:
16 - If svn:needs-lock is unset in wc, but update sets it: 
17   - If the file has local mods, print a warning and do nothing???
18   - Else, set file to read-only.
19 - If svn:needs-lock is set in wc, but update unsets it: Set file to
20   read-write.
21 - If svn:needs-lock is set or unset in both places: Do nothing.
22 - If svn:needs-lock is set and the lock is removed by update (i.e.,
23   the lock in the wc was defunct):
24   - If the file has local mods, print a warning and do nothing???
25   - Else, set the file to read-only. 
27 Propset:
29 - Setting the svn:needs-lock property does nothing WRT a file's
30   permissions.  The file will be set to read-only at commit time.  See
31   "Commit" below.  (Propset does, however, canonicalizes the value to '*')
32   
33 Propdel:
34 - Removing svn:needs-lock sets the file to read-write.
36 Propedit:
37 - If the property is changed via propedit, we need to canonicalize it
38   to '*'.
40 Lock:
41 - If svn:needs-lock is set, the file is set to read-write.
43 Unlock:
44 - If svn:needs-lock is set, the file is set to read-only.
46 Copy:
48 - repos-to-wc or wc-to-wc copy: Ensure that the copy is read-write
49    even if svn:needs-lock is set as this is another schedule add case.
51 Commit: 
52 - If a file has the svn:needs-lock property set and is not locked:
53   - Unconditionally set the file to read-only.
54 - Else, do nothing.
58 Caveats:
60 - 'svn update' doesn't currently work on Windows if the working files
61   are read-only, you will need to add some permission changing code.