Daniel Shahaf <d...@daniel.shahaf.name> writes:

>From my point of view is http://www.xsteve.at/prg/emacs/psvn.el the
cannonical one.
But I lost commit access to the svn repository some time ago.
It would be great to have a cannonical version again.

Stefan.

> Joseph Schaefer wrote on Sun, Feb 24, 2013 at 19:37:44 -0500:
>> Ok here's my latest stab at it.  So far everything seems to work as
>> expected, even when you have unsaved edits in the same working
>> copy but are working in a subdir that doesn't contain unsaved edits.
>> 
>> I will keep testing but am really just looking for some support from
>> a full committer so I can commit these changes as I work on them.
>> 
>
> Is the psvn.el in our tree the canonical one?  The version at
> http://www.xsteve.at/prg/emacs/psvn.el is different.  
>
> If ours is the canonical one, and no one (the current maintainers or any
> full committer) objects, I'd be happy to extend your commit access to
> include psvn.el.
>
> Daniel
>
>> 
>> Index: CHANGES
>> ===================================================================
>> --- CHANGES  (revision 1449428)
>> +++ CHANGES  (working copy)
>> @@ -47,6 +47,7 @@
>>  
>>    - Other tool improvements and bugfixes:
>>      * 'svnmucc' promoted to first-class supported utility (issue #3308)
>> +    * 'psvn.el' now supports 1.7+ working copies
>>    
>>   Developer-visible changes:
>>    - General:
>> Index: contrib/client-side/emacs/psvn.el
>> ===================================================================
>> --- contrib/client-side/emacs/psvn.el        (revision 1449428)
>> +++ contrib/client-side/emacs/psvn.el        (working copy)
>> @@ -1127,33 +1127,13 @@
>>  asks svn to connect to the repository and check to see if there are updates
>>  there.
>>  
>> -If there is no .svn directory, examine if there is CVS and run
>> -`cvs-examine'. Otherwise ask if to run `dired'."
>> +   Note: psvn.el no longer supports dispatch to cvs nor dired."
>> +
>>    (interactive (list (svn-read-directory-name "SVN status directory: "
>>                                                nil default-directory nil)
>>                       current-prefix-arg))
>> -  (let ((svn-dir (format "%s%s"
>> -                         (file-name-as-directory dir)
>> -                         (svn-wc-adm-dir-name)))
>> -        (cvs-dir (format "%sCVS" (file-name-as-directory dir))))
>> -    (cond
>> -     ((file-directory-p svn-dir)
>> -      (setq arg (svn-status-possibly-negate-meaning-of-arg arg 'svn-status))
>> -      (svn-status-1 dir arg))
>> -     ((and (file-directory-p cvs-dir)
>> -           (fboundp 'cvs-examine))
>> -      (cvs-examine dir nil))
>> -     (t
>> -      (when (y-or-n-p
>> -             (format
>> -              (concat
>> -               "%s "
>> -               "is not Subversion controlled (missing %s "
>> -               "directory). "
>> -               "Run dired instead? ")
>> -              dir
>> -              (svn-wc-adm-dir-name)))
>> -        (dired dir))))))
>> +    (setq arg (svn-status-possibly-negate-meaning-of-arg arg 'svn-status))
>> +    (svn-status-1 dir arg))
>>  
>>  (defvar svn-status-display-new-status-buffer nil)
>>  (defun svn-status-1 (dir &optional arg)
>> @@ -6039,20 +6019,32 @@
>>               (in-tree (and repository-root (file-exists-p dot-svn-dir)))
>>               (dir-below (expand-file-name base-dir)))
>>          ;; (message "repository-root: %s start-dir: %s" repository-root 
>> start-dir)
>> -        (if (and (<= (car svn-client-version) 1) (< (cadr 
>> svn-client-version) 3))
>> -            (setq base-dir (svn-status-base-dir-for-ancient-svn-client 
>> start-dir)) ;; svn version < 1.3
>> -          (while (when (and dir-below (file-exists-p dot-svn-dir))
>> -                   (setq base-dir (file-name-directory dot-svn-dir))
>> -                   (string-match "\\(.+/\\).+/" dir-below)
>> -                   (setq dir-below
>> -                         (and (string-match "\\(.*/\\)[^/]+/" dir-below)
>> -                              (match-string 1 dir-below)))
>> -                   ;; (message "base-dir: %s, dir-below: %s, dot-svn-dir: 
>> %s in-tree: %s" base-dir dir-below dot-svn-dir in-tree)
>> -                   (when dir-below
>> -                     (if (string= (svn-status-repo-for-path dir-below) 
>> repository-root)
>> -                         (setq dot-svn-dir (concat dir-below 
>> (svn-wc-adm-dir-name)))
>> -                       (setq dir-below nil)))))
>> -          (setq base-dir (and in-tree base-dir)))
>> +        (if (or (> (car svn-client-version) 1) (and (= (car 
>> svn-client-version) 1) (>= (cadr svn-client-version) 7)))
>> +            (while (when (and dir-below (not (file-exists-p dot-svn-dir)))
>> +                     (string-match "\\(.+/\\).+/" dir-below)
>> +                     (setq dir-below
>> +                           (and (string-match "\\(.*/\\)[^/]+/" dir-below)
>> +                                (match-string 1 dir-below)))
>> +                     ;;(message "base-dir: %s, dir-below: %s, dot-svn-dir: 
>> %s in-tree: %s" base-dir dir-below dot-svn-dir in-tree)
>> +                     (when dir-below
>> +                       (if (string= (svn-status-repo-for-path dir-below) 
>> repository-root)
>> +                           (setq dot-svn-dir (concat dir-below 
>> (svn-wc-adm-dir-name)))
>> +                         (setq dir-below nil)))
>> +                     (setq base-dir (file-name-directory dot-svn-dir))))
>> +          (if (and (<= (car svn-client-version) 1) (< (cadr 
>> svn-client-version) 3))
>> +              (setq base-dir (svn-status-base-dir-for-ancient-svn-client 
>> start-dir)) ;; svn version < 1.3
>> +            (while (when (and dir-below (file-exists-p dot-svn-dir))
>> +                     (setq base-dir (file-name-directory dot-svn-dir))
>> +                     (string-match "\\(.+/\\).+/" dir-below)
>> +                     (setq dir-below
>> +                           (and (string-match "\\(.*/\\)[^/]+/" dir-below)
>> +                                (match-string 1 dir-below)))
>> +                     ;;(message "base-dir: %s, dir-below: %s, dot-svn-dir: 
>> %s in-tree: %s" base-dir dir-below dot-svn-dir in-tree)
>> +                     (when dir-below
>> +                       (if (string= (svn-status-repo-for-path dir-below) 
>> repository-root)
>> +                           (setq dot-svn-dir (concat dir-below 
>> (svn-wc-adm-dir-name)))
>> +                         (setq dir-below nil)))))
>> +            (setq base-dir (and in-tree base-dir))))
>>          (svn-puthash start-dir base-dir svn-status-base-dir-cache)
>>          (svn-status-message 7 "svn-status-base-dir %s => %s" start-dir 
>> base-dir)
>>          base-dir))))

Reply via email to