[prev in list] [next in list] [prev in thread] [next in thread] 

List:       darcs-devel
Subject:    [darcs-devel] [issue1829] inconsistent patch
From:       Eric Kow <bugs () darcs ! net>
Date:       2010-04-23 11:54:27
Message-ID: 1272023667.48.0.406882145562.issue1829 () darcs ! net
[Download RAW message or body]

New submission from Eric Kow <kowey@darcs.net>:

I guess we should be happy to have something open and easily reproducible.  

Defaulting to urgent as it's keep down and scary looking (although it
may not actually be urgent in the sense of us being able to act on it
right now)

We get this trying to pull from the darcs-2.4.1 branch into darcs HEAD
context files attached.

Next action required is to boil this down into a minimal case, probably
via http://wiki.darcs.net/Forensics

Shall I pull this patch? (9/9)  [ynWvplxdaqjk], or ? for help: y
darcs: Inconsistent patch:
conflictor {{
|hunk ./src/Darcs/Commands/Remove.lhs 118
|-              (Just (SubTree _), Just (SubTree _)) ->
|-                  return . Sealed $ rmdir f_fp :>: rest
|+              (Just (SubTree _), Just (SubTree unrecordedChildren)) -> do
|+                  if not $ null (list unrecordedChildren)
|+                    then skipAndWarn "it is not empty"
|+                    else return . Sealed $ rmdir f_fp :>: rest
|:
hunk ./src/Darcs/Commands/Remove.lhs 121
-                    else return . Sealed $ rmdir f_fp :>: rest
+                    else return $ Just (rmdir f_fp :>: NilFL)
|:
hunk ./src/Darcs/Commands/Remove.lhs 115
-                       return $ Sealed rest
+                       return $ Nothing
|:
hunk ./src/Darcs/Commands/Remove.lhs 110
-            Sealed rest <- mrp ftf recorded' unrecorded' fs
-            let f_fp = anchorPath "" f
+                f_fp = anchorPath "" f
|hunk ./src/Darcs/Commands/Remove.lhs 110
|-            Sealed rest <- mrp ftf recorded' unrecorded' fs
|+            rest <- mrp ftf recorded' unrecorded' fs
|:
hunk ./src/Darcs/Commands/Remove.lhs 110
-            rest <- mrp ftf recorded' unrecorded' fs
|:
hunk ./src/Darcs/Commands/Remove.lhs 110
-            Sealed rest <- mrp ftf recorded' unrecorded' fs
+            rest <- mrp ftf recorded' unrecorded' fs
|:
hunk ./src/Darcs/Commands/Remove.lhs 115
-                       return $ Sealed rest
+                       return $ emptyGap NilFL
|hunk ./src/Darcs/Commands/Remove.lhs 115
|-                       return $ Sealed rest
|+                       return $ emptyGap NilFL
|:
hunk ./src/Darcs/Commands/Remove.lhs 115
-                       return $ emptyGap NilFL
+                       return $ Nothing
|:
hunk ./src/Darcs/Commands/Remove.lhs 119
-                  return . Sealed $ rmdir f_fp :>: rest
+                  return $ freeGap (rmdir f_fp :>: NilFL)
|:
hunk ./src/Darcs/Commands/Remove.lhs 118
-              (Just (SubTree _), Just (SubTree _)) ->
-                  return . Sealed $ rmdir f_fp :>: rest
+              (Just (SubTree _), Just (SubTree unrecordedChildren)) -> do
+                  if not $ null (list unrecordedChildren)
+                    then skipAndWarn "it is not empty"
+                    else return . Sealed $ rmdir f_fp :>: rest
|hunk ./src/Darcs/Commands/Remove.lhs 119
|-                  return . Sealed $ rmdir f_fp :>: rest
|+                  return $ freeGap (rmdir f_fp :>: NilFL)
|conflictor [
|hunk ./src/Darcs/Commands/Remove.lhs 119
|-                  return . Sealed $ rmdir f_fp :>: rest
|+                  return $ freeGap (rmdir f_fp :>: NilFL)
|]
||:
|hunk ./src/Darcs/Commands/Remove.lhs 118
|-              (Just (SubTree _), Just (SubTree _)) ->
|-                  return . Sealed $ rmdir f_fp :>: rest
|+              (Just (SubTree _), Just (SubTree unrecordedChildren)) -> do
|+                  if not $ null (list unrecordedChildren)
|+                    then skipAndWarn "it is not empty"
|+                    else return . Sealed $ rmdir f_fp :>: rest
|:
hunk ./src/Darcs/Commands/Remove.lhs 118
-              (Just (SubTree _), Just (SubTree _)) ->
-                  return . Sealed $ rmdir f_fp :>: rest
+              (Just (SubTree _), Just (SubTree unrecordedChildren)) -> do
+                  if not $ null (list unrecordedChildren)
+                    then skipAndWarn "it is not empty"
+                    else return $ freeGap (rmdir f_fp :>: NilFL)
|hunk ./src/Darcs/Commands/Remove.lhs 119
|-                  return . Sealed $ rmdir f_fp :>: rest
|+                  return $ freeGap (rmdir f_fp :>: NilFL)
|conflictor [
|hunk ./src/Darcs/Commands/Remove.lhs 119
|-                  return . Sealed $ rmdir f_fp :>: rest
|+                  return $ freeGap (rmdir f_fp :>: NilFL)
|]
||:
|hunk ./src/Darcs/Commands/Remove.lhs 118
|-              (Just (SubTree _), Just (SubTree _)) ->
|-                  return . Sealed $ rmdir f_fp :>: rest
|+              (Just (SubTree _), Just (SubTree unrecordedChildren)) -> do
|+                  if not $ null (list unrecordedChildren)
|+                    then skipAndWarn "it is not empty"
|+                    else return . Sealed $ rmdir f_fp :>: rest
|hunk ./src/Darcs/Commands/Remove.lhs 118
|-              (Just (SubTree _), Just (SubTree _)) ->
|-                  return . Sealed $ rmdir f_fp :>: rest
|+              (Just (SubTree _), Just (SubTree unrecordedChildren)) -> do
|+                  if not $ null (list unrecordedChildren)
|+                    then skipAndWarn "it is not empty"
|+                    else return $ freeGap (rmdir f_fp :>: NilFL)
|:
hunk ./src/Darcs/Commands/Remove.lhs 121
-                    else return $ freeGap (rmdir f_fp :>: NilFL)
+                    else return $ Just $ freeGap (rmdir f_fp :>: NilFL)
}} []
|hunk ./src/Darcs/Commands/Remove.lhs 118
|-              (Just (SubTree _), Just (SubTree _)) ->
|-                  return . Sealed $ rmdir f_fp :>: rest
|+              (Just (SubTree _), Just (SubTree unrecordedChildren)) -> do
|+                  if not $ null (list unrecordedChildren)
|+                    then skipAndWarn "it is not empty"
|+                    else return $ freeGap (rmdir f_fp :>: NilFL)
|hunk ./src/Darcs/Commands/Remove.lhs 121
|-                    else return $ freeGap (rmdir f_fp :>: NilFL)
|+                    else return $ Just $ freeGap (rmdir f_fp :>: NilFL)
|hunk ./src/Darcs/Commands/Remove.lhs 115
|-                       return $ Sealed rest
|+                       return $ emptyGap NilFL
|hunk ./src/Darcs/Commands/Remove.lhs 115
|-                       return $ emptyGap NilFL
|+                       return $ Nothing
|hunk ./src/Darcs/Commands/Remove.lhs 110
|-            Sealed rest <- mrp ftf recorded' unrecorded' fs
|+            rest <- mrp ftf recorded' unrecorded' fs
|hunk ./src/Darcs/Commands/Remove.lhs 110
|-            rest <- mrp ftf recorded' unrecorded' fs
|:
hunk ./src/Darcs/Commands/Remove.lhs 110
-            let f_fp = anchorPath "" f
-                skipAndWarn reason =
-                    do putWarning opts . text $ "Can't remove " ++ f_fp
-                                                ++ " (" ++ reason ++ ")"
-                       return $ Nothing
-
-            local <- case (find recorded f, find unrecorded f) of
-              (Just (SubTree _), Just (SubTree unrecordedChildren)) -> do
-                  if not $ null (list unrecordedChildren)
-                    then skipAndWarn "it is not empty"
-                    else return $ Just $ freeGap (rmdir f_fp :>: NilFL)
-              (Just (File _), Just (File _)) ->
-                  Just `fmap` treeDiff ftf unrecorded unrecorded'
-              (Just (File _), _) ->
-                  return $ Just $ freeGap (addfile f_fp :>: rmfile f_fp
:>: NilFL)
-              (Just (SubTree _), _) ->
-                  return  $ Just $ freeGap (adddir f_fp :>: rmdir f_fp
:>: NilFL)
-              (_, _) -> skipAndWarn "it is not tracked by darcs"
-                            $
-              -- we can tell if the remove succeeded by looking if local is
-              -- empty. If the remove succeeded, we should pass on updated
-              -- recorded and unrecorded that reflect the removal
-            let nextRecorded | isJust local = recorded'
-                             | otherwise    = recorded
-                nextUnrecorded | isJust local = unrecorded'
-                               | otherwise    = unrecorded
-
-            rest <- mrp ftf nextRecorded nextUnrecorded fs
+            local <- makeRemoveGap opts ftf recorded unrecorded
unrecorded' f
+            -- we can tell if the remove succeeded by looking if local is
+            -- empty. If the remove succeeded, we should pass on updated
+            -- recorded and unrecorded that reflect the removal
dependencies not in conflict:
{{
|:
hunk ./src/Darcs/Commands/Remove.lhs 118
-              (Just (SubTree _), Just (SubTree _)) ->
-                  return . Sealed $ rmdir f_fp :>: rest
+              (Just (SubTree _), Just (SubTree unrecordedChildren)) -> do
+                  if not $ null (list unrecordedChildren)
+                    then skipAndWarn "it is not empty"
+                    else return $ freeGap (rmdir f_fp :>: NilFL)
|hunk ./src/Darcs/Commands/Remove.lhs 118
|-              (Just (SubTree _), Just (SubTree _)) ->
|-                  return . Sealed $ rmdir f_fp :>: rest
|+              (Just (SubTree _), Just (SubTree unrecordedChildren)) -> do
|+                  if not $ null (list unrecordedChildren)
|+                    then skipAndWarn "it is not empty"
|+                    else return $ freeGap (rmdir f_fp :>: NilFL)
|:
hunk ./src/Darcs/Commands/Remove.lhs 121
-                    else return $ freeGap (rmdir f_fp :>: NilFL)
+                    else return $ Just $ freeGap (rmdir f_fp :>: NilFL)
|:
hunk ./src/Darcs/Commands/Remove.lhs 115
-                       return $ Sealed rest
+                       return $ emptyGap NilFL
|hunk ./src/Darcs/Commands/Remove.lhs 115
|-                       return $ Sealed rest
|+                       return $ emptyGap NilFL
|:
hunk ./src/Darcs/Commands/Remove.lhs 115
-                       return $ emptyGap NilFL
+                       return $ Nothing
|:
hunk ./src/Darcs/Commands/Remove.lhs 110
-            Sealed rest <- mrp ftf recorded' unrecorded' fs
+            rest <- mrp ftf recorded' unrecorded' fs
|hunk ./src/Darcs/Commands/Remove.lhs 110
|-            Sealed rest <- mrp ftf recorded' unrecorded' fs
|+            rest <- mrp ftf recorded' unrecorded' fs
|:
hunk ./src/Darcs/Commands/Remove.lhs 110
-            rest <- mrp ftf recorded' unrecorded' fs
}}
compared with deps itself:
hunk ./src/Darcs/Commands/Remove.lhs 118
-              (Just (SubTree _), Just (SubTree _)) ->
-                  return . Sealed $ rmdir f_fp :>: rest
+              (Just (SubTree _), Just (SubTree unrecordedChildren)) -> do
+                  if not $ null (list unrecordedChildren)
+                    then skipAndWarn "it is not empty"
+                    else return $ freeGap (rmdir f_fp :>: NilFL)
hunk ./src/Darcs/Commands/Remove.lhs 121
-                    else return $ freeGap (rmdir f_fp :>: NilFL)
+                    else return $ Just $ freeGap (rmdir f_fp :>: NilFL)
hunk ./src/Darcs/Commands/Remove.lhs 115
-                       return $ Sealed rest
+                       return $ emptyGap NilFL
hunk ./src/Darcs/Commands/Remove.lhs 115
-                       return $ emptyGap NilFL
+                       return $ Nothing
hunk ./src/Darcs/Commands/Remove.lhs 110
-            Sealed rest <- mrp ftf recorded' unrecorded' fs
+            rest <- mrp ftf recorded' unrecorded' fs
hunk ./src/Darcs/Commands/Remove.lhs 110
-            rest <- mrp ftf recorded' unrecorded' fs

----------
files: base-context
messages: 10795
nosy: Serware, darcs-devel, dmitry.kurochkin, kowey
priority: urgent
status: unknown
title: inconsistent patch
topic: Conflicts, Darcs2

__________________________________
Darcs bug tracker <bugs@darcs.net>
<http://bugs.darcs.net/issue1829>
__________________________________
["base-context" (application/octet-stream)]

_______________________________________________
darcs-devel mailing list (AUTOMATIC POSTINGS ONLY PLEASE!)
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic