Compare commits
No commits in common. "38a63f2e50e4a18322db5093045e358660723353" and "2b7e37e3b96cab7394b3cb14e36920f1a8903ad1" have entirely different histories.
38a63f2e50
...
2b7e37e3b9
1 changed files with 2 additions and 10 deletions
|
|
@ -103,13 +103,9 @@ std::string FetchGit(const GitSource& source, const fs::path& cloneDir) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Random per-invocation tmp suffix so concurrent crafter-build processes
|
|
||||||
// resolving to the same cache key don't share an in-flight `.tmp`
|
|
||||||
// directory — git's pack tempfiles would get yanked when one process
|
|
||||||
// removes or renames the dir out from under the other.
|
|
||||||
std::random_device rd;
|
|
||||||
fs::path tmpDir = cloneDir;
|
fs::path tmpDir = cloneDir;
|
||||||
tmpDir += std::format(".tmp.{:08x}{:08x}", rd(), rd());
|
tmpDir += ".tmp";
|
||||||
|
if (fs::exists(tmpDir)) fs::remove_all(tmpDir);
|
||||||
|
|
||||||
if (auto err = runGit(std::format("git clone --recursive {} {}", ShellQuote(source.url), ShellQuote(tmpDir.string())))) {
|
if (auto err = runGit(std::format("git clone --recursive {} {}", ShellQuote(source.url), ShellQuote(tmpDir.string())))) {
|
||||||
if (fs::exists(tmpDir)) fs::remove_all(tmpDir);
|
if (fs::exists(tmpDir)) fs::remove_all(tmpDir);
|
||||||
|
|
@ -132,10 +128,6 @@ std::string FetchGit(const GitSource& source, const fs::path& cloneDir) {
|
||||||
fs::rename(tmpDir, cloneDir, ec);
|
fs::rename(tmpDir, cloneDir, ec);
|
||||||
if (ec) {
|
if (ec) {
|
||||||
fs::remove_all(tmpDir);
|
fs::remove_all(tmpDir);
|
||||||
// If a concurrent build won the race, cloneDir now exists with the
|
|
||||||
// same source revision (cache key includes url+branch+commit), so
|
|
||||||
// discard our clone and reuse theirs.
|
|
||||||
if (fs::exists(cloneDir)) return "";
|
|
||||||
return std::format("rename {} -> {} failed: {}", tmpDir.string(), cloneDir.string(), ec.message());
|
return std::format("rename {} -> {} failed: {}", tmpDir.string(), cloneDir.string(), ec.message());
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue