Update reflog command WIP

This commit is contained in:
Chris Penner 2024-07-03 16:10:35 -07:00
parent 31874bd199
commit 8a405e02d2
7 changed files with 102 additions and 33 deletions

View File

@ -3498,8 +3498,8 @@ getProjectReflog numEntries projectId =
[sql| [sql|
SELECT project_id, project_branch_id, time, from_root_causal_id, to_root_causal_id, reason SELECT project_id, project_branch_id, time, from_root_causal_id, to_root_causal_id, reason
FROM project_branch_reflog FROM project_branch_reflog
ORDER BY time DESC
WHERE project_id = :projectId WHERE project_id = :projectId
ORDER BY time DESC
LIMIT :numEntries LIMIT :numEntries
|] |]
@ -3510,8 +3510,8 @@ getProjectBranchReflog numEntries projectBranchId =
[sql| [sql|
SELECT project_id, project_branch_id, time, from_root_causal_id, to_root_causal_id, reason SELECT project_id, project_branch_id, time, from_root_causal_id, to_root_causal_id, reason
FROM project_branch_reflog FROM project_branch_reflog
ORDER BY time DESC
WHERE project_branch_id = :projectBranchId WHERE project_branch_id = :projectBranchId
ORDER BY time DESC
LIMIT :numEntries LIMIT :numEntries
|] |]

View File

@ -1,3 +1,4 @@
-- A reflog which is tied to the project/branch
CREATE TABLE project_branch_reflog ( CREATE TABLE project_branch_reflog (
project_id INTEGER NOT NULL, project_id INTEGER NOT NULL,
project_branch_id INTEGER NOT NULL, project_branch_id INTEGER NOT NULL,
@ -24,3 +25,8 @@ CREATE INDEX project_reflog_by_time ON project_branch_reflog (
project_id, time DESC project_id, time DESC
); );
CREATE INDEX global_reflog_by_time ON project_branch_reflog (
time DESC
);

View File

@ -48,3 +48,6 @@ fromText _ = Nothing
instance Show ShortCausalHash where instance Show ShortCausalHash where
show (ShortCausalHash h) = '#' : Text.unpack h show (ShortCausalHash h) = '#' : Text.unpack h
instance From ShortCausalHash Text where
from = toText

View File

@ -1071,11 +1071,11 @@ inputDescription input =
VersionI -> wat VersionI -> wat
where where
hp' :: Either SCH.ShortCausalHash Path' -> Cli Text hp' :: Either SCH.ShortCausalHash Path' -> Cli Text
hp' = either (pure . Text.pack . show) p' hp' = either (pure . into @Text) p'
p :: Path -> Cli Text p :: Path -> Cli Text
p = fmap tShow . Cli.resolvePath p = fmap (into @Text) . Cli.resolvePath
p' :: Path' -> Cli Text p' :: Path' -> Cli Text
p' = fmap tShow . Cli.resolvePath' p' = fmap (into @Text) . Cli.resolvePath'
brp :: BranchRelativePath -> Cli Text brp :: BranchRelativePath -> Cli Text
brp = fmap (into @Text) . ProjectUtils.resolveBranchRelativePath brp = fmap (into @Text) . ProjectUtils.resolveBranchRelativePath
ops :: Maybe Path.Split -> Cli Text ops :: Maybe Path.Split -> Cli Text

View File

@ -3481,7 +3481,8 @@ validInputs =
viewGlobal, viewGlobal,
deprecatedViewRootReflog, deprecatedViewRootReflog,
branchReflog, branchReflog,
projectReflog projectReflog,
globalReflog
] ]
-- | A map of all command patterns by pattern name or alias. -- | A map of all command patterns by pattern name or alias.

View File

@ -2,8 +2,7 @@
scratch/main> builtins.merge lib.builtins scratch/main> builtins.merge lib.builtins
``` ```
First we make two changes to the codebase, so that there's more than one line First we make some changes to the codebase so there's data in the reflog.
for the `reflog` command to display:
```unison ```unison
x = 1 x = 1
@ -16,16 +15,27 @@ y = 2
``` ```
```ucm ```ucm
scratch/main> add scratch/main> add
scratch/main> view y scratch/main> branch /other
scratch/other> alias.term y z
newproject/main> builtins.merge lib.builtins
newproject/main> alias.type lib.builtins.Nat MyNat
``` ```
Should see reflog entries from the current branch
```ucm ```ucm
scratch/main> reflog scratch/main> reflog
``` ```
If we `reset-root` to its previous value, `y` disappears. Should see reflog entries from the current project
```ucm ```ucm
scratch/main> reset-root 2 scratch/main> project.reflog
``` ```
```ucm:error
scratch/main> view y
Should see reflog entries from all projects
```ucm
scratch/main> reflog.global
``` ```

View File

@ -1,5 +1,4 @@
First we make two changes to the codebase, so that there's more than one line First we make some changes to the codebase so there's data in the reflog.
for the `reflog` command to display:
```unison ```unison
x = 1 x = 1
@ -50,37 +49,87 @@ scratch/main> add
y : Nat y : Nat
scratch/main> view y scratch/main> branch /other
y : Nat Done. I've created the other branch based off of main.
y = 2
Tip: To merge your work back into the main branch, first
`switch /main` then `merge /other`.
scratch/other> alias.term y z
Done.
newproject/main> builtins.merge lib.builtins
Done.
newproject/main> alias.type lib.builtins.Nat MyNat
Done.
``` ```
Should see reflog entries from the current branch
```ucm ```ucm
scratch/main> reflog scratch/main> reflog
⚠️ Below is a record of recent changes, you can use
`reset #abcdef` to reset the current branch to a previous
state.
The reflog is empty Tip: Use `diff.namespace 1 7` to compare between points in
history.
Branch When Hash Description
1. scratch/main now #6mdl5gruh5 add
2. scratch/main now #3rqf1hbev7 add
3. scratch/main now #ms9lggs2rg builtins.merge scratch/main:.lib.builtins
4. scratch/main now #sg60bvjo91 Project Created
``` ```
If we `reset-root` to its previous value, `y` disappears. Should see reflog entries from the current project
```ucm ```ucm
scratch/main> reset-root 2 scratch/main> project.reflog
Below is a record of recent changes, you can use
`reset #abcdef` to reset the current branch to a previous
state.
Tip: Use `diff.namespace 1 7` to compare between points in
history.
Branch When Hash Description
1. scratch/other now #148flqs4b1 alias.term scratch/other:..y scratch/other:.z
2. scratch/other now #6mdl5gruh5 Branch created from scratch/main
3. scratch/main now #6mdl5gruh5 add
4. scratch/main now #3rqf1hbev7 add
5. scratch/main now #ms9lggs2rg builtins.merge scratch/main:.lib.builtins
6. scratch/main now #sg60bvjo91 Project Created
``` ```
Should see reflog entries from all projects
```ucm ```ucm
scratch/main> view y scratch/main> reflog.global
y : Nat Below is a record of recent changes, you can use
y = 2 `reset #abcdef` to reset the current branch to a previous
state.
Tip: Use `diff.namespace 1 7` to compare between points in
history.
Branch When Hash Description
1. newproject/main now #2rjhs2vq43 alias.term newproject/main:.lib.builtins.Nat newproject/main...
2. newproject/main now #ms9lggs2rg builtins.merge newproject/main:.lib.builtins
3. newproject/main now #sg60bvjo91 Branch Created
4. scratch/other now #148flqs4b1 alias.term scratch/other:..y scratch/other:.z
5. scratch/other now #6mdl5gruh5 Branch created from scratch/main
6. scratch/main now #6mdl5gruh5 add
7. scratch/main now #3rqf1hbev7 add
8. scratch/main now #ms9lggs2rg builtins.merge scratch/main:.lib.builtins
9. scratch/main now #sg60bvjo91 Project Created
``` ```
```
🛑
The transcript was expecting an error in the stanza above, but did not encounter one.