[PATCH/WIP] Repair DF conflicts during fetch.

2 messages, 1 author, 2016-06-15 · open the first message on its own page

[PATCH/WIP] Repair DF conflicts during fetch.

From: Tom Miller <hidden>
Date: 2016-06-15 22:59:21

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

[PATCH/WIP] Repair DF conflicts during fetch.

From: Tom Miller <hidden>
Date: 2016-06-15 22:59:21

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 <redacted>
---
 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help