X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fvc-backend.h;h=d5e90303f3d1c50109a8e214722058c5aa7fad86;hb=9ee46b846e5e84ad40ceda4f4af94aeb86cd90a2;hp=0e8652763ba36a5ff661c53d78b574a70ff0396c;hpb=797d87b4513088a66b17c7ac653b84e36ea80458;p=lyx.git diff --git a/src/vc-backend.h b/src/vc-backend.h index 0e8652763b..d5e90303f3 100644 --- a/src/vc-backend.h +++ b/src/vc-backend.h @@ -1,72 +1,90 @@ // -*- C++ -*- +/** + * \file vc-backend.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author Lars Gullik Bjønnes + * + * Full author contact details are available in file CREDITS. + */ #ifndef VC_BACKEND_H #define VC_BACKEND_H -#ifdef __GNUG__ -#pragma interface -#endif - -#include "LString.h" -#include "support/syscall.h" +#include class Buffer; -/// +/// A simple version control system interface class VCS { public: - /// + /// the status of the managed file enum VCStatus { - /// UNLOCKED, - /// LOCKED }; - /// + virtual ~VCS() {} - /// - virtual void scanMaster() = 0; - /// - virtual void registrer(string const & msg) = 0; - /// - virtual void checkIn(string const & msg) = 0; - /// + + /// register a file for version control + virtual void registrer(std::string const & msg) = 0; + /// check in the current revision + virtual void checkIn(std::string const & msg) = 0; + /// check out for editing virtual void checkOut() = 0; - /// + /// revert current edits virtual void revert() = 0; - /// + /// FIXME virtual void undoLast() = 0; - /// - virtual void getLog(string const &) = 0; - /// - string const & version() const { return version_; } - /// - string const & locker() const { return locker_; } - /// + /** + * getLog - read the revision log into the given file + * @param fname file name to read into + */ + virtual void getLog(std::string const &) = 0; + /// return the current version description + virtual std::string const versionString() const = 0; + /// return the current version + std::string const & version() const { + return version_; + } + /// return the user who has locked the file + std::string const & locker() const { return locker_; } + /// set the owning buffer void owner(Buffer * b) { owner_ = b; } - /// + /// return the owning buffer Buffer * owner() const { return owner_; } - /// + /// return the lock status of this file VCStatus status() const { return vcstatus; } protected: - /// - static int doVCCommand(string const &, string const &); + /// parse information from the version file + virtual void scanMaster() = 0; + + /** + * doVCCommand - call out to the version control utility + * @param cmd the command to execute + * @param path the path from which to execute + * @return exit status + */ + static int doVCCommand(std::string const & cmd, std::string const & path); + + /** + * The master VC file. For RCS this is *,v or RCS/ *,v. master should + * have full path. + */ + std::string master_; - /** The master VC file. For RCS this is *,v or RCS/ *,v. master should - have full path. - */ - string master_; - /// The status of the VC controlled file. VCStatus vcstatus; - - /** The version of the VC file. I am not sure if this can be a - string of if it must be a - float/int. */ - string version_; - + + /** + * The version of the VC file. I am not sure if this can be a + * string or if it must be a float/int. + */ + std::string version_; + /// The user currently keeping the lock on the VC file. - string locker_; + std::string locker_; /// The buffer using this VC Buffer * owner_; }; @@ -75,27 +93,33 @@ protected: /// class RCS : public VCS { public: - /// + explicit - RCS(string const & m); - /// - static string find_file(string const & file); - /// - static void retrive(string const & file); - /// - virtual void scanMaster(); - /// - virtual void registrer(string const & msg); - /// - virtual void checkIn(string const & msg); - /// + RCS(std::string const & m); + + /// return the revision file for the given file, if found + static std::string const find_file(std::string const & file); + + static void retrieve(std::string const & file); + + virtual void registrer(std::string const & msg); + + virtual void checkIn(std::string const & msg); + virtual void checkOut(); - /// + virtual void revert(); - /// + virtual void undoLast(); - /// - virtual void getLog(string const &); + + virtual void getLog(std::string const &); + + virtual std::string const versionString() const { + return "RCS: " + version_; + } + +protected: + virtual void scanMaster(); }; @@ -104,24 +128,31 @@ class CVS : public VCS { public: /// explicit - CVS(string const & m, string const & f); - /// - static string find_file(string const & file); - /// - virtual void scanMaster(); - /// - virtual void registrer(string const & msg); - /// - virtual void checkIn(string const & msg); - /// + CVS(std::string const & m, std::string const & f); + + /// return the revision file for the given file, if found + static std::string const find_file(std::string const & file); + + virtual void registrer(std::string const & msg); + + virtual void checkIn(std::string const & msg); + virtual void checkOut(); - /// + virtual void revert(); - /// + virtual void undoLast(); - /// - virtual void getLog(string const &); + + virtual void getLog(std::string const &); + + virtual std::string const versionString() const { + return "CVS: " + version_; + } + +protected: + virtual void scanMaster(); + private: - string file_; + std::string file_; }; -#endif +#endif // VCBACKEND_H