avoid removing old associated file when there is a merge conflict
It makes sense to keep the key used by the old version of an associated file, until the merge conflict is resolved. Note that, since in this case git diff is being run with --index, it's not possible to use -1 or -3, which would let the keys associated with the new versions of the file also be added. That would be better, because it's possible that the local modification to the file that caused the merge conflict has not yet gotten its new key recorded in the db. Opened a bug about a case this is thus not able to address. Sponsored-by: Boyd Stephen Smith Jr. on Patreon
This commit is contained in:
parent
3155c0d03e
commit
5b7429e73a
2 changed files with 40 additions and 8 deletions
|
@ -309,14 +309,18 @@ reconcileStaged qh = do
|
|||
|
||||
procdiff (info:file:rest) changed
|
||||
| ":" `S.isPrefixOf` info = case S8.words info of
|
||||
(_colonsrcmode:dstmode:srcsha:dstsha:_change:[]) -> do
|
||||
removed <- catKey (Ref srcsha) >>= \case
|
||||
Just oldkey -> do
|
||||
liftIO $ SQL.removeAssociatedFile oldkey
|
||||
(asTopFilePath file)
|
||||
(SQL.WriteHandle qh)
|
||||
return True
|
||||
Nothing -> return False
|
||||
(_colonsrcmode:dstmode:srcsha:dstsha:status:[]) -> do
|
||||
-- avoid removing associated file when
|
||||
-- there is a merge conflict
|
||||
removed <- if status /= "U"
|
||||
then catKey (Ref srcsha) >>= \case
|
||||
Just oldkey -> do
|
||||
liftIO $ SQL.removeAssociatedFile oldkey
|
||||
(asTopFilePath file)
|
||||
(SQL.WriteHandle qh)
|
||||
return True
|
||||
Nothing -> return False
|
||||
else return False
|
||||
added <- catKey (Ref dstsha) >>= \case
|
||||
Just key -> do
|
||||
liftIO $ SQL.addAssociatedFile key
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue