Commit Graph

432 Commits

Author SHA1 Message Date
Kiril Videlov
f9ca7374e8
Merge pull request #3867 from Byron/ops-review
oplog-review
2024-05-28 17:35:43 +02:00
Sebastian Thiel
b0e73e5c89
oplog review 2024-05-28 17:22:02 +02:00
Kiril Videlov
e5fa064be5
Merge pull request #3873 from gitbutlerapp/update-gitbutler-integration
skip signing of the integration commit
2024-05-28 17:06:49 +02:00
Mattias Granlund
785bd3fb39 Fix slightly confusing code related to merging in trunk
- easier to understand if we only set branch.tree in one place
- enable ? return for git errors
2024-05-28 16:58:48 +02:00
Kiril Videlov
3494585679 plain commits for integration stuff
more
asdf
2024-05-28 16:48:07 +02:00
Josh Junon
7098fbc11b
disable stdin for invocations of ssh-keygen when signing commits 2024-05-28 13:44:24 +02:00
Sebastian Thiel
12e45142b3
recover from empty reflog files for gitbutler/target ref
This also improves the tests quite a bit as it incorporates fixes
in `gix-ref`.

Also rename variables to be more descriptive, so instead of `something_sha`
name it `something_commit` as the object type is among the most interesting
bits of an object.
2024-05-28 13:25:46 +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
d952db0920
adjust pub to make sense for actual usage (and after trait removal) 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
a5f71be44c
avoid separate exists-checks in favor of detailed error handling
That way we are less racy and do less IO.
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
Sebastian Thiel
6224c70695
fix integration test structure to assure tests run only once.
Previously, tests were included by `app.rs` which is the entrypoint
for intgration tests, but there were also loose `.rs` files which
each count as separate test (with their own binary).

