On 12/24/20 3:20 AM, Pavel Sanda wrote: > On Fri, Dec 18, 2020 at 10:13:25PM +0100, Richard Kimberly Heck wrote: >> commit 7e5c42593e45424676b466db257e5c377329c2e4 >> Author: Richard Kimberly Heck <rikih...@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; >> } > I am sorry not to have a time to follow this thoroughly, but is this > cvs log / git log used only inh "register" case as initially discussed > or you want to use it on every file load? > Calling log could but pretty expensive operation for large archives.
The -n0 flag that Yuriy proposed should take care of that, too. So another reason to go that way. Riki -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel