darcs

Issue 959 wish: List explicit dependencies with 'darcs changes -v --xml-output '

Title wish: List explicit dependencies with 'darcs changes -v --xml-output '
Priority wishlist Status given-up
Milestone Resolved in
Superseder Nosy List btcoburn, darcs-devel, dmitry.kurochkin, kowey, markstos, thorkilnaur, tommy
Assigned To
Topics UI

Created on 2008-07-15.05:56:06 by btcoburn, last changed 2017-07-31.02:14:52 by gh.

Messages
msg5223 (view) Author: btcoburn Date: 2008-07-15.05:56:03
It would be nice if there was a way to get the explicit dependencies of patches
(and tags) when listing patches selected with 'darcs changes ...'. I would like
to be able to do something like 'darcs changes -p"TAG foo" -v --xml-output' to
get the explicit dependencies for all tags beginning with 'foo'.

Short of running darcs changes and then reparsing the patch files manually, is
there currently any way to get this dependency information?
msg5457 (view) Author: markstos Date: 2008-08-13.01:54:34
I agree having explicit dependencies available via XML would be nice. I'm
marking this as 'deferred' for now since it's a wishlist item.
msg8684 (view) Author: kowey Date: 2009-09-04.10:53:30
At first I thought this was something complicated involving actually looking for
dependencies, but now I realise it's just the dependencies supplied by --ask-deps

This doesn't sound too difficult; see Darcs.Patch.Viewing (I think)
msg18892 (view) Author: imz Date: 2016-01-08.23:07:24
I'd say that listing the explicit deps in the output of at least `darcs
log -v` (no XML) is also desired.

While searching for this unimplemented command --
http://stackoverflow.com/q/34668882/94687 , I've found a piece of code
that does list the explicit deps in a warning in
Darcs/UI/Commands/Rebase.hs . So implementing it mustn't be complicated.

Compare:

    where doAdd :: (RepoPatch p, ApplyState p ~ Tree)
                => Repository (Rebasing p) wR wU wT
                -> FL (WDDNamed p) wT wT2
                -> HijackT IO (Repository (Rebasing p) wR wU wT2, FL
(RebaseName p) wT2 wT2)
          doAdd repo NilFL = return (repo, NilFL)
          doAdd repo ((p :: WDDNamed p wT wU) :>:ps) = do
              case wddDependedOn p of
                  [] -> return ()
                  deps -> liftIO $ do
                      -- It might make sense to only print out this
message once, but we might find
                      -- that the dropped dependencies are interspersed
with other output,
                      -- e.g. if running with --ask-deps
                      putStr $ "Warning: dropping the following explicit "
                                 ++ englishNum (length deps) (Noun
"dependency") ":\n\n"
                      let printIndented n =
                              mapM_ (putStrLn . (replicate n ' '++)) .
lines .
                              renderString Encode . showPatchInfo
                      putStrLn . renderString Encode . showPatchInfo .
                              patch2patchinfo $ wddPatch p
                      putStr " depended on:\n"
                      mapM_ (printIndented 2) deps
                      putStr "\n"
    ....
msg19061 (view) Author: bf Date: 2016-03-09.03:14:01
imz, if you want to give it a try: search for how wddDependedOn is
implemented and see if it is general enough (or can be generalized) to
be used outside of rebase. Once you have the list of (explicit)
dependencies for a patch, rendering it for output is easy, using the Doc
functions/operators.
msg19062 (view) Author: ganesh Date: 2016-03-09.06:22:43
Sorry, missed this thread earlier. The explicit dependencies of a 
patch are directly stored in the 'Named p' patch type and can be 
accessed by 'Darcs.Patch.Named.getdeps' (or 
'Darcs.Patch.Named.Wrapped.getdeps' if you happen to have a 
'WrappedNamed p' value instead - this was recently introduced in the 
screened branch).

The Rebase implementation (and hence 'wddDependedOn') is a bit of a 
red herring here, as it's a layer on top of that core 
representation. The code in Rebase is all about remembering if a 
patch we explicitly depended on got removed during a rebase and then 
warning the user about that.
msg19150 (view) Author: gh Date: 2016-04-09.20:23:44
I've sent a patch to show explicit dependencies of patches with the
command "darcs log -v --machine-readable" at
http://bugs.darcs.net/patch1478 .
History
Date User Action Args
2008-07-15 05:56:06btcoburncreate
2008-08-13 01:54:37markstossetstatus: unread -> deferred
nosy: + markstos
messages: + msg5457
title: List explicit dependencies with 'darcs changes -v --xml-output ' -> wish: List explicit dependencies with 'darcs changes -v --xml-output '
2009-08-06 21:09:30adminsetnosy: + dmitry.kurochkin, simon, kowey, thorkilnaur, - beschmi
2009-08-11 00:18:49adminsetnosy: - dagit
2009-08-25 18:13:27adminsetnosy: + darcs-devel, - simon
2009-08-27 14:02:43adminsetnosy: tommy, kowey, markstos, darcs-devel, thorkilnaur, btcoburn, dmitry.kurochkin
2009-09-04 10:53:33koweysetstatus: deferred -> needs-implementation
nosy: tommy, kowey, markstos, darcs-devel, thorkilnaur, btcoburn, dmitry.kurochkin
messages: + msg8684
2016-01-08 23:07:27imzsettopic: + UI
messages: + msg18892
2016-03-09 03:14:02bfsetmessages: + msg19061
2016-03-09 06:22:45ganeshsetmessages: + msg19062
2016-04-09 20:23:46ghsetmessages: + msg19150
2017-07-31 02:14:46ghsetstatus: needs-implementation -> resolved
2017-07-31 02:14:52ghsetstatus: resolved -> given-up