File tree Expand file tree Collapse file tree 1 file changed +17
-0
lines changed Expand file tree Collapse file tree 1 file changed +17
-0
lines changed Original file line number Diff line number Diff line change @@ -2570,6 +2570,23 @@ fn prepare_working_directory(
2570
2570
}
2571
2571
} ) ?;
2572
2572
2573
+ // FIXME: fix locking in the presence of worktrees: if you're using multiple
2574
+ // worktrees simultaneously with the `working-copy` strategy, then they all
2575
+ // try to acquire `working-copy.lock`, which is wrong. They should be able
2576
+ // to acquire locks for their specify working copies. Possibly each worktree
2577
+ // should simply have its own lock file in its git dir.
2578
+ //
2579
+ // FIXME: fix locking in the presence of contention for a single worktree:
2580
+ // if you want to run `git test` from the same worktree multiple times
2581
+ // concurrently, then you end up trying to lock the same worktrees. It would
2582
+ // be a better user experience if we simply created more worktrees or
2583
+ // allocated them in a different manner other than by worker ID (which can
2584
+ // be the same between concurrent `git test` invocations).
2585
+ //
2586
+ // FIXME: make worktree acquisition atomic. I got into a situation where one
2587
+ // of my worktrees was not correctly provisioned, causing issues only when I
2588
+ // happened to try to use that worktree (by using enough concurrency that
2589
+ // the worker ID was sufficiently large).
2573
2590
let lock_file_name = match strategy {
2574
2591
TestExecutionStrategy :: WorkingCopy => "working-copy.lock" . to_string ( ) ,
2575
2592
TestExecutionStrategy :: Worktree => {
You can’t perform that action at this time.
0 commit comments