commit - ad493afcc0cd483646dbd160cffcad5190f1d139
commit + 9bc94a15e33f1e4458cc06bce6696a0f6048639f
blob - 5c9c914d1aca962740ca379bb0535b43f2f8ace2
blob + 45b06f78f26cdbaf2982b43dafebbdf3da0c9d88
--- lib/worktree.c
+++ lib/worktree.c
struct got_blob_object *blob_base = NULL, *blob_staged = NULL;
char *ondisk_path = NULL;
int local_changes_subsumed;
+ struct stat sb;
ie = got_fileindex_entry_get(a->fileindex, relpath, strlen(relpath));
if (ie == NULL)
return got_error_path(relpath, GOT_ERR_BAD_PATH);
+
+ if (asprintf(&ondisk_path, "%s/%s", a->worktree->root_path, relpath)
+ == -1)
+ return got_error_from_errno("asprintf");
switch (staged_status) {
case GOT_STATUS_MODIFY:
if (err)
break;
- if (asprintf(&ondisk_path, "%s/%s", a->worktree->root_path,
- relpath) == -1) {
- err= got_error_from_errno("asprintf");
- break;
- }
err = merge_blob(&local_changes_subsumed, a->worktree,
blob_base, ondisk_path, relpath,
break;
case GOT_STATUS_DELETE:
got_fileindex_entry_stage_set(ie, GOT_FILEIDX_STAGE_NONE);
- err = (*a->progress_cb)(a->progress_arg, GOT_STATUS_DELETE,
- relpath);
+ err = get_file_status(&status, &sb, ie, ondisk_path, a->repo);
+ if (err)
+ break;
+ err = (*a->progress_cb)(a->progress_arg, status, relpath);
break;
}