repack: only unpack-unreachable if we are deleting redundant packs
The -A option calls pack-objects with the --unpack-unreachable option so that the unreachable objects in local packs are left in the local object store loose. But if the -d option to repack was _not_ used, then these unpacked loose objects are redundant and unnecessary. Update tests in t7701. Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									3289b9dec5
								
							
						
					
					
						commit
						83d0289df6
					
				|  | @ -38,12 +38,11 @@ OPTIONS | |||
| 	dangling. | ||||
|  | ||||
| -A:: | ||||
| 	Same as `-a`, but any unreachable objects in a previous | ||||
| 	pack become loose, unpacked objects, instead of being | ||||
| 	left in the old pack.  Unreachable objects are never | ||||
| 	intentionally added to a pack, even when repacking. | ||||
| 	When used with '-d', this option | ||||
| 	prevents unreachable objects from being immediately | ||||
| 	Same as `-a`, unless '-d' is used.  Then any unreachable | ||||
| 	objects in a previous pack become loose, unpacked objects, | ||||
| 	instead of being left in the old pack.  Unreachable objects | ||||
| 	are never intentionally added to a pack, even when repacking. | ||||
| 	This option prevents unreachable objects from being immediately | ||||
| 	deleted by way of being left in the old pack and then | ||||
| 	removed.  Instead, the loose unreachable objects | ||||
| 	will be pruned according to normal expiry rules | ||||
|  |  | |||
|  | @ -71,7 +71,8 @@ case ",$all_into_one," in | |||
| 				existing="$existing $e" | ||||
| 			fi | ||||
| 		done | ||||
| 		if test -n "$args" -a -n "$unpack_unreachable" | ||||
| 		if test -n "$args" -a -n "$unpack_unreachable" -a \ | ||||
| 			-n "$remove_redundant" | ||||
| 		then | ||||
| 			args="$args $unpack_unreachable" | ||||
| 		fi | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ fsha1= | |||
| csha1= | ||||
| tsha1= | ||||
|  | ||||
| test_expect_success '-A option leaves unreachable objects unpacked' ' | ||||
| test_expect_success '-A with -d option leaves unreachable objects unpacked' ' | ||||
| 	echo content > file1 && | ||||
| 	git add . && | ||||
| 	git commit -m initial_commit && | ||||
|  | @ -58,7 +58,7 @@ compare_mtimes () | |||
| 		' -- "$@" | ||||
| } | ||||
|  | ||||
| test_expect_success 'unpacked objects receive timestamp of pack file' ' | ||||
| test_expect_success '-A without -d option leaves unreachable objects packed' ' | ||||
| 	fsha1path=$(echo "$fsha1" | sed -e "s|\(..\)|\1/|") && | ||||
| 	fsha1path=".git/objects/$fsha1path" && | ||||
| 	csha1path=$(echo "$csha1" | sed -e "s|\(..\)|\1/|") && | ||||
|  | @ -75,7 +75,19 @@ test_expect_success 'unpacked objects receive timestamp of pack file' ' | |||
| 	git branch -D transient_branch && | ||||
| 	sleep 1 && | ||||
| 	git repack -A -l && | ||||
| 	compare_mtimes "$packfile" "$fsha1path" "$csha1path" "$tsha1path" | ||||
| 	test ! -f "$fsha1path" && | ||||
| 	test ! -f "$csha1path" && | ||||
| 	test ! -f "$tsha1path" && | ||||
| 	git show $fsha1 && | ||||
| 	git show $csha1 && | ||||
| 	git show $tsha1 | ||||
| ' | ||||
|  | ||||
| test_expect_success 'unpacked objects receive timestamp of pack file' ' | ||||
| 	tmppack=".git/objects/pack/tmp_pack" && | ||||
| 	ln "$packfile" "$tmppack" && | ||||
| 	git repack -A -l -d && | ||||
| 	compare_mtimes "$tmppack" "$fsha1path" "$csha1path" "$tsha1path" | ||||
| ' | ||||
|  | ||||
| test_done | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Brandon Casey
						Brandon Casey