This wasn't intended and I don't know what happened there,
so now `core.rs` is the entrypoint.
2024-05-28 13:25:45 +02:00
Caleb Owens
571f16b8b2 Allow non-origin main branches to be listed 2024-05-24 15:22:34 +02:00
Caleb Owens
27f3b65b79 Fetch non-origin remotes 2024-05-24 14:58:56 +02:00
Kiril Videlov
1fbb756183 remove unused feature flag for snapshotting feature 2024-05-26 23:50:19 +02:00
Sebastian Thiel
f6dcf5d8c6
avoid assertions as they may cause the UI to 'hang' (#2657)
Panicked commands lead to timeouts, which are hard to debug unless
one sees the panic information in the log.
2024-05-26 08:44:55 +02:00
Kiril Videlov
762bb31dea first stab at resurecting git sync 2024-05-25 23:07:40 +02:00
Kiril Videlov
f71b76ccb4
Merge pull request #3859 from Byron/win-tempfile
minor Windows adjustments
2024-05-25 22:08:32 +02:00
Kiril Videlov
bf3611fefa feat: Add support for trailers with newlines
Escaping the newlines since the tailers are new line delimited. This is relevant when storing things like commit messages
2024-05-25 21:03:14 +02:00
Sebastian Thiel
a176bf04cf
remove Windows experiment (#3601)
The sync-all didn't do anything, and one would still run into locked
files.
2024-05-25 09:10:11 +02:00
Sebastian Thiel
9245e3458f
now_since_unix_epoch_ms now uses negative dates for times pre Unix-epoch 2024-05-25 07:45:18 +02:00
Sebastian Thiel
2ed708b298
remove chrono which was only used for 'now in milliseconds, relative to UNIX epoch' 2024-05-24 21:38:11 +02:00
Kiril Videlov
623500a25e remove unsed branch from implementation 2024-05-24 20:29:31 +02:00
Caleb Owens
4cae28668b
Merge branch 'master' into revert-3830-core-util-duration-updates 2024-05-24 14:20:55 +02:00
Caleb Owens
42a7c8bce4 Update Oplog State to better use SystemTime 2024-05-24 12:09:15 +02:00
Kiril Videlov
2ecee6df21
Merge pull request #3846 from gitbutlerapp/sc-fix-rebase-issue
Return the merge result in the case the rebase bails
2024-05-24 11:02:33 +02:00
Caleb Owens
5d723f1d91 Update comment to accuratly reflect data stored 2024-05-24 10:46:47 +02:00
Scott Chacon
c58719b77d oops. 2024-05-24 10:45:54 +02:00
Kiril Videlov
9db262936c
Merge pull request #3845 from gitbutlerapp/update-base-branch-anyhow
feat: Update base branch handling to use anyhow
2024-05-24 10:44:54 +02:00
Caleb Owens
b8a1dcb2f0
Revert "Replace integer timestamps with Duration" 2024-05-24 09:40:52 +01:00
Scott Chacon
757a4690ca return the merge result in the case the rebase bails 2024-05-24 10:38:48 +02:00
Kiril Videlov
d5ff348a21 feat: Update base branch handling to use anyhow 2024-05-24 10:31:43 +02:00
Kiril Videlov
3749bcef51 snapshot before comitting is done in two steps now
this way we have the commit id
2024-05-24 00:35:31 +02: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
Kiril Videlov
c2a5014ed0 oplog state persists timestamp of last snapshot 2024-05-23 22:17:46 +02:00
Mattias Granlund
3096a23098 run cargo fmt 2024-05-23 15:59:43 +02:00
Scott Chacon
6ccb52bd63 whoops 2024-05-23 15:59:43 +02:00
Scott Chacon
7d6c36f4de refactor: Replace manual rebase with cherry-rebase function. 2024-05-23 15:59:43 +02:00
Caleb Owens
c2a1f6a7e7 Fix various tests 2024-05-23 14:26:16 +02:00
Caleb Owens
d6cde8d722 Update comment to no longer say seconds 2024-05-23 14:09:27 +02:00
Caleb Owens
b81151c77d Rename serializer 2024-05-23 14:09:20 +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
c7aaa1a6b6 fix oplog test 2024-05-23 13:40:53 +02:00
Kiril Videlov
1312813051 move snapshot MoveCommit before the operation 2024-05-23 11:59:26 +02:00
Kiril Videlov
55da2e550e move snapshot UpdateCommitMessage before the operation 2024-05-23 11:58:13 +02:00
Kiril Videlov
7ab0bbb989 move snapshot SquashCommit before the operation 2024-05-23 11:57:34 +02:00
Kiril Videlov
72cdec8c93 move snapshot CherryPick before the operation 2024-05-23 11:56:52 +02:00
Kiril Videlov
e0584534e5 move snapshot UndoCommit before the operation 2024-05-23 11:54:46 +02:00
Kiril Videlov
05039a2bbb move snapshot ReorderCommit before the operation 2024-05-23 11:54:03 +02:00
Kiril Videlov
ff04bc0a59 move snapshot InsertBlankCommit before the operation 2024-05-23 11:53:16 +02:00
Kiril Videlov
168a218ebe move snapshot MoveCommitFile before the operation 2024-05-23 11:52:27 +02:00
Kiril Videlov
f514ec752c move snapshot AmendCommit before the operation 2024-05-23 11:51:18 +02:00
Kiril Videlov
7944fb4558 move snapshot DiscardFile before the operation 2024-05-23 11:50:34 +02:00
Kiril Videlov
6574a805a8 move snapshot DiscardHunk before the operation 2024-05-23 11:50:06 +02:00
Kiril Videlov
a418f22e23 move snapshot UpdateWorkspaceBase before the operation 2024-05-23 11:49:34 +02:00
Kiril Videlov
f94ff8fd41 move snapshot MergeUpstream to before the operation 2024-05-23 11:48:56 +02:00
Kiril Videlov
a65aec6054 move snapshot SetBaseBranch to before the operation 2024-05-23 11:48:00 +02:00
Kiril Videlov
4092464be4 move snapshot UndoCommit to before the operation 2024-05-23 11:46:52 +02:00
Kiril Videlov
77e01b5928 move snapshot CreateCommit to before the operation 2024-05-23 11:45:14 +02:00
Kiril Videlov
89fb842701 move snapshot UpdateBranch to before the operation 2024-05-23 11:39:23 +02:00
Kiril Videlov
753cc02a37 move snapshot UnapplyBranch to before the operation 2024-05-23 11:27:24 +02:00
Kiril Videlov
ea5f8e8dad move snapshot CreateBranch to before the operation 2024-05-23 11:23:37 +02:00
Kiril Videlov
7bd3548030 move snapshot DeleteBranch to before the operation 2024-05-23 11:12:33 +02:00
Kiril Videlov
4e234d6b5c move snapshot ApplyBranch before the operation 2024-05-23 11:07:30 +02:00
Mattias Granlund
2b33b79d48 Fix lint 2024-05-23 10:58:59 +02:00
Mattias Granlund
021180d8f1 Rename function 2024-05-23 10:58:59 +02:00
Mattias Granlund
af4833f091 Fix a few bugs 2024-05-23 10:58:59 +02:00
Mattias Granlund
cd419eca67 Refactor how we merge in commits from branch upstream
- send change_id to frontend for `RemoteCommit`
- split up massive function into three
- add a couple of checks to prevent unexpected state
- rebase if force push allowed (needs toggle)
2024-05-23 10:58:59 +02:00
Mattias Granlund
ed14ddf378 Simplify function with ? shorthand 2024-05-23 10:58:59 +02:00
Mattias Granlund
8b7e12e472 Remove explicit error type for merge_virtual_branch_upstream 2024-05-23 10:58:59 +02:00
Sebastian Thiel
e3b8e2a5e5
fix: assure commit.gpgsign is detected correctly
Avoid stringly comparison for what is definitely a boolean
[as per the configuration](https://git-scm.com/docs/git-config#Documentation/git-config.txt-commitgpgSign).
2024-05-23 10:18:35 +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
Kiril Videlov
9dbebba5df refactor: Improve error handling in branch_to_remote_branch() and list_remote_branches() functions 2024-05-22 14:20:41 +02:00
Kiril Videlov
660d296745
Merge pull request #3814 from gitbutlerapp/update-change-selected-for-changes-branch
fix: Use old branch name instead of selected_for_changes in Snapshot creation
2024-05-22 12:32:46 +02:00
Kiril Videlov
f68ce21962 fix: Use old branch name instead of selected_for_changes in Snapshot creation 2024-05-22 12:20:59 +02:00
Caleb Owens
f2471734b4 Fix timestamp compensation 2024-05-22 12:17:04 +02:00
Scott Chacon
8b7fe790e5 return all local branches as well as remote ones
also deduplicate them in the branch listing
2024-05-22 10:45:29 +02:00
Kiril Videlov
eda9651bf9
Merge pull request #3800 from anaisbetts/no-dosbox-on-sign
Don't show command prompt when commit signing is enabled
2024-05-21 23:33:22 +02:00
Kiril Videlov
9f318626f8
Merge pull request #3737 from anaisbetts/flushable-debounce
Avoid file locks by being smarter about when we try to rebuild our information
2024-05-21 13:47:54 +02:00
Ani Betts
a47ebbc22d
Don't show command prompt when commit signing is enabled 2024-05-21 12:04:41 +02:00
Mattias Granlund
21e98fd9f2 Simplify getting default target
- remove try function in favor of returning error
- drop unused function
2024-05-21 12:02:38 +02:00
Anaïs Betts
d23ca10028
Bring back tempfile moves 2024-05-21 10:36:22 +02:00
Ani Betts
12143b0a54
Embrace your Chill, cargo 2024-05-21 10:39:00 +02:00
Ani Betts
b4b0de6a3c
Merge remote-tracking branch 'upstream/master' into flushable-debounce
* upstream/master: (85 commits)
  History and minor UI fixes (#3797)
  History fixes (#3796)
  make GitGuardian happy
  bump playwright version
  add vitest exclude for node_modules
  Remove unused exports from ipc
  Update auth.ts to use absolute import
  Use correct invoke function
  setup for async tasks on oplog update
  formatting
  save and restore the gitbutler/integration branch
  remove unneccessary CSPs
  Fix ollama request security
  fix: forgot the port
  feat: Set default snapshot lines threshold to 20 when undefined
  fix: Updated connect-src to allow local connections for ollama
  Minor tweaks to CSS and use real branch name
  Unmount history component when hidden
  Fix bug leaving PR button visible
  Small refactor of history component
  ...
2024-05-21 10:29:42 +02:00
Kiril Videlov
662a62c2f2 setup for async tasks on oplog update
As we start building out code collaboration we wanna have the ability to push gitbutler state to, when enabled
2024-05-19 15:53:27 +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
1cbcbb3478 change the oplog file name
this is both to be a little more clear, but mainly to reset users from the previous logic
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