Commit Graph

42 Commits

Author SHA1 Message Date
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::git::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