Commit Graph

1323 Commits

Author SHA1 Message Date
Caleb Owens
2d0dc3a9ff Better filter branches to unapply in case of conflicts 2024-07-03 14:57:18 +02:00
Caleb Owens
49236707be Use correct headers for unapplying wip commits 2024-07-02 17:30:00 +02:00
Kiril Videlov
8e3601e855 Merge: resolve lockfile conflicts 2024-07-02 16:21:54 +02:00
Kiril Videlov
88da873128
Merge pull request #4184 from gitbutlerapp/bundle-as-RPM
make RPM bundles
2024-07-02 15:54:42 +02:00
Caleb Owens
ac4f3b926c
Merge remote-tracking branch 'origin/master' into ndom91/create-gitbutler-ui-package 2024-07-02 15:31:00 +02:00
Kiril Videlov
1ac47405fc
fix clippy warning about missing crossbeam feature 2024-07-02 15:14:40 +02:00
Kiril Videlov
6e8e6b7b9b
remote unneccesary borrow 2024-07-02 15:11:28 +02:00
Kiril Videlov
23503afd25
merge stuff 2024-07-02 15:05:56 +02:00
Sebastian Thiel
b8da62c68b
assure SecretServices functions
- inject secretService so it works when used directly
- remove console logs
- only remove a migrated secret (instead of removing it unconditionally)
- in +template, await for good measure, which explains why the parent function is async

In the backend:
- prevent concurrency in method that stores secrets from the frontend
  as it's racy otherwise to type a secret quickly.
2024-07-02 13:17:45 +02:00
Caleb Owens
44e56ac370
Use turbo for production builds 2024-07-02 13:15:26 +02:00
Kiril Videlov
25aceb2520
rm unnecessary borrows 2024-07-02 11:22:08 +03:00
Kiril Videlov
a240a16cc5
silence clippy for now 2024-07-02 11:18:41 +03:00
Nico Domino
4fab3ec200
Merge branch 'master' into ndom91/create-gitbutler-ui-package 2024-07-02 10:04:46 +02:00
Sebastian Thiel
05506f49fa
migrate AI tokens from the git-configuration to the keystore.
All AI related options are stored in the user-level git configuration
file. Upon first access, they will be removed from there and placed
into the keystore as part of the migration.

The UI is provided with functions to store and save secrets which it
will use specifically to interact with these keys.

It's explicitly out of scope to *not* show the keys in plain-text
anymore after entering them.
2024-07-02 10:02:46 +02:00
Sebastian Thiel
de00e4f049
support global secrets (without namespace for build types) and provide commands in tauri crate
That way globals secrets can be used from the UI directly.
2024-07-02 10:02:46 +02:00
Sebastian Thiel
b08a9e8cb1
Prevent MacOS popups each startup on MacOS
MacOS is the only known platform that exhibits this behaviour - if an app
is recompiled, the hash of the binary is used to identify it towards the keychain.
As this changes each time, the keychain will ask for permission, which is fair.

However, it's also an impediment which leads to the implementation of
a keystore that uses git credentials as backend. For this to work,
the latest version of `gitoxide` is required for now.
2024-07-02 10:02:46 +02:00
Sebastian Thiel
7e7555567b
automatically delete empty passwords from the key store
The frontend uses this to invalidate the GitHub token, even though
it can also deal with `null`. Let's keep the keystore clean and
only keep entries that contain an actual password.

Note that the consumers, i.e. the frontend, handle an empty password
for the short time it's in memory.
2024-07-02 10:02:46 +02:00
Sebastian Thiel
9da051b089
improve naming of tokens stored in the keychain: do not 'abuse' user field
Currently, the user is used as handle name, but instead, just name it
`GitButler`.
2024-07-02 10:02:46 +02:00
Sebastian Thiel
fbfeba0637
auto-delete a user if its access token can't be found 2024-07-02 10:02:46 +02:00
Sebastian Thiel
ee5ff95649
Assure Sensitive fields can't be serialized
This does not only mean that they cannot be written to disk, but also
that extra work has to be done to serialize them over the wire.

This is very much by design, as they can be in structs that are
seemingly serializable and contain sensitive data, but they must
never actually be serialized.

For use in the UI, an extra type must be used that marks the secret
differently, for instance by field name.
2024-07-02 10:02:45 +02:00
Sebastian Thiel
bc8f3b74c7
tauri specializes the secret-store depending on application type
That way, there is no overlap in the technically global store, just
like before when secrets were stored in plain text.
2024-07-02 10:02:45 +02:00
Sebastian Thiel
929eb52224
auto-migrate secrets from user.json to their location in the keyring
This will also remove them from their plain-text location.

Further, when the secrets are required they will be obtained
specifically, instead of always having them at hand.

