Hello.

(Tried with SVN r1297653)

Please, consider the following scenario:
We have a clean working copy at the latest revision (say, r1) with one file.

1. Set lock on a file file locally
wc$ svn lock file
......

2. Unset lock on the file remotely
wc$ svn unlock file:///url/for/file
......

As result the lock is broken

wc$ svn status -u file
     B           1   file                                                       
                                                                                
                                           
Status against revision:      1 

3. Let's update to the latest revision (r1) now.

wc$ svn update
Updating '.':                                                                   
                                                                                
                                           
At revision 1.

wc$ svn status -u file                                                          
                                         
Status against revision:      1



So the lock is removed. Actually "notify" function of SVN was called only twice 
for update start and 
for update end (both for working copy path, none for path to the file).

Here's why it happens. update_editor.c , function "close_file". Notification 
condition looks like

if (eb->notify_func && !fb->already_notified && fb->edited) {
...
}

fb->edited is false here because the update didn't change contents or 
properties, so the notification 
is not generated even though "lock_state" is not unchanged.

For SVN 1.6.9 the same condition looks like


  if (((content_state != svn_wc_notify_state_unchanged) ||
       (prop_state != svn_wc_notify_state_unchanged) ||
       (lock_state != svn_wc_notify_lock_state_unchanged) ||
       (fb->tree_conflicted))
      && eb->notify_func
      /* Supress notifications for files within locally deleted trees,
         we will have already raised a tree conflict notification.
        ### When is FB->PATH absolute? Will we ever use the wrong key? */
      && !in_deleted_tree(eb, fb->path, TRUE, pool))

that seems to be more reasonable with respect to "lock_state" processing.

So I propose to add   (lock_state != svn_wc_notify_lock_state_unchanged) 
condition somewhere to SVN 
1.7 (maybe not only to close_file but to close_directory too).

Reply via email to