[darcs-users] feature request: darcs show files for a particular rev / moment in time of repo

Thomas Hartman thomashartman1 at googlemail.com
Tue Apr 7 06:24:26 UTC 2009


So, I tried to implement this. So far no success, but I think I may be
close.

first, modify arguments to have an argument type of patch, tag, or match
pattern, but not index range.

thartman at ubuntu:~/haskellInstalls/darcs.net>darcs diff
src/Darcs/Arguments.lhs
57c57
<                          changes_format, match_one_context,
match_one_nontag,
---
>                          changes_format, match_one_context,
match_one_nontag, match_one_nonrange,
626c626,627
< match_one = concat_options [__match, __patch, __tag, __index]
---
> match_one_nonrange = concat_options [__match, __patch, __tag]
> match_one = concat_options [__match, __patch, __tag, __index] -- this
seems kinda wrong. __index is a range.

Then, modify Darcs/Commands/ShowFiles.lhs (attached)

key snip below.

If anyone can point me to where I'm going wrong, it would be aweseom!

manifest_cmd :: ([DarcsFlag] -> Slurpy -> [FilePath]) -> [DarcsFlag] ->
[String] -> IO ()
manifest_cmd to_list opts _ = do
    list <- (to_list opts) `fmap` ( withRepository opts $ \repository -> do
      formerdir <- getCurrentDirectory
      thename <- return $ takeFileName formerdir
      withTempDir thename $ \dir -> do
        if have_nonrange_match opts
          then createPristineDirectoryTree repository (toFilePath dir)
          else error "should have nonrange match"
        slurp repository
      -- slurp
repository

    )
    mapM_ output list
    where slurp :: RepoPatch p => Repository p C(r u r) -> IO Slurpy
          slurp = if NoPending `notElem` opts
                  then slurp_pending else slurp_recorded
          output_null name = do { putStr name ; putChar '\0' }
          output = if NullFlag `elem` opts then output_null else putStrLn



On Thu, Apr 2, 2009 at 3:38 PM, Thomas Hartman <
thomashartman1 at googlemail.com> wrote:

> I would like to be able to use the flags
>
>   --match=PATTERN       select a single patch matching PATTERN
>   -p REGEXP  --patch=REGEXP        select a single patch matching REGEXP
>   -t REGEXP  --tag=REGEXP          select tag matching REGEXP
>
> for
>
> darcs query files (aka darcs show files)
>
> Currently, these flags work for
>
> darcs query contents
>
> but not files.
>
> I think
>
>   -n N-M     --index=N-M           select a range of patches
>
> makes no sense in a query files context, but I could be overlooking
> something, in which case I would want that too.
>
> The ability to get an idea of repository state at a point in time would
> enable me to implement github-style repository browsing for patch-tag
>
> I am currently looking at another way to do this, based on (ab)using
> filestore library functions, but it's a bit of a kludge.
>
> Of course, I need this mainly for doing directory listings at a
> point-in-time. darcs query files for a single file should just list the file
> if it exists, otherwise an error message, I think.
>
>
> --
> Thomas Hartman
>
> Darcs hosting: patch-tag.com
> The elegance of haskell, the simplicity of php: happstack.com
>



-- 
Thomas Hartman

Darcs hosting: patch-tag.com
The elegance of haskell, the simplicity of php: happstack.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osuosl.org/pipermail/darcs-users/attachments/20090406/b8188806/attachment.htm>


More information about the darcs-users mailing list