X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FVCBackend.h;h=e0f6266513f0a60553761d07481a93c90f89ad5e;hb=6ec6db8cd9073bcb856e6a055d12ff95802e22be;hp=e914f7863782e99183d8c4a586e149479625f1c7;hpb=2405788d84718f19be47ff8c03f93ef316a900f5;p=lyx.git diff --git a/src/VCBackend.h b/src/VCBackend.h index e914f78637..e0f6266513 100644 --- a/src/VCBackend.h +++ b/src/VCBackend.h @@ -103,9 +103,15 @@ public: /// can this operation be processed in the current VCS? virtual bool prepareFileRevisionEnabled() = 0; - /// Check the directory of file and all parent directories - /// for the existence of repository-info like .git or .svn - static bool checkParentDirs(support::FileName const & file, std::string const & vcsdir); + /// Check the directory given in start and all parent directories + /// for the existence of some other file + /// \param start : where we start looking (we will strip the filename if given + /// and just use the directory + /// \param file : the directory or file for which to look + /// Note that this can be e.g. ".git/index", so we will look for the .git + /// directory and also for an index file in it. + /// Returns a FileName object for the found file or else an empty FileName + static support::FileName checkParentDirs(support::FileName const & start, std::string const & file); protected: /// parse information from the version file @@ -123,13 +129,8 @@ protected: * @param path the path from which to execute * @return exit status */ - static int doVCCommandCall(std::string const & cmd, support::FileName const & path); - - /** - * The master VC file. For RCS this is *,v or RCS/ *,v. master should - * have full path. - */ - support::FileName master_; + static int doVCCommandCall(std::string const & cmd, + support::FileName const & path = support::FileName()); /// The status of the VC controlled file. VCStatus vcstatus_; @@ -146,13 +147,14 @@ public: explicit RCS(support::FileName const & m, Buffer * b); - /// return the revision file for the given file, if found + /// Determine whether the file is under RCS control + /// \return the file containing the meta-data (FILE,v) if so, else empty static support::FileName const findFile(support::FileName const & file); /// get file from repo, the caller must ensure that it does not exist locally static bool retrieve(support::FileName const & file); - std::string vcname() const override { return "RCS"; }; + std::string vcname() const override { return "RCS"; } void registrer(std::string const & msg) override; @@ -209,6 +211,12 @@ protected: void scanMaster() override; private: bool getRevisionInfo(); + /** + * The master VC file. For RCS this is *,v or RCS/ *,v. + * master should have full path. + */ + support::FileName master_; + /** * The version of the VC file. I am not sure if this can be a * string or if it must be a float/int. @@ -232,13 +240,14 @@ public: explicit CVS(support::FileName const & m, Buffer * b); - /// return the revision file for the given file, if found + /// Determine whether the file is under CVS control + /// \return the file containing the meta-data (CVS/entries) if so, else empty static support::FileName const findFile(support::FileName const & file); /// get file from repo, the caller must ensure that it does not exist locally static bool retrieve(support::FileName const & file); - std::string vcname() const override { return "CVS"; }; + std::string vcname() const override { return "CVS"; } void registrer(std::string const & msg) override; @@ -314,6 +323,11 @@ protected: }; private: + /** + * The master VC file. For CVS this is CVS/Entries + * master should have full path. + */ + support::FileName master_; // revision number from scanMaster std::string version_; @@ -371,15 +385,15 @@ class SVN : public VCS { public: /// explicit - SVN(support::FileName const & m, Buffer * b); + SVN(Buffer * b); - /// return the revision file for the given file, if found - static support::FileName const findFile(support::FileName const & file); + /// Determine whether the file is under SVN control + static bool findFile(support::FileName const & file); /// get file from repo, the caller must ensure that it does not exist locally static bool retrieve(support::FileName const & file); - std::string vcname() const override { return "SVN"; }; + std::string vcname() const override { return "SVN"; } void registrer(std::string const & msg) override; @@ -481,15 +495,16 @@ class GIT : public VCS { public: /// explicit - GIT(support::FileName const & m, Buffer * b); + GIT(Buffer * b); - /// return the revision file for the given file, if found - static support::FileName const findFile(support::FileName const & file); + /// Determine whether the file is under GIT control + /// \return the file itself if so, else empty + static bool findFile(support::FileName const & file); /// get file from repo, the caller must ensure that it does not exist locally static bool retrieve(support::FileName const & file); - std::string vcname() const override { return "GIT"; }; + std::string vcname() const override { return "GIT"; } void registrer(std::string const & msg) override;