The frontend doesn't ever show these, but needs them, and
it now asks for them when it needs them.
2024-07-02 10:02:43 +02:00
Sebastian Thiel
f3e6c7ba94
Add the capability to store and retrieve secrets
This is a global facility without any state, and provides a simplified
interface to the `keyring` crate.
2024-07-02 10:01:44 +02:00
Sebastian Thiel
cedb893ad6
put 'core::serde' into its own module file
It started small, but now is large enough to warrant that.
2024-07-02 10:01:44 +02:00
Kiril Videlov
4db2698cda
bump tauri minor version
this allows us to bundle RPM packages!
2024-07-02 10:48:47 +03:00
Caleb Owens
82c3987d45
Unapply to real branches (#4025)
* Don't return optional

* Rename get_integration_commiter

* Add a header to wip commit

* Stuff

* Unapply all branches

* Reorder code

* Fix one test

* Name resolution

* Fix two tests

* Fix another!

* wip

* Fix so many tests

* Fix unapply.rs tests

* Fix selected for changes tests

* Move unapplying logic to delete_branch method

* Remove unused and kinda borked cherry_commit code

* Fix the tests!!!!!

* Make apply_branch private

* Change handling of headers

* Improve order integrity

* Updated types and comments to convey more meaning
2024-07-01 14:13:52 +00:00
ndom91
836b86a753
Merge branch 'master' into ndom91/create-gitbutler-ui-package 2024-06-28 12:50:44 +02:00
Kiril Videlov
b72f9c2199
move error marker out of virtual_branches mod
It's useful outside of it
2024-06-28 11:35:44 +02:00
ndom91
d8a7f2bbdc
fix: cleanup build npm scripts 2024-06-28 11:34:44 +02:00
Kiril Videlov
b623952fdd
Merge pull request #4198 from gitbutlerapp/remove-print-tree-function
refactor: Remove unused _print_tree function.
2024-06-28 11:21:26 +02:00
Kiril Videlov
8ed324580c
refactor: Remove unused _print_tree function. 2024-06-28 11:10:27 +02:00
Kiril Videlov
251d56677d
refactor: move rebase functions out of virtual_branches module
This opens the doors for further simplifying the core
2024-06-28 11:04:15 +02:00
Sebastian Thiel
adc50a7e7f
more robust login handling by deleting corrupt user.json file
If a user.json file cannot be loaded, delete it automatically
to avoid users to get stuck in 'something went wrong' during layout.

Older versions of GB wouldn't find the access-token in the user.json file
anymore, which would be completely removed via #4165
2024-06-27 15:10:48 +02:00
ndom91
091b45d5e9
feat: create separate component library subpackage 2024-06-26 18:01:09 +02:00
Kiril Videlov
b886ff84f1
refactor: Remove rusqlite dependency and related code. 2024-06-26 16:21:24 +02:00
Kiril Videlov
3fb7f3b8bb
add the ability to toggle the allow rebasing flag for lanes in the UI 2024-06-26 13:53:13 +02:00
Kiril Videlov
d17534d291
adds the ability to update the allow_rebasing flag on branches and fix tests 2024-06-26 10:23:31 +02:00
Kiril Videlov
d4267b81d5
use per-branch flag to check if rebasing is allowed 2024-06-25 21:36:43 +02:00
Kiril Videlov
4a0cf76b53
make RPM bundles 2024-06-25 20:44:11 +02:00
Kiril Videlov
03214dcaa1
introduce a new flag for branches determining if rebasing is allowed 2024-06-25 20:10:27 +02:00
Kiril Videlov
d4ab41cef9
remove unused code 2024-06-25 14:50:17 +02:00
Kiril Videlov
e707bdd812
Merge pull request #4174 from gitbutlerapp/cool-with-submodules
cool with submodules
2024-06-25 13:35:05 +02:00
Mattias Granlund
e499b8fdfd Remove timestamp_ms from Hunk
We are not using it, let's re-introduce if needed in the future.
2024-06-25 14:23:45 +03:00
Kiril Videlov
70dc0b54f3
remove a restriction on adding repos with submodules 2024-06-25 13:23:08 +02:00
Kiril Videlov
e4897c467a
ignore submodules on oplog list submodules 2024-06-25 13:21:51 +02:00
Mattias Granlund
0ae5ded3ec Add test covering issue #4148 2024-06-25 13:09:21 +03:00
Mattias Granlund
e91634bcdb Move a couple of test utils to test_project.rs 2024-06-25 13:09:21 +03:00
Mattias Granlund
d12698abb5 Fix bug in hunk -> branch assignment
- return early on lock only if hunk matches or intersects
2024-06-24 23:11:39 +03:00
dependabot[bot]
b0579da1db
Bump tauri from 1.6.7 to 1.6.8 in the cargo group across 1 directory
Bumps the cargo group with 1 update in the / directory: [tauri](https://github.com/tauri-apps/tauri).


Updates `tauri` from 1.6.7 to 1.6.8
- [Release notes](https://github.com/tauri-apps/tauri/releases)
- [Commits](https://github.com/tauri-apps/tauri/compare/tauri-v1.6.7...tauri-v1.6.8)

---
updated-dependencies:
- dependency-name: tauri
  dependency-type: direct:production
  dependency-group: cargo
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-24 14:30:04 +00:00
Kiril Videlov
8a24b7363a
Merge pull request #4115 from gitbutlerapp/dependabot/cargo/cargo-c9137a7768
Bump the cargo group with 2 updates
2024-06-24 16:27:59 +02:00
Kiril Videlov
b6c41e572f
Merge pull request #4162 from gitbutlerapp/better-exe-resolution
Use `gitoxide` to more reliably find the Git executable on Windows. (#1419)
2024-06-24 16:26:07 +02:00
Sebastian Thiel
cd20bbb859
Use gitoxide to more reliably find the Git executable on Windows. (#1419)
Previously, Windows installations that didn't put git.exe into their PATH
were unable to have their executable found.

`gitoxide` has the same problem to solve and can now 'find harder' in
known installation locations.

This capability is now used here, instead of hard-coding `git.exe` or `git`.
2024-06-24 16:03:15 +02:00
Kiril Videlov
4477cfcb1d
Merge pull request #3948 from Byron/watcher-refactor
watcher refactor
2024-06-24 15:47:12 +02:00
Lukylix
3a079593b2 Removed an unused import 2024-06-21 23:28:08 +02:00
Lukylix
5bc830baa0 Wide path convertion 2024-06-21 22:55:48 +02:00
Lukylix
e42026188d Limiting pipe instances on windows 2024-06-21 22:50:02 +02:00
Lukylix
2d7b7737be Askpass test 2024-06-21 22:49:19 +02:00
Lukylix
7b509c4dcd Windows Pipe CloseHandle and Cloning 2024-06-20 16:43:25 +02:00
Lukylix
28668e1b2c Fix askpass pipe on windows 2024-06-19 14:08:10 +02:00
dependabot[bot]
553674de3b
Bump the cargo group with 2 updates
Bumps the cargo group with 2 updates: [tauri](https://github.com/tauri-apps/tauri) and [curve25519-dalek](https://github.com/dalek-cryptography/curve25519-dalek).


Updates `tauri` from 1.6.2 to 1.6.7
- [Release notes](https://github.com/tauri-apps/tauri/releases)
- [Commits](https://github.com/tauri-apps/tauri/compare/tauri-v1.6.2...tauri-v1.6.7)

Updates `curve25519-dalek` from 4.1.2 to 4.1.3
- [Release notes](https://github.com/dalek-cryptography/curve25519-dalek/releases)
- [Commits](https://github.com/dalek-cryptography/curve25519-dalek/compare/curve25519-4.1.2...curve25519-4.1.3)

---
updated-dependencies:
- dependency-name: tauri
  dependency-type: direct:production
  dependency-group: cargo
- dependency-name: curve25519-dalek
  dependency-type: indirect
  dependency-group: cargo
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 23:21:19 +00:00
Pavel Laptev
0dfb591ac4
Revert "Added hotkey and the accelerator to the top menu (#4097)" (#4099)
This reverts commit e09810bfff.
2024-06-17 14:20:38 +02:00
Pavel Laptev
e09810bfff
Added hotkey and the accelerator to the top menu (#4097) 2024-06-17 12:46:04 +02:00
Caleb Owens
58ea9879ba
Add a shortcut and menu item to access settings
Co-authored-by: Louis <h1ghbre4k3r@dev.bre4k3r.de>
2024-06-17 11:05:47 +02:00
Sebastian Thiel
b27fff77ad
fix performance issue that seems to be introduced by the FileIdMap
This disables the cache entirely which would have been the case before
the refactor as well.
This time, it's explicit though.
2024-06-16 09:44:22 +02:00
Sebastian Thiel
843841981c
minor refactor 2024-06-16 09:38:24 +02:00
Sebastian Thiel
184f557897
move debouncer code into its own crate
That way the public API that isn't used doesn't have to be `dead_code`.

Also adjust CI to run the tests we have in the debouncer crate.
Previously, it might not have run them though.
2024-06-16 09:38:24 +02:00
Sebastian Thiel
3723cd279c
enable rename-tracking by FileId by configuring the cache. 2024-06-16 09:38:24 +02:00
Sebastian Thiel
a63b88669c
revert from original to modified version
This shows the exact changes that were done to the original.
2024-06-16 09:38:24 +02:00
Sebastian Thiel
05d3ef3308
make the original version compile and pass tests, assure it works in-app
For the first time, we also add an extra root to the FileId cache which was
unusable before due to the missing configuration.
2024-06-16 09:38:24 +02:00
Sebastian Thiel
3eaaa7f62d
revert debouncer to original version from 0.3.1
That way it becomes obvious which changes exactly are needed to make
the flush-functionality working.

This commit will be followed up by a revert to get the flush-changes
back.
2024-06-16 09:38:23 +02:00
Sebastian Thiel
659fc99af0
remove duplicate tests (but keep them as unit-tests this time)
Previously the `DebouncerInner` struct was made public to allow the
tests to happen (they initialize it directly), but to keep it closer
to the original, let's keep unit tests this time.

Also I validated that both tests are the same.
2024-06-16 09:38:17 +02:00
Kiril Videlov
64729a9a17
improve performance of workidir diff 2024-06-16 01:54:23 +02:00
Kiril Videlov
41c2ab5908
Merge pull request #4086 from gitbutlerapp/add-mempack-backend-reset-oops
feat: Add in-memory method to open temporary repository for comparing or getting diffs.
2024-06-15 21:49:15 +02:00
Kiril Videlov
be975b7038
refactor: Remove commented-out code for conflict handling in virtual branches. 2024-06-15 21:36:56 +02:00
Kiril Videlov
b01f35bf26
feat: Add in-memory method to open temporary repository for comparing or getting diffs. 2024-06-15 21:21:11 +02:00
Mattias Granlund
650a463a16 Fix empty commit marked as integrated
- we can't say an empty commit is integrated based on tree ids
2024-06-11 23:38: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
Caleb Owens
a4f548e411
Diff the correct way round 2024-06-10 15:20:28 +02:00
Kiril Videlov
88e13bd89e
apply hunks in one go for submodules too 2024-06-10 11:23:36 +02:00
Kiril Videlov
ad48640347
set timeout of 2 sec when caching assets 2024-06-09 21:38:20 +02:00
Sebastian Thiel
788958ee08
hide sensitive information from ever being debug-logged 2024-06-09 08:58:17 +02:00
Kiril Videlov
c0710a05e7
captrure update branch errors in snapshot 2024-06-08 22:31:23 +02:00
Luke Carrier
c3242a5a5a fix: subs{ i => e }quently 2024-06-07 22:39:53 +01:00
Kiril Videlov
1e253b8a59 feat(project): enable new locking by default 2024-06-06 18:08:10 +02:00
Kiril Videlov
5922ed7459 remove error type core::git::Error 2024-06-06 16:49:33 +02:00
Kiril Videlov
113d238753 cleanup config.rs unused functions 2024-06-06 16:41:19 +02:00
Kiril Videlov
462a98e5d1 remove unused variants of core::git::Error 2024-06-06 16:38:02 +02:00
Kiril Videlov
61dd48f915 on commit sign failure, set signing to false
This way, subsequent attempts will succeed
2024-06-06 14:52:25 +02:00
Pavel Laptev
6ee2bee101
text case updated to the Sentance case (#4016)
* text case updated to the Sentance case

* text case update continue
2024-06-06 14:38:11 +02:00
Sebastian Thiel
d7c8586159
fix serde and some find-replace errors
The first problem was that serde needed to see an extra annotation
for deserialzation of Options to work - maybe not the most optimal,
but it works.

The second and bigger issue was a find-replace error where `branch.tree`
was replaced with `branch.head`.
2024-06-06 09:24:53 +02:00
Kiril Videlov
4d2798a1fd remove unused oid file 2024-06-06 00:45:41 +02:00
Kiril Videlov
0e694c7823 use serde with 2024-06-06 00:43:44 +02:00
Kiril Videlov
9c56a5f040 remove proxy core::git::Oid 2024-06-05 22:56:03 +02:00
Caleb Owens
67aad4e597
Filter out unapplied branches
We don't have any unstaged changes for unapplied branches, so there is
nothing there to lock.
2024-06-05 22:21:50 +02:00
Caleb Owens
d61879c2a1
Rust... just... please.... 😢 2024-06-05 17:31:37 +02:00
Caleb Owens
ed3294a692
Make clippy a happy clippy 2024-06-05 17:23:11 +02:00
Caleb Owens
31b240265b
Undo all extra refactoring 2024-06-05 17:22:22 +02:00
Caleb Owens
9d93bd8d9d
Defactor workdir 2024-06-05 17:19:26 +02:00
Caleb Owens
c3e9a22454
Put new implementation behind a feature flag 2024-06-05 17:18:12 +02:00
Caleb Owens
d9822be161
Reimplement compute_locks 2024-06-05 17:17:36 +02:00
Kiril Videlov
f915304e34 Merged origin/master into commit-signing-settings 2024-06-05 15:10:06 +02:00
Kiril Videlov
665ab4952a rm some accidentally duplicated code 2024-06-05 14:41:09 +02:00
Kiril Videlov
f4ec31f81b fix a bug in handling the case of remote refname being none 2024-06-05 14:31:26 +02:00
Scott Chacon
b8f897e3ae
gotta love rust 2024-06-05 13:41:58 +02:00
Scott Chacon
b60a66452d
merge upstream 2024-06-05 10:17:03 +02:00
Scott Chacon
a6e5abb620
can check commit signing 2024-06-05 10:14:49 +02:00
Kiril Videlov
4a54f74aa2 remove field access 2024-06-05 01:19:23 +02:00
Kiril Videlov
e63081c69d remove core::git::Repository shell type 2024-06-05 01:11:10 +02:00
Kiril Videlov
65a22691ee
Merge pull request #3958 from TheGB0077/vscodium-patch
feat: Open with VS Code also opens VS Codium if available, partial fix for #3646
2024-06-04 16:28:55 +02:00
Kiril Videlov
802e3419bd introduce a convinience GbConfig type 2024-06-04 15:35:29 +02:00
Mattias Granlund
d0993b8acd Update updated_at timestamp after mutations
- also drops unnecessary `.context()` from most `vb_state.set_branch(...)` calls
2024-06-04 13:52:58 +02:00
Kiril Videlov
76284b0620 when the branch being applied has a merge commit do merge only 2024-06-04 10:10:32 +02:00
TheGB0077
848e33ac45 revert back to any 2024-06-04 04:27:51 -03:00
Mattias Granlund
30c1370140 Include fork point when getting remote branch data 2024-06-04 00:52:09 +02:00
Mattias Granlund
e68dc45359 Show fork point instead of merge base 2024-06-04 00:52:09 +02:00
Kiril Videlov
828bd31a4a add some additional context to the logs when this fails 2024-06-03 22:05:10 +02:00
Kiril Videlov
28b49be9ae fail when signing enabled for GitButler but with error code 2024-06-03 21:31:14 +02:00
TheGB0077
21d59b5e05 logic simplified 2024-06-03 14:28:04 -03:00
Kiril Videlov
c611ff7f9b remove panic from the commit signing flow 2024-06-03 15:30:18 +02:00
Kiril Videlov
7be95b7ea2 better handling if signing fails 2024-06-03 15:28:57 +02:00
Kiril Videlov
40cfc55309 support setting signCommits git config 2024-06-03 17:00:14 +02:00
Caleb Owens
1be0f43d7d
Merge pull request #3968 from gitbutlerapp/fix-There-is-no-default-target-error-on-adding-a-project
Services: Improved base branch handling
2024-06-03 14:42:24 +02:00
Caleb Owens
342159ddd4 Services: Improved base branch handling
Added a constant for the error message when no default target is set and updated the error handling to use this new message.
2024-06-03 13:31:38 +02:00
Kiril Videlov
3d925d9c53 applying a branch should use cherry rebase 2024-06-03 11:59:42 +02:00
Kiril Videlov
8ab770b15a move blame to repository extension trait 2024-06-03 01:40:41 +02:00
Kiril Videlov
bc16fadcc5 move commit signing to git2 extension trait 2024-06-03 01:04:14 +02:00
Kiril Videlov
4b6a273e80 remove unused function 2024-06-02 23:47:23 +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
TheGB0077
a77f3ad6e3 VSCodium basic setup 2024-06-02 14:53:37 -03:00
Kiril Videlov
4f8adc487a
Merge pull request #3956 from gitbutlerapp/get-head-reference
remove core::git::Reference type
2024-06-02 19:14:49 +02:00
Kiril Videlov
4ae1847a28 remove core::git::Reference type 2024-06-02 19:03:03 +02:00
Kiril Videlov
879a07da64 remove core::git::Index 2024-06-02 17:57:18 +02:00
Caleb Owens
c7651d7c52 Enable moving by more than one commit at a time 2024-06-02 17:37:23 +02:00
Kiril Videlov
e18684fcdb remove the auto detect git flow
It was complex, buggy and slow
2024-06-02 15:48:15 +02:00
Kiril Videlov
5927ca4ac5 remove shell core::git::Config type 2024-06-02 14:26:09 +02:00
Kiril Videlov
5bb2dfb0b5 remove unused methods on repository 2024-06-01 23:36:56 +02:00
Kiril Videlov
1206a504c9 remote git::Remote shell type 2024-06-01 23:30:25 +02:00
Kiril Videlov
8084335bc5
Merge pull request #3946 from gitbutlerapp/rm-unused-file
remove unused file
2024-06-01 21:48:05 +02:00
Kiril Videlov
abe2d5458a
Merge pull request #3945 from gitbutlerapp/refname-from-git2-branch
remove shell type git::Branch
2024-06-01 21:38:24 +02:00
Sebastian Thiel
39b2b91916
Merge pull request #3942 from gitbutlerapp/dependabot/cargo/rust-updates-668fed6552
Bump the rust-updates group with 17 updates
2024-06-01 21:38:07 +02:00
Kiril Videlov
7f06d988d6 remove unused file 2024-06-01 21:34:37 +02:00
Kiril Videlov
428566492b remove shell type git::Branch 2024-06-01 21:25:27 +02:00
Sebastian Thiel
1f22948296
downgrade mock-instant to get watcher tests to work 2024-06-01 21:24:57 +02:00
Kiril Videlov
a4afd0d0df notify of branch being unapplied only for these that we indeed applied before 2024-06-01 19:26:03 +02:00
dependabot[bot]
398558d063
Bump the rust-updates group with 17 updates
Bumps the rust-updates group with 17 updates:

| Package | From | To |
| --- | --- | --- |
| [serde](https://github.com/serde-rs/serde) | `1.0.199` | `1.0.203` |
| [thiserror](https://github.com/dtolnay/thiserror) | `1.0.59` | `1.0.61` |
| [tokio](https://github.com/tokio-rs/tokio) | `1.37.0` | `1.38.0` |
| [toml](https://github.com/toml-rs/toml) | `0.8.12` | `0.8.13` |
| [anyhow](https://github.com/dtolnay/anyhow) | `1.0.82` | `1.0.86` |
| [backtrace](https://github.com/rust-lang/backtrace-rs) | `0.3.71` | `0.3.72` |
| [itertools](https://github.com/rust-itertools/itertools) | `0.12.1` | `0.13.0` |
| [serde_json](https://github.com/serde-rs/json) | `1.0.116` | `1.0.117` |
| [open](https://github.com/Byron/open-rs) | `5.1.2` | `5.1.3` |
| [tauri-build](https://github.com/tauri-apps/tauri) | `1.5.1` | `1.5.2` |
| [sysinfo](https://github.com/GuillaumeGomez/sysinfo) | `0.30.11` | `0.30.12` |
| [nix](https://github.com/nix-rust/nix) | `0.28.0` | `0.29.0` |
| [tokio-util](https://github.com/tokio-rs/tokio) | `0.7.10` | `0.7.11` |
| [parking_lot](https://github.com/Amanieu/parking_lot) | `0.12.1` | `0.12.3` |
| [crossbeam-channel](https://github.com/crossbeam-rs/crossbeam) | `0.5.12` | `0.5.13` |
| [mock_instant](https://github.com/museun/mock_instant) | `0.3.2` | `0.4.0` |
| [rstest](https://github.com/la10736/rstest) | `0.18.2` | `0.20.0` |


Updates `serde` from 1.0.199 to 1.0.203
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.199...v1.0.203)

Updates `thiserror` from 1.0.59 to 1.0.61
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.59...1.0.61)

Updates `tokio` from 1.37.0 to 1.38.0
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.37.0...tokio-1.38.0)

Updates `toml` from 0.8.12 to 0.8.13
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.12...toml-v0.8.13)

Updates `anyhow` from 1.0.82 to 1.0.86
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.82...1.0.86)

Updates `backtrace` from 0.3.71 to 0.3.72
- [Release notes](https://github.com/rust-lang/backtrace-rs/releases)
- [Commits](https://github.com/rust-lang/backtrace-rs/compare/0.3.71...0.3.72)

Updates `itertools` from 0.12.1 to 0.13.0
- [Changelog](https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-itertools/itertools/compare/v0.12.1...v0.13.0)

Updates `serde_json` from 1.0.116 to 1.0.117
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.116...v1.0.117)

Updates `open` from 5.1.2 to 5.1.3
- [Release notes](https://github.com/Byron/open-rs/releases)
- [Changelog](https://github.com/Byron/open-rs/blob/main/changelog.md)
- [Commits](https://github.com/Byron/open-rs/compare/v5.1.2...v5.1.3)

Updates `tauri-build` from 1.5.1 to 1.5.2
- [Release notes](https://github.com/tauri-apps/tauri/releases)
- [Commits](https://github.com/tauri-apps/tauri/compare/tauri-build-v1.5.1...tauri-build-v1.5.2)

Updates `sysinfo` from 0.30.11 to 0.30.12
- [Changelog](https://github.com/GuillaumeGomez/sysinfo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/GuillaumeGomez/sysinfo/commits)

Updates `nix` from 0.28.0 to 0.29.0
- [Changelog](https://github.com/nix-rust/nix/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nix-rust/nix/compare/v0.28.0...v0.29.0)

Updates `tokio-util` from 0.7.10 to 0.7.11
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.7.10...tokio-util-0.7.11)

Updates `parking_lot` from 0.12.1 to 0.12.3
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/compare/0.12.1...0.12.3)

Updates `crossbeam-channel` from 0.5.12 to 0.5.13
- [Release notes](https://github.com/crossbeam-rs/crossbeam/releases)
- [Changelog](https://github.com/crossbeam-rs/crossbeam/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crossbeam-rs/crossbeam/compare/crossbeam-channel-0.5.12...crossbeam-channel-0.5.13)

Updates `mock_instant` from 0.3.2 to 0.4.0
- [Commits](https://github.com/museun/mock_instant/compare/v0.3.2...v0.4.0)

Updates `rstest` from 0.18.2 to 0.20.0
- [Release notes](https://github.com/la10736/rstest/releases)
- [Changelog](https://github.com/la10736/rstest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/la10736/rstest/compare/v0.18.2...v0.20.0)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-updates
- dependency-name: toml
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: backtrace
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: itertools
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-updates
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: open
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: tauri-build
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: sysinfo
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: nix
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-updates
- dependency-name: tokio-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: parking_lot
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: crossbeam-channel
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: mock_instant
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-updates
- dependency-name: rstest
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-updates
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-01 15:38:43 +00:00
Sebastian Thiel
83893a9db3
review error docs to fit the latest changes 2024-06-01 15:24:59 +02:00
Sebastian Thiel
567a077582
simplify core::errors and remove all the cruft 2024-06-01 14:37:41 +02:00
Sebastian Thiel
0ef944ed25
Switch thiserror with anyhow based errors in application code
This should simplify most code.
2024-06-01 14:36:08 +02:00
Sebastian Thiel
a10b19ed2c
reomve all thiserror based errors from controllers 2024-06-01 14:36:08 +02:00
Sebastian Thiel
939624f725
Remove all custom errors from virtual branches module.
In order to do that, errors from other modules have to go as well.
2024-06-01 14:36:05 +02:00
Sebastian Thiel
f82d25741e
use Marker in place of Code::ProjectInvalid
That way, the frontend doesn't see internals.
2024-06-01 14:34:16 +02:00
Sebastian Thiel
e7c1d6033a
Remove all errors that don't trigger a custom code or context 2024-06-01 14:34:16 +02:00
Sebastian Thiel
c0fc0cfde5
Remove BranchNotFound struct 2024-06-01 14:34:16 +02:00
Sebastian Thiel
a95c48a6cf
remove DefaultTargetNotSet in favor of a utility function 2024-06-01 14:34:16 +02:00
Sebastian Thiel
61a53c6346
Another pass at removing ProjectConflict
As this causes quite a lot of changes, there is this commit to capture them.
2024-06-01 14:34:13 +02:00
Sebastian Thiel
1dc52a44c0
restore detection of project conflicts
Previously that variant was removed even though we need it now to
easily detect this case.
2024-06-01 14:32:27 +02:00
Sebastian Thiel
20d84247e9
Prune Code to only what's used by the UI
Also adjust the `Code` documentation to clarify this - otherwise
we will have more and more variants and nobody actually cares.

The frontend code is adjusted as well, as its `Code` counterpart
contained unsused variants which are now removed.
2024-06-01 14:32:27 +02:00
Sebastian Thiel
d689f36e7f
various refactors
Also

- add tests for ref-log file to assure it's not zero (but something more sensible)
- remove generic for convenience on most callsites
2024-06-01 14:32:19 +02:00
Kiril Videlov
d164457299 update_base_branch returns unapplied branches list
If merge conflicts caused branches to become unapplied, return them as a list
2024-06-01 13:11:53 +02:00
Ani Betts
035736a245
Fix the test paths 2024-05-31 15:27:16 +02:00
Ani Betts
4363f0fcc4
Leave these exports here in case we need them later 2024-05-31 15:27:16 +02:00
Ani Betts
73ab4bdd90
First hack at readding the tests 2024-05-31 15:27:16 +02:00
Ani Betts
3e34a92634
Chill out some of these logs 2024-05-31 15:27:16 +02:00
Ani Betts
bc31c65fc3
Let's just get it working 2024-05-31 15:27:16 +02:00
Ani Betts
2b3690308c
Roll back to v0.3.1 + flush changes 2024-05-31 15:27:15 +02:00
Mattias Granlund
97dfa93bda Remove error logging related to blame
- blame range can include commits not in vbranch
- lookup returning none expected behavior
2024-05-31 02:37:47 +02:00
Mattias Granlund
b47a947398 Fix blame merge base
- use the merge base of the first commits on active branches
2024-05-31 01:57:59 +02:00
Kiril Videlov
4b8d97a500 save error on undo commit snapshot 2024-05-30 23:59:30 +02:00
Kiril Videlov
0f482934c8 save error on unapply branch snapshot 2024-05-30 23:44:58 +02:00
Kiril Videlov
618c7adedc save error on apply branch snapshot 2024-05-30 22:31:16 +02:00
Kiril Videlov
d7ae4d85f1 first stab at saving errors in snapshots 2024-05-30 22:07:02 +02:00
Kiril Videlov
2e788de86f
Revert "fix: performance issue " 2024-05-30 20:10:23 +02:00
Kiril Videlov
e908828b3a
Merge pull request #3910 from gitbutlerapp/check-mergeable-state-of-virtual-branch
feat: Show merge base of virtual branch in commit list
2024-05-30 20:03:18 +02:00
Kiril Videlov
e6f75dae0f fix: performance issue
this is an undo of cdf508e04c
2024-05-30 19:35:10 +02:00
Mattias Granlund
10df1621a7 Keep change id when amending a commit 2024-05-30 19:09:18 +02:00
Kiril Videlov
088eb23f8e feat: Show merge base of virtual branch in commit list 2024-05-30 18:41:40 +02:00
Kiril Videlov
909894149f fix a small thing 2024-05-30 17:51:27 +02:00
Kiril Videlov
8550965d14 oopsie 2024-05-30 16:33:28 +02:00
Kiril Videlov
3af46b3cae handle merge commits 2024-05-30 16:23:40 +02:00
Kiril Videlov
7c06114ab2 list_remote_commit_files: on merge commit dont show wrong diffs
Right now it's not possible to show the correct diff because libgit2 doesn't have a `git diff-tree --cc` equivalent
2024-05-30 15:29:27 +02:00
Mattias Granlund
ed0663ce10 Fix invalid commit range in blame operation
- fixes commit_to_branch related errors
- fixes big performance problem when force push disallowed
2024-05-30 16:15:12 +02:00
Caleb Owens
251424d567 Fix origin/master showing in sidebar 2024-05-30 13:56:39 +02:00
Kiril Videlov
93d019afce
Merge pull request #3901 from gitbutlerapp/update-reflog-time
fixes reflog timestamps
2024-05-30 12:14:21 +02:00
Mattias Granlund
eeb99090ad Fix incorrect workspace_head during merge conflicts
- without this we get an incorrect diff
2024-05-30 12:09:27 +02:00
Kiril Videlov
06ea63ee7c fixes reflog timestamps
Time stapms are super imporatant for this (thanks @schacon) - without a correct time stamp, the trees will be GC'd
2024-05-30 12:02:30 +02:00
Kiril Videlov
62a3d02303 remove git::signature shell type 2024-05-29 23:51:26 +02:00
Kiril Videlov
ff9e36fb21 simplify git signature use 2024-05-29 23:37:32 +02:00
Kiril Videlov
8496dbf044 remove git::treebuilder in favor of plain git2 builder 2024-05-29 23:03:25 +02:00
Kiril Videlov
c3f374af72 remove git::FileMode shell type 2024-05-29 22:42:27 +02:00
Sebastian Thiel
7f9462a857
refactor CommitExt
- remove conflicting `*_gb()` methods as the native ones are easy enough to use
- some minor refactor
2024-05-29 21:47:03 +02:00
Sebastian Thiel
d5708b38bb
assure reflog is recreated if not present even if ref is present 2024-05-29 21:16:52 +02:00
Kiril Videlov
fb069e5d39 feat(git): remove unused Blob type 2024-05-29 18:14:50 +02:00
Sebastian Thiel
96dc9d2887
fix oplog-worktree merging 2024-05-29 17:58:54 +02:00
Sebastian Thiel
407ec1427b
Get performance metrics for get_wd_tree()
It's a tiny little function, but I think it can be slow
as it could incur a lot of work, scaling up with the size
of the repository, and the amount of untracked data in it.

Let's gather some data.
2024-05-29 17:56:12 +02:00
Kiril Videlov
d3aa5c4908 remove git::Commit wrapper type 2024-05-29 17:35:30 +02:00
Kiril Videlov
45979b4c85 remove usage of git::Commit 2024-05-29 17:33:57 +02:00
Sebastian Thiel
1abb464845
Merge pull request #3885 from gitbutlerapp/rust-remote-tweaks-for-byron
Tweaks to remotes code
2024-05-29 15:13:02 +02:00
Kiril Videlov
be149a5569 remove git::Tree in favor of just git2::Tree 2024-05-29 14:30:59 +02:00
Kiril Videlov
9e4bbdedec remove unused reader functions 2024-05-29 14:04:51 +02:00
Kiril Videlov
d97bba0001 remove git::Tree from branch 2024-05-29 13:24:47 +02:00
Kiril Videlov
3c151a52cb create a tree extension trait
this is useful for preserving functionality that we have added on top of git2::Tree
2024-05-29 11:15:46 +02:00
Caleb Owens
4ba15c3663 Make clippy a happy clippy 2024-05-29 11:14:29 +02:00
Caleb Owens
faa476875d Replace &BranchId to BranchId 2024-05-29 11:07:36 +02:00
Caleb Owens
0db12b5115 Don't pass references to project_id 2024-05-29 10:47:11 +02:00
Caleb Owens
c5d841a417 Tweaks to remotes code 2024-05-29 09:52:03 +02:00
Kiril Videlov
4db276354b remove unused import 2024-05-28 23:32:33 +02:00
Kiril Videlov
cc5e0bd8bd remove unused repository method 2024-05-28 23:20:26 +02:00
Kiril Videlov
ce5e57d5ac move get_wd_tree to git2::Repository extension trait
This way we reduce drilling and allow ourselves to eventually remove core::git types
2024-05-28 23:17:54 +02:00
Caleb Owens
9956e9f889 Introduce rust code for listing and adding remotes 2024-05-28 11:54:01 +02:00
Caleb Owens
6d1ed8474c rename fetch_from_target to fetch_from_remotes 2024-05-28 10:14:35 +02:00
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
9270ad9c1f
Assure tests don't pick up the developers signing configuration.
Otherwise tests will end up signing commits which is slow and
a side-effect we should test for explicitly.
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
73c21f2e42
provide more information in watcher-related errors
related to https://github.com/gitbutlerapp/gitbutler/issues/2657#issuecomment-2131307753

It turns out that the UI triggers `set_project_active()`, and then moves on and emits more
commands, some of which depend on a watcher being present.

The UI could wait, but even if it does the 'endless spinner' happens.
2024-05-25 20:35:40 +02:00
Sebastian Thiel
f59268fb25
Allow local overrides for the target triple of production windows builds.
The use-case is somewhat specific as it allows developers to do:

```
export TRIPLE_OVERRIDE=x86_64-pc-windows-msvc
```

and build the binary as x86 even on an ARM VM.
The reason ARM builds don't work natively is the `win32` crate,
which simply doesn't work there.

It could be another step to replace it with something that does
to get ARM builds, but probably that will only happen once
there is demand for native ARM windows builds.
2024-05-25 15:05:43 +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
Kiril Videlov
319550d7b5
Merge pull request #3850 from Byron/review-and-refactor
Watcher adjustments
2024-05-24 16:38:18 +02:00
Sebastian Thiel
e68b789a32
remove unused methods in FileId map, and revert to what seemed functional.
Previously, roots were always empty and it was unclear what the purpose
of the customization was.

It's probably best to re-add it along with a test maybe.
2024-05-24 16:21:26 +02:00
Sebastian Thiel
cdf508e04c
Show what changed to get the version we currently have
This reverts commit 547f2ffada.

That way it's more obvious when looking at the history what was added
and changed.
2024-05-24 15:44:13 +02:00
Sebastian Thiel
547f2ffada
re-add original code to see what changed 2024-05-24 15:42:17 +02:00
Sebastian Thiel
6596f3956e
adapt debouncer tests with the changed codebase 2024-05-24 15:38:46 +02:00
Caleb Owens
4cae28668b
Merge branch 'master' into revert-3830-core-util-duration-updates 2024-05-24 14:20:55 +02:00
Sebastian Thiel
edd8d54950
copy tests from notify-debouncer-full as well (verbatim)
While at it, remove the docs as they are referring to the original source code.
Tests should help to understand how it is supposed to work.

Note that the copy is verbatim and modifications will happen in a separate commit,
along with the necessary license declarations.
2024-05-24 13:50:03 +02:00
Sebastian Thiel
86edb4627d
reorganize watcher modules for more consistency 2024-05-24 13:28:34 +02:00
Sebastian Thiel
80b9598d5a
remove (some) unused code; minor refactor 2024-05-24 13:28:33 +02:00
Sebastian Thiel
2080b62864
add license for code taken from notify-debouncer-full 2024-05-24 13:19:37 +02:00
Sebastian Thiel
5906eb1a35
change debounce-events to trace so they don't dominate the log
Ideally it's usable even in debug mode.
2024-05-24 12:41:26 +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
983b2a3101 Merged origin/master into core-util-duration-updates 2024-05-23 14:26:28 +02:00
Caleb Owens
c2a1f6a7e7 Fix various tests 2024-05-23 14:26:16 +02:00
Kiril Videlov
2339be4551
Merge pull request #3827 from Byron/watcher-performance 2024-05-23 14:10:04 +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
Sebastian Thiel
850045e9d3
Allow to watch multiple directories in case of special setups
Like worktrees - these could work now from a watchers perspective.
2024-05-23 13:04:02 +02:00
Sebastian Thiel
9ad010bd0f
Assure we fail gracefully git-dir and worktree-dir are unusual
This could be supported, but would require more changes to get right.
For now, fail gracefully instead of failing strangely because we don't
watch everything that needs watching.
2024-05-23 12:55:45 +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
Sebastian Thiel
05118086dd
Use gitoxide in file-watcher
This allows for faster opening times, and more more efficient
exclude checks.
2024-05-23 11:13:56 +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
a83e6809ab
Only open a repository when project-files are involved.
There are many filesystem events that are not touching files which
could be ignored.
Now we detect this case in advance and only open the project repository
if we know there are files to check for their ignore state.

That way, there should overall be less IO, which is good for performance
particularly on Windows.
2024-05-23 10:50:38 +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
Sebastian Thiel
93508d7e7c
fix: assure tests aren't affected by local configuration
Otherwise, tests will pickup global configuration, which can affect them.
For instance, if `core.gpgsign` is true, it will cause commits to be signed
which can be slow, or hang entirely if gpg-agent requests a password.

Note that now there is possibly no tests that validates signing,
and doing so is difficult as it requires gpg and keys to be setup.
2024-05-23 10:12:40 +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
Pavel Laptev
ec8b171fc7
Project menu items update + new "Open in VS code" (#3804) 2024-05-21 23:57:38 +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
Ani Betts
f54c12fd55
Halve the dead air time 2024-05-21 11:03:18 +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
Pavel Laptev
6e6272983b
History and minor UI fixes (#3797)
* Convert Capital case to Uper case "History menu"

* UI updates: target branch styles

* Remove console.log

* CSS: space between "Trunk" and the timer

* UI: reversed chevron arrows fix

* remove commented console.log

* UX: toggle file preview in History

* UI: target branch set animation fix
2024-05-21 01:07:22 +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
Kiril Videlov
b3a1699cbf
Merge pull request #3786 from gitbutlerapp/Virtual-branch-1
remove unneccessary CSPs
2024-05-18 18:26:51 +02:00
Kiril Videlov
7e070ac0f5 remove unneccessary CSPs 2024-05-18 18:13:24 +02:00
Kiril Videlov
07b863731f
Merge pull request #3785 from gitbutlerapp/fix-ollama-request-security
Fix ollama request security
2024-05-18 18:08:39 +02:00
Caleb Owens
6ae9b7ff6e Fix ollama request security 2024-05-18 16:51:20 +01:00
Kiril Videlov
a9316492c9 fix: forgot the port 2024-05-18 17:49:05 +02:00
Kiril Videlov
8fa8cbfe6d fix: Updated connect-src to allow local connections for ollama 2024-05-18 16:28:19 +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
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
74fe02f109 feat: Add support for setting snapshot_lines_threshold in UpdateRequest 2024-05-17 12:44:20 +02:00
Pavel Laptev
1be1218a71
History View UI (#3773)
* Separated History logic layout into components

* Layout update, components split and cover new data

* Added file preview

* handle event trigger

* empty states added

* Temp store for snapshot files + threshold section

* formatting

* added a gap between elements in footer

* CSS: padding fix
2024-05-17 01:21:19 +02:00
Ani Betts
2ff2b1f7ec
Format 2024-05-15 20:27:26 +02:00
Ani Betts
ddc2cfeb67
Flush on window focus 2024-05-15 20:27:26 +02:00
Ani Betts
e9cd5d3dca
Rewrite the timeouts
Change the strategy of how timeouts work, from a simple timer, to
something a bit more nuanced
2024-05-15 20:27:26 +02:00
Ani Betts
326e9fee02
Wire flushing into the Watcher
Give the main window a mechanism to flush pending changes via a Channel
2024-05-15 20:27:26 +02:00
Ani Betts
28de8135d2
Add a new mechanism to flush on "idle"
Optionally, if we detect that no change notifications have appeared for
a certain number of ticks, we will automatically flush pending
notifications
2024-05-15 20:27:26 +02:00
Ani Betts
1c3d8d3997
Allow events to be explicitly flushed
This adds a new method to allow us to explicitly flush pending change
notifications
2024-05-15 20:27:25 +02:00
Ani Betts
fe35b1f65f
Import notify_debounce_full
We need to make some changes to notify_debounce_full and it seems like
the project is unmaintained, let's copy-paste some code
2024-05-15 20:27:25 +02:00
Ani Betts
69cf9c8058
Don't use HOME env var
This environment variable doesn't exist on Windows
2024-05-15 17:39:23 +02:00
Ani Betts
1695ad5c53
Add dirs crate 2024-05-15 17:39:00 +02:00
Scott Chacon
5becf4e6a6
small fixes 2024-05-15 15:24:08 +02:00
Scott Chacon
b0c5c07a57
some change-id based tests 2024-05-15 15:21:19 +02:00
Scott Chacon
2ce4e5bfd0
remove a bunch of debugging 2024-05-15 14:48:26 +02:00
Scott Chacon
d267dbc77d
rust is not my favorite language 2024-05-15 13:40:27 +02:00
Scott Chacon
a23253e57d
who committed this? 2024-05-15 11:14:05 +02:00
Scott Chacon
9e817b4d04
Merged origin/master into add-commit-id 2024-05-15 10:43:34 +02:00
Scott
520d95aef2 merge upstream 2024-05-14 14:07:09 +00:00
Kiril Videlov
e93ddfac34
snapshot of restores keeps more metadata 2024-05-14 16:04:02 +02:00
Kiril Videlov
8bae084518
snapshots for move hunk include branch name 2024-05-14 14:55:27 +02:00
Kiril Videlov
631bc86031
snapshots of (un)appy branches contains name 2024-05-14 14:35:47 +02:00
Scott Chacon
4cde9ce71d
windows doesn't have permissions like this 2024-05-14 13:43:49 +02:00
Scott Chacon
202c551bc7
remove signing setting 2024-05-14 13:15:11 +02:00
Scott Chacon
b5c9f934d5
supporting gpg.ssh.program 2024-05-14 11:57:23 +02:00
Scott Chacon
d944cad533 merge upstream
temp
2024-05-14 10:25:29 +02:00
Scott Chacon
f106bfa246
basic ssh signing too 2024-05-14 10:08:22 +02:00
Kiril Videlov
80148f50fe
add sha to undo commit snapshot 2024-05-13 16:37:37 +02:00
Kiril Videlov
8849c9845e
add sha to commit snapshot 2024-05-13 16:24:40 +02:00
Scott Chacon
b17ab37a01
actually run gpg if specified 2024-05-13 16:19:45 +02:00
Kiril Videlov
62dadd96a8
remove unused index subscription 2024-05-13 14:18:56 +02:00
Kiril Videlov
06dfc95692
add message trailer for commit snapshots 2024-05-13 01:07:42 +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
f8023ca735
refactor snapshotter trait
Implementing this on branch turned out ot be restrictive so implementing for Oplog
2024-05-12 19:57:42 +02:00
Kiril Videlov
262bbd8df7
on snapshot store branch name metadata 2024-05-12 19:49:51 +02:00
Kiril Videlov
d52a7f5e4f
fix an issue with incorrect snapshot metadata on branch update 2024-05-12 19:18:03 +02:00
Kiril Videlov
3e0914444f
remove unused crates in tauri 2024-05-12 04:19:19 +02:00
Kiril Videlov
0a12b3eac5
remove unused crates in core 2024-05-12 04:12:56 +02:00
Kiril Videlov
5b3273f542
remove unused sessions / deltas implementation
This is removed in favor of the new `ops` module
2024-05-12 03:39:04 +02:00
Kiril Videlov
d9c985db26
Merge pull request #3749 from gitbutlerapp/update-file-event-removal-of-session-id
remove sessions/deltas unused tauri events
2024-05-12 03:37:24 +02:00
Kiril Videlov
91e48c6730
remove sessions/deltas unused tauri events 2024-05-12 03:24:36 +02:00
Kiril Videlov
27f0802443 remove gb_reference from projects 2024-05-12 03:08:54 +02:00
Kiril Videlov
3eaaccc2e0
remove deltas calculation on file change
This is being replaced by the new `ops` module

Along with the respective tests. There were only session/deletas related assertions in the watcher tests
2024-05-12 02:54:19 +02:00
Kiril Videlov
d51761a654 remove unused flush event 2024-05-12 02:22:05 +02:00
Kiril Videlov
18cf10a143
remove unused fetch_gb_data 2024-05-12 02:13:02 +02:00
Kiril Videlov
bca8e13dfb
remove unused push_gb_data 2024-05-12 02:05:07 +02:00
Kiril Videlov
2bbe4fa569
remove unused list_deltas endpoint 2024-05-11 21:12:08 +02:00
Kiril Videlov
598fc0ae26
Merge pull request #3744 from gitbutlerapp/remove-sessions-command
remove unused list_sessions
2024-05-11 21:09:45 +02:00
Kiril Videlov
14a7e8b2a1
remove unused list_sessions 2024-05-11 20:58:14 +02:00
Kiril Videlov
217efbc932 remove unused project_flush_and_push 2024-05-11 20:52:05 +02:00
Scott Chacon
4d542330c5 merge stuff 2024-05-11 11:43:06 +02:00
Kiril Videlov
62b97f7f5a remove unused imports 2024-05-10 20:31:07 +02:00
Kiril Videlov
97c072cb7a remove unused endpoint list_session_files 2024-05-10 20:30:45 +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
Josh Junon
2006511a80
Merge pull request #3724 from gitbutlerapp/fork-exec-sign
add gitbutler_git::sign_commit()
2024-05-08 12:28:22 +02:00
Mattias Granlund
e7f25e29c5 Check we are on the right branch in verify_branch
Ensures we don't accidentally run commands while HEAD is pointing to something other than the gitbutler/integration branch.
2024-05-08 12:20:00 +02:00
Josh Junon
738e47a377
fix sync sign utility 2024-05-08 12:16:06 +02: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
903991eea7
use default snapshot_lines_threshold 2024-05-08 02:58:30 +02:00
Kiril Videlov
7cddab8285
fix early return missing snaposhotting 🤦‍♂️ 2024-05-08 01:35:11 +02:00
Kiril Videlov
a942cb6f79
move snapshot creation on branch update to trait 2024-05-08 01:09:53 +02:00
Kiril Videlov
1ae1efeec0
rename tauri module for undo operations 2024-05-08 00:36:16 +02:00
Kiril Videlov
93d5e61530 rename module snapshots to ops 2024-05-08 00:29:38 +02:00
Kiril Videlov
289aafb496 rename snapshoter to snapshot 2024-05-08 00:29:38 +02:00
Kiril Videlov
2c065a602e rename module of oplog trait 2024-05-08 00:29:38 +02:00
Kiril Videlov
f6e19e6c12
compose traits for nicer snapshotting functions 2024-05-08 00:00:18 +02:00
Mattias Granlund
e0a2985f37 Fix background switching between target.sha and integration commit 2024-05-07 16:59:06 +02:00
Josh Junon
ca714084b1
add synchronous signed git commit utility function 2024-05-07 16:37:52 +02:00
Josh Junon
b9aae21b97
add v4 features to uuid crate for gitbutler-git 2024-05-07 16:26:41 +02:00
Josh Junon
c564ccc7f7
add gitbutler_git::sign_commit() 2024-05-07 16:26:38 +02:00
Josh Junon
1fd0b1ecfc
make askpass broker a global 2024-05-07 16:07:37 +02:00
Scott Chacon
51f9769024 sign commits with real git
in the strangest possible way
2024-05-07 15:15:25 +02:00
Scott Chacon
ff11fcdb90 Add change-id property to commit
Each commit has a change-id added to it's header field so we can more easily track patches by unique ids
2024-05-07 10:28:29 +02:00
Josh Junon
6afd680781
remove old changeset code 2024-05-07 07:03:34 +02:00
Kiril Videlov
1bc41a9146 snapshot list pagination 2024-05-07 00:46:22 +02:00
Kiril Videlov
80346af154 fixes a possible condition where if integration commit is not found a lot of integreated commits are added to a vbranch 2024-05-07 00:02:22 +02:00
Caleb Owens
f13e827e33 Don't reparse branch_id
This should make the situation where an error occurs even more absurd. It should also be saving some extra work which is always a bonus
2024-05-06 19:50:07 +01:00
Josh Junon
0b903bcaef
Merge pull request #3697 from anaisbetts/clean-up-win32-menus
Clean up win32 menus
2024-05-06 20:44:40 +02:00
Josh Junon
dce8ead62f
use simpler virtual branch handle fetch in tests (and fix strange uncaught compilation error) 2024-05-06 20:22:40 +02:00
Josh Junon
da62926a30
simplify retrieving of the vb_state handle 2024-05-06 20:08:28 +02:00
Josh Junon
85d045362a
remove useless AsRef impl 2024-05-06 20:07:47 +02:00
Josh Junon
dffca846c4
remove empty else branch 2024-05-06 20:07:42 +02:00
Josh Junon
58f866d588
simplify certain uses of as_ref() in virtual.rs 2024-05-06 20:07:39 +02:00
Josh Junon
d6baf7d8f0
simplify hunk hash diff calls 2024-05-06 20:07:34 +02:00
Josh Junon
21dd4800c3
fix typo: timestam_ms -> timestamp_ms 2024-05-06 20:04:29 +02:00
Kiril Videlov
98e511c459 fixes a bug where after updating the workspace the app shows infinite spinner 2024-05-06 18:20:09 +02:00
Ani Betts
1309481273
Fix lint 2024-05-06 17:42:34 +02:00
Kiril Videlov
0091bfa1eb
Merge pull request #3688 from gitbutlerapp/resolve-large-quantity-of-files-slow-start
Optimize list_virtual_branches
2024-05-06 16:43:30 +02:00
Scott Chacon
d79bf65e51
Merge pull request #3677 from gitbutlerapp/target-branch-selector-fix
initial implementation of different push target
2024-05-06 16:31:01 +02:00
Ani Betts
ec320376ff
Don't have a Window menu on Win32/Linux
Generally, we have a Window menu only in apps that can have multiple related windows or tabs. Since we don't have that at the moment, 🔪 the Window menu
2024-05-06 16:28:01 +02:00
Ani Betts
828a7e55b2
We don't need a separate "Close" item on non-macOS
Because Win32 and Linux apps generally close when their windows close, we don't need a separate "Close" vs "Quit" item on these platforms
2024-05-06 16:27:25 +02:00
Scott Chacon
4ea691a1cd fetch from push remote too 2024-05-06 16:01:06 +02:00
Kiril Videlov
c29440e472 remove files list trailer from snapshot
This info is extracted from the snapshot itself
2024-05-06 15:36:56 +02:00
Kiril Videlov
b1bb9bf51c
snapshot listing includes stats about the snapshot
inclue files touched as well as lines added and removed
2024-05-06 15:26:44 +02:00
Scott Chacon
46fe51eeda fix rust errors 2024-05-06 14:30:25 +02:00
Scott Chacon
ca634807b1
Merge branch 'master' into target-branch-selector-fix 2024-05-06 13:49:27 +02:00
Scott Chacon
344e3d3f38 small rust stuff 2024-05-06 13:44:08 +02:00
Josh Junon
add0a84165
add help menu handler for debug info sharing and remove panic 2024-05-06 12:58:50 +02:00
Josh Junon
cf74b12a3c
Merge pull request #3693 from gitbutlerapp/Help-window-menu
"Help" window menu
2024-05-06 12:37:14 +02:00
Pavel Laptev
53d6e58850
match statement update 2024-05-06 12:24:18 +02:00
Pavel Laptev
81ff230fb7
code review fixes 2024-05-06 12:12:39 +02:00
Pavel Laptev
c14fa2f864
version added 2024-05-06 12:05:50 +02:00
Josh Junon
574f0142f9
sort projects list alphabetically by title 2024-05-06 11:32:41 +02:00
Kiril Videlov
4f1c63ca77
dont error commands on snapshoting erros
If the snapshoting returns an error that should not interfere with the command that the user originally intended to run
2024-05-05 22:34:15 +02:00
Kiril Videlov
5f6ff257d1
refactor snapshotting as an Oplog trait
Implemented on Project
2024-05-05 22:28:12 +02:00
Pavel Laptev
e38e68477b
lint fixes 2024-05-05 21:57:45 +02:00
Pavel Laptev
043917ad45
Help window menu added 2024-05-05 21:40:06 +02:00
Kiril Videlov
c59767651d fix: auto snapshotting on changed lines of code
Compare against the last snapshot
2024-05-05 20:08:34 +02:00
Caleb Owens
442ff9dbac Push rather than inserting
This in theory is a faster way of adding items to the list, but at the very least, makes it consistent with the other branch which also uses `push`
2024-05-05 18:07:30 +01:00
Caleb Owens
fc8d8bcb43 Optimize virtual branch file sorting
The changes in this commit optimize the sorting of virtual branch files
by pre-computing the index positions of the ownership claims for each
file path. This improves the performance of the sorting operation by
avoiding the need to repeatedly search for the index positions during
the comparison step.

With 1900 hunks in a vbranch, I've found that this helps reduce the run time from 9 seconds down to just 5.

I considered not sorting at all if we didn't have any branches, but this didn't provide any substantial change in performance.
2024-05-05 18:07:30 +01:00
Kiril Videlov
9aa7b11311
fix a snapshot bug on windows
paths shouldn't be handcoding the separator
2024-05-05 17:55:10 +02:00
Kiril Videlov
a0a834b8bd
create and restore return the shas of the snapshots 2024-05-05 17:39:45 +02:00
Kiril Videlov
bd8b0bf246
improve docs 2024-05-05 17:32:00 +02:00
Kiril Videlov
c24da92b6f
test: snapshotting of conflict state 2024-05-05 17:31:52 +02:00
Kiril Videlov
0771efc52f
include conflict state in snapshots 2024-05-05 17:31:29 +02:00
Pavel Laptev
4d5f77b7f4
Merge branch 'master' into target-branch-selector-fix 2024-05-04 23:30:54 +02:00
Kiril Videlov
5e54e0ed01
make SNAPSHOT_LINES_THRESHOLD configurable 2024-05-04 19:34:54 +02:00
Kiril Videlov
ebae6bf8de
create a snapshot every 20 lines changed 2024-05-04 19:20:22 +02:00
Kiril Videlov
25b7acc59c
adds a new snapshot entry type FileChanges 2024-05-04 19:19:52 +02:00
Kiril Videlov
32e5b97495 create a GbRepo trait for building blocks gitbutler uses
As well as an implementation for git2::Repository
2024-05-04 19:19:09 +02:00
Kiril Videlov
105a355e5d
fix: only skip big files from snapshotting if they are untracked 2024-05-04 16:28:34 +02:00
Kiril Videlov
f8e05ec694 skip pager on windows 2024-05-04 12:14:24 +02:00
Kiril Videlov
9aee55c869
tiny cli for snapshots
this is a cli convinience tool for listing and restoring gitbutler snapshots even if the app can't start or if it's hung. of course this can be done with plain git, but this is more convinient

In the future we could add more functionality to it
2024-05-04 11:29:14 +02:00
Scott Chacon
aa9a775842 Merged origin/master into target-branch-selector-fix 2024-05-03 13:51:01 +02:00
Scott Chacon
ea08accec1 whoopsie 2024-05-03 11:39:54 +02:00
Scott Chacon
0442744c13
Merge branch 'master' into target-branch-selector-fix 2024-05-03 11:26:16 +02:00
Scott Chacon
5527d2b6e2 initial implementation of different push target 2024-05-03 11:20:47 +02:00
Kiril Videlov
8ef46ce42c
snapshots: use subtrees for virtual_branches.toml
Instead of copying the file to the working directory, simply create a top level tree with a subtree for the workdir and a blob for the toml file
2024-05-03 11:13:55 +02:00
Mattias Granlund
5bb8c25aca Fix bug in updating base branch
- drop "double lock across branches" test because it can't happen
- save correct tree when updating branch states
- use correct integration commit when updating base branch
2024-05-02 17:39:52 +02:00
Josh Junon
6747da6e50
simplify default target retrieval logic 2024-05-02 13:28:21 +02:00
Josh Junon
664aadcd1c
eliminate redundancy in unix timestamp retrieval 2024-05-02 12:43:35 +02:00
dependabot[bot]
a1a3abc868
Bump the rust-updates group with 10 updates
Bumps the rust-updates group with 10 updates:

| Package | From | To |
| --- | --- | --- |
| [serde](https://github.com/serde-rs/serde) | `1.0.197` | `1.0.199` |
| [thiserror](https://github.com/dtolnay/thiserror) | `1.0.58` | `1.0.59` |
| [anyhow](https://github.com/dtolnay/anyhow) | `1.0.81` | `1.0.82` |
| [async-trait](https://github.com/dtolnay/async-trait) | `0.1.79` | `0.1.80` |
| [chrono](https://github.com/chronotope/chrono) | `0.4.37` | `0.4.38` |
| [reqwest](https://github.com/seanmonstar/reqwest) | `0.12.2` | `0.12.4` |
| [serde_json](https://github.com/serde-rs/json) | `1.0.115` | `1.0.116` |
| [ssh-key](https://github.com/RustCrypto/SSH) | `0.6.5` | `0.6.6` |
| [tauri](https://github.com/tauri-apps/tauri) | `1.6.1` | `1.6.2` |
| [sysinfo](https://github.com/GuillaumeGomez/sysinfo) | `0.30.8` | `0.30.11` |


Updates `serde` from 1.0.197 to 1.0.199
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.197...v1.0.199)

Updates `thiserror` from 1.0.58 to 1.0.59
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.58...1.0.59)

Updates `anyhow` from 1.0.81 to 1.0.82
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.81...1.0.82)

Updates `async-trait` from 0.1.79 to 0.1.80
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.79...0.1.80)

Updates `chrono` from 0.4.37 to 0.4.38
- [Release notes](https://github.com/chronotope/chrono/releases)
- [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md)
- [Commits](https://github.com/chronotope/chrono/compare/v0.4.37...v0.4.38)

Updates `reqwest` from 0.12.2 to 0.12.4
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.12.2...v0.12.4)

Updates `serde_json` from 1.0.115 to 1.0.116
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.115...v1.0.116)

Updates `ssh-key` from 0.6.5 to 0.6.6
- [Commits](https://github.com/RustCrypto/SSH/compare/ssh-key/v0.6.5...ssh-key/v0.6.6)

Updates `tauri` from 1.6.1 to 1.6.2
- [Release notes](https://github.com/tauri-apps/tauri/releases)
- [Commits](https://github.com/tauri-apps/tauri/compare/tauri-v1.6.1...tauri-v1.6.2)

Updates `sysinfo` from 0.30.8 to 0.30.11
- [Changelog](https://github.com/GuillaumeGomez/sysinfo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/GuillaumeGomez/sysinfo/compare/v0.30.8...v0.30.11)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: chrono
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: ssh-key
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: tauri
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: sysinfo
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-01 15:11:55 +00:00
GitButler
28ca280c0d fix: removing an update all projects operation on read
this is no longer needed and it is causing an issue on windows
2024-04-30 13:42:34 -07:00
Josh Junon
d71e4d3617
escape env vars and use raw args on windows in fork/exec git 2024-04-30 14:56:21 +02:00
Josh Junon
d0f1082c7f
Merge pull request #3637 from gitbutlerapp/fix-git-forkexec-ssh-command
also check GIT_SSH when looking for base ssh command
2024-04-30 12:21:54 +02:00
Josh Junon
8d942d6557
pull git ssh commands from surrounding environment as fallback 2024-04-30 12:09:05 +02:00
Josh Junon
de2622c2b6
also check GIT_SSH when looking for base ssh command (ref #3624) 2024-04-30 11:59:15 +02:00
Josh Junon
b350a85e5c
add google images CDN to img-src CSP (fixes #3516) 2024-04-30 11:48:00 +02:00
Kiril Videlov
0d8b97b36c
fix: undo snapshots will disregard files larger than 32MB
Ensuring that a snapshot "undo" does not remove those files
2024-04-29 20:28:27 +02:00
Kiril Videlov
27480c503e
Merge pull request #3629 from gitbutlerapp/remove-rust-posthog-integration
remove posthog from the rust code
2024-04-29 16:28:11 +02:00
Scott Chacon
786a834559
Merge pull request #3626 from gitbutlerapp/sc-history-manipulation
operation tonkotsu 2
2024-04-29 16:17:57 +02:00
Kiril Videlov
00706b402b
remove posthog from the rust code
similar to https://github.com/gitbutlerapp/gitbutler/pull/3628
2024-04-29 16:12:14 +02:00
Kiril Videlov
6439f3333a
remove sentry rust dependencies 2024-04-29 15:54:13 +02:00
Kiril Videlov
83b40eabb6
remove sentry from rust code
Since the actually valuable bug reports are submitted by developers as github issues or on our Discord, sentry error reporting is not necessary
2024-04-29 15:46:29 +02:00
Scott Chacon
c5e7fe865c fix clippy issues
fix a few more clippy issues
2024-04-29 15:42:58 +02:00
Scott Chacon
2b1d808314 add several history manipulation backend functions
this adds backend functions in Rust to do the following:
* move file hunks between commits (basic)
* undo any commit in a stack
* insert a blank commit
* move a commit within the stack
* update a commit message in place
2024-04-29 15:03:01 +02:00
Kiril Videlov
ae7bb0d2ee
feat: Enhance OperationType handling in SnapshotDetails 2024-04-29 12:08:56 +02:00
Kiril Videlov
7e11171211
fix: snapshot uses uses gitbutler as comitter 2024-04-28 20:38:34 +02:00
Kiril Videlov
27ce10cdcf
add test asserions for restoring virtual_branches.toml 2024-04-28 20:23:02 +02:00
Kiril Videlov
3be8dd444b
fixes a snapshot restor bug where untracked files arent removed 2024-04-28 20:08:47 +02:00
Kiril Videlov
34d12fb1e6
add snapshotting tests 2024-04-28 20:05:46 +02:00
Kiril Videlov
b0e0fc790c
feat: Add tests for updating the oplog head and target head 2024-04-28 12:08:32 +02:00
Kiril Videlov
6ff0d551eb
fix test 2024-04-27 23:43:25 +02:00
Kiril Videlov
d65f723ec0
test: Add tests for set_reference_to_oplog function 2024-04-27 23:27:39 +02:00
Kiril Videlov
8b0dd6cc21 skip tempfile under windows 2024-04-27 17:15:08 +02:00
Sebastian Thiel
4f58883bd4
try to fix regression on Windows due to tempfiles semantics (#3601)
Until `perist()` is truly atomic also on Windows, and modelled
[after Git](https://github.com/git/git/blob/master/compat/mingw.c#L2159-L2209),
sans the retries, it seems to work to just perform ordinary writes.

Before going there though, we try to call `sync_all()` on Windows to truly
finish the operation. On Unix, a rename is already supposed to be atomic.
2024-04-27 16:11:28 +02:00
Sebastian Thiel
91d892882e
Deduplicate all 'write' code
GB writes files atomically and in the end it boils down to allocating bytes
and writing them all at once.

Now this capability lives in the `fs` module.
2024-04-27 16:11:27 +02:00
Kiril Videlov
9d534b09ca
snapshots - read full commit meesage 2024-04-26 23:33:39 +02:00
Kiril Videlov
5420fc3e3c
use new snapshot types 2024-04-26 23:20:31 +02:00
Kiril Videlov
371a944e71
add types for the different kinds of snapshots
Serializing and deserializing snapshot trailers
2024-04-26 22:35:09 +02:00
Josh Junon
adcba68220
move multi-file modules to mod.rs and single-file modules to <name>.rs 2024-04-26 11:56:35 +02:00
Sebastian Thiel
a08e2be07e
OwnershipClaims now allocates less
This is done by allowing to take (rust) ownership where internally
the item is consumed.
2024-04-26 07:08:43 +02:00
Sebastian Thiel
6c90381bcf
Use iterators for transformation, and avoid copies by default. 2024-04-26 07:08:41 +02:00
Sebastian Thiel
9dddd77899
Make it more obvious to devs how to make core tests pass.
Now a binary is required which might not always be present, nor is
it created as pre-requisite of the test.

Until that is the case, say how this can be fixed.
2024-04-26 07:07:44 +02:00
Mattias Granlund
311a582a8c Minimise range in double lock test
todo: figure out why we can't use only three lines in this test
2024-04-26 00:06:01 +02:00
Mattias Granlund
c5c2df1b93 Surface warning if hunk locked to multiple branches
- now returning `HunkLock` to front end
- detect if locked to more than one branch and warn user
2024-04-26 00:06:01 +02:00
Sebastian Thiel
ff44a80e74
Merge pull request #3607 from Byron/win-fixes
Revert 74eb7bd3 as debounce-timing has no effect (#3601)
2024-04-25 22:07:37 +02:00
Kiril Videlov
fd1ac5d65b
improved snapshot labels 2024-04-25 21:44:30 +02:00
Kiril Videlov
33859c89ef
adds some documentation 2024-04-25 21:09:02 +02:00
Kiril Videlov
bedc918b84
simplify reflog reference setting 2024-04-25 20:51:24 +02:00
Kiril Videlov
9a499575c4 fixes a bug with the reflog editing 2024-04-25 19:23:13 +02:00
Kiril Videlov
4c92caafd4 create simple snapshots on branch operations 2024-04-25 19:23:13 +02:00
Kiril Videlov
9a07f50244 fix: correctly handle the case of the feature flag being absent 2024-04-25 19:23:13 +02:00
Kiril Videlov
b3c05b7948 fix signatures 2024-04-25 19:23:13 +02:00
Kiril Videlov
432aeeaf2a feature flag for snapshot creation 2024-04-25 19:23:13 +02:00
Kiril Videlov
753953a7d5 remove tauri endpoint for creating snapshots 2024-04-25 19:23:13 +02:00
Kiril Videlov
5e395a3700 snapshot reflog doesnt need to be exposed 2024-04-25 19:23:13 +02:00
Kiril Videlov
3d04c7fc5b set target ref on snapshot 2024-04-25 19:23:13 +02:00
Kiril Videlov
0911212a9c handle commit not found 2024-04-25 19:23:13 +02:00
Kiril Videlov
ca4f79f7ff reflog entry for the snapshots 2024-04-25 19:23:13 +02:00
Kiril Videlov
a2682e2535 implement undo stack snapshotting 2024-04-25 19:23:13 +02:00
Sebastian Thiel
066d520f1a less cumbersome error handling for Git errors 2024-04-25 16:42:11 +02:00
Mattias Granlund
e0c2d82127 Reset files into the same branch they were committted to
- regressed when switching to blame for hunk locking
2024-04-25 16:42:11 +02:00
Sebastian Thiel
116f5d02bc
Revert 74eb7bd3 as debounce-timing has no effect (#3601)
This probably means the raciness is not due concurrency introduced by filesystem events,
which leads me to think that having great 'disk-IO-hygiene` should improve things.'
2024-04-25 16:33:55 +02:00
Mattias Granlund
44c64565a2 Add test to ensure hunks can lock across branches
- makes no assertions about how the hunk is displayed
2024-04-25 16:06:03 +02:00
Mattias Granlund
d79b126c59 Remove repetition in create_commit.rs test code 2024-04-25 16:06:03 +02:00
Sebastian Thiel
29525ffd03
address review comments
- rename feature to `windows`
- remove unused config key from `Cargo.toml`, unfortunately `cfg` isn't available for everything
- make sure feature is toggled on on CI when checking and when publishing
2024-04-25 11:29:24 +02:00
Sebastian Thiel
3058ffbc9b
avoid showing colors in Windows logs (#3601)
People can't copy it without the terminal-escape code, making it harder to read.
2024-04-25 08:19:59 +02:00
Sebastian Thiel
74eb7bd397
on Windows, update far less often on filesystem changes. (#3601)
By increasing the window size for collecting filesystem events,
knowing that each event is processed in parallel, we might be lucky
and that already reduces the likelyhood of clashes.

It's an experiment though.

On Unix, run with:

`LOG_LEVEL=debug pnpm tauri dev --features adapt-to-windows`
2024-04-25 08:17:11 +02:00
Kiril Videlov
bb48dff72a project deleteion cleans up virtual_branches.toml 2024-04-24 17:50:39 +02:00
Josh Junon
40f7234708
Merge pull request #3596 from Byron/fix-mode-windows
avoid to make files executable on Windows (#3329).
2024-04-24 16:23:35 +02:00
Sebastian Thiel
a46de60d10 make tests work
This is accomplished by settig the test-feature when running `core` tests.
There is also a safeguard to help assuring this doesn't land in production.
2024-04-24 16:13:05 +02:00
Kiril Videlov
7f4aec50cf make git system executable the default auth flow 2024-04-24 16:13:05 +02:00
Sebastian Thiel
34770a4b77
avoid forcefully making files executable on Windows (#3329).
Instead, respect the existing bit if set in Git, but do not try
to derive it from the filesystem which is something Git doesn't
seem to be doing on Windows either.

This also makes me think that `gitoxide` should make it easy
to build a tree from a file and deal with this.
2024-04-24 15:14:22 +02:00
Sebastian Thiel
6033a62a94 use gix::tempfile in place of the tempfile.
This allows to unify handling of filewrites in more places.
2024-04-24 13:14:20 +02:00
Sebastian Thiel
6665bc9289
Use a temp-file to write new content atomically in storage layer (#2807)
This will prevent half-written content on disk in case the write is interrupted.

Lock files are *not* used as the assumption is that a lock is held centrally.
2024-04-24 10:38:48 +02:00
Mattias Granlund
90cf617a4f Add test for locking hunk to two different commits 2024-04-24 08:15:01 +01:00
Mattias Granlund
5134460875 Tighten locking tests
- with blame based lock a change can touch a committed line, but not overlap
2024-04-24 08:15:01 +01:00
Mattias Granlund
c202d83b6b Allow hunk locking to multiple commits
- adds `locked_to` field to `GitHunk` to avoid looking it up again
- sends array to ui instead of single commit id
2024-04-24 08:15:01 +01:00
Mattias Granlund
a664c85a9a Fix typo 2024-04-24 08:15:01 +01:00
Mattias Granlund
8140afb88b Use adjacent hunks in commit/lock detection test
We still need to fix the off-by-one bug affecting hunk end lines. When we add start_line + line_count we end up with an extra line. For example, with start_line 1, and line_count 1, the range is 1:1, not 1:2.
2024-04-24 08:15:01 +01:00
Mattias Granlund
0a1fbdce9a Add integration_commit_id as optional param to update_gitbutler_integration 2024-04-24 08:15:01 +01:00
Mattias Granlund
811f0ee35b Blame across workspace instead of by branch
- refactors `update_gitbutler_integration`
- creates new `get_workspace_head` function
- ignore locking when resolving merge conflicts
2024-04-24 08:15:01 +01:00
Mattias Granlund
2f7b396ab8 Remove extra indirector for blame function 2024-04-24 08:15:01 +01:00
Mattias Granlund
8dd4a92622 Use empty vector instead of None 2024-04-24 08:15:01 +01:00
Mattias Granlund
055c7e7119 Use blame for hunk locking
- replaces commit walking with a git blame
- limited to specific hunk lines
- earliest_commit set to default target
- lock if any blame other than boundary commit
- intersection uses context lines
2024-04-24 08:15:01 +01:00
Sebastian Thiel
aa3d3cb7da fix rustfmt formatting issues due to line-length (#3039)
The trick is to temporarily set `max_width` in `rustfmt.toml` to 120,
then set it back to the default of 100 (or remove the file).
2024-04-23 12:53:56 +02:00
Sebastian Thiel
5ea4bb3c58 don't fail if a ref can't be peeled (#3129)
Sometimes, symbolic refs are used as tracking branches, like
`refs/remotes/origin/HEAD`, and after some changes are dangling,
pointing to a ref which doesn't exist anymore (maybe it was renamed
from `master` to `main`).

Now, this isn't fatal anymore, but will be logged instead.
2024-04-23 12:53:56 +02:00
Sebastian Thiel
118bea95d1 for HTTP-based errors, attach Code to allow UI to show improved message (#2886)
Now thanks to a specific `Code`, the UI could display special text to help users
solve the issue related to workflow files.
2024-04-23 11:32:53 +02:00
Sebastian Thiel
bb7824e7c0 assure that root-causes are always provided instead of "Something went wrong". (#2886)
In the previous commit it was stated that the 'unfolding' of errors might
have been intentional to surface root causes of error messages.

However, this might have been wrong, and this commit brings back root-causes explicitly,
while erroring on the side of caution. That is, "Something went wrong" probably won't
be shown anymore, instead, possibly too much will be displayed and we'd rather tune
that down once it becomes clear which messages are needed, or should be improved.

Overall, I think it's best to show more, and then tune errors with custom context
where needed.
2024-04-23 11:32:53 +02:00
Sebastian Thiel
6f764f5fd6 assure important errors are passed as context (#2886)
Previously, errors would be 'unfolded' so there was no error chain,
but the lowest error would become the top-most one that way.

I thought this was accidental, but it turns out that it wasn't.
To fix this generally, make sure that we always use the message
of the lowest-possible error if no context is provided.
2024-04-23 11:32:53 +02:00
Sebastian Thiel
9bbba057f4 fix some typos that could be user-facing 2024-04-23 11:32:53 +02:00
Josh Junon
31ce4574bd
Merge pull request #3575 from gitbutlerapp/Fix-Gitea
Allow SSH remotes to use any port
2024-04-22 11:47:04 +02:00
Sebastian Thiel
b60d49f752 a clear error message when bare repositories are encountered and rejected (#2704)
This also rewrites some other checks in preference of opening the git directory
in isolation. Doing so is very fast, and the only way to know for certain if a
repository is bare.

In future, once the repository is more separated from the worktree (in terms of mindset)
it should be possible to handle bare repos with worktrees as well.
2024-04-22 11:01:07 +02:00
Sebastian Thiel
a5bda226ef provide better errors when adding a project (#2608)
The issue initially was that the wrapping of anyhow around a `thiserror`
type, which is when manually added context gets lost as there is no way
to downcast such an `anyhow` error back to a concrete type without
wanting to know it.

The solution was to remove the intermediate `thiserror` type which didn't
serve an actual purpose.
2024-04-22 10:59:03 +02:00
Caleb Owens
76556eb6c8 Remove useless reference 2024-04-21 22:45:00 +01:00
Caleb Owens
5c74cc79b5 Allow SSH remotes to use any port 2024-04-21 19:32:02 +01:00
Sebastian Thiel
f4a8aa5592
flyby refactor to do a little less copying 2024-04-21 11:35:26 +02:00
Sebastian Thiel
568d35fa90
refactor
- assure that `repository` can't be misused in `hunks_by_filepath()`.
- Use more obvious enumeration to describe and match on lines
- make clear that diff_lines can be a hash
- avoid multiple hashmasps if one would do
- `Hunk::hash_diff` now uses lines with terminator to be close to being a true content hash. This was probably intended by the code originally.
2024-04-21 11:35:26 +02:00
Sebastian Thiel
04bcf3b8b2
adjust Hunk::hash_diff() to produce unique hashes based on input.
The input is variable and maybe empty, maybe a diff header followed
by diff-lines, and it could be an SHA1 of a binary file, which now is
hashed like any other content.
2024-04-21 11:35:26 +02:00
Sebastian Thiel
be4cd36986
clarify some TODOs to avoid keeping them for too long
Note that the comment above 'deltas' merely removed, as it wasn't actionable
without changing the frontend, which can probably already deal with
multiple of these.

Now that types are better understood though, it was straightforward to
change the type of `file_path` to not be a string, which now is even
clearer of a necessity thanks to the `tauri`-independent `watcher` crate.

Also, remove a comment related to the lack of worktree support.
It now fails gracefully, and that will come up again if support should be added.
2024-04-21 11:35:26 +02:00
Sebastian Thiel
fb83dafd8b
Make using Hunk::hash with something that's not a hash a hard error.
Fix all occasions where this seems to be used like this.
2024-04-21 11:35:25 +02:00
Sebastian Thiel
eb0db39387
Strongly type the hunk-hash to avoid String, but remain compatible.
This change also avoids allocating for the hash, while keeping
everything else the same.
2024-04-21 11:35:25 +02:00
Sebastian Thiel
3aecf4d57e
Make sure users can more easily delete vbranch information on failure
If for whichever reason the parsing of parts of the vbranch.toml file
fails, this would be a permanent error until the file is fixed or removed.

Now it's also displayed along with the error to make clearing the file
more convenient.
2024-04-21 11:35:25 +02:00
Sebastian Thiel
ebf693e667
prevent unnecessary copies in Hunk::with_* methods 2024-04-21 11:35:25 +02:00
Sebastian Thiel
9e11127356
don't assume UTF8 encoding in commit message
Instead, fail gracefully by displaying fill-characters.
Ideally, we would be able to use the commit-encoding header field as well,
but one step at a time.
2024-04-21 11:35:25 +02:00
Sebastian Thiel
188fc2d5f1
Make sure UI types use strings instead of BString
Otherwise the frontend will see a byte-representation, and fails to operate
on the data.
2024-04-21 11:35:25 +02:00
Sebastian Thiel
27714d8e0d
Adjust GitHunk to not require UTF8 for diffs
This will make the diffing engine more correct overall, as only for
display there will be a potentially lossy conversion.

This will also prevent it to be considered binary even though it is not.
2024-04-21 11:35:25 +02:00
Sebastian Thiel
fe950ec00a
refactor
- adjust comment in watcher to actually show how it works.
2024-04-21 11:35:25 +02:00
Kiril Videlov
0fea544cd7
rm gb_repository from controller 2024-04-21 09:26:34 +02:00
Kiril Videlov
ee62577012
remove gb_repository from remote 2024-04-21 09:16:14 +02:00
Kiril Videlov
9ca847b2a3
remove gb_repository from base 2024-04-21 09:10:37 +02:00
Kiril Videlov
b8fcddb945
remove unused feature flag function 2024-04-20 10:32:49 +02:00
Sebastian Thiel
56d0943962
refactor
- don't convert paths to strings and use a set for membership checks
2024-04-20 09:10:11 +02:00
Sebastian Thiel
6e0706b6ef
Use the new worktree specific listing function (#3552)
It respects git excludes during traversal, which should also speed it
up when facing ignored direectories with many files.
2024-04-20 09:09:02 +02:00
Sebastian Thiel
cf81401b5a
add a function for worktree file listings specifically
This introduces `gix` to the codebase and uses it selectively
to traverse a worktree while respecting git excludes.
2024-04-20 09:07:17 +02:00
Kiril Videlov
69b048321e
Merge pull request #3564 from gitbutlerapp/update-virtual-branch-handles
update-virtual-branch-handles
2024-04-20 00:59:55 +02:00
Kiril Videlov
543e85dcfb
fix clippy 2024-04-20 00:47:42 +02:00
Kiril Videlov
118af702da
add some docs 2024-04-20 00:47:07 +02:00
Kiril Videlov
f95790f2fa
remove unused function on VirtualBranchesHandle 2024-04-20 00:46:58 +02:00
Kiril Videlov
72398719bc
rm test command 2024-04-20 00:38:18 +02:00
Kiril Videlov
6334336e7b
remove branch reader / writer 2024-04-19 23:48:11 +02:00
Kiril Videlov
86fe1e2735
remove target reader / writer 2024-04-19 23:29:13 +02:00
Kiril Videlov
442eb88eaa rm target writer from unrelated tests 2024-04-19 23:13:27 +02:00
Kiril Videlov
e485566a2a
remove unused import 2024-04-19 22:57:05 +02:00
Kiril Videlov
0dccc5634a
rm gb_repository from create_virtual_branch_from_branch 2024-04-19 22:56:07 +02:00
Kiril Videlov
8fba308e43
rm gb_repository from move_commit 2024-04-19 22:55:35 +02:00
Kiril Videlov
a35ced3826
rm gb_repository from update_commit_message 2024-04-19 22:54:54 +02:00
Kiril Videlov
7aa574d5a0
rm gb_repository from squash 2024-04-19 22:54:13 +02:00
Kiril Videlov
953221b499
rm gb_repository from cherry_pick 2024-04-19 22:53:38 +02:00
Kiril Videlov
9b049271b7
rm gb_repository from amend 2024-04-19 22:52:58 +02:00
Kiril Videlov
01100a5407
rm gb_repository from commit 2024-04-19 22:52:17 +02:00
Kiril Videlov
a7219d38f2
rm gb_repository from reset_branch 2024-04-19 22:51:07 +02:00
Kiril Videlov
b6c6159b1b
rm gb_repository from delete_branch 2024-04-19 22:50:31 +02:00
Kiril Videlov
f1cee4bf11
rm gb_repository from merge_virtual_branch_upstream 2024-04-19 22:49:53 +02:00
Kiril Videlov
eb1c0ca721
rm gb_repository from list_virtual_branches 2024-04-19 22:48:43 +02:00
Kiril Videlov
1240177dcf
rm gb_repository from unapply_branch 2024-04-19 22:47:13 +02:00
Kiril Videlov
749cde0112
rm gb_repository from unapply_ownership 2024-04-19 22:45:33 +02:00
Kiril Videlov
45c1342a53
rm gb_repository from apply_branch 2024-04-19 22:44:42 +02:00
Kiril Videlov
21fdfb4272
rm gb_repository from go_back_to_integration 2024-04-19 22:43:26 +02:00
Kiril Videlov
676fb0e8fa
rm gb_repository from update_gitbutler_integration 2024-04-19 22:39:46 +02:00
Kiril Videlov
b77818c31e
rm gb_repository from update_branch 2024-04-19 22:23:24 +02:00
Kiril Videlov
b1c6af328e
rm gb_repository from get_status_by_branch 2024-04-19 22:18:35 +02:00
Kiril Videlov
954f960f1b
rm gb_repository from get_applied_status 2024-04-19 22:15:39 +02:00
Kiril Videlov
81f3cf47e3
rm gb_repository from push 2024-04-19 22:14:00 +02:00
Kiril Videlov
6dc51f4d12
rm gb_repository from is_remote_branch_mergeable 2024-04-19 22:12:37 +02:00
Kiril Videlov
2e1c46c0a6
rm gb_repository from is_virtual_branch_mergeable 2024-04-19 22:11:30 +02:00
Kiril Videlov
67a8d03254
rm gb_repository from verify branch 2024-04-19 22:09:28 +02:00
Kiril Videlov
6853f0859e
rm gb_repository param from create_virtual_branch 2024-04-19 22:05:33 +02:00
Kiril Videlov
7fb642df07
fix test 2024-04-19 21:54:33 +02:00
Kiril Videlov
e82483fb88
get_branch_target returns default on not found
Matching the previous semantics
2024-04-19 21:54:24 +02:00
Kiril Videlov
d57cba4d31
migrate base to VirtualBranchState 2024-04-19 21:41:22 +02:00
Kiril Videlov
2c5465639c
migrate repository to VirtualBranchState 2024-04-19 21:40:33 +02:00
Kiril Videlov
c152060cbf
migrate virtual_branches to VirtualBranchState 2024-04-19 21:39:33 +02:00
Kiril Videlov
098e80d484
migrate integration to VirtualBranchesHandle 2024-04-19 20:19:19 +02:00
Kiril Videlov
44faf660c3
separate list_branches and list_branch_ids 2024-04-19 19:53:32 +02:00
Kiril Videlov
4f43d075ee
migrate controller to VirtualBranchesHandle 2024-04-19 19:13:55 +02:00
Kiril Videlov
6383cd0d59
match VirtualBranchesHandle interface with readers 2024-04-19 19:12:44 +02:00
Josh Junon
d5b34c46f5
mark package info as potentially unused 2024-04-19 16:01:54 +02:00
Josh Junon
7f35537798
only construct about metadata on macos 2024-04-19 15:49:23 +02:00
Josh Junon
ed088f4431
enable devtools on release builds, too 2024-04-19 15:17:44 +02:00
Josh Junon
340eaeaf8c
re-construct the full menu instead of using OS default 2024-04-19 15:15:56 +02:00
Josh Junon
d091a357be
fix cargo warnings 2024-04-18 15:43:58 +02:00
Josh Junon
450b1aeee9
add rt/macros to tokio in core for tests 2024-04-18 15:26:10 +02:00
Sebastian Thiel
125b329ab8
fix build on Windows 2024-04-18 13:45:53 +02:00
Kiril Videlov
0c11a0efcb use toml vbranch state by default 2024-04-18 13:12:39 +02:00
Kiril Videlov
f7f7ba992b fix: valid ownership claims in test 2024-04-18 13:12:39 +02:00
Kiril Videlov
fdee7abe0b remove unused show_file_at_tree 2024-04-18 12:12:28 +02:00
Kiril Videlov
ce14ea3b0b
Merge pull request #3541 from Byron/watcher-crate
split `tauri/watcher` into crate
2024-04-18 11:40:31 +02:00
Sebastian Thiel
5d9e593887
refactor
- add note related to negative pathspecs and performance implication of the current impl.
- deduplicate code for readability
2024-04-18 11:06:38 +02:00
Sebastian Thiel
c30ac3ba62
optimize tokio features
Previously, the attempt was made to enable only those `tokio` features
that are actually used. However, due to default-features still being
enabled and `tauri` using the `full` feature, for most intents and purposes
that wasn't effective.

Now default features are disabled, and `full` isn't used anymore, forcing
all crates to mention the exact features they need.

Note that `tracing` is missing here, as it wasn't effective previously
without the `--cfg tokio_unstable` option also being specified as rustflag.
2024-04-18 09:48:23 +02:00
Sebastian Thiel
adfbc7c5cc
Remove now unused dependencies from tauri.
These have moved to `watcher` and `analytics` respectively.
2024-04-18 09:25:33 +02:00
Sebastian Thiel
5785085a77
reintegrate watcher crate into tauri crate 2024-04-17 22:20:32 +02:00
Sebastian Thiel
81dd1fc13e
The watcher-crate compiles and tests run 2024-04-17 21:46:06 +02:00
Sebastian Thiel
143fc05547
add analytics crate based on tauri/analytics 2024-04-17 20:56:04 +02:00
Sebastian Thiel
5223c197d2
add watcher crate with code copied from gitbutler-tauri/src/watcher.
It's not functional yet, but exactly at the spot where it needs fixing
across the boundary that is:

- a stand-in for application events
- analytics
2024-04-17 19:15:17 +02:00
Sebastian Thiel
ccbe8fd738
improved error message when worktrees are encountered upon project-add (#3062)
Note that this is a first step towards making worktree support possible.
2024-04-17 18:37:20 +02:00
Sebastian Thiel
a482473453
add a test to core that should work when worktrees are properly supported (#3062)
This reproduces #3062.
2024-04-17 17:32:34 +02:00
Kiril Videlov
044f427810
rm functions for adding context lines to hunks 2024-04-17 07:23:34 +02:00
Kiril Videlov
45361df57c
rm use_diff_context feature flag from project 2024-04-17 07:17:36 +02:00
Kiril Videlov
6f0fe2afa9 rm uses_diff_context from list vbranches return 2024-04-17 07:14:43 +02:00
Kiril Videlov
0d296bf9f0
remove functions for adding context lines 2024-04-17 07:02:39 +02:00
Kiril Videlov
993c7109b0
remove unused context_lines option struct 2024-04-17 07:00:19 +02:00
Kiril Videlov
0c331ee86a
remove context_lines parameters 2024-04-17 06:59:13 +02:00
Kiril Videlov
15458cb25f
remove use of diff_context feature flag 2024-04-17 06:52:08 +02:00