Test that empty patches are handled correctly, both with and without the guilt.diffstat configuration option. Signed-off-by: Per Cederqvist <cederp@xxxxxxxxx> --- regression/t-020.out | 250 +++++++++++++++++++++++++++++++++++++++++++++++++++ regression/t-020.sh | 60 +++++++++++++ 2 files changed, 310 insertions(+) diff --git a/regression/t-020.out b/regression/t-020.out index af45734..7e07efa 100644 --- a/regression/t-020.out +++ b/regression/t-020.out @@ -1128,3 +1128,253 @@ f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status +% guilt new empty.patch +% guilt pop +All patches popped. +% guilt push +Applying patch..empty.patch +Patch applied. +% list_files +d .git/patches +d .git/patches/master +d .git/refs/patches +d .git/refs/patches/master +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify +f d15a1d2d34493f790c78ddacb8815b0b9536ee2b .git/patches/master/series +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty.patch +f e90b964f01cbef60bbe00c38c55d9ea86618a66a .git/patches/master/status +r c7a139f532a43c3c8b0e068cac04f8f6af0f94e1 .git/refs/patches/master/empty.patch +% git log -p +commit c7a139f532a43c3c8b0e068cac04f8f6af0f94e1 +Author: Author Name <author@email> +Date: Mon Jan 1 00:00:00 2007 +0000 + + patch empty.patch + +commit d4850419ccc1146c7169f500725ce504b9774ed0 +Author: Author Name <author@email> +Date: Mon Jan 1 00:00:00 2007 +0000 + + initial + + Signed-off-by: Commiter Name <commiter@email> + +diff --git a/def b/def +new file mode 100644 +index 0000000..8baef1b +--- /dev/null ++++ b/def +@@ -0,0 +1 @@ ++abc +% git config guilt.diffstat true +% guilt refresh +Patch empty.patch refreshed +% guilt pop +All patches popped. +% guilt push +Applying patch..empty.patch +Patch applied. +% list_files +d .git/patches +d .git/patches/master +d .git/refs/patches +d .git/refs/patches/master +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove +f 7d261b8caad0f161c21daf5de65eeb521ff8c067 .git/patches/master/empty.patch +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify +f d15a1d2d34493f790c78ddacb8815b0b9536ee2b .git/patches/master/series +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty.patch~ +f e90b964f01cbef60bbe00c38c55d9ea86618a66a .git/patches/master/status +r c7a139f532a43c3c8b0e068cac04f8f6af0f94e1 .git/refs/patches/master/empty.patch +% git log -p +commit c7a139f532a43c3c8b0e068cac04f8f6af0f94e1 +Author: Author Name <author@email> +Date: Mon Jan 1 00:00:00 2007 +0000 + + patch empty.patch + +commit d4850419ccc1146c7169f500725ce504b9774ed0 +Author: Author Name <author@email> +Date: Mon Jan 1 00:00:00 2007 +0000 + + initial + + Signed-off-by: Commiter Name <commiter@email> + +diff --git a/def b/def +new file mode 100644 +index 0000000..8baef1b +--- /dev/null ++++ b/def +@@ -0,0 +1 @@ ++abc +% git config guilt.diffstat false +--- + +% guilt pop +All patches popped. +% guilt push +Applying patch..empty.patch +Patch applied. +% list_files +d .git/patches +d .git/patches/master +d .git/refs/patches +d .git/refs/patches/master +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove +f 7d261b8caad0f161c21daf5de65eeb521ff8c067 .git/patches/master/empty.patch +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify +f d15a1d2d34493f790c78ddacb8815b0b9536ee2b .git/patches/master/series +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty.patch~ +f e90b964f01cbef60bbe00c38c55d9ea86618a66a .git/patches/master/status +r c7a139f532a43c3c8b0e068cac04f8f6af0f94e1 .git/refs/patches/master/empty.patch +% git log -p +commit c7a139f532a43c3c8b0e068cac04f8f6af0f94e1 +Author: Author Name <author@email> +Date: Mon Jan 1 00:00:00 2007 +0000 + + patch empty.patch + +commit d4850419ccc1146c7169f500725ce504b9774ed0 +Author: Author Name <author@email> +Date: Mon Jan 1 00:00:00 2007 +0000 + + initial + + Signed-off-by: Commiter Name <commiter@email> + +diff --git a/def b/def +new file mode 100644 +index 0000000..8baef1b +--- /dev/null ++++ b/def +@@ -0,0 +1 @@ ++abc +% git config guilt.diffstat true +% guilt refresh +Patch empty.patch refreshed +% guilt pop +All patches popped. +% guilt push +Applying patch..empty.patch +Patch applied. +% list_files +d .git/patches +d .git/patches/master +d .git/refs/patches +d .git/refs/patches/master +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove +f 7d261b8caad0f161c21daf5de65eeb521ff8c067 .git/patches/master/empty.patch +f 7d261b8caad0f161c21daf5de65eeb521ff8c067 .git/patches/master/empty.patch~ +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify +f d15a1d2d34493f790c78ddacb8815b0b9536ee2b .git/patches/master/series +f e90b964f01cbef60bbe00c38c55d9ea86618a66a .git/patches/master/status +r c7a139f532a43c3c8b0e068cac04f8f6af0f94e1 .git/refs/patches/master/empty.patch +% git log -p +commit c7a139f532a43c3c8b0e068cac04f8f6af0f94e1 +Author: Author Name <author@email> +Date: Mon Jan 1 00:00:00 2007 +0000 + + patch empty.patch + +commit d4850419ccc1146c7169f500725ce504b9774ed0 +Author: Author Name <author@email> +Date: Mon Jan 1 00:00:00 2007 +0000 + + initial + + Signed-off-by: Commiter Name <commiter@email> + +diff --git a/def b/def +new file mode 100644 +index 0000000..8baef1b +--- /dev/null ++++ b/def +@@ -0,0 +1 @@ ++abc +% git config guilt.diffstat false +% guilt refresh +Patch empty.patch refreshed +% guilt pop +All patches popped. +% guilt push +Applying patch..empty.patch +Patch applied. +% list_files +d .git/patches +d .git/patches/master +d .git/refs/patches +d .git/refs/patches/master +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove +f 7d261b8caad0f161c21daf5de65eeb521ff8c067 .git/patches/master/empty.patch~ +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify +f d15a1d2d34493f790c78ddacb8815b0b9536ee2b .git/patches/master/series +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty.patch +f e90b964f01cbef60bbe00c38c55d9ea86618a66a .git/patches/master/status +r c7a139f532a43c3c8b0e068cac04f8f6af0f94e1 .git/refs/patches/master/empty.patch +% git log -p +commit c7a139f532a43c3c8b0e068cac04f8f6af0f94e1 +Author: Author Name <author@email> +Date: Mon Jan 1 00:00:00 2007 +0000 + + patch empty.patch + +commit d4850419ccc1146c7169f500725ce504b9774ed0 +Author: Author Name <author@email> +Date: Mon Jan 1 00:00:00 2007 +0000 + + initial + + Signed-off-by: Commiter Name <commiter@email> + +diff --git a/def b/def +new file mode 100644 +index 0000000..8baef1b +--- /dev/null ++++ b/def +@@ -0,0 +1 @@ ++abc +% guilt delete empty.patch +Cannot delete an applied patch +% guilt pop -a +All patches popped. +% guilt delete -f empty.patch +% list_files +d .git/patches +d .git/patches/master +d .git/refs/patches +d .git/refs/patches/master +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove +f 7d261b8caad0f161c21daf5de65eeb521ff8c067 .git/patches/master/empty.patch~ +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status +% git log -p +commit d4850419ccc1146c7169f500725ce504b9774ed0 +Author: Author Name <author@email> +Date: Mon Jan 1 00:00:00 2007 +0000 + + initial + + Signed-off-by: Commiter Name <commiter@email> + +diff --git a/def b/def +new file mode 100644 +index 0000000..8baef1b +--- /dev/null ++++ b/def +@@ -0,0 +1 @@ ++abc diff --git a/regression/t-020.sh b/regression/t-020.sh index cdd08ba..906aec6 100755 --- a/regression/t-020.sh +++ b/regression/t-020.sh @@ -5,6 +5,13 @@ source "$REG_DIR/scaffold" +function fixup_time_info +{ + cmd guilt pop + touch -a -m -t "$TOUCH_DATE" ".git/patches/master/$1" + cmd guilt push +} + cmd setup_repo # @@ -69,6 +76,59 @@ done cmd list_files +# push an empty patch with no commit message +cmd guilt new empty.patch +fixup_time_info empty.patch +cmd list_files +cmd git log -p + +# Ensure we can push the empty patch even when guilt.diffstat is true. +cmd git config guilt.diffstat true +cmd guilt refresh +fixup_time_info empty.patch +cmd list_files +cmd git log -p +cmd git config guilt.diffstat false + +# Let the patch have a commit message, but no data. +cat .git/patches/master/empty.patch <<EOF +Fix a bug. + +From: Per Cederqvist <ceder@xxxxxxxxxxxxxx> + +This commit fixes a serious bug. + +FIXME: + - add a test case + - track down the bug + - actually fix it +EOF + +fixup_time_info empty.patch +cmd list_files +cmd git log -p + +# And once more, with an empty diffstat. + +cmd git config guilt.diffstat true +cmd guilt refresh +fixup_time_info empty.patch +cmd list_files +cmd git log -p + +# Restore the diffstat setting and remove the empty patch. +cmd git config guilt.diffstat false +cmd guilt refresh +fixup_time_info empty.patch +cmd list_files +cmd git log -p +# (Cannot delete an applied patch) +shouldfail guilt delete empty.patch +cmd guilt pop -a +cmd guilt delete -f empty.patch +cmd list_files +cmd git log -p + # FIXME: # --all # -a -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html