[LyX/master] Simplify checking whether files are controlled by SVN and GIT.

Richard Kimberly Heck rikiheck at lyx.org
Fri Dec 18 21:13:25 UTC 2020


commit 7e5c42593e45424676b466db257e5c377329c2e4
Author: Richard Kimberly Heck <rikiheck at lyx.org>
Date:   Fri Dec 18 16:43:52 2020 -0500

    Simplify checking whether files are controlled by SVN and GIT.
---
 src/VCBackend.cpp |   40 ++++++++++++----------------------------
 1 files changed, 12 insertions(+), 28 deletions(-)

diff --git a/src/VCBackend.cpp b/src/VCBackend.cpp
index f8c2497..01d546d 100644
--- a/src/VCBackend.cpp
+++ b/src/VCBackend.cpp
@@ -537,25 +537,19 @@ CVS::CVS(FileName const & m, Buffer * b) : VCS(b)
 
 FileName const CVS::findFile(FileName const & file)
 {
-	// First we look for the CVS/Entries in the same dir
-	// where we have file.
+	LYXERR(Debug::LYXVC, "LyXVC: Checking if "
+		   << onlyFileName(file.absFileName()) << "is under cvs");
+	// First we look for the CVS/Entries in the same dir where we have file.
 	// Note that it is not necessary to search parent directories, since
 	// there will be a CVS/Entries file in every subdirectory.
 	FileName const entries(onlyPath(file.absFileName()) + "/CVS/Entries");
-	string const tmpf = '/' + onlyFileName(file.absFileName()) + '/';
-	LYXERR(Debug::LYXVC, "LyXVC: Checking if file is under cvs in `" << entries
-			     << "' for `" << tmpf << '\'');
 	if (entries.isReadableFile()) {
-		// Ok we are at least in a CVS dir. Parse the CVS/Entries
-		// and see if we can find this file. We do a fast and
-		// dirty parse here.
-		ifstream ifs(entries.toFilesystemEncoding().c_str());
-		string line;
-		while (getline(ifs, line)) {
-			LYXERR(Debug::LYXVC, "\tEntries: " << line);
-			if (contains(line, tmpf))
-				return entries;
-		}
+		// We are in a CVS-managed directory
+		// See if the file is known to CVS
+		string const cmd = "cvs log " + quoteName(file.toFilesystemEncoding());
+		int const ret = doVCCommandCall(cmd, file.onlyPath());
+		if (ret == 0)
+			return entries;
 	}
 	return FileName();
 }
@@ -1837,23 +1831,13 @@ bool GIT::findFile(FileName const & file)
 		return false;
 	}
 
-	// Now we check the status of the file.
-	TempFile tempfile("lyxvcout");
-	FileName tmpf = tempfile.name();
-	if (tmpf.empty()) {
-		LYXERR(Debug::LYXVC, "Could not generate logfile " << tmpf);
-		return false;
-	}
-
+	// Now we check if the file is known to git.
 	string const fname = onlyFileName(file.absFileName());
 	LYXERR(Debug::LYXVC, "LyXVC: Checking if file is under git control for `"
 			<< fname << '\'');
-	doVCCommandCall("git ls-files " +
-			quoteName(fname) + " > " +
-			quoteName(tmpf.toFilesystemEncoding()),
+	int const ret = doVCCommandCall("git log " + quoteName(fname),
 			file.onlyPath());
-	tmpf.refresh();
-	bool found = !tmpf.isFileEmpty();
+	bool const found = (ret == 0);
 	LYXERR(Debug::LYXVC, "GIT control: " << (found ? "enabled" : "disabled"));
 	return found;
 }


More information about the lyx-cvs mailing list