Omit times from project reflogs

This commit is contained in:
Chris Penner 2024-07-09 14:45:11 -07:00
parent c156ba75c8
commit 6fe6d673d2
5 changed files with 49 additions and 35 deletions

View File

@ -6,6 +6,7 @@ module Unison.Codebase.Editor.HandleInput.Reflogs
) )
where where
import Control.Monad.Reader
import Data.Time (getCurrentTime) import Data.Time (getCurrentTime)
import U.Codebase.HashTags (CausalHash) import U.Codebase.HashTags (CausalHash)
import U.Codebase.Sqlite.Project (Project) import U.Codebase.Sqlite.Project (Project)
@ -52,5 +53,8 @@ reflogHelper getEntries = do
if length entries == numEntriesToShow if length entries == numEntriesToShow
then Output.MoreEntriesThanShown then Output.MoreEntriesThanShown
else Output.AllEntriesShown else Output.AllEntriesShown
now <- liftIO getCurrentTime mayNow <-
Cli.respondNumbered $ Output.ShowProjectBranchReflog now moreEntriesToLoad entries asks Cli.isTranscriptTest >>= \case
True -> pure Nothing
False -> Just <$> liftIO getCurrentTime
Cli.respondNumbered $ Output.ShowProjectBranchReflog mayNow moreEntriesToLoad entries

View File

@ -154,7 +154,10 @@ data NumberedOutput
PPE.PrettyPrintEnv -- PPE containing names for everything from the root namespace. PPE.PrettyPrintEnv -- PPE containing names for everything from the root namespace.
ProjectPath -- The namespace we're checking dependencies for. ProjectPath -- The namespace we're checking dependencies for.
(Map LabeledDependency (Set Name)) -- Mapping of external dependencies to their local dependents. (Map LabeledDependency (Set Name)) -- Mapping of external dependencies to their local dependents.
| ShowProjectBranchReflog UTCTime {- current time -} MoreEntriesThanShown [ProjectReflog.Entry Project ProjectBranch (CausalHash, SCH.ShortCausalHash)] | ShowProjectBranchReflog
(Maybe UTCTime {- current time, omitted in transcript tests to be more deterministic -})
MoreEntriesThanShown
[ProjectReflog.Entry Project ProjectBranch (CausalHash, SCH.ShortCausalHash)]
data TodoOutput = TodoOutput data TodoOutput = TodoOutput
{ dependentsOfTodo :: !(Set TermReferenceId), { dependentsOfTodo :: !(Set TermReferenceId),

View File

@ -3389,19 +3389,19 @@ listDependentsOrDependencies ppe labelStart label lds types terms =
c = P.syntaxToColor c = P.syntaxToColor
displayProjectBranchReflogEntries :: displayProjectBranchReflogEntries ::
UTCTime -> Maybe UTCTime ->
E.MoreEntriesThanShown -> E.MoreEntriesThanShown ->
[ProjectReflog.Entry Project ProjectBranch (CausalHash, ShortCausalHash)] -> [ProjectReflog.Entry Project ProjectBranch (CausalHash, ShortCausalHash)] ->
(Pretty, NumberedArgs) (Pretty, NumberedArgs)
displayProjectBranchReflogEntries _ _ [] = displayProjectBranchReflogEntries _ _ [] =
(P.warnCallout "The reflog is empty", mempty) (P.warnCallout "The reflog is empty", mempty)
displayProjectBranchReflogEntries now _ entries = displayProjectBranchReflogEntries mayNow _ entries =
let (entryRows, numberedArgs) = foldMap renderEntry entries let (entryRows, numberedArgs) = foldMap renderEntry entries
rendered = rendered =
P.lines P.lines
[ header, [ header,
"", "",
P.numberedColumnNHeader ["Branch", "When", "Hash", "Description"] entryRows P.numberedColumnNHeader (["Branch"] <> Monoid.whenM (isJust mayNow) ["When"] <> ["Hash", "Description"]) entryRows
] ]
in (rendered, numberedArgs) in (rendered, numberedArgs)
where where
@ -3416,7 +3416,14 @@ displayProjectBranchReflogEntries now _ entries =
] ]
renderEntry :: ProjectReflog.Entry Project ProjectBranch (CausalHash, SCH.ShortCausalHash) -> ([[Pretty]], NumberedArgs) renderEntry :: ProjectReflog.Entry Project ProjectBranch (CausalHash, SCH.ShortCausalHash) -> ([[Pretty]], NumberedArgs)
renderEntry ProjectReflog.Entry {time, project, branch, toRootCausalHash = (toCH, toSCH), reason} = renderEntry ProjectReflog.Entry {time, project, branch, toRootCausalHash = (toCH, toSCH), reason} =
([[prettyProjectAndBranchName $ ProjectAndBranch project.name branch.name, prettyHumanReadableTime now time, P.blue (prettySCH toSCH), P.text $ truncateReason reason]], [SA.Namespace toCH]) ( [ [prettyProjectAndBranchName $ ProjectAndBranch project.name branch.name]
<> ( mayNow
& foldMap (\now -> [prettyHumanReadableTime now time])
)
<> [P.blue (prettySCH toSCH), P.text $ truncateReason reason]
],
[SA.Namespace toCH]
)
truncateReason :: Text -> Text truncateReason :: Text -> Text
truncateReason txt = case Text.splitAt 60 txt of truncateReason txt = case Text.splitAt 60 txt of
(short, "") -> short (short, "") -> short

View File

@ -81,11 +81,11 @@ scratch/main> reflog
Tip: Use `diff.namespace 1 7` to compare between points in Tip: Use `diff.namespace 1 7` to compare between points in
history. history.
Branch When Hash Description Branch Hash Description
1. scratch/main now #6mdl5gruh5 add 1. scratch/main #6mdl5gruh5 add
2. scratch/main now #3rqf1hbev7 add 2. scratch/main #3rqf1hbev7 add
3. scratch/main now #ms9lggs2rg builtins.merge scratch/main:.lib.builtins 3. scratch/main #ms9lggs2rg builtins.merge scratch/main:.lib.builtins
4. scratch/main now #sg60bvjo91 Project Created 4. scratch/main #sg60bvjo91 Project Created
``` ```
Should see reflog entries from the current project Should see reflog entries from the current project
@ -100,13 +100,13 @@ scratch/main> project.reflog
Tip: Use `diff.namespace 1 7` to compare between points in Tip: Use `diff.namespace 1 7` to compare between points in
history. history.
Branch When Hash Description Branch Hash Description
1. scratch/other now #148flqs4b1 alias.term scratch/other:..y scratch/other:.z 1. scratch/other #148flqs4b1 alias.term scratch/other:..y scratch/other:.z
2. scratch/other now #6mdl5gruh5 Branch created from scratch/main 2. scratch/other #6mdl5gruh5 Branch created from scratch/main
3. scratch/main now #6mdl5gruh5 add 3. scratch/main #6mdl5gruh5 add
4. scratch/main now #3rqf1hbev7 add 4. scratch/main #3rqf1hbev7 add
5. scratch/main now #ms9lggs2rg builtins.merge scratch/main:.lib.builtins 5. scratch/main #ms9lggs2rg builtins.merge scratch/main:.lib.builtins
6. scratch/main now #sg60bvjo91 Project Created 6. scratch/main #sg60bvjo91 Project Created
``` ```
Should see reflog entries from all projects Should see reflog entries from all projects
@ -121,15 +121,15 @@ scratch/main> reflog.global
Tip: Use `diff.namespace 1 7` to compare between points in Tip: Use `diff.namespace 1 7` to compare between points in
history. history.
Branch When Hash Description Branch Hash Description
1. newproject/main now #2rjhs2vq43 alias.term newproject/main:.lib.builtins.Nat newproject/main... 1. newproject/main #2rjhs2vq43 alias.term newproject/main:.lib.builtins.Nat newproject/main...
2. newproject/main now #ms9lggs2rg builtins.merge newproject/main:.lib.builtins 2. newproject/main #ms9lggs2rg builtins.merge newproject/main:.lib.builtins
3. newproject/main now #sg60bvjo91 Branch Created 3. newproject/main #sg60bvjo91 Branch Created
4. scratch/other now #148flqs4b1 alias.term scratch/other:..y scratch/other:.z 4. scratch/other #148flqs4b1 alias.term scratch/other:..y scratch/other:.z
5. scratch/other now #6mdl5gruh5 Branch created from scratch/main 5. scratch/other #6mdl5gruh5 Branch created from scratch/main
6. scratch/main now #6mdl5gruh5 add 6. scratch/main #6mdl5gruh5 add
7. scratch/main now #3rqf1hbev7 add 7. scratch/main #3rqf1hbev7 add
8. scratch/main now #ms9lggs2rg builtins.merge scratch/main:.lib.builtins 8. scratch/main #ms9lggs2rg builtins.merge scratch/main:.lib.builtins
9. scratch/main now #sg60bvjo91 Project Created 9. scratch/main #sg60bvjo91 Project Created
``` ```

View File

@ -83,12 +83,12 @@ scratch/main> reflog
Tip: Use `diff.namespace 1 7` to compare between points in Tip: Use `diff.namespace 1 7` to compare between points in
history. history.
Branch When Hash Description Branch Hash Description
1. scratch/main now #ujvq6e87kp reset ujvq6e87kp4288eq3al9v5luctic0ocd7ug1fu0go5bicrr2vfnrb0... 1. scratch/main #ujvq6e87kp reset ujvq6e87kp4288eq3al9v5luctic0ocd7ug1fu0go5bicrr2vfnrb0...
2. scratch/main now #5vq851j3hg update 2. scratch/main #5vq851j3hg update
3. scratch/main now #ujvq6e87kp update 3. scratch/main #ujvq6e87kp update
4. scratch/main now #4bigcpnl7t builtins.merge 4. scratch/main #4bigcpnl7t builtins.merge
5. scratch/main now #sg60bvjo91 Project Created 5. scratch/main #sg60bvjo91 Project Created
-- Reset the current branch to the first history element -- Reset the current branch to the first history element
scratch/main> reset 2 scratch/main> reset 2