Simplify checking whether files are controlled by SVN and GIT.

This commit is contained in:
Richard Kimberly Heck 2020-12-18 16:43:52 -05:00
parent 05551a7cfb
commit 7e5c42593e

View File

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