# HG changeset patch # User Dan Nicolaescu # Date 1214146662 0 # Node ID 0c1619dd6a248237635ccb294566485854a019c3 # Parent 3c914bd3d4a19a4f3646d2628516aad5c9930517 * vc-dav.el: Move here from url/vc-dav.el. * Makefile.in (ELCFILES): Update vc-dav.el location. * vc-dav.el: Move to the parent directory to be together with the rest of the VC backends. diff -r 3c914bd3d4a1 -r 0c1619dd6a24 lisp/ChangeLog --- a/lisp/ChangeLog Sun Jun 22 14:02:07 2008 +0000 +++ b/lisp/ChangeLog Sun Jun 22 14:57:42 2008 +0000 @@ -1,3 +1,9 @@ +2008-06-22 Dan Nicolaescu + + * vc-dav.el: Move here from url/vc-dav.el. + + * Makefile.in (ELCFILES): Update vc-dav.el location. + 2008-06-22 Stefan Monnier * Makefile.in (COMPILE_FIRST): Trim down and add autoload.el. diff -r 3c914bd3d4a1 -r 0c1619dd6a24 lisp/Makefile.in --- a/lisp/Makefile.in Sun Jun 22 14:02:07 2008 +0000 +++ b/lisp/Makefile.in Sun Jun 22 14:57:42 2008 +0000 @@ -1208,11 +1208,11 @@ $(lisp)/url/url-util.elc \ $(lisp)/url/url-vars.elc \ $(lisp)/url/url.elc \ - $(lisp)/url/vc-dav.elc \ $(lisp)/userlock.elc \ $(lisp)/vc-arch.elc \ $(lisp)/vc-bzr.elc \ $(lisp)/vc-cvs.elc \ + $(lisp)/vc-dav.elc \ $(lisp)/vc-dispatcher.elc \ $(lisp)/vc-git.elc \ $(lisp)/vc-hg.elc \ diff -r 3c914bd3d4a1 -r 0c1619dd6a24 lisp/url/ChangeLog --- a/lisp/url/ChangeLog Sun Jun 22 14:02:07 2008 +0000 +++ b/lisp/url/ChangeLog Sun Jun 22 14:57:42 2008 +0000 @@ -1,3 +1,8 @@ +2008-06-22 Dan Nicolaescu + + * vc-dav.el: Move to the parent directory to be together with the + rest of the VC backends. + 2008-06-07 Glenn Morris * url-auth.el (auth-source-user-or-password): Remove unnecessary diff -r 3c914bd3d4a1 -r 0c1619dd6a24 lisp/url/vc-dav.el --- a/lisp/url/vc-dav.el Sun Jun 22 14:02:07 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,182 +0,0 @@ -;;; vc-dav.el --- vc.el support for WebDAV - -;; Copyright (C) 2001, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. - -;; Author: Bill Perry -;; Maintainer: Bill Perry -;; Keywords: url, vc - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see . - - -;;; Commentary: - -;;; Code: - -(require 'url) -(require 'url-dav) - -;;; Required functions for a vc backend -(defun vc-dav-registered (url) - "Return t if URL is registered with a DAV aware server." - (url-dav-vc-registered url)) - -(defun vc-dav-state (url) - "Return the current version control state of URL. -For a list of possible values, see `vc-state'." - ;; Things we can support for WebDAV - ;; - ;; up-to-date - use lockdiscovery - ;; edited - check for an active lock by us - ;; USER - use lockdiscovery + owner - ;; - ;; These don't make sense for WebDAV - ;; needs-patch - ;; needs-merge - ;; unlocked-changes - (let ((locks (url-dav-active-locks url))) - (cond - ((null locks) 'up-to-date) - ((assoc url locks) - ;; SOMEBODY has a lock... let's find out who. - (setq locks (cdr (assoc url locks))) - (if (rassoc url-dav-lock-identifier locks) - ;; _WE_ have a lock - 'edited - (cdr (car locks))))))) - -(defun vc-dav-checkout-model (url) - "Indicate whether URL needs to be \"checked out\" before it can be edited. -See `vc-checkout-model' for a list of possible values." - ;; The only thing we can support with webdav is 'locking - 'locking) - -;; This should figure out the version # of the file somehow. What is -;; the most appropriate property in WebDAV to look at for this? -(defun vc-dav-workfile-version (url) - "Return the current workfile version of URL." - "Unknown") - -(defun vc-dav-register (url &optional rev comment) - "Register URL in the DAV backend." - ;; Do we need to do anything here? FIXME? - ) - -(defun vc-dav-checkin (url rev comment) - "Commit changes in URL to WebDAV. -If REV is non-nil, that should become the new revision number. -COMMENT is used as a check-in comment." - ;; This should PUT the resource and release any locks that we hold. - ) - -(defun vc-dav-checkout (url &optional editable rev destfile) - "Check out revision REV of URL into the working area. - -If EDITABLE is non-nil URL should be writable by the user and if -locking is used for URL, a lock should also be set. - -If REV is non-nil, that is the revision to check out. If REV is the -empty string, that means to check ou tht ehead of the trunk. - -If optional arg DESTFILE is given, it is an alternate filename to -write the contents to. -" - ;; This should LOCK the resource. - ) - -(defun vc-dav-revert (url &optional contents-done) - "Revert URL back to the current workfile version. - -If optional arg CONTENTS-DONE is non-nil, then the contents of FILE -have already been reverted from a version backup, and this function -only needs to update the status of URL within the backend. -" - ;; Should do a GET if !contents_done - ;; Should UNLOCK the file. - ) - -(defun vc-dav-print-log (url) - "Insert the revision log of URL into the *vc* buffer." - ) - -(defun vc-dav-diff (url &optional rev1 rev2) - "Insert the diff for URL into the *vc-diff* buffer. -If REV1 and REV2 are non-nil report differences from REV1 to REV2. -If REV1 is nil, use the current workfile version as the older version. -If REV2 is nil, use the current workfile contents as the nwer version. - -It should return a status of either 0 (no differences found), or -1 (either non-empty diff or the diff is run asynchronously). -" - ;; We should do this asynchronously... - ;; How would we do it at all, that is the question! - ) - - - -;;; Optional functions -;; Should be faster than vc-dav-state - but how? -(defun vc-dav-state-heuristic (url) - "Estimate the version control state of URL at visiting time." - (vc-dav-state url)) - -;; This should use url-dav-get-properties with a depth of `1' to get -;; all the properties. -(defun vc-dav-dir-state (url) - "find the version control state of all files in DIR in a fast way." - ) - -(defun vc-dav-workfile-unchanged-p (url) - "Return non-nil if URL is unchanged from its current workfile version." - ;; Probably impossible with webdav - ) - -(defun vc-dav-responsible-p (url) - "Return non-nil if DAV considers itself `responsible' for URL." - ;; Check for DAV support on the web server. - t) - -(defun vc-dav-could-register (url) - "Return non-nil if URL could be registered under this backend." - ;; Check for DAV support on the web server. - t) - -;;; Unimplemented functions -;; -;; vc-dav-latest-on-branch-p(URL) -;; Return non-nil if the current workfile version of FILE is the -;; latest on its branch. There are no branches in webdav yet. -;; -;; vc-dav-mode-line-string(url) -;; Return a dav-specific mode line string for URL. Are there any -;; specific states that we want exposed? -;; -;; vc-dav-dired-state-info(url) -;; Translate the `vc-state' property of URL into a string that can -;; be used in a vc-dired buffer. Are there any extra states that -;; we want exposed? -;; -;; vc-dav-receive-file(url rev) -;; Let this backend `receive' a file that is already registered -;; under another backend. The default just calls `register', which -;; should be sufficient for WebDAV. -;; -;; vc-dav-unregister(url) -;; Unregister URL. Not possible with WebDAV, other than by -;; deleting the resource. - -(provide 'vc-dav) - -;; arch-tag: 0a0fb9fe-8190-4c0a-a179-5c291d3a467e -;;; vc-dav.el ends here diff -r 3c914bd3d4a1 -r 0c1619dd6a24 lisp/vc-dav.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/vc-dav.el Sun Jun 22 14:57:42 2008 +0000 @@ -0,0 +1,182 @@ +;;; vc-dav.el --- vc.el support for WebDAV + +;; Copyright (C) 2001, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + +;; Author: Bill Perry +;; Maintainer: Bill Perry +;; Keywords: url, vc + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + + +;;; Commentary: + +;;; Code: + +(require 'url) +(require 'url-dav) + +;;; Required functions for a vc backend +(defun vc-dav-registered (url) + "Return t if URL is registered with a DAV aware server." + (url-dav-vc-registered url)) + +(defun vc-dav-state (url) + "Return the current version control state of URL. +For a list of possible values, see `vc-state'." + ;; Things we can support for WebDAV + ;; + ;; up-to-date - use lockdiscovery + ;; edited - check for an active lock by us + ;; USER - use lockdiscovery + owner + ;; + ;; These don't make sense for WebDAV + ;; needs-patch + ;; needs-merge + ;; unlocked-changes + (let ((locks (url-dav-active-locks url))) + (cond + ((null locks) 'up-to-date) + ((assoc url locks) + ;; SOMEBODY has a lock... let's find out who. + (setq locks (cdr (assoc url locks))) + (if (rassoc url-dav-lock-identifier locks) + ;; _WE_ have a lock + 'edited + (cdr (car locks))))))) + +(defun vc-dav-checkout-model (url) + "Indicate whether URL needs to be \"checked out\" before it can be edited. +See `vc-checkout-model' for a list of possible values." + ;; The only thing we can support with webdav is 'locking + 'locking) + +;; This should figure out the version # of the file somehow. What is +;; the most appropriate property in WebDAV to look at for this? +(defun vc-dav-workfile-version (url) + "Return the current workfile version of URL." + "Unknown") + +(defun vc-dav-register (url &optional rev comment) + "Register URL in the DAV backend." + ;; Do we need to do anything here? FIXME? + ) + +(defun vc-dav-checkin (url rev comment) + "Commit changes in URL to WebDAV. +If REV is non-nil, that should become the new revision number. +COMMENT is used as a check-in comment." + ;; This should PUT the resource and release any locks that we hold. + ) + +(defun vc-dav-checkout (url &optional editable rev destfile) + "Check out revision REV of URL into the working area. + +If EDITABLE is non-nil URL should be writable by the user and if +locking is used for URL, a lock should also be set. + +If REV is non-nil, that is the revision to check out. If REV is the +empty string, that means to check ou tht ehead of the trunk. + +If optional arg DESTFILE is given, it is an alternate filename to +write the contents to. +" + ;; This should LOCK the resource. + ) + +(defun vc-dav-revert (url &optional contents-done) + "Revert URL back to the current workfile version. + +If optional arg CONTENTS-DONE is non-nil, then the contents of FILE +have already been reverted from a version backup, and this function +only needs to update the status of URL within the backend. +" + ;; Should do a GET if !contents_done + ;; Should UNLOCK the file. + ) + +(defun vc-dav-print-log (url) + "Insert the revision log of URL into the *vc* buffer." + ) + +(defun vc-dav-diff (url &optional rev1 rev2) + "Insert the diff for URL into the *vc-diff* buffer. +If REV1 and REV2 are non-nil report differences from REV1 to REV2. +If REV1 is nil, use the current workfile version as the older version. +If REV2 is nil, use the current workfile contents as the nwer version. + +It should return a status of either 0 (no differences found), or +1 (either non-empty diff or the diff is run asynchronously). +" + ;; We should do this asynchronously... + ;; How would we do it at all, that is the question! + ) + + + +;;; Optional functions +;; Should be faster than vc-dav-state - but how? +(defun vc-dav-state-heuristic (url) + "Estimate the version control state of URL at visiting time." + (vc-dav-state url)) + +;; This should use url-dav-get-properties with a depth of `1' to get +;; all the properties. +(defun vc-dav-dir-state (url) + "find the version control state of all files in DIR in a fast way." + ) + +(defun vc-dav-workfile-unchanged-p (url) + "Return non-nil if URL is unchanged from its current workfile version." + ;; Probably impossible with webdav + ) + +(defun vc-dav-responsible-p (url) + "Return non-nil if DAV considers itself `responsible' for URL." + ;; Check for DAV support on the web server. + t) + +(defun vc-dav-could-register (url) + "Return non-nil if URL could be registered under this backend." + ;; Check for DAV support on the web server. + t) + +;;; Unimplemented functions +;; +;; vc-dav-latest-on-branch-p(URL) +;; Return non-nil if the current workfile version of FILE is the +;; latest on its branch. There are no branches in webdav yet. +;; +;; vc-dav-mode-line-string(url) +;; Return a dav-specific mode line string for URL. Are there any +;; specific states that we want exposed? +;; +;; vc-dav-dired-state-info(url) +;; Translate the `vc-state' property of URL into a string that can +;; be used in a vc-dired buffer. Are there any extra states that +;; we want exposed? +;; +;; vc-dav-receive-file(url rev) +;; Let this backend `receive' a file that is already registered +;; under another backend. The default just calls `register', which +;; should be sufficient for WebDAV. +;; +;; vc-dav-unregister(url) +;; Unregister URL. Not possible with WebDAV, other than by +;; deleting the resource. + +(provide 'vc-dav) + +;; arch-tag: 0a0fb9fe-8190-4c0a-a179-5c291d3a467e +;;; vc-dav.el ends here