X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FVCBackend.h;h=b50fe371149b1f7ae15c34078f5862343e709df1;hb=f5123ccfa82215030c70561af881175d92244492;hp=c43846ed5ab659cf09ee635a03d309437bb3b06f;hpb=89158dad83efd0777a4659bb11400b5d7b289942;p=lyx.git diff --git a/src/VCBackend.h b/src/VCBackend.h index c43846ed5a..b50fe37114 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? @@ -56,6 +58,8 @@ public: virtual bool lockingToggleEnabled() = 0; /// revert current edits virtual void 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? @@ -67,8 +71,6 @@ public: virtual void getLog(support::FileName const &) = 0; /// return the current version description virtual std::string const versionString() const = 0; - /// 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 @@ -80,12 +82,17 @@ public: virtual bool toggleReadOnlyEnabled() = 0; /// Return revision info specified by the argument. virtual std::string revisionInfo(LyXVC::RevisionInfo const info) = 0; + + virtual bool prepareFileRevision(std::string const & rev, std::string & f) = 0; + + virtual bool prepareFileRevisionEnabled() = 0; + protected: /// parse information from the version file virtual void scanMaster() = 0; // GUI container for doVCCommandCall - int doVCCommand(std::string const & cmd, support::FileName const & path); + int doVCCommand(std::string const & cmd, support::FileName const & path, bool reportError = true); /** * doVCCommandCall - call out to the version control utility * @param cmd the command to execute @@ -103,8 +110,6 @@ protected: /// The status of the VC controlled file. VCStatus vcstatus; - /// The user currently keeping the lock on the VC file. - std::string locker_; /// The buffer using this VC Buffer * owner_; }; @@ -128,6 +133,8 @@ public: virtual bool checkInEnabled(); + virtual bool isCheckInWithConfirmation(); + virtual std::string checkOut(); virtual bool checkOutEnabled(); @@ -142,6 +149,8 @@ public: virtual void revert(); + virtual bool isRevertWithConfirmation(); + virtual void undoLast(); virtual bool undoLastEnabled(); @@ -156,6 +165,10 @@ public: virtual std::string revisionInfo(LyXVC::RevisionInfo const info); + virtual bool prepareFileRevision(std::string const & rev, std::string & f); + + virtual bool prepareFileRevisionEnabled(); + protected: virtual void scanMaster(); private: @@ -164,6 +177,8 @@ private: * string or if it must be a float/int. */ std::string version_; + /// The user currently keeping the lock on the VC file (or "Unlocked"). + std::string locker_; }; @@ -183,6 +198,8 @@ public: virtual bool checkInEnabled(); + virtual bool isCheckInWithConfirmation(); + virtual std::string checkOut(); virtual bool checkOutEnabled(); @@ -195,6 +212,8 @@ public: virtual bool lockingToggleEnabled(); + virtual bool isRevertWithConfirmation(); + virtual void revert(); virtual void undoLast(); @@ -203,6 +222,10 @@ public: virtual void getLog(support::FileName const &); + /// Check for messages in cvs output. + /// Returns conflict line. + std::string scanLogFile(support::FileName const & f, std::string & status); + virtual std::string const versionString() const { return "CVS: " + version_; } @@ -211,13 +234,52 @@ public: virtual std::string revisionInfo(LyXVC::RevisionInfo const info); + virtual bool prepareFileRevision(std::string const & rev, std::string & f); + + virtual bool prepareFileRevisionEnabled(); + protected: virtual void scanMaster(); + /// the mode of operation for some VC commands + enum OperationMode { + Directory = 0, + File = 1 + }; + /// possible status values of file + enum CvsStatus { + UpToDate = 0, + LocallyModified = 1, + LocallyAdded = 2, + NeedsMerge = 3, + NeedsCheckout = 4, + NoCvsFile = 5, + StatusError = 6 + }; private: support::FileName file_; // revision number from scanMaster std::string version_; + + /// 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 + /// result is placed in temporary file + void getDiff(OperationMode opmode, support::FileName const & tmpf); + /// make the file ready for editing: + /// save a copy in CVS/Base and change file permissions to rw if needed + virtual int edit(); + /// revert the edit operation + virtual int unedit(); + /// retrieve repository changes into working copy + virtual int update(OperationMode opmode, support::FileName const & tmpf); + /// check readonly state for file + /// assume true when file is writable + virtual bool isLocked() const; + /// query and parse the cvs status of file + virtual CvsStatus getStatus(); + /// convert enum to string + virtual docstring toString(CvsStatus status) const; }; @@ -237,6 +299,8 @@ public: virtual bool checkInEnabled(); + virtual bool isCheckInWithConfirmation(); + virtual std::string checkOut(); virtual bool checkOutEnabled(); @@ -251,6 +315,8 @@ public: virtual void revert(); + virtual bool isRevertWithConfirmation(); + virtual void undoLast(); virtual bool undoLastEnabled(); @@ -265,6 +331,10 @@ public: virtual std::string revisionInfo(LyXVC::RevisionInfo const info); + virtual bool prepareFileRevision(std::string const & rev, std::string & f); + + virtual bool prepareFileRevisionEnabled(); + protected: virtual void scanMaster(); /// Check for messages in svn output. Returns error. @@ -287,7 +357,7 @@ private: * was already unsuccessful. */ bool getFileRevisionInfo(); - /// cache for file revision number, "?" if already unsuccessful + /// cache for file revision number, "?" if already unsuccessful, isNumber==true std::string rev_file_cache_; /// cache for author of last commit std::string rev_author_cache_;