Kiril Videlov
e4897c467a
ignore submodules on oplog list submodules
2024-06-25 13:21:51 +02:00
Kiril Videlov
a5f3649654
remove repeat tree creation when history is being listed
2024-06-11 20:05:13 +02:00
Kiril Videlov
119107c12b
getting the snapshot diff uses workdir from applied vbranches
2024-06-11 19:51:36 +02:00
Kiril Videlov
8e8a0ffce7
list snapshots uses workdir tree from applied vbranches
2024-06-11 19:09:45 +02:00
Kiril Videlov
f36be87f8a
add the ability to get workdir tree from merging all applied virtual branches from a snapshot
2024-06-11 17:07:04 +02:00
Kiril Videlov
c15125833d
performance: creating an oplog entry does not save a workdir tree
...
We are already storing the virtual branch trees separately, and merging them together can be a slow operation if the index is large.
2024-06-11 13:21:51 +02:00
Kiril Videlov
9c56a5f040
remove proxy core: :Oid
2024-06-05 22:56:03 +02:00
Kiril Videlov
b2481f01e1
remove unnecessary checks in oplog commit
...
This little manouver costed us 150 milliseconds
2024-06-02 20:25:09 +02:00
Sebastian Thiel
96dc9d2887
fix oplog-worktree merging
2024-05-29 17:58:54 +02:00
Caleb Owens
faa476875d
Replace &BranchId to BranchId
2024-05-29 11:07:36 +02:00
Sebastian Thiel
b0e73e5c89
oplog review
2024-05-28 17:22:02 +02:00
Sebastian Thiel
e82950f177
refactor reflog.rs and slightly adjust snapshot.rs
...
* reflog
- use `gix` to parse reflog, both in code as well as in tests (to be sure it's not malformed)
- avoid double-writes to reflog, instead finish transformation in memory and write final result
- assure the ref is present, independently of the reflog, catching more 'weird' states.
* minor improvements to `snapshot.rs` to avoid unnecessary clones
2024-05-28 13:25:46 +02:00
Sebastian Thiel
590d713f91
use git2::Oid
instead of String
; various small refactors
2024-05-28 13:25:46 +02:00
Sebastian Thiel
e3156ba75c
remove single-use traits while leaving the structure as is
2024-05-28 13:25:46 +02:00
Sebastian Thiel
346c96869e
small refactors (see body for details)
...
- instrument snapshot creation to assure we see errors (which are ignored in code)
- move tests for public `entry` types into integration tests
- rename `OperationType` to `OperationKind` as it's more commmon in Rust
- Use `Copy` where possible
- streamline implementation: remove clones and allocations, without going zero-copy
- Prefer direct calls to traits to avoid `write!("{}")` just to invoke a trait fmt implementation
- avoid `pub` when `pub(crate)` will do
- strong type for created_at
2024-05-28 13:25:46 +02:00
Kiril Videlov
762bb31dea
first stab at resurecting git sync
2024-05-25 23:07:40 +02:00
Caleb Owens
42a7c8bce4
Update Oplog State to better use SystemTime
2024-05-24 12:09:15 +02:00
Caleb Owens
b8a1dcb2f0
Revert "Replace integer timestamps with Duration"
2024-05-24 09:40:52 +01:00
Kiril Videlov
d25cd4535e
prepare a snapshot before restoring from a snapshot instead of after
2024-05-24 00:23:34 +02:00
Kiril Videlov
3fef7b5474
support creating snapshots in 2 steps - prepare and commit
...
This allows us to create a snapshot (write the full trees state) first, perform some operations, i.e. the action taken by the user, and then finally commit the oplog.
In some cases we wanna skip comitting the oplog entry if the action done by the user fails. In some cases we might wanna save the error value as snapshot metadata.
2024-05-24 00:16:40 +02:00
Kiril Videlov
879005ae20
check lines since snapshot for all dirty branches
...
This is needed because new changes to a file may be locked to a branch which is not the "default" one
2024-05-23 22:37:10 +02:00
Kiril Videlov
db4bb914cc
improve auto snapshotting check performance
2024-05-23 22:17:46 +02:00
Caleb Owens
4a7e5f48dd
Merge origin/master into core-util-duration-updates
2024-05-23 14:04:54 +02:00
Caleb Owens
d55260c96a
Use Duration rather than various integer times for time
2024-05-23 14:02:48 +02:00
Kiril Videlov
b8dfcf7a82
Merge pull request #3822 from gitbutlerapp/revert-3820-oplog-diff-optimization
...
Revert "fixes incorrect snapshot diff"
2024-05-23 03:31:00 +02:00
Kiril Videlov
651a55d3fb
Revert "fixes incorrect snapshot diff"
2024-05-23 03:17:34 +02:00
Kiril Videlov
c3a18ef2b0
feat(oplog): Improve lines_since_snapshot
by using tree-to-tree comparison
...
This fixes an issue where snapshots are auto-created too often erroneously
2024-05-23 02:46:40 +02:00
Kiril Videlov
3517419090
fixes incorrect snapshot diff
2024-05-23 01:10:28 +02:00
Caleb Owens
f2471734b4
Fix timestamp compensation
2024-05-22 12:17:04 +02:00
Scott Chacon
18de60740b
formatting
2024-05-19 07:24:15 +02:00
Scott Chacon
2a89fa6b93
save and restore the gitbutler/integration branch
...
when we save the snapshots, save and restore the integration branch commit properly so we don't get in a weird state after restore
2024-05-19 07:07:55 +02:00
Scott Chacon
733780f302
reformat
2024-05-17 15:16:04 +02:00
Scott Chacon
dcc1b37331
rewrite our oplog tests
2024-05-17 15:11:19 +02:00
Scott Chacon
62e9a80512
add logic for the first parentless snapshot
2024-05-17 15:11:19 +02:00
Scott Chacon
0f3005e467
first pass at new oplog tree builder
...
creates a work tree and properly restores
note
2024-05-17 15:11:19 +02:00
Kiril Videlov
e93ddfac34
snapshot of restores keeps more metadata
2024-05-14 16:04:02 +02:00
Kiril Videlov
81e948774f
fix test
2024-05-12 23:42:04 +02:00
Kiril Videlov
336c7cb9bc
enable the new oplog snapshotting by default
2024-05-12 22:36:27 +02:00
Kiril Videlov
9e5094247b
fix rust clippy error
2024-05-09 11:33:32 -07:00
Kiril Videlov
58c124627a
add an enpoint for getting the snapshot diff
2024-05-09 11:24:42 -07:00
Kiril Videlov
e6633df481
feat: Optimize snapshot creation in Oplog.rs
...
Check for differences between the current tree and the parent tree
before creating a new snapshot to prevent creating noop snapshots.
2024-05-08 03:12:17 +02:00
Kiril Videlov
93d5e61530
rename module snapshots to ops
2024-05-08 00:29:38 +02:00