git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH/RFC 00/20] Refactor rebase
@ 2010-11-25 19:57 Martin von Zweigbergk
  2010-11-25 19:57 ` [PATCH/RFC 01/20] rebase: clearer names for directory variables Martin von Zweigbergk
                   ` (20 more replies)
  0 siblings, 21 replies; 29+ messages in thread
From: Martin von Zweigbergk @ 2010-11-25 19:57 UTC (permalink / raw)
  To: git
  Cc: Johannes Schindelin, Johannes Sixt, Christian Couder,
	Martin von Zweigbergk

This is a first draft of my attempt to refactor the rebase code. I
have tried to refactor it as Hannes suggested, namely "to write a
command line processor, git-rebase.sh, that sets shell variables from
options that it collects from various sources, then dispatches to one
of git-rebase--interactive.sh, git-rebase--merge.sh, or
git-rebase--am.sh (the latter two would be stripped-down copies of the
current git-rebase.sh)."


Patches 01-04 try to make git-rebase.sh more readable and extensible.

Patches 05-16 factor out common code between git-rebase.sh and
git-rebase--interactive.sh.

Patches 17-20 finally achieve, I hope, what Hannes suggested.


I have aligned a lot of the error checking and error messages, but I
still have barely gotten to align any of the command line options
supported by 'git rebase' and 'git rebase -i'. How do you think I
should continue? Some specific questions:

1. What should -v do? Interactive rebase currently prints most
commands it is about to execute, while non-interactive rebase only
prints a header to the diffstat. Is there any reason they should be
different? If not, what should they print?

2. Interactive rebase currently saves most command line options when
the rebase is initiated and then reads then back on '--continue'
etc. Non-interactive rebase does not store any options and allows them
to be passed on the command line when the rebase is continued
instead. Any reason for the difference? What do we want?


All feedback would be greatly appreciated! I'm new to the Git code,
new to development on Linux and even quite new to bash, so please
review very carefully. Thanks!


Martin von Zweigbergk (20):
  rebase: clearer names for directory variables
  rebase: refactor reading of state
  rebase: read state outside loop
  rebase: remove unused rebase state 'prev_head'
  rebase: act on command line outside parsing loop
  rebase: collect check for existing rebase
  rebase: stricter check on arguments
  rebase: align variable names
  rebase: align variable content
  rebase: factor out command line option processing
  rebase -i: remove now unnecessary directory checks
  rebase: reorder validation steps
  rebase: factor out reference parsing
  rebase: factor out clean work tree check
  rebase: factor out call to pre-rebase hook
  rebase -i: support --stat
  rebase: improve detection of rebase in progress
  rebase -m: extract code to new source file
  rebase: extract am code to new source file
  rebase: show consistent conflict resolution hint

 .gitignore                 |    2 +
 Makefile                   |    2 +
 git-rebase--am.sh          |   34 +++
 git-rebase--interactive.sh |  554 ++++++++++++++++----------------------------
 git-rebase--merge.sh       |  154 ++++++++++++
 git-rebase.sh              |  434 ++++++++++++-----------------------
 6 files changed, 538 insertions(+), 642 deletions(-)
 create mode 100644 git-rebase--am.sh
 create mode 100644 git-rebase--merge.sh

-- 
1.7.3.2.864.gbbb96

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

end of thread, other threads:[~2010-11-30  7:31 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-25 19:57 [PATCH/RFC 00/20] Refactor rebase Martin von Zweigbergk
2010-11-25 19:57 ` [PATCH/RFC 01/20] rebase: clearer names for directory variables Martin von Zweigbergk
2010-11-25 19:57 ` [PATCH/RFC 02/20] rebase: refactor reading of state Martin von Zweigbergk
2010-11-25 19:57 ` [PATCH/RFC 03/20] rebase: read state outside loop Martin von Zweigbergk
2010-11-25 19:57 ` [PATCH/RFC 04/20] rebase: remove unused rebase state 'prev_head' Martin von Zweigbergk
2010-11-26  7:54   ` Michael J Gruber
2010-11-26 18:45     ` Martin von Zweigbergk
2010-11-29 21:06     ` Junio C Hamano
2010-11-30  7:29       ` Michael J Gruber
2010-11-25 19:57 ` [PATCH/RFC 05/20] rebase: act on command line outside parsing loop Martin von Zweigbergk
2010-11-25 19:57 ` [PATCH/RFC 06/20] rebase: collect check for existing rebase Martin von Zweigbergk
2010-11-25 19:57 ` [PATCH/RFC 07/20] rebase: stricter check on arguments Martin von Zweigbergk
2010-11-25 19:57 ` [PATCH/RFC 08/20] rebase: align variable names Martin von Zweigbergk
2010-11-25 19:57 ` [PATCH/RFC 09/20] rebase: align variable content Martin von Zweigbergk
2010-11-25 19:57 ` [PATCH/RFC 10/20] rebase: factor out command line option processing Martin von Zweigbergk
2010-11-25 19:57 ` [PATCH/RFC 11/20] rebase -i: remove now unnecessary directory checks Martin von Zweigbergk
2010-11-25 19:57 ` [PATCH/RFC 12/20] rebase: reorder validation steps Martin von Zweigbergk
2010-11-25 19:57 ` [PATCH/RFC 13/20] rebase: factor out reference parsing Martin von Zweigbergk
2010-11-25 19:57 ` [PATCH/RFC 14/20] rebase: factor out clean work tree check Martin von Zweigbergk
2010-11-25 19:57 ` [PATCH/RFC 15/20] rebase: factor out call to pre-rebase hook Martin von Zweigbergk
2010-11-25 19:57 ` [PATCH/RFC 16/20] rebase -i: support --stat Martin von Zweigbergk
2010-11-25 19:58 ` [PATCH/RFC 17/20] rebase: improve detection of rebase in progress Martin von Zweigbergk
2010-11-25 19:58 ` [PATCH/RFC 18/20] rebase -m: extract code to new source file Martin von Zweigbergk
2010-11-25 19:58 ` [PATCH/RFC 19/20] rebase: extract am " Martin von Zweigbergk
2010-11-25 19:58 ` [PATCH/RFC 20/20] rebase: show consistent conflict resolution hint Martin von Zweigbergk
2010-11-25 20:23 ` [PATCH/RFC 00/20] Refactor rebase Martin von Zweigbergk
2010-11-26 14:10   ` Sverre Rabbelier
2010-11-26 19:16     ` Martin von Zweigbergk
2010-11-27  1:24       ` Sverre Rabbelier

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).