From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Haggerty Subject: [PATCH v2 16/33] t3210: test for spurious error messages for dangling packed refs Date: Mon, 22 Apr 2013 21:52:24 +0200 Message-ID: <1366660361-21831-17-git-send-email-mhagger@alum.mit.edu> References: <1366660361-21831-1-git-send-email-mhagger@alum.mit.edu> Cc: git@vger.kernel.org, Michael Haggerty To: Junio C Hamano X-From: git-owner@vger.kernel.org Mon Apr 22 22:01:05 2013 Return-path: Envelope-to: gcvg-git-2@plane.gmane.org Received: from vger.kernel.org ([209.132.180.67]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1UUMvB-0006A9-99 for gcvg-git-2@plane.gmane.org; Mon, 22 Apr 2013 22:01:05 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754862Ab3DVUA6 (ORCPT ); Mon, 22 Apr 2013 16:00:58 -0400 Received: from ALUM-MAILSEC-SCANNER-2.MIT.EDU ([18.7.68.13]:63869 "EHLO alum-mailsec-scanner-2.mit.edu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753838Ab3DVUA6 (ORCPT ); Mon, 22 Apr 2013 16:00:58 -0400 X-AuditID: 1207440d-b7fd06d000000905-91-5175954eb5e8 Received: from outgoing-alum.mit.edu (OUTGOING-ALUM.MIT.EDU [18.7.68.33]) by alum-mailsec-scanner-2.mit.edu (Symantec Messaging Gateway) with SMTP id 5C.0E.02309.E4595715; Mon, 22 Apr 2013 15:53:50 -0400 (EDT) Received: from michael.fritz.box (p57A2598E.dip0.t-ipconnect.de [87.162.89.142]) (authenticated bits=0) (User authenticated as mhagger@ALUM.MIT.EDU) by outgoing-alum.mit.edu (8.13.8/8.12.4) with ESMTP id r3MJrEOT008578 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Mon, 22 Apr 2013 15:53:49 -0400 X-Mailer: git-send-email 1.8.2.1 In-Reply-To: <1366660361-21831-1-git-send-email-mhagger@alum.mit.edu> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrMIsWRmVeSWpSXmKPExsUixO6iqOs3tTTQ4P9LQ4uuK91MFg29V5gt bq+Yz+zA7PH3/Qcmj4uXlD0+b5ILYI7itklKLCkLzkzP07dL4M5Y1jaFvaBDsGL6l49sDYzP eLsYOTkkBEwkvv08wghhi0lcuLeerYuRi0NI4DKjxO/+XmYI5wKTRMPppawgVWwCuhKLepqZ QGwRATWJiW2HWEBsZgEHic2fG8EmCQtESWz+NosNxGYRUJVYcPIpM4jNK+Aq8f31TnaIbQoS x7dvA6vnBIqf7jgBNkdIwEVixcGpLBMYeRcwMqxilEvMKc3VzU3MzClOTdYtTk7My0st0jXS y80s0UtNKd3ECAkW3h2M/9fJHGIU4GBU4uEVcC8NFGJNLCuuzD3EKMnBpCTKyzEFKMSXlJ9S mZFYnBFfVJqTWnyIUYKDWUmEVzQfKMebklhZlVqUD5OS5mBREudVW6LuJySQnliSmp2aWpBa BJOV4eBQkuDNABkqWJSanlqRlplTgpBm4uAEEVwgG3iANkSCFPIWFyTmFmemQxSdYlSUEud1 mwSUEABJZJTmwQ2AxfUrRnGgf4R5PUDaeYApAa77FdBgJqDBmQklIINLEhFSUg2MUt1Cx4/e mVYysWSCXs+SFvWFT4pnxM3jsJ7dkH9XsFTMVc8+7cfblc/uzYxg6VSbrtT/sOlgisq5vMm5 uWe/hD+eV3pAv7ouhX/SV0+hL3uLHsxzZ3TZckU9cGujHc/R5qPLLj/7f9YitemQrf+P7uy9 qXtaInXcOd4ELnwk8I/JunpPRHK4EktxRqKhFnNRcSIAP/c7OMYCAAA= Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: A packed reference can be overridden by a loose reference, in which case the packed reference is obsolete and is never used. The object pointed to by such a reference can be garbage collected. Since d66da478f2, this could lead to the emission of a spurious error message: error: refs/heads/master does not point to a valid object! The error is generated by repack_without_ref() if there is an obsolete dangling packed reference in packed-refs when the packed-refs file has to be rewritten due to the deletion of another packed reference. Add a failing test demonstrating this problem and some passing tests of related scenarios. Signed-off-by: Michael Haggerty --- t/t3210-pack-refs.sh | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/t/t3210-pack-refs.sh b/t/t3210-pack-refs.sh index cd04361..c032d88 100755 --- a/t/t3210-pack-refs.sh +++ b/t/t3210-pack-refs.sh @@ -118,4 +118,40 @@ test_expect_success 'pack, prune and repack' ' test_cmp all-of-them again ' +test_expect_success 'explicit pack-refs with dangling packed reference' ' + git commit --allow-empty -m "soon to be garbage-collected" && + git pack-refs --all && + git reset --hard HEAD^ && + sleep 1 && + git reflog expire --expire=now --all && + git prune --expire=now && + git pack-refs --all 2>result && + test_cmp /dev/null result +' + +test_expect_success 'delete ref with dangling packed version' ' + git checkout -b lamb && + git commit --allow-empty -m "future garbage" && + git pack-refs --all && + git reset --hard HEAD^ && + git checkout master && + sleep 1 && + git reflog expire --expire=now --all && + git prune --expire=now && + git branch -d lamb 2>result && + test_cmp /dev/null result +' + +test_expect_failure 'delete ref while another dangling packed ref' ' + git branch lamb && + git commit --allow-empty -m "future garbage" && + git pack-refs --all && + git reset --hard HEAD^ && + sleep 1 && + git reflog expire --expire=now --all && + git prune --expire=now && + git branch -d lamb 2>result && + test_cmp /dev/null result +' + test_done -- 1.8.2.1