[darcs-users] darcs patch: Add get_unrecorded_in_files_unsorted fun... (and 6 more)

Dmitry Kurochkin dmitry.kurochkin at gmail.com
Sun Mar 22 20:39:34 UTC 2009


Hi Eric.

On Sun, Mar 22, 2009 at 9:35 PM, Eric Kow <kowey at darcs.net> wrote:
> Hi Dmitry,
>
> Is this one you could review?
> Thanks!

I'll try to get to it tomorrow.

Regards,
  Dmitry

>
> On Sun, Mar 22, 2009 at 16:54:22 +0100, Reinier Lamers wrote:
>> These changes make darcs make more use of the faster get_unrecorded_in_files
>> function that I wrote during the hacking sprint in October. I have not heard
>> of any bugs in that code.
>>
>> The code for the remove command does some juggling with slurpies. Those
>> slurpies are going to be different because of the changes below, but I
>> believe that the pieces that darcs actually looks at remain the same.
>>
>> Fri Mar 20 23:08:29 CET 2009  Reinier Lamers <tux_rocker at reinier.de>
>>   * Add get_unrecorded_in_files_unsorted function
>>
>> Fri Mar 20 23:18:32 CET 2009  Reinier Lamers <tux_rocker at reinier.de>
>>   * Make record look only at cmdline arg files, if any
>>
>> Sat Mar 21 16:26:16 CET 2009  Reinier Lamers <tux_rocker at reinier.de>
>>   * Use get_unrecorded_in_files_unsorted in changes command
>>
>> Sun Mar 22 15:50:04 CET 2009  Reinier Lamers <tux_rocker at reinier.de>
>>   * Use faster get_unrecorded_in_files in revert command
>>
>> Sun Mar 22 15:50:47 CET 2009  Reinier Lamers <tux_rocker at reinier.de>
>>   * Add haddock comment to Darcs.Commands.Unrecord.generic_obliterate_cmd
>>
>> Sun Mar 22 15:59:57 CET 2009  Reinier Lamers <tux_rocker at reinier.de>
>>   * Use faster get_unrecorded_in_files in amend-record command
>>
>> Sun Mar 22 16:21:54 CET 2009  Reinier Lamers <tux_rocker at reinier.de>
>>   * Use faster get_unrecorded_in_files in remove command
>
> Add get_unrecorded_in_files_unsorted function
> ---------------------------------------------
>> Reinier Lamers <tux_rocker at reinier.de>**20090320220829
>>  Ignore-this: c6dd241aea7a8bec83e3709e07db67c3
>> ] hunk ./src/Darcs/Repository.hs 34
>>                      slurp_recorded, slurp_recorded_and_unrecorded,
>>                      withRecorded,
>>                      get_unrecorded, get_unrecorded_unsorted, get_unrecorded_no_look_for_adds,
>> -                    get_unrecorded_in_files,
>> +                    get_unrecorded_in_files, get_unrecorded_in_files_unsorted,
>>                      read_repo, sync_repo,
>>                      prefsUrl,
>>                      add_to_pending,
>> hunk ./src/Darcs/Repository.hs 66
>>       slurp_recorded, slurp_recorded_and_unrecorded,
>>       withRecorded,
>>       get_unrecorded, get_unrecorded_unsorted, get_unrecorded_no_look_for_adds,
>> -     get_unrecorded_in_files,
>> +     get_unrecorded_in_files, get_unrecorded_in_files_unsorted,
>>       read_repo, sync_repo,
>>       prefsUrl, checkPristineAgainstSlurpy,
>>       add_to_pending,
>> hunk ./src/Darcs/Repository/Internal.hs 33
>>                      withRecorded,
>>                      checkPristineAgainstSlurpy,
>>                      get_unrecorded, get_unrecorded_unsorted, get_unrecorded_no_look_for_adds,
>> -                    get_unrecorded_in_files,
>> +                    get_unrecorded_in_files, get_unrecorded_in_files_unsorted,
>>                      read_repo, sync_repo,
>>                      prefsUrl, makePatchLazy,
>>                      add_to_pending,
>> hunk ./src/Darcs/Repository/Internal.hs 398
>>  get_unrecorded_no_look_for_adds r paths = get_unrecorded_private (filter (/= LookForAdds)) r paths
>>
>>  get_unrecorded_unsorted :: RepoPatch p => Repository p C(r u t) -> IO (FL Prim C(r u))
>> -get_unrecorded_unsorted r = get_unrecorded_private (AnyOrder:) r []
>> +get_unrecorded_unsorted r = get_unrecorded_in_files_unsorted r []
>>
>>  get_unrecorded :: RepoPatch p => Repository p C(r u t) -> IO (FL Prim C(r u))
>>  get_unrecorded r = get_unrecorded_private id r []
>> hunk ./src/Darcs/Repository/Internal.hs 403
>>
>> +-- | Gets the unrecorded changes in the given paths in the current repository,
>> +--   without sorting them for presentation to the user
>> +get_unrecorded_in_files_unsorted :: RepoPatch p => Repository p C(r u t) -> [FileName] -> IO (FL Prim C(r u))
>> +get_unrecorded_in_files_unsorted = get_unrecorded_private (AnyOrder:)
>> +
>>  -- | Gets the unrecorded changes in the given paths in the current repository.
>>  get_unrecorded_in_files :: RepoPatch p => Repository p C(r u t) -> [FileName] -> IO (FL Prim C(r u))
>>  get_unrecorded_in_files = get_unrecorded_private id
>
> Make record look only at cmdline arg files, if any
> --------------------------------------------------
>> Reinier Lamers <tux_rocker at reinier.de>**20090320221832
>>  Ignore-this: 1d88e419cc27ef94790e3944a6cd4c57
>> ] hunk ./src/Darcs/Commands/Record.lhs 38
>>  import Darcs.Lock ( readBinFile, writeBinFile, world_readable_temp, appendToFile, removeFileMayNotExist )
>>  import Darcs.Hopefully ( info, n2pia )
>>  import Darcs.Repository ( Repository, amInRepository, withRepoLock, ($-),
>> -                          get_unrecorded, get_unrecorded_unsorted, withGutsOf,
>> +                          get_unrecorded_in_files,
>> +                          get_unrecorded_in_files_unsorted, withGutsOf,
>>                      sync_repo, read_repo,
>>                      slurp_recorded,
>>                      tentativelyAddPatch, finalizeRepositoryChanges,
>> hunk ./src/Darcs/Commands/Record.lhs 152
>>      when (((not $ null non_existent_files) || (not $ null non_repo_files)) && null existing_files) $
>>           fail "None of the files you specified exist!"
>>      debugMessage "About to get the unrecorded changes."
>> -    changes <- if All `elem` opts then get_unrecorded_unsorted repository
>> -                                  else get_unrecorded repository
>> +    let existing_fns = map sp2fn existing_files
>> +    changes <- if All `elem` opts then get_unrecorded_in_files_unsorted repository existing_fns
>> +                                  else get_unrecorded_in_files repository existing_fns
>>      debugMessage "I've gotten unrecorded."
>>      case allow_empty_with_askdeps changes of
>>        Nothing -> do when (Pipe `elem` opts) $ do get_date opts
>
> Use get_unrecorded_in_files_unsorted in changes command
> -------------------------------------------------------
>> Reinier Lamers <tux_rocker at reinier.de>**20090321152616
>>  Ignore-this: 3c8c091d76052765b4b47f0d20714fa9
>> ] hunk ./src/Darcs/Commands/Changes.lhs 47
>>                        )
>>  import Darcs.RepoPath ( toFilePath, rootDirectory )
>>  import Darcs.Patch.FileName ( fp2fn, fn2fp, norm_path )
>> -import Darcs.Repository ( Repository, PatchSet, PatchInfoAnd, get_unrecorded_unsorted,
>> +import Darcs.Repository ( Repository, PatchSet, PatchInfoAnd,
>> +                          get_unrecorded_in_files_unsorted,
>>                            withRepositoryDirectory, ($-), findRepository,
>>                            read_repo )
>>  import Darcs.Patch.Info ( to_xml, showPatchInfo )
>> hunk ./src/Darcs/Commands/Changes.lhs 113
>>    withRepositoryDirectory opts repodir $- \repository -> do
>>    unless (Debug `elem` opts) $ setProgressMode False
>>    files <- sort `fmap` fixSubPaths opts args
>> -  unrec <- get_unrecorded_unsorted repository
>> +  unrec <- get_unrecorded_in_files_unsorted repository (map (fp2fn . toFilePath) files)
>>             `catch` \_ -> return identity -- this is triggered when repository is remote
>>    let filez = map (fn2fp . norm_path . fp2fn) $ apply_to_filepaths (invert unrec) $ map toFilePath files
>>        filtered_changes p = maybe_reverse $ get_changes_info opts filez p
>
> Use faster get_unrecorded_in_files in revert command
> ----------------------------------------------------
>> Reinier Lamers <tux_rocker at reinier.de>**20090322145004
>>  Ignore-this: 303dc260e3fe8f01019703449dad017f
>> ] hunk ./src/Darcs/Commands/Revert.lhs 35
>>                          list_registered_files, umask_option,
>>                        )
>>  import Darcs.Utils ( askUser )
>> -import Darcs.RepoPath ( toFilePath )
>> +import Darcs.RepoPath ( toFilePath, sp2fn )
>>  import Darcs.Repository ( withRepoLock, ($-), withGutsOf,
>> hunk ./src/Darcs/Commands/Revert.lhs 37
>> -                    get_unrecorded, get_unrecorded_unsorted,
>> +                    get_unrecorded_in_files,
>> +                    get_unrecorded_in_files_unsorted,
>>                      add_to_pending, sync_repo,
>>                      applyToWorking,
>>                      amInRepository, slurp_recorded,
>> hunk ./src/Darcs/Commands/Revert.lhs 87
>>  revert_cmd :: [DarcsFlag] -> [String] -> IO ()
>>  revert_cmd opts args = withRepoLock opts $- \repository -> do
>>    files <- sort `fmap` fixSubPaths opts args
>> +  let files_fn = map sp2fn files
>>    when (areFileArgs files) $
>>         putStrLn $ "Reverting changes in "++unwords (map show files)++"..\n"
>>    changes <- if All `elem` opts
>> hunk ./src/Darcs/Commands/Revert.lhs 91
>> -                   then get_unrecorded_unsorted repository
>> -                   else get_unrecorded repository
>> +                   then get_unrecorded_in_files_unsorted repository files_fn
>> +                   else get_unrecorded_in_files repository files_fn
>>    let pre_changed_files = apply_to_filepaths (invert changes) (map toFilePath files)
>>    rec <- slurp_recorded repository
>>    case unsafeUnseal $ choose_touching pre_changed_files changes of
>
> Add haddock comment to Darcs.Commands.Unrecord.generic_obliterate_cmd
> ---------------------------------------------------------------------
>> Reinier Lamers <tux_rocker at reinier.de>**20090322145047
>>  Ignore-this: 7fcf3661b99d39b7e61231c6ffb3e935
>> ] hunk ./src/Darcs/Commands/Unrecord.lhs 282
>>  obliterate_cmd :: [DarcsFlag] -> [String] -> IO ()
>>  obliterate_cmd = generic_obliterate_cmd "obliterate"
>>
>> -generic_obliterate_cmd :: String -> [DarcsFlag] -> [String] -> IO ()
>> +-- | generic_obliterate_cmd is the function that executes the "obliterate" and
>> +--   "unpull" commands.
>> +generic_obliterate_cmd :: String      -- ^ The name under which the command is invoked (@unpull@ or @obliterate@)
>> +                       -> [DarcsFlag] -- ^ The flags given on the command line
>> +                       -> [String]    -- ^ Files given on the command line (unused)
>> +                       -> IO ()
>>  generic_obliterate_cmd cmdname opts _ = withRepoLock opts $- \repository -> do
>>    let (logMessage,_,_) = loggers opts
>>    pend <- get_unrecorded repository
>
> Use faster get_unrecorded_in_files in amend-record command
> ----------------------------------------------------------
>> Reinier Lamers <tux_rocker at reinier.de>**20090322145957
>>  Ignore-this: 9704a3d2c97698bb52b008ea9c7a326e
>> ] hunk ./src/Darcs/Commands/AmendRecord.lhs 30
>>  import Darcs.Flags ( DarcsFlag(Author, LogFile, PatchName,
>>                                 EditLongComment, PromptLongComment) )
>>  import Darcs.Lock ( world_readable_temp )
>> -import Darcs.RepoPath ( toFilePath )
>> +import Darcs.RepoPath ( toFilePath, sp2fn )
>>  import Darcs.Hopefully ( PatchInfoAnd, n2pia, hopefully, info )
>>  import Darcs.Repository ( withRepoLock, ($-), withGutsOf,
>> hunk ./src/Darcs/Commands/AmendRecord.lhs 33
>> -                    get_unrecorded, get_unrecorded_unsorted,
>> +                    get_unrecorded_in_files, get_unrecorded_in_files_unsorted,
>>                      tentativelyRemovePatches, tentativelyAddPatch, finalizeRepositoryChanges,
>>                      sync_repo, amInRepository,
>>                    )
>> hunk ./src/Darcs/Commands/AmendRecord.lhs 130
>>           putStrLn $ "Amending changes in "++unwords (map show files)++":\n"
>>      with_selected_patch_from_repo "amend" repository opts $ \ (_ :> oldp) -> do
>>          ch <- if All `elem` opts
>> -              then get_unrecorded_unsorted repository
>> -              else get_unrecorded repository
>> +              then get_unrecorded_in_files_unsorted repository (map sp2fn files)
>> +              else get_unrecorded_in_files repository (map sp2fn files)
>>          case ch of
>>            NilFL | not edit_metadata -> putStrLn "No changes!"
>>            _ -> do
>
> Use faster get_unrecorded_in_files in remove command
> ----------------------------------------------------
>> Reinier Lamers <tux_rocker at reinier.de>**20090322152154
>>  Ignore-this: 35c52e64536de8d4797109dd12e438d9
>> ] hunk ./src/Darcs/Commands/Remove.lhs 35
>>                        )
>>  import Darcs.RepoPath ( SubPath, toFilePath, sp2fn )
>>  import Darcs.Repository ( Repository, withRepoLock, ($-), amInRepository,
>> -                          slurp_pending, slurp_recorded, get_unrecorded, add_to_pending )
>> +                          slurp_pending, slurp_recorded,
>> +                          get_unrecorded_in_files, add_to_pending )
>>  import Darcs.Patch ( RepoPatch, Prim, apply_to_slurpy, adddir, rmdir, addfile, rmfile )
>>  import Darcs.Ordered ( FL(..), (+>+) )
>>  import Darcs.SlurpDirectory ( slurp_removedir, slurp_removefile )
>> hunk ./src/Darcs/Commands/Remove.lhs 83
>>  make_remove_patch repository files =
>>                            do s <- slurp_pending repository
>>                               srecorded <- slurp_recorded repository
>> -                             pend <- get_unrecorded repository
>> +                             pend <- get_unrecorded_in_files repository (map sp2fn files)
>>                               let sunrec = fromJust $ apply_to_slurpy pend srecorded
>>                               wt <- filetype_function
>>                               mrp wt s sunrec files
>>
>
> --
> Eric Kow <http://www.nltg.brighton.ac.uk/home/Eric.Kow>
> PGP Key ID: 08AC04F9
>


More information about the darcs-users mailing list