Commit Graph

907 Commits

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