X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FVCBackend.h;h=78ccbd4725d5ebe9404271bfed549b627ca59791;hb=c57dc64116d8d1beb87a6b76a54cfcf82314259a;hp=33aefbe968da1e36f2dec1e8e01c3f459a2d4b04;hpb=bcbe6ae9604a907fd935e4636d3f8d910c4cfe7f;p=lyx.git diff --git a/src/VCBackend.h b/src/VCBackend.h index 33aefbe968..78ccbd4725 100644 --- a/src/VCBackend.h +++ b/src/VCBackend.h @@ -42,6 +42,8 @@ public: virtual std::string checkIn(std::string const & msg) = 0; // can be this operation processed in the current RCS? virtual bool checkInEnabled() = 0; + // should a log message provided for next checkin? + virtual bool isCheckInWithConfirmation() = 0; /// check out for editing, returns log virtual std::string checkOut() = 0; // can be this operation processed in the current RCS? @@ -55,7 +57,9 @@ public: // can be this operation processed in the current RCS? virtual bool lockingToggleEnabled() = 0; /// revert current edits - virtual void revert() = 0; + virtual bool revert() = 0; + // should a confirmation before revert requested? + virtual bool isRevertWithConfirmation() = 0; /// FIXME virtual void undoLast() = 0; // can be this operation processed in the current RCS? @@ -87,6 +91,10 @@ protected: /// parse information from the version file virtual void scanMaster() = 0; + /// 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); /** @@ -129,6 +137,8 @@ public: virtual bool checkInEnabled(); + virtual bool isCheckInWithConfirmation(); + virtual std::string checkOut(); virtual bool checkOutEnabled(); @@ -141,7 +151,9 @@ public: virtual bool lockingToggleEnabled(); - virtual void revert(); + virtual bool revert(); + + virtual bool isRevertWithConfirmation(); virtual void undoLast(); @@ -164,6 +176,7 @@ public: protected: virtual void scanMaster(); private: + bool getRevisionInfo(); /** * The version of the VC file. I am not sure if this can be a * string or if it must be a float/int. @@ -171,6 +184,12 @@ private: std::string version_; /// The user currently keeping the lock on the VC file (or "Unlocked"). std::string locker_; + /// Cache for revision info. + std::string rev_date_cache_; + /// + std::string rev_time_cache_; + /// + std::string rev_author_cache_; }; @@ -190,6 +209,8 @@ public: virtual bool checkInEnabled(); + virtual bool isCheckInWithConfirmation(); + virtual std::string checkOut(); virtual bool checkOutEnabled(); @@ -202,7 +223,9 @@ public: virtual bool lockingToggleEnabled(); - virtual void revert(); + virtual bool isRevertWithConfirmation(); + + virtual bool revert(); virtual void undoLast(); @@ -249,6 +272,24 @@ private: // revision number from scanMaster std::string version_; + /** + * doVCCommandWithOutput + * - call out to the version control utility + * - it is able to collect output in a file + * @param cmd the command to execute + * @param path the path from which to execute + * @param output the path where to store output + * @param reportError display of low level error message dialog + * @return exit status + */ + int doVCCommandWithOutput(std::string const & cmd, + support::FileName const & path, + support::FileName const & output, + bool reportError = true); + 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 @@ -268,6 +309,15 @@ private: virtual CvsStatus getStatus(); /// convert enum to string virtual docstring toString(CvsStatus status) const; + + /// cache the info values of current file revision + /// author, date and time of commit + std::string rev_author_cache_; + std::string rev_date_cache_; + std::string rev_time_cache_; + /// fills the cache values, returns true if successfull. + void getRevisionInfo(); + bool have_rev_info_; }; @@ -287,6 +337,8 @@ public: virtual bool checkInEnabled(); + virtual bool isCheckInWithConfirmation(); + virtual std::string checkOut(); virtual bool checkOutEnabled(); @@ -299,7 +351,9 @@ public: virtual bool lockingToggleEnabled(); - virtual void revert(); + virtual bool revert(); + + virtual bool isRevertWithConfirmation(); virtual void undoLast();