parallel-checkout: add tests related to path collisions
Add tests to confirm that path collisions are properly detected by checkout workers, both to avoid race conditions and to report colliding entries on clone. Co-authored-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
d0e5d35700
commit
6a7bc9d118
@ -8,6 +8,7 @@
|
||||
#include "sigchain.h"
|
||||
#include "streaming.h"
|
||||
#include "thread-utils.h"
|
||||
#include "trace2.h"
|
||||
|
||||
struct pc_worker {
|
||||
struct child_process cp;
|
||||
@ -326,6 +327,7 @@ void write_pc_item(struct parallel_checkout_item *pc_item,
|
||||
if (dir_sep && !has_dirs_only_path(path.buf, dir_sep - path.buf,
|
||||
state->base_dir_len)) {
|
||||
pc_item->status = PC_ITEM_COLLIDED;
|
||||
trace2_data_string("pcheckout", NULL, "collision/dirname", path.buf);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -341,6 +343,8 @@ void write_pc_item(struct parallel_checkout_item *pc_item,
|
||||
* call should have already caught these cases.
|
||||
*/
|
||||
pc_item->status = PC_ITEM_COLLIDED;
|
||||
trace2_data_string("pcheckout", NULL,
|
||||
"collision/basename", path.buf);
|
||||
} else {
|
||||
error_errno("failed to open file '%s'", path.buf);
|
||||
pc_item->status = PC_ITEM_FAILED;
|
||||
|
Reference in New Issue
Block a user