Git Sequencer
Ramkumar Ramachandra
Abstract
Extend 'git cherry-pick' with '--continue', '--abort', and '--skip' features. This will ultimately be used to write git-sequencer, a new builtin command. The sequencer will provide a uniform interface over which existing commands like 'rebase', 'rebase -i' and 'am' can be re-implented. This should give the commands more functionality, improve their error handling, and make them faster. The project can only be considered successful if most of the code written gets merged into upstream.
Additional Information
Some of the iterations:
- RFC: Sequencer Foundations [1]
The basic themes are introduced and Daniel explains the
two-levels concept.
- Sequencer Foundations[2]
Basic discussion of the purpose of die()-to-error() conversion and
the suggestion of an almost crash-only design to avoid some of its
problems.
- Better error handling around revert[3]
A quick discussion of die() versus assert() and how to unwind
after errors.
- Sequencer Foundations v3, v4[4]
Capturing globals in a struct. Whether to save error codes before
propagating them (versus the simpler "return -1"). Another round
of die()-to-error() versus crash-only code. Pacing and the idea of
merging bit-by-bit.
- Implementing --abort processing[5][6]
UI design is difficult. The easiest way is to teach the porcelain
to do what you were doing by hand already.
- Sequencer with continuation features[7]
Commit messages. Variable names. commit_list_append(). It seems
we are closing in.
- Sequencer: the insn sheet format[8]
Various loose ends: i18n, commit messages, relationship between
breakage of scripts and workflows and the need to patch tests, the
"me" variable, advise(), variable names.
[1] http://thread.gmane.org/gmane.comp.version-control.git/171255
[2] http://thread.gmane.org/gmane.comp.version-control.git/173408
[3] http://thread.gmane.org/gmane.comp.version-control.git/174043/focus=174050
[4] http://thread.gmane.org/gmane.comp.version-control.git/174393/focus=174540
[5] http://thread.gmane.org/gmane.comp.version-control.git/174874
[6] http://thread.gmane.org/gmane.comp.version-control.git/175638
[7] http://thread.gmane.org/gmane.comp.version-control.git/176139
[8] http://thread.gmane.org/gmane.comp.version-control.git/176647
Code samples
| File name | Size | Date submitted |
|---|
