@@ -1679,11 +1679,10 @@ GIT_NOTES_REF) is also implicitly added to the list of refs to be displayed. notes.rewrite.<command>::- When rewriting commits with <command> (currently `amend` or- `rebase`) and this variable is set to `true`, Git- automatically copies your notes from the original to the- rewritten commit. Defaults to `true`, but see- "notes.rewriteRef" below.+ When rewriting commits with <command> (currently `amend`, `rebase`, or+ `cherry-pick`) and this variable is set to `true`, Git automatically+ copies your notes from the original to the rewritten commit. Defaults+ to `true`, but see "notes.rewriteRef" below. notes.rewriteMode:: When copying notes during a rewrite (see the
@@ -352,10 +352,10 @@ post-rewrite ~~~~~~~~~~~~ This hook is invoked by commands that rewrite commits (`git commit---amend`, 'git-rebase'; currently 'git-filter-branch' does 'not' call-it!). Its first argument denotes the command it was invoked by:-currently one of `amend` or `rebase`. Further command-dependent-arguments may be passed in the future.+--amend`, `git rebase`, `git cherry-pick`; currently `git filter-branch` does+'not' call it!). Its first argument denotes the command it was invoked by+(e.g. `rebase`). Further command-dependent arguments may be passed in the+future. The hook receives a list of the rewritten commits on stdin, in the format
From: Felipe Contreras <hidden> Date: 2016-06-15 22:57:38
Commit 416fda6 (build: do not install git-remote-testpy) made it so
git-remote-testpy is not only not installed, but also not generated by
default, let's make sure tests scripts (NO_INSTALL) are generated as
ell.
Comments-by: Junio C Hamano [off-list ref]
Signed-off-by: Felipe Contreras <redacted>
---
Makefile | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
From: Felipe Contreras <hidden> Date: 2016-06-15 22:57:38
There's no need to list again the prerequisites.
Signed-off-by: Felipe Contreras <redacted>
---
Makefile | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
From: Felipe Contreras <hidden> Date: 2016-06-15 22:57:38
Move the relevant code from sequencer to log-tree. This code is not
specific to sequencer, and this allows the sequencer to move out of
libgit.
Signed-off-by: Felipe Contreras <redacted>
---
log-tree.c | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
log-tree.h | 3 ++
sequencer.c | 160 ++---------------------------------------------------------
sequencer.h | 4 --
4 files changed, 166 insertions(+), 162 deletions(-)
@@ -472,6 +475,162 @@ static void show_mergetag(struct rev_info *opt, struct commit *commit)free_commit_extra_headers(to_free);}+staticintis_rfc2822_line(constchar*buf,intlen)+{+inti;++for(i=0;i<len;i++){+intch=buf[i];+if(ch==':')+return1;+if(!isalnum(ch)&&ch!='-')+break;+}++return0;+}++staticintis_cherry_picked_from_line(constchar*buf,intlen)+{+/*+*Weonlycarethatitlooksroughlylike(cherrypickedfrom...)+*/+returnlen>strlen(cherry_picked_prefix)+1&&+!prefixcmp(buf,cherry_picked_prefix)&&buf[len-1]==')';+}++/*+*Returns0fornon-conformingfooter+*Returns1forconformingfooter+*Returns2whensobexistswithinconformingfooter+*Returns3whensobexistswithinconformingfooteraslastentry+*/+inthas_conforming_footer(structstrbuf*sb,structstrbuf*sob,+intignore_footer)+{+charprev;+inti,k;+intlen=sb->len-ignore_footer;+constchar*buf=sb->buf;+intfound_sob=0;++/* footer must end with newline */+if(!len||buf[len-1]!='\n')+return0;++prev='\0';+for(i=len-1;i>0;i--){+charch=buf[i];+if(prev=='\n'&&ch=='\n')/* paragraph break */+break;+prev=ch;+}++/* require at least one blank line */+if(prev!='\n'||buf[i]!='\n')+return0;++/* advance to start of last paragraph */+while(i<len-1&&buf[i]=='\n')+i++;++for(;i<len;i=k){+intfound_rfc2822;++for(k=i;k<len&&buf[k]!='\n';k++)+;/* do nothing */+k++;++found_rfc2822=is_rfc2822_line(buf+i,k-i-1);+if(found_rfc2822&&sob&&+!strncmp(buf+i,sob->buf,sob->len))+found_sob=k;++if(!(found_rfc2822||+is_cherry_picked_from_line(buf+i,k-i-1)))+return0;+}+if(found_sob==i)+return3;+if(found_sob)+return2;+return1;+}++voidappend_cherrypick(structstrbuf*msgbuf,structobject*obj)+{+if(!has_conforming_footer(msgbuf,NULL,0))+strbuf_addch(msgbuf,'\n');+strbuf_addstr(msgbuf,cherry_picked_prefix);+strbuf_addstr(msgbuf,sha1_to_hex(obj->sha1));+strbuf_addstr(msgbuf,")\n");+}++voidappend_signoff(structstrbuf*msgbuf,intignore_footer,unsignedflag)+{+unsignedno_dup_sob=flag&APPEND_SIGNOFF_DEDUP;+structstrbufsob=STRBUF_INIT;+inthas_footer;++strbuf_addstr(&sob,sign_off_header);+strbuf_addstr(&sob,fmt_name(getenv("GIT_COMMITTER_NAME"),+getenv("GIT_COMMITTER_EMAIL")));+strbuf_addch(&sob,'\n');++/*+*Ifthewholemessagebufferisequaltothesob,pretendthatwe+*foundaconformingfooterwithamatchingsob+*/+if(msgbuf->len-ignore_footer==sob.len&&+!strncmp(msgbuf->buf,sob.buf,sob.len))+has_footer=3;+else+has_footer=has_conforming_footer(msgbuf,&sob,ignore_footer);++if(!has_footer){+constchar*append_newlines=NULL;+size_tlen=msgbuf->len-ignore_footer;++if(!len){+/*+*Thebufferiscompletelyempty.Leavefoomfor+*thetitleandbodytobefilledinbytheuser.+*/+append_newlines="\n\n";+}elseif(msgbuf->buf[len-1]!='\n'){+/*+*Incompleteline.Completethelineandadda+*blankonesothatthereisanemptylinebetween+*themessagebodyandthesob.+*/+append_newlines="\n\n";+}elseif(len==1){+/*+*Buffercontainsasinglenewline.Addanother+*sothatweleaveroomforthetitleandbody.+*/+append_newlines="\n";+}elseif(msgbuf->buf[len-2]!='\n'){+/*+*Bufferendswithasinglenewline.Addanother+*sothatthereisanemptylinebetweenthemessage+*bodyandthesob.+*/+append_newlines="\n";+}/* else, the buffer already ends with two newlines. */++if(append_newlines)+strbuf_splice(msgbuf,msgbuf->len-ignore_footer,0,+append_newlines,strlen(append_newlines));+}++if(has_footer!=3&&(!no_dup_sob||has_footer!=2))+strbuf_splice(msgbuf,msgbuf->len-ignore_footer,0,+sob.buf,sob.len);++strbuf_release(&sob);+}+voidshow_log(structrev_info*opt){structstrbufmsgbuf=STRBUF_INIT;
@@ -14,94 +14,10 @@#include"merge-recursive.h"#include"refs.h"#include"argv-array.h"+#include"log-tree.h"#define GIT_REFLOG_ACTION "GIT_REFLOG_ACTION"-constcharsign_off_header[]="Signed-off-by: ";-staticconstcharcherry_picked_prefix[]="(cherry picked from commit ";--staticintis_rfc2822_line(constchar*buf,intlen)-{-inti;--for(i=0;i<len;i++){-intch=buf[i];-if(ch==':')-return1;-if(!isalnum(ch)&&ch!='-')-break;-}--return0;-}--staticintis_cherry_picked_from_line(constchar*buf,intlen)-{-/*-*Weonlycarethatitlooksroughlylike(cherrypickedfrom...)-*/-returnlen>strlen(cherry_picked_prefix)+1&&-!prefixcmp(buf,cherry_picked_prefix)&&buf[len-1]==')';-}--/*-*Returns0fornon-conformingfooter-*Returns1forconformingfooter-*Returns2whensobexistswithinconformingfooter-*Returns3whensobexistswithinconformingfooteraslastentry-*/-staticinthas_conforming_footer(structstrbuf*sb,structstrbuf*sob,-intignore_footer)-{-charprev;-inti,k;-intlen=sb->len-ignore_footer;-constchar*buf=sb->buf;-intfound_sob=0;--/* footer must end with newline */-if(!len||buf[len-1]!='\n')-return0;--prev='\0';-for(i=len-1;i>0;i--){-charch=buf[i];-if(prev=='\n'&&ch=='\n')/* paragraph break */-break;-prev=ch;-}--/* require at least one blank line */-if(prev!='\n'||buf[i]!='\n')-return0;--/* advance to start of last paragraph */-while(i<len-1&&buf[i]=='\n')-i++;--for(;i<len;i=k){-intfound_rfc2822;--for(k=i;k<len&&buf[k]!='\n';k++)-;/* do nothing */-k++;--found_rfc2822=is_rfc2822_line(buf+i,k-i-1);-if(found_rfc2822&&sob&&-!strncmp(buf+i,sob->buf,sob->len))-found_sob=k;--if(!(found_rfc2822||-is_cherry_picked_from_line(buf+i,k-i-1)))-return0;-}-if(found_sob==i)-return3;-if(found_sob)-return2;-return1;-}-staticvoidremove_sequencer_state(void){structstrbufseq_dir=STRBUF_INIT;
@@ -1123,68 +1034,3 @@ int sequencer_pick_revisions(struct replay_opts *opts)save_opts(opts);returnpick_commits(todo_list,opts);}--voidappend_signoff(structstrbuf*msgbuf,intignore_footer,unsignedflag)-{-unsignedno_dup_sob=flag&APPEND_SIGNOFF_DEDUP;-structstrbufsob=STRBUF_INIT;-inthas_footer;--strbuf_addstr(&sob,sign_off_header);-strbuf_addstr(&sob,fmt_name(getenv("GIT_COMMITTER_NAME"),-getenv("GIT_COMMITTER_EMAIL")));-strbuf_addch(&sob,'\n');--/*-*Ifthewholemessagebufferisequaltothesob,pretendthatwe-*foundaconformingfooterwithamatchingsob-*/-if(msgbuf->len-ignore_footer==sob.len&&-!strncmp(msgbuf->buf,sob.buf,sob.len))-has_footer=3;-else-has_footer=has_conforming_footer(msgbuf,&sob,ignore_footer);--if(!has_footer){-constchar*append_newlines=NULL;-size_tlen=msgbuf->len-ignore_footer;--if(!len){-/*-*Thebufferiscompletelyempty.Leavefoomfor-*thetitleandbodytobefilledinbytheuser.-*/-append_newlines="\n\n";-}elseif(msgbuf->buf[len-1]!='\n'){-/*-*Incompleteline.Completethelineandadda-*blankonesothatthereisanemptylinebetween-*themessagebodyandthesob.-*/-append_newlines="\n\n";-}elseif(len==1){-/*-*Buffercontainsasinglenewline.Addanother-*sothatweleaveroomforthetitleandbody.-*/-append_newlines="\n";-}elseif(msgbuf->buf[len-2]!='\n'){-/*-*Bufferendswithasinglenewline.Addanother-*sothatthereisanemptylinebetweenthemessage-*bodyandthesob.-*/-append_newlines="\n";-}/* else, the buffer already ends with two newlines. */--if(append_newlines)-strbuf_splice(msgbuf,msgbuf->len-ignore_footer,0,-append_newlines,strlen(append_newlines));-}--if(has_footer!=3&&(!no_dup_sob||has_footer!=2))-strbuf_splice(msgbuf,msgbuf->len-ignore_footer,0,-sob.buf,sob.len);--strbuf_release(&sob);-}
From: Felipe Contreras <hidden> Date: 2016-06-15 22:57:38
This code is only useful for cherry-pick and revert built-ins, nothing
else, so let's make it a builtin object.
The first source file that doesn't generate a git-foo builtin, but does
go into the builtin library. Hopefully the first of many to clean
libgit.a.
Signed-off-by: Felipe Contreras <redacted>
---
Makefile | 10 ++++++----
sequencer.c => builtin/sequencer.c | 0
sequencer.h => builtin/sequencer.h | 0
3 files changed, 6 insertions(+), 4 deletions(-)
rename sequencer.c => builtin/sequencer.c (100%)
rename sequencer.h => builtin/sequencer.h (100%)
diff --git a/sequencer.c b/builtin/sequencer.csimilarity index 100%rename from sequencer.crename to builtin/sequencer.cdiff --git a/sequencer.h b/builtin/sequencer.hsimilarity index 100%rename from sequencer.hrename to builtin/sequencer.h
--
1.8.3.698.g079b096
@@ -129,6 +129,9 @@ effect to your index in a row. redundant commits are ignored. This option overrides that behavior and creates an empty commit object. Implies `--allow-empty`.+--skip-empty::+ Instead of failing, skip commits that are or become empty.+ --strategy=<strategy>:: Use the given merge strategy. Should only be used once. See the MERGE STRATEGIES section in linkgit:git-merge[1]
@@ -51,6 +51,10 @@ OPTIONS feed all <commit>... arguments to a single revision walk (see a later example that uses 'maint master..next').+-q::+--quiet::+ Quiet, suppress feedback messages.+ -e:: --edit:: With this option, 'git cherry-pick' will let you edit the commit
@@ -40,6 +40,10 @@ OPTIONS default, see linkgit:git-rev-list[1] and its '--no-walk' option.+-q::+--quiet::+ Quiet, suppress feedback messages.+ -e:: --edit:: With this option, 'git revert' will let you edit the commit
@@ -3,6 +3,9 @@ '.git/sequencer'. Can be used to continue after resolving conflicts in a failed cherry-pick or revert.+--skip::+ Skip the current commit, and then continue.+ --quit:: Forget about the current operation in progress. Can be used to clear the sequencer state after a failed cherry-pick or
From: Felipe Contreras <hidden> Date: 2016-06-15 22:57:39
So that we can load and store rewrites, as well as other operations on a
list of rewritten commits.
Signed-off-by: Felipe Contreras <redacted>
---
Makefile | 1 +
builtin/rewrite.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
builtin/rewrite.h | 18 ++++++++++++++
3 files changed, 93 insertions(+)
create mode 100644 builtin/rewrite.c
create mode 100644 builtin/rewrite.h
@@ -0,0 +1,74 @@+#include"cache.h"+#include"rewrite.h"++voidadd_rewritten(structrewritten*list,unsignedchar*from,unsignedchar*to)+{+structrewritten_item*item;+if(list->nr+1>=list->alloc){+list->alloc+=32;+list->items=xrealloc(list->items,list->alloc*sizeof(*list->items));+}+item=&list->items[list->nr];+hashcpy(item->from,from);+hashcpy(item->to,to);+list->nr++;+}++intstore_rewritten(structrewritten*list,constchar*file)+{+staticstructlock_filelock;+structstrbufbuf=STRBUF_INIT;+intfd,i,ret=0;++fd=hold_lock_file_for_update(&lock,file,LOCK_DIE_ON_ERROR);+for(i=0;i<list->nr;i++){+structrewritten_item*item=&list->items[i];+strbuf_addf(&buf,"%s %s\n",sha1_to_hex(item->from),sha1_to_hex(item->to));+}+if(write_in_full(fd,buf.buf,buf.len)<0){+error(_("Could not write to %s"),file);+ret=1;+gotoleave;+}+if(commit_lock_file(&lock)<0){+error(_("Error wrapping up %s."),file);+ret=1;+gotoleave;+}+leave:+strbuf_release(&buf);+returnret;+}++voidload_rewritten(structrewritten*list,constchar*file)+{+structstrbufbuf=STRBUF_INIT;+char*p;+intfd;++fd=open(file,O_RDONLY);+if(fd<0)+return;+if(strbuf_read(&buf,fd,0)<0){+close(fd);+strbuf_release(&buf);+return;+}+close(fd);++for(p=buf.buf;*p;){+unsignedcharfrom[20];+unsignedcharto[20];+char*eol=strchrnul(p,'\n');+if(eol-p!=81)+/* wrong size */+break;+if(get_sha1_hex(p,from))+break;+if(get_sha1_hex(p+41,to))+break;+add_rewritten(list,from,to);+p=*eol?eol+1:eol;+}+strbuf_release(&buf);+}
From: Felipe Contreras <hidden> Date: 2016-06-15 22:57:39
Will be useful for the next commits.
Signed-off-by: Felipe Contreras <redacted>
---
builtin/sequencer.c | 23 ++++++++++++++++++++++-
builtin/sequencer.h | 1 +
2 files changed, 23 insertions(+), 1 deletion(-)
@@ -947,6 +961,8 @@ static int sequencer_continue(struct replay_opts *opts)returncontinue_single_pick();read_populate_opts(&opts);read_populate_todo(&todo_list,opts);+if(opts->action==REPLAY_PICK)+load_rewritten(&rewritten,git_path(SEQ_REWR_FILE));/* Verify that the conflict has been resolved */if(file_exists(git_path("CHERRY_PICK_HEAD"))||
@@ -957,6 +973,11 @@ static int sequencer_continue(struct replay_opts *opts)}if(index_differs_from("HEAD",0))returnerror_dirty_index(opts);+if(opts->action==REPLAY_PICK){+unsignedcharto[20];+if(!read_ref("HEAD",to))+add_rewritten(&rewritten,todo_list->item->object.sha1,to);+}todo_list=todo_list->next;returnpick_commits(todo_list,opts);}
@@ -1589,13 +1558,16 @@ int cmd_commit(int argc, const char **argv, const char *prefix)run_hook(get_index_file(),"post-commit",NULL);if(amend&&!no_post_rewrite){structnotes_rewrite_cfg*cfg;+structrewrittenrewrite;+memset(&rewrite,0,sizeof(rewrite));cfg=init_copy_notes_for_rewrite("amend");if(cfg){/* we are amending, so current_head is not NULL */copy_note_for_rewrite(cfg,current_head->object.sha1,sha1);finish_copy_notes_for_rewrite(cfg);}-run_rewrite_hook(current_head->object.sha1,sha1);+add_rewritten(&rewrite,current_head->object.sha1,sha1);+run_rewrite_hook(&rewrite,"amend");}if(!quiet)print_summary(prefix,sha1,!current_head);
@@ -1557,16 +1557,10 @@ int cmd_commit(int argc, const char **argv, const char *prefix)rerere(0);run_hook(get_index_file(),"post-commit",NULL);if(amend&&!no_post_rewrite){-structnotes_rewrite_cfg*cfg;structrewrittenrewrite;memset(&rewrite,0,sizeof(rewrite));-cfg=init_copy_notes_for_rewrite("amend");-if(cfg){-/* we are amending, so current_head is not NULL */-copy_note_for_rewrite(cfg,current_head->object.sha1,sha1);-finish_copy_notes_for_rewrite(cfg);-}add_rewritten(&rewrite,current_head->object.sha1,sha1);+copy_rewrite_notes(&rewrite,"amend");run_rewrite_hook(&rewrite,"amend");}if(!quiet)
From: Felipe Contreras <hidden> Date: 2016-06-15 22:57:39
So it can be used by other tools (e.g. git rebase), and the right action
is passed to the hooks and notes rewrite stuff.
Signed-off-by: Felipe Contreras <redacted>
---
builtin/revert.c | 2 ++
builtin/sequencer.c | 17 ++++++++++++++---
builtin/sequencer.h | 2 ++
git-rebase--interactive.sh | 4 ++--
4 files changed, 20 insertions(+), 5 deletions(-)
@@ -46,6 +46,8 @@ struct replay_opts {/* Only used by REPLAY_NONE */structrev_info*revs;++constchar*action_name;};intsequencer_pick_revisions(structreplay_opts*opts);
@@ -1679,11 +1679,10 @@ GIT_NOTES_REF) is also implicitly added to the list of refs to be displayed. notes.rewrite.<command>::- When rewriting commits with <command> (currently `amend` or- `rebase`) and this variable is set to `true`, Git- automatically copies your notes from the original to the- rewritten commit. Defaults to `true`, but see- "notes.rewriteRef" below.+ When rewriting commits with <command> (currently `amend`, `rebase`, or+ `cherry-pick`) and this variable is set to `true`, Git automatically+ copies your notes from the original to the rewritten commit. Defaults+ to `true`, but see "notes.rewriteRef" below. notes.rewriteMode:: When copying notes during a rewrite (see the
@@ -352,10 +352,10 @@ post-rewrite ~~~~~~~~~~~~ This hook is invoked by commands that rewrite commits (`git commit---amend`, 'git-rebase'; currently 'git-filter-branch' does 'not' call-it!). Its first argument denotes the command it was invoked by:-currently one of `amend` or `rebase`. Further command-dependent-arguments may be passed in the future.+--amend`, `git rebase`, `git cherry-pick`; currently `git filter-branch` does+'not' call it!). Its first argument denotes the command it was invoked by+(e.g. `rebase`). Further command-dependent arguments may be passed in the+future. The hook receives a list of the rewritten commits on stdin, in the format
@@ -19,15 +19,7 @@ esactest-n"$rebase_root"&&root_flag=--rootret=0-iftest-n"$keep_empty"-then-# we have to do this the hard way. git format-patch completely squashes-# empty commits and even if it didn't the format doesn't really lend-# itself well to recording empty patches. fortunately, cherry-pick-# makes this easy-gitcherry-pick--allow-empty"$revisions"-ret=$?-else+ rm-f"$GIT_DIR/rebased-patches" gitformat-patch-k--stdout--full-index--ignore-if-in-upstream\
@@ -0,0 +1,30 @@+#!/bin/sh+#+# Copyright (c) 2010 Junio C Hamano.+#++case"$action"in+continue)+gitam--resolved--resolvemsg="$resolvemsg"&&+move_to_original_branch+return+;;+skip)+gitam--skip--resolvemsg="$resolvemsg"&&+move_to_original_branch+return+;;+esac++test-n"$rebase_root"&&root_flag=--root++gitcherry-pick--allow-empty"$revisions"+ret=$?++iftest0!=$ret+then+test-d"$state_dir"&&write_basic_state+return$ret+fi++move_to_original_branch
@@ -18,12 +18,15 @@ esactest-n"$rebase_root"&&root_flag=--root+mkdir-p"$state_dir"||die"Could not create temporary $state_dir"+:>"$state_dir"/cherrypick||die"Could not mark as cherrypick"+ gitcherry-pick--allow-empty"$revisions"ret=$?iftest0!=$retthen-test-d"$state_dir"&&write_basic_state+write_basic_statereturn$retfi
From: Felipe Contreras <hidden> Date: 2016-06-15 22:57:39
When there's changes in the staging area. Just like the other rebase
modes.
Signed-off-by: Felipe Contreras <redacted>
---
git-rebase--cherrypick.sh | 6 ++++++
1 file changed, 6 insertions(+)
@@ -8,6 +8,12 @@ export GIT_CHERRY_PICK_HELPcase"$action"incontinue)+# do we have anything to commit?+if!gitdiff-index--cached--quietHEAD--+then+gitcommit--no-verify-e||+die"Could not commit staged changes."+figitcherry-pick--continue&&move_to_original_branchreturn
From: Felipe Contreras <hidden> Date: 2016-06-15 22:57:39
We are not in am mode.
Signed-off-by: Felipe Contreras <redacted>
---
git-rebase--cherrypick.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
@@ -3,6 +3,9 @@# Copyright (c) 2010 Junio C Hamano.#+GIT_CHERRY_PICK_HELP="$resolvemsg"+exportGIT_CHERRY_PICK_HELP+case"$action"incontinue)gitcherry-pick--continue&&
From: Felipe Contreras <hidden> Date: 2016-06-15 22:57:39
So that all the tests pass.
Signed-off-by: Felipe Contreras <redacted>
---
git-rebase--cherrypick.sh | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
@@ -21,7 +21,22 @@ test -n "$rebase_root" && root_flag=--root mkdir-p"$state_dir"||die"Could not create temporary $state_dir" :>"$state_dir"/cherrypick||die"Could not mark as cherrypick"-gitcherry-pick--allow-empty"$revisions"+iftest-n"$rebase_root"+then+revisions="$onto...$orig_head"+else+revisions="$upstream...$orig_head"+fi++iftest-n"$keep_empty"+then+extra="--allow-empty"+else+extra="--skip-empty --cherry-pick"+fi+test-n"$GIT_QUIET"&&extra="$extra -q"+test-z"$force_rebase"&&extra="$extra --ff"+gitcherry-pick--no-merges--right-only--topo-order--do-walk$extra"$revisions"ret=$?iftest0!=$ret
@@ -244,7 +244,7 @@ test_expect_success 'setup for avoiding reapplying old patches' ' test_expect_success'git pull --rebase does not reapply old patches''(cddst&&test_must_failgitpull--rebase&&-test1=$(find.git/rebase-apply-name"000*"|wc-l)+test1=$(cat.git/sequencer/todo|wc-l))'
@@ -92,7 +92,7 @@ test_expect_success 'multiple dcommit from git svn will not clobber svn' " test_expect_success'check that rebase really failed''-test-d.git/rebase-apply+test-d.git/rebase-merge' test_expect_success'resolve, continue the rebase and dcommit'"
@@ -412,10 +405,6 @@ if test -n "$interactive_rebase"thentype=interactivestate_dir="$merge_dir"-eliftest-n"$do_merge"-then-type=merge-state_dir="$merge_dir"eliftest-n"$git_am_opt"thentype=am
From: Felipe Contreras <hidden> Date: 2016-06-15 22:57:39
We are not freeing 'istate->cache' properly.
We can't rely on 'initialized' to keep track of the 'istate->cache',
because it doesn't really mean it's initialized. So assume it always has
data, and free it before overwriting it.
Signed-off-by: Felipe Contreras <redacted>
---
read-cache.c | 4 ++++
1 file changed, 4 insertions(+)
From: Felipe Contreras <hidden> Date: 2016-06-15 22:57:39
On Sun, Jun 9, 2013 at 2:24 PM, Felipe Contreras
[off-list ref] wrote:
Same as before, but:
Also, remove the patches from Martin von Zweigbergk, because
apparently some people have trouble understanding that they were not
part of this series.
--
Felipe Contreras
From: Phil Hord <hidden> Date: 2016-06-15 22:57:41
On Sun, Jun 9, 2013 at 3:37 PM, Felipe Contreras
[off-list ref] wrote:
On Sun, Jun 9, 2013 at 2:24 PM, Felipe Contreras
[off-list ref] wrote:
quoted
Same as before, but:
Also, remove the patches from Martin von Zweigbergk, because
apparently some people have trouble understanding that they were not
part of this series.
Please try not to sound disgruntled. This attitude is toxic. You have
turned this change into a complaint: that "some people have trouble
understanding" which shows a genuine lack of understanding and
compassion on your part. Instead you can phrase your change notes
more helpfully if you make changes only when you yourself actually
believe the change should be made. If you cannot do this, perhaps you
can pretend.
Also, remove the patches from Martin von Zweigbergk, which
are not a part of this series.
Or even this:
Also, remove the patches from Martin von Zweigbergk to avoid
confusing reviewers.
Thanks,
Phil
From: Felipe Contreras <hidden> Date: 2016-06-15 22:57:41
On Mon, Jun 10, 2013 at 5:55 PM, Phil Hord [off-list ref] wrote:
On Sun, Jun 9, 2013 at 3:37 PM, Felipe Contreras
[off-list ref] wrote:
quoted
On Sun, Jun 9, 2013 at 2:24 PM, Felipe Contreras
[off-list ref] wrote:
quoted
Same as before, but:
Also, remove the patches from Martin von Zweigbergk, because
apparently some people have trouble understanding that they were not
part of this series.
Please try not to sound disgruntled. This attitude is toxic. You have
turned this change into a complaint: that "some people have trouble
understanding" which shows a genuine lack of understanding and
compassion on your part. Instead you can phrase your change notes
more helpfully if you make changes only when you yourself actually
believe the change should be made. If you cannot do this, perhaps you
can pretend.
That would be dishonest. Moreover, there wasn't a good reason to
remove these patches, I made it clear I added those patches only to
make sure the real patches of this series worked correctly. Also, I
clarified that to Thomas Rast[1], only to receive a totally
unconstructive comment[2].
Why don't you ask Thomas Rast to be more constructive[2]?
Then Johan Herland uses that as an example of a constructive
comment[3]. Why don't you correct Johan Herland?
No, you pick the easy target: me.
I already dd more than my fair share by carrying these 36 patches
through several iterations, yet you ask *more* of me. Why don't you
ask more of the people that just hit reply on their MUA?
Thomas' task was easy; he simply had to say "Oh, these aren't meant to
be applied, got it."
[1] http://article.gmane.org/gmane.comp.version-control.git/227039
[2] http://article.gmane.org/gmane.comp.version-control.git/227040
[3] http://article.gmane.org/gmane.comp.version-control.git/227102
--
Felipe Contreras
From: Phil Hord <hidden> Date: 2016-06-15 22:57:41
On Mon, Jun 10, 2013 at 7:43 PM, Felipe Contreras
[off-list ref] wrote:
On Mon, Jun 10, 2013 at 5:55 PM, Phil Hord [off-list ref] wrote:
quoted
On Sun, Jun 9, 2013 at 3:37 PM, Felipe Contreras
[off-list ref] wrote:
quoted
On Sun, Jun 9, 2013 at 2:24 PM, Felipe Contreras
[off-list ref] wrote:
quoted
Same as before, but:
Also, remove the patches from Martin von Zweigbergk, because
apparently some people have trouble understanding that they were not
part of this series.
Please try not to sound disgruntled. This attitude is toxic. You have
turned this change into a complaint: that "some people have trouble
understanding" which shows a genuine lack of understanding and
compassion on your part. Instead you can phrase your change notes
more helpfully if you make changes only when you yourself actually
believe the change should be made. If you cannot do this, perhaps you
can pretend.
That would be dishonest. Moreover, there wasn't a good reason to
remove these patches, I made it clear I added those patches only to
make sure the real patches of this series worked correctly. Also, I
clarified that to Thomas Rast[1], only to receive a totally
unconstructive comment[2].
Why don't you ask Thomas Rast to be more constructive[2]?
Then Johan Herland uses that as an example of a constructive
comment[3]. Why don't you correct Johan Herland?
I do not see what their comments have to do with your attitude.
Aren't your own man with cogent self-will and personal responsibility?
Why should I also have to consider these other emails which I have
not bothered to read yet?
No, you pick the easy target: me.
You seem to have mistaken me for someone else. Moreover, you seem to
have mistaken you for someone else. You are the least easy target I
know of on this list. Everyone else seems open to community
standards.
I did not comment on their posts because they did not catch my eye.
Rebase and cherry-pick improvements are interesting to me, so I read
your post. I will try not to make this mistake again.
Phil
From: Felipe Contreras <hidden> Date: 2016-06-15 22:57:41
On Mon, Jun 10, 2013 at 8:09 PM, Phil Hord [off-list ref] wrote:
On Mon, Jun 10, 2013 at 7:43 PM, Felipe Contreras
[off-list ref] wrote:
quoted
On Mon, Jun 10, 2013 at 5:55 PM, Phil Hord [off-list ref] wrote:
quoted
On Sun, Jun 9, 2013 at 3:37 PM, Felipe Contreras
[off-list ref] wrote:
quoted
On Sun, Jun 9, 2013 at 2:24 PM, Felipe Contreras
[off-list ref] wrote:
quoted
Same as before, but:
Also, remove the patches from Martin von Zweigbergk, because
apparently some people have trouble understanding that they were not
part of this series.
Please try not to sound disgruntled. This attitude is toxic. You have
turned this change into a complaint: that "some people have trouble
understanding" which shows a genuine lack of understanding and
compassion on your part. Instead you can phrase your change notes
more helpfully if you make changes only when you yourself actually
believe the change should be made. If you cannot do this, perhaps you
can pretend.
That would be dishonest. Moreover, there wasn't a good reason to
remove these patches, I made it clear I added those patches only to
make sure the real patches of this series worked correctly. Also, I
clarified that to Thomas Rast[1], only to receive a totally
unconstructive comment[2].
Why don't you ask Thomas Rast to be more constructive[2]?
Then Johan Herland uses that as an example of a constructive
comment[3]. Why don't you correct Johan Herland?
I do not see what their comments have to do with your attitude.
My attitude is fine. I sent a lot of patches, and I made clear that
some of them were meant only to test the rest. And I clarified that
twice.
There's nothing wrong with that.
Aren't your own man with cogent self-will and personal responsibility?
Why should I also have to consider these other emails which I have
not bothered to read yet?
Don't be that girlfriend that brings the times you haven't picked up
the towel properly when talking about something completely and totally
different.
When talking about the attitude in *this* patch series, limit yourself
to *this* patch series.
quoted
No, you pick the easy target: me.
You seem to have mistaken me for someone else. Moreover, you seem to
have mistaken you for someone else. You are the least easy target I
know of on this list.
Everyone else seems open to community standards.
And yet you try to correct me, who did nothing wrong. And ignore the
transgressions of the other people, whom I already demonstrated
actually *did* do something wrong. How convenient of you to not
mention my arguments *at all*.
I did not comment on their posts because they did not catch my eye.
Rebase and cherry-pick improvements are interesting to me, so I read
your post. I will try not to make this mistake again.
Yes, because my patches are so obviously wrong.
If you were a truly productive member of this community, you would
ignore all the bullshit, take the patches, fix whatever is technically
wrong with them (nothing), and resend them.
But no, that would be way too productive.
--
Felipe Contreras