From 217dce54772db8ea5bb2d58be09d83184c5a4eaf Mon Sep 17 00:00:00 2001 From: Allan Odgaard Date: Mon, 3 Sep 2012 11:13:29 +0200 Subject: [PATCH] SCM driver reports if system tracks directories This can be used to make decisions about whether or not we should assign a virtual status to directories, prune them from a status display, or similar. --- Frameworks/scm/src/drivers/api.h | 3 ++- Frameworks/scm/src/drivers/svn.cc | 2 ++ Frameworks/scm/src/scm.cc | 7 ++++--- Frameworks/scm/src/scm.h | 1 + 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Frameworks/scm/src/drivers/api.h b/Frameworks/scm/src/drivers/api.h index 23b2b235..080c754c 100644 --- a/Frameworks/scm/src/drivers/api.h +++ b/Frameworks/scm/src/drivers/api.h @@ -13,7 +13,8 @@ namespace scm virtual std::string branch_name (std::string const& wcPath) const = 0; virtual status_map_t status (std::string const& wcPath) const = 0; - std::string const& name () const { return _name; } + std::string const& name () const { return _name; } + virtual bool tracks_directories () const { return false; } protected: std::string const& executable () const { return _resolved_executable; } diff --git a/Frameworks/scm/src/drivers/svn.cc b/Frameworks/scm/src/drivers/svn.cc index f021a3c7..c8ba2c72 100644 --- a/Frameworks/scm/src/drivers/svn.cc +++ b/Frameworks/scm/src/drivers/svn.cc @@ -135,6 +135,8 @@ namespace scm return res; } + bool tracks_directories () const { return true; } + private: std::string _xslt_path = NULL_STR; }; diff --git a/Frameworks/scm/src/scm.cc b/Frameworks/scm/src/scm.cc index 830a90b8..30dd4ab4 100644 --- a/Frameworks/scm/src/scm.cc +++ b/Frameworks/scm/src/scm.cc @@ -89,9 +89,10 @@ namespace scm ASSERTF(path::is_directory(_wc_path) || !path::exists(_wc_path) || _wc_path == NULL_STR, "Path: %s\n", _wc_path.c_str()); } - std::string info_t::scm_name () const { return _driver->name(); } - std::string info_t::path () const { return _wc_path; } - std::string info_t::branch () const { return _driver->branch_name(_wc_path); } + std::string info_t::scm_name () const { return _driver->name(); } + std::string info_t::path () const { return _wc_path; } + std::string info_t::branch () const { return _driver->branch_name(_wc_path); } + bool info_t::tracks_directories () const { return _driver->tracks_directories(); } status::type info_t::status (std::string const& path) { diff --git a/Frameworks/scm/src/scm.h b/Frameworks/scm/src/scm.h index efbc3a4e..a6fd4697 100644 --- a/Frameworks/scm/src/scm.h +++ b/Frameworks/scm/src/scm.h @@ -31,6 +31,7 @@ namespace scm std::string scm_name () const; std::string path () const; std::string branch () const; + bool tracks_directories () const; status::type status (std::string const& path); status_map_t files_with_status (int mask);