commands: prune cache on export
After performing an export, prune object files for exported files from the cache.
This commit is contained in:
parent
000a12225e
commit
a1b5770329
@ -36,6 +36,8 @@ func migrateExportCommand(cmd *cobra.Command, args []string) {
|
||||
tracked := trackedFromExportFilter(filter)
|
||||
gitfilter := lfs.NewGitFilter(cfg)
|
||||
|
||||
var exported []string
|
||||
|
||||
opts := &githistory.RewriteOptions{
|
||||
Verbose: migrateVerbose,
|
||||
ObjectMapFilePath: objectMapFilePath,
|
||||
@ -57,7 +59,13 @@ func migrateExportCommand(cmd *cobra.Command, args []string) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return odb.NewBlobFromFile(downloadPath)
|
||||
newBlob, err := odb.NewBlobFromFile(downloadPath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
exported = append(exported, downloadPath)
|
||||
return newBlob, nil
|
||||
},
|
||||
|
||||
TreeCallbackFn: func(path string, t *odb.Tree) (*odb.Tree, error) {
|
||||
@ -142,6 +150,18 @@ func migrateExportCommand(cmd *cobra.Command, args []string) {
|
||||
ExitWithError(err)
|
||||
}
|
||||
|
||||
// Prune the cache
|
||||
for _, object := range exported {
|
||||
err := os.Remove(object)
|
||||
if os.IsNotExist(err) {
|
||||
continue
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
ExitWithError(err)
|
||||
}
|
||||
}
|
||||
|
||||
// Only perform `git-checkout(1) -f` if the repository is non-bare.
|
||||
if bare, _ := git.IsBare(); !bare {
|
||||
t := l.Waiter("migrate: checkout")
|
||||
|
@ -26,6 +26,10 @@ begin_test "migrate export (default branch)"
|
||||
[ ! $(assert_pointer "refs/heads/master" "a.txt" "$txt_oid" "120") ]
|
||||
assert_pointer "refs/heads/my-feature" "a.md" "$md_feature_oid" "30"
|
||||
|
||||
refute_local_object "$md_oid" "140"
|
||||
refute_local_object "$txt_oid" "120"
|
||||
assert_local_object "$md_feature_oid" "30"
|
||||
|
||||
master="$(git rev-parse refs/heads/master)"
|
||||
feature="$(git rev-parse refs/heads/my-feature)"
|
||||
|
||||
@ -65,6 +69,9 @@ begin_test "migrate export (with remote)"
|
||||
[ ! $(assert_pointer "refs/remotes/origin/master" "a.md" "$md_oid" "50") ]
|
||||
[ ! $(assert_pointer "refs/remotes/origin/master" "a.txt" "$txt_oid" "30") ]
|
||||
|
||||
refute_local_object "$md_oid" "50"
|
||||
refute_local_object "$txt_oid" "30"
|
||||
|
||||
master="$(git rev-parse refs/heads/master)"
|
||||
master_attrs="$(git cat-file -p "$master:.gitattributes")"
|
||||
|
||||
@ -89,6 +96,9 @@ begin_test "migrate export (include/exclude args)"
|
||||
[ ! $(assert_pointer "refs/heads/master" "a.txt" "$txt_oid" "120") ]
|
||||
assert_pointer "refs/heads/master" "a.md" "$md_oid" "140"
|
||||
|
||||
refute_local_object "$txt_oid" "120"
|
||||
assert_local_object "$md_oid" "140"
|
||||
|
||||
master="$(git rev-parse refs/heads/master)"
|
||||
|
||||
master_attrs="$(git cat-file -p "$master:.gitattributes")"
|
||||
@ -136,6 +146,10 @@ begin_test "migrate export (given branch)"
|
||||
[ ! $(assert_pointer "refs/heads/master" "a.md" "$md_oid" "140") ]
|
||||
[ ! $(assert_pointer "refs/heads/master" "a.txt" "$txt_oid" "120") ]
|
||||
|
||||
refute_local_object "$md_feature_oid" "30"
|
||||
refute_local_object "$txt_oid" "120"
|
||||
refute_local_object "$md_oid" "140"
|
||||
|
||||
master="$(git rev-parse refs/heads/master)"
|
||||
feature="$(git rev-parse refs/heads/my-feature)"
|
||||
|
||||
@ -190,9 +204,15 @@ begin_test "migrate export (exclude remote refs)"
|
||||
[ ! $(assert_pointer "refs/heads/master" "a.md" "$md_oid" "50") ]
|
||||
[ ! $(assert_pointer "refs/heads/master" "a.txt" "$txt_oid" "30") ]
|
||||
|
||||
refute_local_object "$md_oid" "50"
|
||||
refute_local_object "$txt_oid" "30"
|
||||
|
||||
assert_pointer "refs/remotes/origin/master" "a.md" "$md_remote_oid" "140"
|
||||
assert_pointer "refs/remotes/origin/master" "a.txt" "$txt_remote_oid" "120"
|
||||
|
||||
assert_local_object "$md_remote_oid" "140"
|
||||
assert_local_object "$txt_remote_oid" "120"
|
||||
|
||||
master="$(git rev-parse refs/heads/master)"
|
||||
remote="$(git rev-parse refs/remotes/origin/master)"
|
||||
|
||||
@ -238,6 +258,11 @@ begin_test "migrate export (--skip-fetch)"
|
||||
[ ! $(assert_pointer "refs/heads/master" "a.txt" "$txt_master_oid" "30") ]
|
||||
[ ! $(assert_pointer "pseudo-remote" "a.txt" "$txt_remote_oid" "120") ]
|
||||
|
||||
refute_local_object "$md_master_oid" "50"
|
||||
refute_local_object "$md_remote_oid" "140"
|
||||
refute_local_object "$txt_master_oid" "30"
|
||||
refute_local_object "$txt_remote_oid" "120"
|
||||
|
||||
master="$(git rev-parse refs/heads/master)"
|
||||
remote="$(git rev-parse pseudo-remote)"
|
||||
|
||||
@ -284,6 +309,15 @@ begin_test "migrate export (include/exclude ref)"
|
||||
assert_pointer "refs/heads/my-feature" "a.md" "$md_feature_oid" "31"
|
||||
[ ! $(assert_pointer "refs/heads/my-feature" "a.txt" "$txt_feature_oid" "30") ]
|
||||
|
||||
assert_local_object "$md_master_oid" "21"
|
||||
assert_local_object "$txt_master_oid" "20"
|
||||
|
||||
assert_local_object "$md_remote_oid" "11"
|
||||
assert_local_object "$txt_remote_oid" "10"
|
||||
|
||||
assert_local_object "$md_feature_oid" "31"
|
||||
refute_local_object "$txt_feature_oid" "30"
|
||||
|
||||
master="$(git rev-parse refs/heads/master)"
|
||||
feature="$(git rev-parse refs/heads/my-feature)"
|
||||
remote="$(git rev-parse refs/remotes/origin/master)"
|
||||
|
Loading…
Reference in New Issue
Block a user