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. | 	dangling. | ||||||
|  |  | ||||||
| -A:: | -A:: | ||||||
| 	Same as `-a`, but any unreachable objects in a previous | 	Same as `-a`, unless '-d' is used.  Then any unreachable | ||||||
| 	pack become loose, unpacked objects, instead of being | 	objects in a previous pack become loose, unpacked objects, | ||||||
| 	left in the old pack.  Unreachable objects are never | 	instead of being left in the old pack.  Unreachable objects | ||||||
| 	intentionally added to a pack, even when repacking. | 	are never intentionally added to a pack, even when repacking. | ||||||
| 	When used with '-d', this option | 	This option prevents unreachable objects from being immediately | ||||||
| 	prevents unreachable objects from being immediately |  | ||||||
| 	deleted by way of being left in the old pack and then | 	deleted by way of being left in the old pack and then | ||||||
| 	removed.  Instead, the loose unreachable objects | 	removed.  Instead, the loose unreachable objects | ||||||
| 	will be pruned according to normal expiry rules | 	will be pruned according to normal expiry rules | ||||||
|  |  | ||||||
|  | @ -71,7 +71,8 @@ case ",$all_into_one," in | ||||||
| 				existing="$existing $e" | 				existing="$existing $e" | ||||||
| 			fi | 			fi | ||||||
| 		done | 		done | ||||||
| 		if test -n "$args" -a -n "$unpack_unreachable" | 		if test -n "$args" -a -n "$unpack_unreachable" -a \ | ||||||
|  | 			-n "$remove_redundant" | ||||||
| 		then | 		then | ||||||
| 			args="$args $unpack_unreachable" | 			args="$args $unpack_unreachable" | ||||||
| 		fi | 		fi | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ fsha1= | ||||||
| csha1= | csha1= | ||||||
| tsha1= | tsha1= | ||||||
|  |  | ||||||
| test_expect_success '-A option leaves unreachable objects unpacked' ' | test_expect_success '-A with -d option leaves unreachable objects unpacked' ' | ||||||
| 	echo content > file1 && | 	echo content > file1 && | ||||||
| 	git add . && | 	git add . && | ||||||
| 	git commit -m initial_commit && | 	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=$(echo "$fsha1" | sed -e "s|\(..\)|\1/|") && | ||||||
| 	fsha1path=".git/objects/$fsha1path" && | 	fsha1path=".git/objects/$fsha1path" && | ||||||
| 	csha1path=$(echo "$csha1" | sed -e "s|\(..\)|\1/|") && | 	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 && | 	git branch -D transient_branch && | ||||||
| 	sleep 1 && | 	sleep 1 && | ||||||
| 	git repack -A -l && | 	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 | test_done | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Brandon Casey
						Brandon Casey