Avoid unlink of an open file.

Works on Unix, not so great on Windows it turns out. Thanks to Jasin
and Geoff for figuring this out in the end.
This commit is contained in:
James Turner 2016-05-04 22:13:15 +01:00
parent 639e16b722
commit d39b055ed1
2 changed files with 14 additions and 2 deletions

View File

@ -136,7 +136,7 @@ void SVNDirectory::parseCache()
_cachedRevision = versionName;
doneSelf = true;
} else {
DAVResource* child = addChildDirectory(hrefPtr)->collection();
DAVResource* child = parseChildDirectory(hrefPtr)->collection();
string s = strutils::strip(versionName);
if (!s.empty()) {
child->setVersionName(versionName);
@ -235,6 +235,17 @@ SVNDirectory::addChildDirectory(const std::string& dirName)
return child;
}
SVNDirectory*
SVNDirectory::parseChildDirectory(const std::string& dirName)
{
assert(!dav->childWithName(dirName));
DAVCollection* childCol = dav->createChildCollection(dirName);
SVNDirectory* child = new SVNDirectory(this, childCol);
childCol->setVersionName(child->cachedRevision());
_children.push_back(child);
return child;
}
void SVNDirectory::deleteChildByName(const std::string& nm)
{
DAVResource* child = dav->childWithName(nm);

View File

@ -91,7 +91,8 @@ private:
void writeCache();
DirectoryList::iterator findChildDir(const std::string& dirName);
SVNDirectory* parseChildDirectory(const std::string& dirName);
SGPath localPath;
DAVCollection* dav;
SVNRepository* repo;