Re: [PATCH/WIP] Repair DF conflicts during fetch.
On Fri, Nov 29, 2013 at 1:07 PM, Thomas Rast t...@thomasrast.ch wrote: Tom Miller jacker...@gmail.com writes: When a DF conflict occurs during a fetch, --prune should be able to fix it. When fetching with --prune, the fetching process happens before pruning causing the DF conflict to persist and report an error. This patch prunes before fetching, thus correcting DF conflicts during a fetch. Signed-off-by: Tom Miller jacker...@gmail.com --- builtin/fetch.c | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) Good catch. I can't comment on the correctness of the patch right now, but here's a test you could steal. It just reproduces what you describe, and I did verify that it confirms the fix ;-) diff --git i/t/t5510-fetch.sh w/t/t5510-fetch.sh index 5d4581d..a981125 100755 --- i/t/t5510-fetch.sh +++ w/t/t5510-fetch.sh @@ -614,4 +614,18 @@ test_expect_success 'all boundary commits are excluded' ' test_bundle_object_count .git/objects/pack/pack-${pack##pack }.pack 3 ' +test_expect_success 'branchname D/F conflict resolved by --prune' ' + git branch dir/file + git clone . prune-df-conflict + git branch -D dir/file + git branch dir + ( + cd prune-df-conflict + git fetch --prune + git rev-parse origin/dir ../actual + ) + git rev-parse dir expect + test_cmp expect actual +' + test_done -- Thomas Rast t...@thomasrast.ch Thanks, I appreciate the test. I have added it and gave credit via a Tested-by section. I have been looking into adding a pruning header to fix the output, but that is just the first solution I've been able to come up with. I believe before I have an elegant solution I'll have to read the code more carefully and brush up on my C. Thanks, Tom Miller PS. I apologize for the duplicate message the mailing list rejected my first for not being plaintext only. -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH/WIP] Repair DF conflicts during fetch.
I encountered a directory/file conflict when running `git fetch --prune origin`. I figured passing --prune would automatically fix DF conflicts. After looking in the code I found that prune is called after fetching. It seemed to be intentional according historical commits. I made this patch to change it, which seems to work as I expected it to. This patch doesn't have any tests and it breaks the output when it does prune branches. I'm looking for guidance to help with fixing the broken output. I tried to figure out a way to do it on my own but I realize that I don't have the expertise with the codebase or C. Thanks, for any help that I may recieve in advaned this is my first time posting. If I have submitted this wrong I applogize and look forward to any advice that I may recieve in correcting my mistakes. Tom Miller (1): Repair DF conflicts during fetch. builtin/fetch.c | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) -- 1.8.5.rc3.dirty -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH/WIP] Repair DF conflicts during fetch.
When a DF conflict occurs during a fetch, --prune should be able to fix it. When fetching with --prune, the fetching process happens before pruning causing the DF conflict to persist and report an error. This patch prunes before fetching, thus correcting DF conflicts during a fetch. Signed-off-by: Tom Miller jacker...@gmail.com --- builtin/fetch.c | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/builtin/fetch.c b/builtin/fetch.c index bd7a101..f7959d0 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -824,11 +824,6 @@ static int do_fetch(struct transport *transport, if (tags == TAGS_DEFAULT autotags) transport_set_option(transport, TRANS_OPT_FOLLOWTAGS, 1); - if (fetch_refs(transport, ref_map)) { - free_refs(ref_map); - retcode = 1; - goto cleanup; - } if (prune) { /* * If --tags was specified, pretend that the user gave us @@ -857,6 +852,11 @@ static int do_fetch(struct transport *transport, prune_refs(transport-remote-fetch, transport-remote-fetch_refspec_nr, ref_map); } } + if (fetch_refs(transport, ref_map)) { + free_refs(ref_map); + retcode = 1; + goto cleanup; + } free_refs(ref_map); /* if neither --no-tags nor --tags was specified, do automated tag -- 1.8.5.rc3.dirty -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH/WIP] Repair DF conflicts during fetch.
Tom Miller jacker...@gmail.com writes: When a DF conflict occurs during a fetch, --prune should be able to fix it. When fetching with --prune, the fetching process happens before pruning causing the DF conflict to persist and report an error. This patch prunes before fetching, thus correcting DF conflicts during a fetch. Signed-off-by: Tom Miller jacker...@gmail.com --- builtin/fetch.c | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) Good catch. I can't comment on the correctness of the patch right now, but here's a test you could steal. It just reproduces what you describe, and I did verify that it confirms the fix ;-) diff --git i/t/t5510-fetch.sh w/t/t5510-fetch.sh index 5d4581d..a981125 100755 --- i/t/t5510-fetch.sh +++ w/t/t5510-fetch.sh @@ -614,4 +614,18 @@ test_expect_success 'all boundary commits are excluded' ' test_bundle_object_count .git/objects/pack/pack-${pack##pack}.pack 3 ' +test_expect_success 'branchname D/F conflict resolved by --prune' ' + git branch dir/file + git clone . prune-df-conflict + git branch -D dir/file + git branch dir + ( + cd prune-df-conflict + git fetch --prune + git rev-parse origin/dir ../actual + ) + git rev-parse dir expect + test_cmp expect actual +' + test_done -- Thomas Rast t...@thomasrast.ch -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html