Node:Adding new backends, Next:Known VC-problems, Previous:Refreshing the VC-state, Up:Version-control support
There are mainly three necessary steps for adding a new1 backend BE which should be supported by ECB:
ecb-vc-supported-backends
ECB needs a function how to identify the new backend BE for a certain
directory. If there exists already a library (other then VC)
supporting this backend then this library propably contains already
such a function which can be used or can be used at least with a small
elisp-wrapper. If no elisp-library for backend BE exists then you have
probably write the full identify-backend-function for your self. This
function has to be added to ecb-vc-supported-backends
.
ecb-vc-supported-backends
Associated to the new identify-backend-function mentioned in step 1 a
new check-state-function is needed which can be used by ECB to get the
VC-state for a file. See Checking the state for a description
about the needed interface of such a function. In combinatio with the
identify-backend-function from step 1 this function has to be added to
ecb-vc-supported-backends
.
This step is not essential if you do not need the displayed VC-state automatically updated after a checkin/out of a file via the commands available for backend BE (e.g. clearcase.el offers for the backend Clearcase elisp-commands to checkin and checkout a file which then should also update the displayed state in the ECB-tree-buffers. All you need is a way to tell these commands that they should clear the ECB-VC-cache for the file and then restart the ECB-VC-check-mechanism. This should be done after these commands have finished their original job.
ECB enables this per default for all backends supported by the
VC-package with the following code. Maybe this is a good starting
point.
(defvar ecb-checkedin-file nil "Stored the filename of the most recent checked-in file. Is only set by the after-advice of `vc-checkin' and `ecb-vc-checkin-hook' \(resets it to nil). Evaluated only by `ecb-vc-checkin-hook'. This is the communication-channel between `vc-checkin' and `ecb-vc-checkin-hook' so this hook-function gets the filename of the checked-in file.") (defadvice vc-checkin (after ecb) "Simply stores the filename of the checked-in file in `ecb-checkedin-file' so it is available in the `vc-checkin-hook'." (setq ecb-checkedin-file (ecb-fix-filename (ad-get-arg 0)))) (defun ecb-vc-checkin-hook () "Ensures that the ECB-cache is reset and the entry for the most recent checkedin file is cleared. Uses `ecb-checkedin-file' as last checked-in file." (when ecb-checkedin-file (ecb-vc-cache-remove ecb-checkedin-file) (ecb-vc-reset-vc-stealthy-checks) (setq ecb-checkedin-file nil)))
i.e. not already supported by the VC-package because all these backends are automatically supported by ECB too!