git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v14 0/8] bisect: Add support for --no-checkout option
@ 2011-08-02 22:15 Jon Seymour
  2011-08-02 22:15 ` [PATCH v14 1/8] bisect: move argument parsing before state modification Jon Seymour
                   ` (7 more replies)
  0 siblings, 8 replies; 20+ messages in thread
From: Jon Seymour @ 2011-08-02 22:15 UTC (permalink / raw)
  To: git; +Cc: chriscool, gitster, j6t, jnareb, Jon Seymour

Motivation
==========
For some bisection tasks, checking out the commit at each stage of the bisection process is unecessary or undesirable.

This series adds support for a --no-checkout option to git-bisect.

If specified on a start command, --no-checkout causes 'git bisect' to update HEAD at each stage of the bisection process instead of checking out the commit at that point. 

One application of the --no-checkout option is to find, within a partially damaged repository, a commit that has at least one parent whose graph is fully reachable in the sense of 'git pack-objects'.

For example:

	git bisect start BISECT_HEAD <some-known-good-commit> <boundary-commits> --no-checkout
	git bisect run eval '
		rc=1;
		if git rev-list --objects BISECT_HEAD >tmp.$$; then
		   git pack-objects --stdout >/dev/null < tmp.$$ && rc=0;
		fi;
		rm tmp.$$;
		test $rc -eq 0;'

<some-known-good-commit> is a known good commit, for which the test passes.
<boundary-commits> are commits chosen to prevent the bisection visiting missing or corrupt commit objects.

Assuming this git bisect run completes successfully, bisect/bad will refer to a commit which has at least one parent that is fully reachable in the sense of 'git pack-objects'.

Patch Synopsis
==============

Remediation
-----------
Patch 1/8 changes existing behaviour in the case that an invalid revision argument is supplied to 'git bisect start'. In particular, in this case, bisection state is neither created or modified if argument validation fails. Previously, existing bisection state would be cleared even if the revision arguments were subsequently determined to be invalid. 	

Patch 2/8 remediates a potential flaw that might hide a failure in a chain of pasted statements.

Patch 3/8 adds a test which documents the existing behaviour of git bisect in the presence of tree damage.

New Function
------------
Patch 4/8 modifies the C code that supports bisection.
Patch 5/8 modifies porcelain to enable option exposed by 4/8.
Patch 6/8 adds some tests.
Patch 7/8 adds some documentation.
Patch 8/8 --no-checkout bisections now update BISECT_HEAD rather than HEAD.

Revision History
----------------
v14:
	Reverted --bisect-mode aspect of v13 change so C code matches v11.
v13:
	Following suggestions from Junio:
	 * Replaced BISECT_NO_CHECKOUT control file with BISECT_MODE. 
	 * Changed name of internal option on bisect--helper from --no-checkout to --bisect-mode=checkout|update-ref.
	 * Changed --no-checkout bisections to update BISECT_HEAD instead of HEAD.	
v11:
	Removed support for --update-ref=<ref>, per Junio's preference.
v10:
	Changed the way deferred statements are connected. Reverted some whitespace minimization.
v8:
	Further feedback from Christian Couder. Support --update-ref <ref>.
v6: 
	This series includes numerous improvements suggested by Christian Couder.
Reworks: 
	"bisect: allow git bisect to be used with repos containing damaged trees." 
	Replaced --ignore-checkout-failure with --no-checkout option suggested by Junio.

Jon Seymour (8):
  bisect: move argument parsing before state modification.
  bisect: use && to connect statements that are deferred with eval.
  bisect: add tests to document expected behaviour in presence of
    broken trees.
  bisect: introduce support for --no-checkout option.
  bisect: introduce --no-checkout support into porcelain.
  bisect: add tests for the --no-checkout option.
  bisect: add documentation for --no-checkout option.
  bisect: change bisect function to update BISECT_HEAD, rather than
    HEAD.

 Documentation/git-bisect.txt |   32 ++++++++++-
 bisect.c                     |   33 +++++++----
 bisect.h                     |    2 +-
 builtin/bisect--helper.c     |    7 ++-
 git-bisect.sh                |  113 ++++++++++++++++++++++--------------
 t/t6030-bisect-porcelain.sh  |  132 +++++++++++++++++++++++++++++++++++++++++-
 6 files changed, 258 insertions(+), 61 deletions(-)

-- 
1.7.6.353.gb3ae7e

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2011-08-03 21:45 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-02 22:15 [PATCH v14 0/8] bisect: Add support for --no-checkout option Jon Seymour
2011-08-02 22:15 ` [PATCH v14 1/8] bisect: move argument parsing before state modification Jon Seymour
2011-08-02 22:15 ` [PATCH v14 2/8] bisect: use && to connect statements that are deferred with eval Jon Seymour
2011-08-02 22:15 ` [PATCH v14 3/8] bisect: add tests to document expected behaviour in presence of broken trees Jon Seymour
2011-08-02 22:15 ` [PATCH v14 4/8] bisect: introduce support for --no-checkout option Jon Seymour
2011-08-02 22:15 ` [PATCH v14 5/8] bisect: introduce --no-checkout support into porcelain Jon Seymour
2011-08-02 23:01   ` Junio C Hamano
2011-08-02 23:16     ` Junio C Hamano
2011-08-03  5:28       ` Christian Couder
2011-08-03 13:16       ` Jon Seymour
2011-08-03 15:24         ` Jon Seymour
2011-08-03 17:01           ` Junio C Hamano
2011-08-03 18:57     ` Jonathan Nieder
2011-08-03 21:40       ` Jon Seymour
2011-08-03 21:45         ` Jonathan Nieder
2011-08-03  5:17   ` Christian Couder
2011-08-02 22:16 ` [PATCH v14 6/8] bisect: add tests for the --no-checkout option Jon Seymour
2011-08-02 22:16 ` [PATCH v14 7/8] bisect: add documentation for " Jon Seymour
2011-08-02 22:16 ` [PATCH v14 8/8] bisect: change bisect function to update BISECT_HEAD, rather than HEAD Jon Seymour
2011-08-03  4:43   ` Christian Couder

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).