Thread (218 messages) flat view 218 messages, 9 authors, 2016-11-06

Re: [PATCH 13/22] sequencer: remember the onelines when parsing the todo file

From: Johannes Schindelin <hidden>
Date: 2016-09-01 08:46:24

Hi Kuba,

On Wed, 31 Aug 2016, Jakub Narębski wrote:
W dniu 29.08.2016 o 10:05, Johannes Schindelin pisze:
quoted
The `git-rebase-todo` file contains a list of commands. Most of those
commands have the form

	<verb> <sha1> <oneline>

The <oneline> is displayed primarily for the user's convenience, as
rebase -i really interprets only the <verb> <sha1> part. However, there
are *some* places in interactive rebase where the <oneline> is used to
display messages, e.g. for reporting at which commit we stopped.

So let's just remember it when parsing the todo file; we keep a copy of
the entire todo file anyway (to write out the new `done` and
`git-rebase-todo` file just before processing each command), so all we
need to do is remember the begin and end offsets.
Actually what we remember is pointer and length, or begin offset and length,
not offset and offset.
Right. Fixed.
quoted
diff --git a/sequencer.c b/sequencer.c
index 06759d4..3398774 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -709,6 +709,8 @@ static int read_and_refresh_cache(struct replay_opts *opts)
 struct todo_item {
 	enum todo_command command;
 	struct commit *commit;
+	const char *arg;
+	int arg_len;
Why 'arg', and not 'oneline', or 'subject'?
I'm not saying it is bad name.
Because we will use it for `exec` commands' args, too. Clarified in the
commit message.
quoted
@@ -760,6 +762,9 @@ static int parse_insn_line(struct todo_item *item, const char *bol, char *eol)
 	status = get_sha1(bol, commit_sha1);
 	*end_of_object_name = saved;
 
+	item->arg = end_of_object_name + strspn(end_of_object_name, " \t");
+	item->arg_len = (int)(eol - item->arg);
+
Does it work correctly for line without <oneline>, that is

  	<verb> <sha1>

I think it does, but I not entirely sure.
It does work correctly: in the example, *end_of_object_name would be '\n',
and strspn(end_of_object_name, " \t") would return 0.

Thanks for the review!
Dscho
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help