X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FVCBackend.h;h=2ee076f2e1d0b2b4ad8ad70a587a4dfa1e6e0419;hb=4732da8dc2ffb44a418b0e776ff607079720736a;hp=6d3903c68698476125b465a436011ac7f9b28abf;hpb=2f9ef2b98a6170d4c890ce3325ddc3ad9105bbad;p=lyx.git diff --git a/src/VCBackend.h b/src/VCBackend.h index 6d3903c686..2ee076f2e1 100644 --- a/src/VCBackend.h +++ b/src/VCBackend.h @@ -33,14 +33,13 @@ public: UNLOCKED, LOCKED, NOLOCKING, - /// This file is not in version control, but it could be aded - /// (because the path is under version control) - UNVERSIONED, }; - VCS(Buffer * b) : owner_(b) {} + VCS(Buffer * b) : vcstatus(NOLOCKING), owner_(b) {} virtual ~VCS() {} + /// the name of the vc backend + virtual std::string vcname() const = 0; /// register a file for version control virtual void registrer(std::string const & msg) = 0; /// can this operation be processed in the current VCS? @@ -52,7 +51,7 @@ public: /// copy a file. Return non-empty log on success, empty log on failure. virtual std::string copy(support::FileName const &, std::string const &) = 0; /// check in the current revision. - /// \p log is non-empty on success and may be empty on failure. + /// \p log is non-empty on success and may be empty on failure. virtual LyXVC::CommandResult checkIn(std::string const & msg, std::string & log) = 0; /// can this operation be processed in the current VCS? @@ -105,9 +104,9 @@ public: virtual bool prepareFileRevisionEnabled() = 0; /// Check the directory of file and all parent directories - /// for the existence of the given pathname - static bool checkparentdirs(support::FileName const & file, std::string const & pathname); - + /// for the existence of repository-info like .git or .svn + static bool checkparentdirs(support::FileName const & file, std::string const & vcsdir); + protected: /// parse information from the version file virtual void scanMaster() = 0; @@ -115,7 +114,7 @@ protected: /// Prepare a version identifier suitable for RCS and CVS. /// If needed converts last or relative number to the absolute revision. bool makeRCSRevision(std::string const &version, std::string &revis) const; - + /// GUI container for doVCCommandCall int doVCCommand(std::string const & cmd, support::FileName const & path, bool reportError = true); /** @@ -153,6 +152,8 @@ public: /// get file from repo, the caller must ensure that it does not exist locally static bool retrieve(support::FileName const & file); + virtual std::string vcname() const { return "RCS"; }; + virtual void registrer(std::string const & msg); virtual bool renameEnabled(); @@ -237,6 +238,8 @@ public: /// get file from repo, the caller must ensure that it does not exist locally static bool retrieve(support::FileName const & file); + virtual std::string vcname() const { return "CVS"; }; + virtual void registrer(std::string const & msg); virtual bool renameEnabled(); @@ -276,7 +279,7 @@ public: virtual void getLog(support::FileName const &); - /// Check for messages in cvs output. + /// Check for messages in cvs output. /// Returns conflict line. std::string scanLogFile(support::FileName const & f, std::string & status); @@ -331,7 +334,7 @@ private: static int doVCCommandCallWithOutput(std::string const & cmd, support::FileName const & path, support::FileName const & output); - + /// return the quoted pathname if Directory or filename if File virtual std::string const getTarget(OperationMode opmode) const; /// collect the diff of file or directory against repository @@ -376,6 +379,8 @@ public: /// get file from repo, the caller must ensure that it does not exist locally static bool retrieve(support::FileName const & file); + virtual std::string vcname() const { return "SVN"; }; + virtual void registrer(std::string const & msg); virtual bool renameEnabled(); @@ -484,6 +489,8 @@ public: /// get file from repo, the caller must ensure that it does not exist locally static bool retrieve(support::FileName const & file); + virtual std::string vcname() const { return "GIT"; }; + virtual void registrer(std::string const & msg); virtual bool renameEnabled(); @@ -542,6 +549,29 @@ protected: /// Check in files \p f with log \p msg LyXVC::CommandResult checkIn(std::vector const & f, std::string const & msg, std::string & log); + +private: + /** + * Real code for obtaining file revision info. Fills all file-related caches + * and returns true if successfull. + * "?" is stored in rev_file_cache_ as a signal if request for obtaining info + * was already unsuccessful. + */ + bool getFileRevisionInfo(); + /// cache for file revision number, "?" if already unsuccessful, isNumber==true + std::string rev_file_cache_; + /// cache for abbreviated file revision number, "?" if already unsuccessful, isNumber==true + std::string rev_file_abbrev_cache_; + /// cache for author of last commit + std::string rev_author_cache_; + /// cache for date of last commit + std::string rev_date_cache_; + /// cache for time of last commit + std::string rev_time_cache_; + /// fills rev_tree_cache_, returns true if successfull. + bool getTreeRevisionInfo(); + /// cache for tree revision number, "?" if already unsuccessful + std::string rev_tree_cache_; }; } // namespace lyx