Commit Graph

1492 Commits

Author SHA1 Message Date
estib
f19c2158eb push_virtual_branch: Return the remote reference
Pushing a virtual branch also returns the branch refname
2024-09-10 11:12:30 +02:00
Kiril Videlov
310d4cf73a
fix a bug where deleting a vbranch fails to update state 2024-09-10 10:55:36 +02:00
ndom91
bfe299aa98 fix: cleanup and PR review 2024-09-10 10:37:15 +02:00
ndom91
cb733d707a chore: add note for future improvement 2024-09-09 15:48:24 +02:00
ndom91
a5fb400985 fix: simplify setting git_host default settings in projects.json 2024-09-09 15:35:15 +02:00
ndom91
22f71c2a58 fix: rename get_pr_templates fn to github specific 2024-09-09 15:22:05 +02:00
ndom91
7dee307aa6 fix: add instrumentation to new tauri cmd and rm unnecessary reference 2024-09-09 15:07:33 +02:00
ndom91
d7badd82a5 fix: enable saving git_host settings to projects.json 2024-09-08 18:34:45 +02:00
ndom91
32f13df06d fix: handle old projects which dont have git_host project settings key 2024-09-08 18:23:05 +02:00
ndom91
460e19299a fix: refactor out use of Persisted store values for pr template boolean and path 2024-09-08 18:11:39 +02:00
ndom91
3c812cb963 fix: move getAvailableTemplates functionality from project service to github service 2024-09-08 17:42:08 +02:00
ndom91
ac420780e0 fix: walk .github recursively 2024-09-08 17:11:54 +02:00
ndom91
6396bfea45 fix: cleanup 2024-09-08 16:39:19 +02:00
ndom91
bbe9249a01 fix: git paths 2024-09-08 16:34:58 +02:00
ndom91
e2bb456f7d feat: initial template dropdown support 2024-09-08 16:16:09 +02:00
Sebastian Thiel
a4df70c422
refactor clone for clarity 2024-09-07 21:08:31 +02:00
Nico Domino
68f0a3c288
fix: use our own open-rs implementation instead of relying on tauri's "shell-open" (#4748)
Co-authored-by: Yerke Tulibergenov <yerke@squareup.com>
Co-authored-by: Caleb Owens <caleb@gitbutler.com>
Co-authored-by: Pavel Laptev <pawellaptew@gmail.com>
Co-authored-by: Mattias Granlund <mtsgrd@gmail.com>
Co-authored-by: Sebastian Thiel <sebastian.thiel@icloud.com>
Co-authored-by: GitButler <gitbutler@gitbutler.com>
2024-09-07 19:28:50 +02:00
Kiril Videlov
245c8dfd1c
Merge pull request #4841 from gitbutlerapp/workspace-migration-fix-branch
fixes a test that should be using writable fixture
2024-09-06 15:55:51 +02:00
Kiril Videlov
df4d6ac099
fixes a test that should be using writable fixture 2024-09-06 15:18:09 +02:00
Kiril Videlov
7693b7b9ac
removes the legacy bool indicatin a vbranch is applied 2024-09-06 15:16:20 +02:00
Kiril Videlov
95e946b8a1
Remove unnecessary VirtualBranchActions struct 2024-09-06 14:12:14 +02:00
Kiril Videlov
2cad53efa4
Merge pull request #4838 from gitbutlerapp/update-set-branch-target-logic-impl
remove unused set branch target function
2024-09-06 11:25:55 +02:00
Kiril Videlov
b9e39a4503
remove unused set branch target function 2024-09-06 11:08:36 +02:00
Kiril Videlov
3899975d6c
remove useless credentials helper struct 2024-09-06 11:03:57 +02:00
Esteban Vega
9105a7b1ff
Merge branch 'master' into unapply-only-hunks-from-lane 2024-09-04 14:28:23 +02:00
Caleb Owens
e4834dbba9 Fancy fast forward 2024-09-04 14:39:38 +03:00
Sebastian Thiel
50c75eef60 refactor backend of reset_files() to be more idiomatic
It also tries to use `Vec<PathBuf>` in the tauri interface, which is
still to be validated.
2024-09-04 08:43:24 +02:00
estib
4eabbaad86 Decouple the get_raw project method
Decouple the `get_raw` method from other variants and only return the information about the project is returned.
This skips any other logic excecuted by the other methods (e.g. `get_inner`)
2024-09-03 13:17:17 +02:00
estib
34e102f336 Only discard the files changes inside the lane
When using the file context menu inside a given lane to discard the changes, only the changes to that file inside the lane should be discarded.
Any other changes to that same file that live in other lanes are kept
2024-09-03 11:34:19 +02:00
estib
395104fb67 Skip the project directory creation when getting the project
When only getting the project information, don't recreate the project directory.
This allows the app to get the information about a project, which path has been moved.
2024-09-02 18:06:34 +02:00
estib
2129ad5a3d Ability to update the path of a project 2024-09-02 17:40:05 +02:00
estib
c1cd40a811 Optionally, skip the validation when getting the project
Add flag to enable getting the project information from the storage without performing the validation
2024-09-02 17:39:40 +02:00
estib
2c6f295cc5 Remove unused method: delete project by path 2024-09-02 17:38:00 +02:00
estib
105ad7d0fa Resolve linting errors 2024-09-02 15:18:31 +02:00
estib
be89f303d2 Can remove repository if it's missing 2024-09-02 14:44:03 +02:00
Kiril Videlov
9c0700ba75
Merge pull request #4809 from gitbutlerapp/dependabot/cargo/rust-updates-e51a9d5fb3
Bump the rust-updates group with 3 updates
2024-09-02 22:18:00 +02:00
Mattias Granlund
260e81a94e Use simpler function for asserting workspace is open. 2024-09-02 20:53:19 +03:00
Mattias Granlund
a5962b7e46 Fix spelling mistakes 2024-09-02 20:53:19 +03:00
Mattias Granlund
85ebc4ea78 Add test to ensure old integration branch doesn't throw 2024-09-02 20:53:19 +03:00
Mattias Granlund
0db82ea38c Replace all relevant occurrences of integration with workspace 2024-09-02 20:53:19 +03:00
Mattias Granlund
9acab668cc Fix broken test
- make use of integration commit title constant
2024-09-02 20:53:19 +03:00
Mattias Granlund
f3e5228fed Update workspace commit message 2024-09-02 20:53:19 +03:00
Mattias Granlund
d217d96285 Add transition for integration commit detection 2024-09-02 20:53:19 +03:00
Mattias Granlund
5f9c2e5832 Rename gitbutler/integration -> gitbutler/workspace 2024-09-02 20:53:19 +03:00
dependabot[bot]
6aaf2d89ec
Bump the rust-updates group with 3 updates
Bumps the rust-updates group with 3 updates: [tokio](https://github.com/tokio-rs/tokio), [sysinfo](https://github.com/GuillaumeGomez/sysinfo) and [rstest](https://github.com/la10736/rstest).


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

Updates `sysinfo` from 0.31.3 to 0.31.4
- [Changelog](https://github.com/GuillaumeGomez/sysinfo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/GuillaumeGomez/sysinfo/compare/v0.31.3...v0.31.4)

Updates `rstest` from 0.21.0 to 0.22.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.21.0...v0.22.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-updates
- dependency-name: sysinfo
  dependency-type: direct:production
  update-type: version-update:semver-patch
  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-09-01 15:57:33 +00:00
Sebastian Thiel
fe970e1fcd
Trace the git binary path (#3601)
This should help in cases the binary can't be found nonetheless,
for yet to be clarified reason.
2024-08-30 15:29:49 +02:00
Kiril Videlov
2c7773a6cd
Merge pull request #4793 from Byron/git2-to-gix
performance improvements and bug fixes
2024-08-30 12:53:26 +02:00
Kiril Videlov
af6fdc36a4
add api for updating change references 2024-08-30 12:38:50 +02:00
Caleb Owens
0802d1c477
Resolve merge in less stupid manner 2024-08-30 11:05:20 +02:00
Sebastian Thiel
4d495cb3bc
Adjust integration check to also recognize by matching tree.
This is relevant when all commits are equal by tree, but seem changed
due to the added GitButler headers.

For added safety, we also compare by commit message, date and authors,
basically everything that isn't the headers.
2024-08-30 07:15:47 +02:00
Sebastian Thiel
4cafc909b0
Improve the clarity of performance logs 2024-08-30 07:15:47 +02:00
Sebastian Thiel
4ae354392b
Improve performance of list-local using git2. 2024-08-30 07:15:47 +02:00
Sebastian Thiel
36f23d529f
CLI with branch list-remotes to list remote branches 2024-08-30 07:15:46 +02:00
Sebastian Thiel
6a4849d090
refactor: avoid borrowed git2::Oid as it's a copy type.
Usually this makes the affected code simpler.
2024-08-30 07:15:46 +02:00
Sebastian Thiel
c81b140790
Assure the most-recent workspace head is used when emitting changed files.
The reason for this is that now the outcome of this can be re-used in `list_virtual_branches`,
which is sensitive to seeing the latest vbranch state which is not a given.

Calculating it makes sure there is no mismatch, and probably "can't be wrong".

Also note that `head_commit()` is still kept around as it's the idea to eventually
use it more.
2024-08-30 07:15:40 +02:00
Sebastian Thiel
b03ba56288
Merge pull request #4784 from Byron/fix-features
Remove unnecessary `gix` features from `watcher` and add them to `tauri`
2024-08-29 09:50:53 +02:00
Sebastian Thiel
47b6d41a26
Merge pull request #4771 from Byron/git2-to-gix
list virtual branches performance
2024-08-29 09:50:35 +02:00
Sebastian Thiel
a7b01bd641
Keep using get_workspace_head() when no cached result is used.
That way, the application will not run into unexpected cases.
2024-08-29 09:34:54 +02:00
Sebastian Thiel
79798c7407
Exclude big files when performing a worktree diff.
This was lost previously when switching it over to a read-only
implementation.
Implementing it with an ignore list will take time, 400ms in the GitLab
repository, but it's not slower than it was before and it is always
preferred to not dump objects into the ODB unnecessarily.
2024-08-29 09:31:59 +02:00
Sebastian Thiel
8c7159d906
Remove unnecessary gix features from watcher and add them to tauri 2024-08-29 07:26:29 +02:00
Sebastian Thiel
a0e236110a
refactor
- move `gix` repository extension to where it belongs more naturally.
- make sure that `get_wd_tree()` is named more closely to what it really
  does, and use it in more places.
2024-08-28 22:05:25 +02:00
Sebastian Thiel
751e091f6f
Reuse the worktree-diff during 'recalulate-everything'
It's used for emission of changed files, but also for listing
branch information.

Make sure we only run the worktree-status once to save time.

This also unifies the acquisition of the `HEAD^{commit}`,
which one day will be a natural feature once `gix::Repository`
is used.
2024-08-28 21:42:29 +02:00
Sebastian Thiel
13deabdebd
find large files more quickly thanks to gix based dirwalk
Also make sure that important `gix` crates are always compiled
with optimization for proper performance.

This is particularly useful when optimizing performance as not
everything has to be done in release mode.

However, it also causes CI to be slower as it compiles some
dependencies longer.

The problem realy is that `tauri dev` doesn't support custom profiles,
so there is only `dev` and `release`.
2024-08-28 21:19:47 +02:00
Sebastian Thiel
7ce143954f
Do not dynamically calculate the head commit when listing virtual branches.
That way, the head is static which allows to re-use the worktree status across
multiple related calls.

Also, add a way to quickly get the `head_commit()` from a `git2::Repository`.

Note that this may cause breakage in the app, as now it will see the actual
head, not a computed one, but that should also help us to find places that
didn't properly update their state.
2024-08-28 21:16:43 +02:00
Sebastian Thiel
41c053474a
Assure HTTPS support is compiled into gix using curl. 2024-08-28 12:55:44 +02:00
Sebastian Thiel
fc63929da3
Add a flag to allow performance logging: GITBUTLER_PERFORMANCE_LOG
````
GITBUTLER_PERFORMANCE_LOG=1 LOG_LEVEL=debug pnpm tauri dev
````

Additionally, some noise was removed by turning a warning into
a trace.
2024-08-28 11:41:29 +02:00
Sebastian Thiel
7e0878a14f
Use read-only worktree diff
The worktree diff is essentially a 'git status' with a given tree,
and that can be expressed with a diff of the workdir, the index and a tree.

This comes at the expense of not being able to control which file sizes are diffed.
2024-08-28 11:10:04 +02:00
Sebastian Thiel
30cc6a4838
Add branch status to CLI
It calls `list_virtual_branches()` which kind of has the effect of a status call.
2024-08-28 11:10:02 +02:00
Sebastian Thiel
dd724f310d
Also debug-trace information on list_virtual_branches calls.
This can be useful for those who seek extra information, and while it's
dominating refresh times.
2024-08-28 11:09:33 +02:00
Kiril Videlov
12d48df0f7
Merge pull request #4774 from gitbutlerapp/remove-unused-feature-flag
remove unused feature flag
2024-08-27 20:57:26 +02:00
Kiril Videlov
74e7b1eeb5
remove unused feature flag 2024-08-27 20:46:22 +02:00
Kiril Videlov
e9d6d647d0
build: add a .vercelignore to ignore all files in crates 2024-08-27 19:59:18 +02:00
Kiril Videlov
06f50b4531 Merge branch 'master' into branch-stacking-first-stab 2024-08-27 14:13:08 +02:00
Kiril Videlov
b943c35293
code review fixes 2024-08-27 14:05:27 +02:00
Caleb Owens
d386790930
resolve to our side 2024-08-27 14:00:56 +02:00
Caleb Owens
0b397d2368
Jiggle some code about 2024-08-27 13:05:28 +02:00
Caleb Owens
3fb5077c4a
Somethign somethign matchy matchy design 2024-08-27 13:05:27 +02:00
Caleb Owens
d2d3afbf2b
Added unstaged changes event 2024-08-27 13:05:07 +02:00
Sebastian Thiel
06edec70cb
reuse the commit-graph between runs
This time, it contains whole commits and only flags are reset
between runs. With this amount of re-use, it will manage
to rival `git2`.
2024-08-27 12:17:54 +02:00
Sebastian Thiel
b081a115c8
Offload commit-walk to the commit-thread
That way, it can leverage already held commit-objects, and be faster
in the absence of a commitgraph.
2024-08-27 09:20:07 +02:00
Sebastian Thiel
afcc1ee26e
Merge pull request #4757 from Byron/git2-to-gix
gix merge-base for branch-details
2024-08-27 06:43:16 +02:00
Kiril Videlov
4b5a8d14ef
add commands for pushing change references 2024-08-26 21:38:40 +02:00
Kiril Videlov
cef701796d
update the create reference method to take change id 2024-08-26 20:49:01 +02:00
Sebastian Thiel
82aa2d1760
use gix powered merge-base for performance and reduced memory consumption 2024-08-26 19:35:09 +02:00
Caleb Owens
e463e2b2e9 Correct the tree side which we write 2024-08-26 19:34:44 +02:00
Kiril Videlov
66257fba2f
rename reference module to change_reference 2024-08-26 19:15:58 +02:00
Kiril Videlov
89d1186b06
refactor this to be a ChangeReference
it turns out that a reference to a change_id is all that we need
2024-08-26 17:02:38 +02:00
Caleb Owens
564cd06666
Merge pull request #4756 from gitbutlerapp/Comments-and-another-enum-correction
Commits and another enum correction
2024-08-26 15:45:45 +02:00
Caleb Owens
f6dae49a8d Commits and another enum correction 2024-08-26 15:40:22 +02:00
Pavel Laptev
99dcf812c4
Add zoom functionality with keyboard shortcuts and update menu actions for the View item (#4753)
* feat: Add zoom functionality with keyboard shortcuts and menu actions

feat: Implement global settings menu action navigation to settings page

feat: Implement theme switching functionality with keyboard shortcut and menu action

* code review fixes
2024-08-26 15:24:44 +02:00
Caleb Owens
3170042895
Merge pull request #4754 from gitbutlerapp/Use-correct-sides
Use the auto-resolution if the head is conflicted
2024-08-26 15:11:08 +02:00
Caleb Owens
ca0ece9d49 Use the auto-resolution if the head is conflicted 2024-08-26 15:05:36 +02:00
Sebastian Thiel
1520a4b7a3
make GPG related spawn failures even clearer (#4750)
This should help self-disagnose probelms aroung GPG not being found.
2024-08-25 09:18:33 +02:00
Kiril Videlov
2ddb032ebf
show relevant commit refs if feature is toggled 2024-08-23 21:03:44 +02:00
Kiril Videlov
33e7d7b269
adds the ability to create branch refs from the UI 2024-08-23 18:07:24 +02:00
Caleb Owens
74a5c1a2ae
Merge pull request #4742 from gitbutlerapp/Exit-edit-mode-without-saving
Exit edit mode without saving
2024-08-23 15:33:53 +02:00
Kiril Videlov
4668a1ec3d
update create and update reference apis
No need to provide the change_id as it can be obtained from the commit itself
2024-08-23 14:32:31 +02:00
Sebastian Thiel
7ee0520ffb
Use latest rev_walk() based API.
It's a bit more intuitive than `id().ancestors()` when coming from `git2`.
2024-08-23 13:08:37 +02:00
Caleb Owens
04a63f1712 Exit edit mode without saving 2024-08-23 12:47:17 +02:00
Nico Domino
d15ccc95f0
fix: add linux dependencies to tauri.conf (#4741) 2024-08-23 11:13:00 +02:00
Kiril Videlov
aea72e8605
update any branch references during cherry rebase 2024-08-23 00:03:58 +02:00
Kiril Videlov
12f826b9ad
move the stacking impl to repo crate
There is just too big of a dependency in both directions to be able to have a separation at this time. The gitbutler-repo crate is needed for the stacking functionality and the `rebase` module inside of it needs to use the new API in order to maintain consistency during rebasing.
2024-08-22 23:29:13 +02:00
Kiril Videlov
9d6508b849
support listing references by commits 2024-08-22 23:21:26 +02:00
Caleb Owens
ec7a38f538
Merge pull request #4717 from gitbutlerapp/Rebase-revolution
Rebase revolution
2024-08-22 18:28:49 +02:00
Caleb Owens
553ca5846f correct lifetime names 2024-08-22 18:16:16 +02:00
Caleb Owens
893b3fc499 Use a default variant on enum 2024-08-22 18:04:11 +02:00
Caleb Owens
c987629262 Add project specific setting and refactor 2024-08-22 17:57:03 +02:00
Caleb Owens
b45a52f111 Remove empty merge commits 2024-08-22 15:27:34 +02:00
Caleb Owens
0603fd7457 Sure up behaviour with blank commits and reordering 2024-08-22 15:15:23 +02:00
Mattias Granlund
8a741bcf2e Delete entry from .toml file when branch is integrated
- virtual_branches.toml file was full of old entries
2024-08-22 13:46:55 +01:00
Nico Domino
0342a46560
fix: invalid CSP syntax (#4739) 2024-08-22 12:26:19 +00:00
Sebastian Thiel
fcafaec2be
process merge-bases in the background
This way, only the first branch has to wait, all further branches will
likely have their merge-base already computed then.
2024-08-21 20:24:22 +02:00
Sebastian Thiel
bdd109047e
use latest gix APIs for more convenience and increased readability. 2024-08-21 19:28:12 +02:00
Sebastian Thiel
e78ef9b115
enable max performance to be competitive in object database access.
This is very relevant for tree-diffing performance, and more could be tuned
here like pack-cache sizes and object cache sizes.
2024-08-21 19:28:12 +02:00
Sebastian Thiel
66c747e611
somewhat fix the ODB performance bottleneck with better caching. 2024-08-21 19:28:12 +02:00
Sebastian Thiel
a2382bde74
Use gix to find branchs and get the local tracking branch 2024-08-21 19:28:12 +02:00
Sebastian Thiel
29ecbff318
Use gix for tree-tree-diff 2024-08-21 19:28:12 +02:00
Sebastian Thiel
0db0f1a86a
Use gix for simple ref-walk that won't go past the merge-base. 2024-08-21 19:28:12 +02:00
Sebastian Thiel
db600b48f9
add benchmark just for revwalking 2024-08-21 19:28:11 +02:00
Sebastian Thiel
42e4ab44f9
Make it more obvious where gitoxide repositories are used. 2024-08-21 19:28:11 +02:00
Sebastian Thiel
7362bab7aa
Assure we can use different merge bases when showing branch details.
Alternatively, correct the assumption that there is a difference.
2024-08-21 19:28:11 +02:00
Sebastian Thiel
07dc9efe02
add tests for get_branch_listing_details() 2024-08-21 19:28:11 +02:00
Sebastian Thiel
e26bf2f54a
add benchmarks for branch details 2024-08-21 19:28:09 +02:00
Sebastian Thiel
7c768acf4d
Add list-all subcommand
This lists all branches that the user would see (and get details for).
2024-08-21 19:23:43 +02:00
Sebastian Thiel
96e0d3e83f
add --trace to enable tracing
This is useful to get simple performance metrics.
2024-08-21 19:23:42 +02:00
Sebastian Thiel
77cbc50a68
branch listing and branch details for the CLI 2024-08-21 19:23:42 +02:00
Sebastian Thiel
d1fdcde139
minor refactor 2024-08-21 19:23:42 +02:00
Sebastian Thiel
84b2db9685
optimize git2 for good measure, and enable them from tauri and cli 2024-08-21 19:23:42 +02:00
Mattias Granlund
acf902c2e6 Fix applied -> in_workspace performance issue
- loop was taking > 1s for me
- my 8 branches (2 in workspace) were constantly being saved
2024-08-21 16:11:26 +01:00
Kiril Videlov
36c0a1219d
add tests 2024-08-21 16:32:20 +02:00
Kiril Videlov
052270f078
adds support for writable scripted fixtures 2024-08-21 16:31:46 +02:00
Caleb Owens
ace6facb24 Getting behaviour locked in 2024-08-21 14:45:41 +02:00
Kiril Videlov
a095f8f28b
add methods for manipulating branch references
fix a thing
2024-08-21 12:21:30 +02:00
Nico Domino
3ce2b5b338
fix: avatars from Google accounts via Auth0 (#4725) 2024-08-21 11:06:52 +02:00
Caleb Owens
4f2a0817c7 Reduce gitbutler_cherry_pick to one code path 2024-08-20 14:51:54 +02:00
Nico Domino
48c1379a45
fix: allow github.com in img-src CSP (#4720) 2024-08-20 12:47:55 +02:00
Caleb Owens
e07b4b2d0d Refactor some code 2024-08-20 10:51:34 +02:00
Caleb Owens
65fb462d64 Rebase revolution
Co-authored-by: Scott <schacon@gmail.com>
2024-08-19 18:10:28 +02:00
Caleb Owens
17d15719ce Update terminology 2024-08-19 13:25:46 +02:00
Caleb Owens
dbe8013de3 Record entering edit mode in oplog 2024-08-19 11:44:59 +02:00
Caleb Owens
7ab7731a31 Add edit mode actions
More edit mode
2024-08-19 11:03:51 +02:00
Caleb Owens
575d8a0492
Merge pull request #4708 from gitbutlerapp/Use-gix-for-cloning
Use gix for cloning repositories
2024-08-19 10:44:44 +02:00
Pavel Laptev
87b5590161 feat(menu): Update the text for 'Check for updates' to include an ellipsis
Just something I noticed about how other applications spell this.
2024-08-17 09:02:00 +01:00
Mattias Granlund
bc10f4985b Add manual check for app update 2024-08-17 09:02:00 +01:00
Nico Domino
cd84afde3e
fix: allow use of xdg-open binary to open links (#4706) 2024-08-16 13:22:06 +00:00
Mattias Granlund
4fe8b6860f Fix branch name deduplication
- do not include name of branch being updated when deduping
2024-08-16 15:16:40 +02:00
Caleb Owens
2316d0f10d Use gix for cloning repositories 2024-08-16 12:21:42 +02:00
Caleb Owens
148ac88434 fix mode undefined 2024-08-15 19:33:25 +02:00
Sebastian Thiel
09f19b782d
There is a clear error if the project moved or was deleted
The user-interface also gets a code to respond to.
2024-08-15 11:23:15 +02:00
Sebastian Thiel
200b6e6d02
Fail when no author was found, and mark the error so the UI can react. 2024-08-15 08:53:19 +02:00
Kiril Videlov
05650b1e96
removes a code path through which an unknown ssh host is added as a known host
This functionality existed for convinience, before the app was able to fork exec to the git binary. Removing this as this trade off is no longer necessary or relevant
2024-08-14 16:26:24 +02:00
Caleb Owens
e0d7b56cb5 Provide current mode to frontend 2024-08-13 17:05:28 +02:00
Caleb Owens
c98421171e Introduce edit mode
asdf
2024-08-13 14:14:02 +02:00
Kiril Videlov
74c8bce48d
add BranchReference type to the Branch persisted struct
This allows (virtual) branches to keep track of associated references
2024-08-10 21:35:40 +02:00
Sebastian Thiel
b92407a5df
branch-listing benchmarks now work again
They type system is more strict now, rejecting an invalid branch name outright.
2024-08-09 21:53:42 +02:00
Sebastian Thiel
107eea6743
Use gix for branch normalization 2024-08-09 21:53:38 +02:00
Kiril Videlov
d635f72269
i dont trust the old Refname implementation
So not using it for deletion here
2024-08-09 15:59:32 +02:00
Kiril Videlov
e295da03a1
adds a delete local branch command
This allows for deleting local branches and any associated virtual branches, so long as they have been unapplied first
2024-08-09 15:29:08 +02:00
Sebastian Thiel
de2989f352
Don't use gix built-in serialization as it will leave BString as sequence of numbers.
Instead, we need it to be a string, even if lossy.
2024-08-09 13:12:36 +02:00
Sebastian Thiel
acbd42fce3
Revert "remove unnecessary BString-related serde functions."
This reverts commit 3043f099b7.

We actually need this - me removing it just means it wasn't properly
documented and clarified in the type-system as to why this is needed.
2024-08-09 10:52:05 +02:00
Sebastian Thiel
4c76e2a6ee
Revert "Revert "Merge pull request #4652 from gitbutlerapp/git2-to-gix""
This reverts commit 88496e6219.
2024-08-09 10:30:52 +02:00
Kiril Videlov
88496e6219 Revert "Merge pull request #4652 from gitbutlerapp/git2-to-gix"
This reverts commit ae8b05ae70, reversing
changes made to 4d9b6a4a93.
2024-08-09 10:18:51 +02:00
Sebastian Thiel
6720e987fe
Use gix::refs::PartialName as even stronger guarantee for what's in there 2024-08-08 21:04:09 +02:00
Sebastian Thiel
712ce582cb
Use BranchIdentity type instead of given_name().
This is a change in perception, as `given_name()` was the name of a virtual-branch,
which is also used to correlate other similarly named branches.

Thus, it's now more than just that, and for lack of a better word it's called
the 'identity' of a branch.

It's something very specific and shouldn't accidentally be used wrongly, hence
the strong typing.
2024-08-08 20:53:15 +02:00
Sebastian Thiel
5376a8b012
Author name uses BString to avoid degeneration 2024-08-08 20:53:14 +02:00
Sebastian Thiel
3df2da6de5
Use gix::remote::Name for type-safety. 2024-08-08 20:53:14 +02:00
Sebastian Thiel
3043f099b7
remove unnecessary BString-related serde functions.
They are supported when the respective bstring feature is used.
2024-08-08 17:25:18 +02:00
Sebastian Thiel
8ed90644a1
refactor serde crate to avoid name duplication 2024-08-08 16:59:38 +02:00
Kiril Videlov
7d629c52b5
derive some useful traits for tagged string and reference name 2024-08-08 14:48:06 +02:00
Caleb Owens
99eac848cf
Merge pull request #4640 from gitbutlerapp/write-tests-for-existing-gitbutler-modes
Write tests for existing modes
2024-08-08 10:54:20 +02:00
Sebastian Thiel
f43f8c1d2b
assure both applications enforce max-performance settings for gitoxide. 2024-08-07 20:21:56 +02:00
Sebastian Thiel
17850bd210
Use gix for branch listing 2024-08-07 20:21:29 +02:00
Sebastian Thiel
e42fcd4643
add benchmark for branch-listing 2024-08-07 20:10:02 +02:00
Caleb Owens
7ea1a5929c Write tests for existing modes 2024-08-07 12:43:56 +02:00
Caleb Owens
22762745e3
Merge pull request #4618 from gitbutlerapp/Use-better-comparison-point-for-real-branches
feat: Update merge base comparison for branch listing
2024-08-06 13:32:36 +02:00
Kiril Videlov
05a814146e
Ensure ignored/submodule files and dirs are ignored 2024-08-06 11:47:59 +02:00
Caleb Owens
b36c85b211 feat: Update merge base comparison for branch listing
Improves branch listing accuracy by adjusting the merge base
comparison logic. For virtual branches in the workspace, uses the
default target SHA. For others, uses the head commit of the default
branch's upstream. This change ensures more precise branch
comparisons, especially for virtual branches.
2024-08-06 10:24:44 +02:00
Caleb Owens
7b008a4a54 feat: filter out virtual branches without local or remote 2024-08-05 22:09:26 +02:00
Sebastian Thiel
e8cc7f9f03
make the notion of identity typesafe. 2024-08-05 20:01:00 +02:00
Caleb Owens
c35787a848 fix rust tests 2024-08-05 14:17:46 +02:00
Caleb Owens
1e342de03a fix merge 2024-08-05 11:45:45 +02:00
Caleb Owens
0b31743a2e mergey merge 2024-08-05 11:43:10 +02:00
Caleb Owens
aec1bda197 stuff 2024-08-05 11:37:39 +02:00
Nico Domino
e5498665b4
feat: add WebdriverIO based E2E test setup (#4561) 2024-08-02 10:46:56 +00:00
Sebastian Thiel
7fea6b8130
fix: don't allow trailing . (#4570)
This is a quick-fix for a specific case, even though the actual fix
should be offering branch normalization as part of the validation.
2024-08-02 09:15:39 +02:00
Sebastian Thiel
37c81b991b
show that revert branch name now fails to validate (#4570) 2024-08-01 22:17:42 +02:00
dependabot[bot]
c9c4630087
Bump the rust-updates group across 1 directory with 8 updates
Bumps the rust-updates group with 8 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [thiserror](https://github.com/dtolnay/thiserror) | `1.0.62` | `1.0.63` |
| [tokio](https://github.com/tokio-rs/tokio) | `1.38.0` | `1.39.2` |
| [console-subscriber](https://github.com/tokio-rs/console) | `0.3.0` | `0.4.0` |
| [serde_json](https://github.com/serde-rs/json) | `1.0.120` | `1.0.121` |
| [assert_cmd](https://github.com/assert-rs/assert_cmd) | `2.0.14` | `2.0.15` |
| [clap](https://github.com/clap-rs/clap) | `4.5.9` | `4.5.13` |
| [bstr](https://github.com/BurntSushi/bstr) | `1.9.1` | `1.10.0` |
| [toml](https://github.com/toml-rs/toml) | `0.8.14` | `0.8.15` |



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

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

Updates `console-subscriber` from 0.3.0 to 0.4.0
- [Release notes](https://github.com/tokio-rs/console/releases)
- [Changelog](https://github.com/tokio-rs/console/blob/main/release-plz.toml)
- [Commits](https://github.com/tokio-rs/console/compare/console-subscriber-v0.3.0...console-subscriber-v0.4.0)

Updates `serde_json` from 1.0.120 to 1.0.121
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.120...v1.0.121)

Updates `assert_cmd` from 2.0.14 to 2.0.15
- [Changelog](https://github.com/assert-rs/assert_cmd/blob/master/CHANGELOG.md)
- [Commits](https://github.com/assert-rs/assert_cmd/compare/v2.0.14...v2.0.15)

Updates `clap` from 4.5.9 to 4.5.13
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.9...v4.5.13)

Updates `bstr` from 1.9.1 to 1.10.0
- [Commits](https://github.com/BurntSushi/bstr/compare/1.9.1...1.10.0)

Updates `toml` from 0.8.14 to 0.8.15
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.14...toml-v0.8.15)

---
updated-dependencies:
- 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: console-subscriber
  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: assert_cmd
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: bstr
  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
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-01 19:45:06 +00:00
Kiril Videlov
bb86eeacf3
update sysinfo crate version 2024-08-01 21:11:53 +02:00
Caleb Owens
00b778638a Demoing conflict resolution 2024-08-01 18:09:23 +02:00
Kiril Videlov
6d2ef8afe6
Merge pull request #4564 from Byron/git2-to-gix
branch-listing tests and refactors
2024-08-01 17:26:00 +02:00
Nico Domino
cda04e9b5b
feat: clone repo onboarding step (#4542)
Co-authored-by: Pavel Laptev <pawellaptew@gmail.com>
2024-08-01 16:54:49 +02:00
Sebastian Thiel
949ac1698d
add more tests for a deeper understanding on the graph traversal. 2024-08-01 16:25:03 +02:00
Sebastian Thiel
d0e10ff570
make it possible to show remotes for virtual branches that are targets, too. 2024-08-01 15:34:42 +02:00
Sebastian Thiel
e6b00b5e0e
more tests and refactors for branch-listing 2024-08-01 15:21:30 +02:00
Caleb Owens
5450ef15a1 mergey merge 2024-08-01 14:14:40 +02:00
Sebastian Thiel
b7c38e4f33
fix assumption about branch identity
It's possible for virtual branches to have the same 'identity' as
the target branch, yet they should be listed.
2024-08-01 09:24:35 +02:00
Kiril Videlov
917a46c2ce
remove unnecessary method from RepoActionsExt 2024-07-31 21:16:38 +02:00
Sebastian Thiel
2d82b6e038
more tests specific to how branches are discovered 2024-07-31 19:44:00 +02:00
Sebastian Thiel
182381dd79
assure normalization will always provide valid ref-names, or fail.
Otherwise, it's possible to run into `git2` errors, which are
more 'indirect'.
2024-07-31 18:52:01 +02:00
Sebastian Thiel
a5bc727705
let integration commit also respect author and committer times. 2024-07-31 18:52:01 +02:00
Sebastian Thiel
76d687b55c
Respect author-date for setting up completely static commmit graphs
This updates to a yet-to-be-released version of `gix` to be able to
leverage full local-time support thanks to the usage of `jiff`.

This means we can now rely on the local `now()` that `gix` signatures
come with, which naturally respect environment variables that help
to make commits statically known.

For the running Tauri application this won't have an effect as it won't
inherit environment variables, but the CLI will be different in that regard.
2024-07-31 18:52:01 +02:00
Caleb Owens
09de80f6f0 Mergy merge 2024-07-31 13:11:02 +02:00
Kiril Videlov
83679206cd
separate syncing of oplog from regular refs 2024-07-30 21:29:54 +02:00
Mattias Granlund
b676115b11 Always create new commit in get_workspace_head
- so we can safely recreate the integration commit
2024-07-30 18:09:07 +01:00
Mattias Granlund
11f0063f18 Remove test cases that do not apply
To list virtual branches we should require a base branch to be set.
2024-07-30 18:09:07 +01:00
Mattias Granlund
152b14c226 Remove now unused target_commit function 2024-07-30 18:09:07 +01:00
Mattias Granlund
1e518a3d78 Use octopus commit for creating gitbutler/integration 2024-07-30 18:09:07 +01:00
Caleb Owens
e53c11a477 introduce last commiter field, use jsdoc, add type transforms 2024-07-30 16:42:20 +02:00
Caleb Owens
4563ddb995
Fix gitbutler/integration nuking itself 2024-07-29 19:22:04 +02:00
Sebastian Thiel
9113105413
gitbutler-git now specifies the minimum required rustc version. (#4514)
That way, the error message will be clear and it's more obvious how to overcome
issues related to older-than-needed compiler versions.
2024-07-29 17:02:06 +02:00
Caleb Owens
742d6bc4d5 Use operating modes in watcher to decide whether to perform operations 2024-07-29 13:38:31 +02:00
Caleb Owens
2d61cae43a Introduce operating modes 2024-07-29 13:19:38 +02:00
Caleb Owens
d37dcefdf5
Merge pull request #4523 from gitbutlerapp/Boosting-my-contribution-score
Boosting my contribution score
2024-07-29 11:18:58 +02:00
Caleb Owens
6f4a190464 project_repo -> ctx 2024-07-29 11:14:02 +02:00
Caleb Owens
21bad4f30f repo -> repository 2024-07-29 11:13:25 +02:00
Nico Domino
45d340ef37
fix: nightly build (#4522) 2024-07-29 08:49:22 +00:00
Caleb Owens
f4569ff4da Yes Kiril, I know its an abrv., but its consistent with what Byron started 2024-07-29 10:46:17 +02:00
Caleb Owens
366ccfecdf Rename ProjectRepository to CommandContext 2024-07-29 10:43:18 +02:00
Mattias Granlund
974e60aefc Fix branch reordering
- move branches into their own div
- make only one update request
2024-07-29 01:07:06 +01:00
Kiril Videlov
9d04c08528
add branch listing details api
this allows us to paginate the expensive bit of the API, like getting the lines added / removed
2024-07-28 22:19:30 +02:00
Sebastian Thiel
39099ba41c
run the nightly cargo fmt with pnpm fmt
This also optimizes imports/uses, which is done only occasionally.
2024-07-28 21:02:40 +02:00
Sebastian Thiel
9e236e3469
remove async except for in gitbutler-git
The reason is that it's unclear if maybe it's there for a good reason,
and I don't want to break the complex code in there.
2024-07-28 20:47:35 +02:00
Kiril Videlov
3033c7e7f5
order branch listing by last modified
also fixes an error in last modified computation
2024-07-28 19:35:54 +02:00
Kiril Videlov
2d0fa99452
Merge pull request #4509 from Byron/git2-to-gix 2024-07-28 17:34:42 +02:00
Sebastian Thiel
7c371e5dd4
More tests to understand more about the current branch-listing.
This also needs the ability to create commits.
Also experiment with `async` tauri commands, but without actually making
them `async` - nothing actually is so why pretend?

Further, assure we get the correct author and committer which helps it
pick up the overridden author information when creating a commit.
2024-07-28 17:12:23 +02:00
Sebastian Thiel
282519eca5
add ability to create add projects in CLI and create vbranches
This allows actual GitButler setups and more complex tests, which
are also added here.
2024-07-28 10:45:18 +02:00
Sebastian Thiel
5cdbadce4f
refactor CLI to make it easier to add new commands.
Also, remove the pager as there seems to be no need for it just yet,
one day it can probably be added when configured neatly.
2024-07-27 21:04:42 +02:00
Sebastian Thiel
093795bd0b
first simple test for list_branches and basic read-only test framework 2024-07-27 19:14:15 +02:00
Kiril Videlov
bb826edf94
remove the vec of local branch entries from branch data
It is no longer the case that the same logical branch would have multiple trees
2024-07-27 17:13:43 +02:00
Kiril Videlov
baf754aa07
Merge pull request #4507 from Byron/stable-on-unix
avoid nightly compiler on unix
2024-07-27 15:43:35 +02:00
Sebastian Thiel
ad3e15dae4
Avoid using nightly by default.
Instead, use it only where needed, which at this time is Windows
for some nightly-only access to file-descriptors.
2024-07-27 14:35:26 +02:00
Nico Domino
1ced81fd06
fix: cleanup repo organisation (#4503) 2024-07-27 13:29:32 +02:00
Kiril Videlov
874710e221
Add todo comment for branch listing 2024-07-27 12:17:00 +02:00
Kiril Videlov
19cf35698a
fix lint 2024-07-27 11:32:55 +02:00
Kiril Videlov
ef6a4c71ce
update the definition of own_branch 2024-07-27 11:24:55 +02:00
Kiril Videlov
099a2159d1
do less work when only own branches are returned 2024-07-27 10:33:10 +02:00
Kiril Videlov
dd3ec7ddcc
remote expensive parts of branch listing 2024-07-26 14:22:22 +02:00
Kiril Videlov
c7a8ef99c8
branch listing - allow filtering
fix matching
2024-07-26 15:00:08 +02:00
Kiril Videlov
c2fafb35ff
handle the case of maaaany branches 2024-07-25 21:28:52 +02:00
Kiril Videlov
7e482437a1
HEAD is not of interest when listing refs 2024-07-25 21:08:03 +02:00
Kiril Videlov
7e660782ad
update docs 2024-07-25 21:03:28 +02:00
Kiril Videlov
116de17c0c
fix the identity detection for Virtual branches 2024-07-25 20:57:18 +02:00
Kiril Videlov
d7f19e5633
revert back to git2 for branch listing 2024-07-25 20:30:41 +02:00
Kiril Videlov
b47530af3a
Merged origin/master into new branch list api 2024-07-25 19:29:26 +02:00
Kiril Videlov
69b7aa3d8a
refactor - move given_name_for_branch from the context to an extension on git2::Reference 2024-07-25 19:29:13 +02:00
Nico Domino
bce53ba383
feat: move @gitbutler/cloud into monorepo (#4494) 2024-07-25 15:53:28 +00:00
Kiril Videlov
3afabc2a30
merge conflict fix 2024-07-25 16:34:18 +02:00
GitButler
62f0712399
GitButler WIP Commit 2024-07-25 16:32:39 +02:00
Kiril Videlov
970c193696
fix an incorrect assumption about gix reference remotes work 2024-07-25 15:49:44 +02:00
Caleb Owens
7a6c7472a4
Always overwrite local references 2024-07-25 15:49:22 +02:00
Kiril Videlov
6eea8d2993
trying to get branch remote name 2024-07-25 15:36:16 +02:00
Caleb Owens
2f54e51a33 Don't create unrequired wip commits 2024-07-25 15:25:51 +02:00
Caleb Owens
c1c5d88303 Specify the correct branch to be the upstream
asdf
2024-07-25 15:11:07 +02:00
Kiril Videlov
e5729fe56d
use the correct oxide api for getting the branch given name 2024-07-25 14:54:21 +02:00
Caleb Owens
2540642aaa Update context spelling 2024-07-25 14:20:20 +02:00
Caleb Owens
c6badd9f3e Update sidebar grouping of branches 2024-07-25 14:07:21 +02:00
Kiril Videlov
a0c724077a
handle the case when a branch is only a virtual branch and a remote is not yet set 2024-07-25 13:53:02 +02:00
Kiril Videlov
5147638d74
avoids a gix panic with symbolic references 2024-07-24 23:29:57 +02:00
Kiril Videlov
187a3c22fe
create a tauri commant for the new branch listing 2024-07-24 22:51:14 +02:00
Kiril Videlov
d0545a219e
implement branch listings stats calculation 2024-07-24 15:53:49 +02:00
Kiril Videlov
bbd3aea3d0
reimplement with gitoxide 2024-07-23 17:33:28 +02:00
Kiril Videlov
4e4326d42b
remove unnecessary branch reference chack
We already had that info, use an enum variant to encode it
2024-07-23 15:48:37 +02:00
Kiril Videlov
a3b865a7f4
implement list branches 2024-07-23 10:45:16 +02:00
Kiril Videlov
0863e3b68d
New branch listing API - create types 2024-07-22 20:46:38 +02:00
Kiril Videlov
d8a1b4bc6b
get_workspace_head exit early when there are no applied branches
Avoids erroring out
2024-07-22 11:25:02 +02:00
Kiril Videlov
54ae0cf9e8
more possible mitigations for the "failed to apply" problemt related to merge conflicts 2024-07-21 22:30:24 +02:00
Kiril Videlov
581a793773
possible mitigation for the case when a conflicting branch is incorrectly not unapplied base update 2024-07-21 22:04:46 +02:00
Kiril Videlov
ea4f47da1b
get_applied_status returns VirtualBranchFiles instead of a tuple of path and hunks 2024-07-21 20:12:54 +02:00
Kiril Videlov
c25e48877b
move hunk related functions and structs to a module 2024-07-21 18:22:50 +02:00
Kiril Videlov
c2d135872a
rename files module to singular for consistency 2024-07-21 18:09:15 +02:00
Kiril Videlov
880ac13f21
move commit related functions and struct to a module 2024-07-21 18:06:52 +02:00
Kiril Videlov
6e27756098
move file related operations out of virtual.rs 2024-07-21 17:59:17 +02:00
Kiril Videlov
0f00f0425a
move tree writing out of virtual branch actions crate 2024-07-21 16:15:41 +02:00
Kiril Videlov
38e01c931c
rename tree writer functions to be actually descriptive of what they do 2024-07-21 15:59:30 +02:00
Kiril Videlov
9b9bd0b2e8
make virtual.rs functions operate on VirtualBranchHunk
Instead of the Hunk type from gitbutler_diff
2024-07-21 15:38:46 +02:00
Kiril Videlov
63863f9de5
Merge pull request #4452 from Byron/fix-4389
fix 4389
2024-07-20 23:12:07 +02:00
Kiril Videlov
8bfd897579
rename new_compute_locks function 2024-07-20 23:01:50 +02:00
Kiril Videlov
591552f625
get_applied_status now returns a more clear struct 2024-07-20 23:00:06 +02:00
Sebastian Thiel
af4c70fbbc
propagate fetch-errors explicitly to prevent silent failures (#4389)
However, some tuning might be desired to prevent showing anything if background-fetches fail,
which might be desirable after all as they don't seem to run with modals enabled.

Also perform minor refactors while at it.
2024-07-20 22:38:25 +02:00
Kiril Videlov
246dd9c379
move get_applied_status to separate module 2024-07-20 22:17:31 +02:00
Kiril Videlov
587915227d
remove redundant function get_status_by_branch 2024-07-20 22:01:46 +02:00
Kiril Videlov
27561fa7b8
simplify get_applied_status function signature 2024-07-20 21:57:45 +02:00
Kiril Videlov
84fda3838a
simplify get_workspace_head signature 2024-07-20 21:48:04 +02:00
Kiril Videlov
4125dcef3b
get remove vbranches list as function parameter 2024-07-20 21:44:20 +02:00
Kiril Videlov
e41ff19dc0
remove commented out code 2024-07-20 21:31:52 +02:00
Kiril Videlov
0e9b8c2957
fixes a situation in which listing of snapshots fails 2024-07-20 15:51:46 +02:00
Kiril Videlov
ea5079b723
oplog - get a workdir tree in a safe manner 2024-07-20 14:31:43 +02:00
Kiril Videlov
b7e2f60b89
remove references to virtual branch controller from event handler
After recent refactors, this state is useless
2024-07-20 13:44:03 +02:00
Kiril Videlov
21e7953ac1
Merge pull request #4442 from Byron/optimize-one
optimize `is_commit_integrated()`
2024-07-20 13:35:49 +02:00
Kiril Videlov
603df1c998
Merge pull request #4446 from gitbutlerapp/error-codes-for-commit-failures
Adds error codes for commit failures
2024-07-20 13:18:18 +02:00
Kiril Videlov
5d56427f83
Adds error codes for commit failures
This will helps the UI better understand why a commit operation may have failed
2024-07-20 12:54:48 +02:00
Sebastian Thiel
ea37a387b4
optimize is_commit_integrated()
- do not repeatedly optain the same state, but cache it
- when doing a merge-check, keep temporary objects in memory only.
2024-07-19 11:14:19 +02:00
dependabot[bot]
8936cced4e
Bump gix-path from 0.10.8 to 0.10.9 in the cargo group
Bumps the cargo group with 1 update: [gix-path](https://github.com/Byron/gitoxide).


Updates `gix-path` from 0.10.8 to 0.10.9
- [Release notes](https://github.com/Byron/gitoxide/releases)
- [Changelog](https://github.com/Byron/gitoxide/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Byron/gitoxide/compare/gix-path-v0.10.8...gix-path-v0.10.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-19 08:56:28 +00:00
Sebastian Thiel
ddfd6b95eb
conflicts::mark() with newline check
Error early, instead of having dubious issues later.
2024-07-19 10:44:12 +02:00
Sebastian Thiel
0fbfa141b4
Don't touch disk once per path to conflict::resolve() multiple of them 2024-07-19 10:44:12 +02:00
Sebastian Thiel
5946c4ca9a
conflict::*()functions don't impose UTF-8 on paths
That way it's compatible to more kinds of paths, on more filesystem.
It assumes that the content of the `conflict` file is never moved
across platforms.
2024-07-19 10:44:12 +02:00
Pavel Laptev
efb5c13725 refactor: Normalize branch name by replacing invalid characters with hyphens. 2024-07-18 14:32:30 +02:00
Kiril Videlov
6101c5c66f
move hunk and diff code to a separate crate, out of the branch one 2024-07-17 20:16:48 +02:00
Kiril Videlov
e6ccf764ee
supresss clippy warning about type complexity 2024-07-17 18:48:45 +02:00
Kiril Videlov
d5fffbd4ac
move HunkLock struct to branch actions crate 2024-07-17 18:30:23 +02:00
Kiril Videlov
5d74440d4c
remove lock attribute from diff hunk structs 2024-07-17 18:23:49 +02:00
Kiril Videlov
9eeb47b63f
get_applied_status returns locks 2024-07-17 12:01:50 +02:00
Kiril Videlov
3ad6b3fd10
Merge pull request #4409 from gitbutlerapp/dependabot/cargo/rust-updates-9e51e1549e
Bump the rust-updates group across 1 directory with 8 updates
2024-07-16 22:14:28 +02:00
Kiril Videlov
eed5643569
Merge pull request #4410 from Byron/lock-upgrades
clearer read-write separation
2024-07-16 22:14:16 +02:00
Caleb Owens
b5d2c8a54f
Merge pull request #4415 from gitbutlerapp/update-svelte
Fix up branches list
2024-07-16 19:48:03 +02:00
Caleb Owens
90d1465e5d
Fix up branches list 2024-07-16 19:39:46 +02:00
Sebastian Thiel
4526006bf9
Show that not all users of get_applied_status need write permissions...
...according to tests.
2024-07-16 17:33:53 +02:00
dependabot[bot]
cdafe5bc2c
Bump the rust-updates group across 1 directory with 8 updates
Bumps the rust-updates group with 8 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [serde](https://github.com/serde-rs/serde) | `1.0.203` | `1.0.204` |
| [thiserror](https://github.com/dtolnay/thiserror) | `1.0.61` | `1.0.62` |
| [console-subscriber](https://github.com/tokio-rs/console) | `0.2.0` | `0.3.0` |
| [open](https://github.com/Byron/open-rs) | `5.2.0` | `5.3.0` |
| [sysinfo](https://github.com/GuillaumeGomez/sysinfo) | `0.30.12` | `0.30.13` |
| [rstest](https://github.com/la10736/rstest) | `0.20.0` | `0.21.0` |
| [clap](https://github.com/clap-rs/clap) | `4.5.8` | `4.5.9` |
| [diffy](https://github.com/bmwill/diffy) | `0.3.0` | `0.4.0` |



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

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

Updates `console-subscriber` from 0.2.0 to 0.3.0
- [Release notes](https://github.com/tokio-rs/console/releases)
- [Changelog](https://github.com/tokio-rs/console/blob/main/release-plz.toml)
- [Commits](https://github.com/tokio-rs/console/compare/console-subscriber-v0.2.0...console-subscriber-v0.3.0)

Updates `open` from 5.2.0 to 5.3.0
- [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.2.0...v5.3.0)

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

Updates `rstest` from 0.20.0 to 0.21.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.20.0...v0.21.0)

Updates `clap` from 4.5.8 to 4.5.9
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.8...v4.5.9)

Updates `diffy` from 0.3.0 to 0.4.0
- [Changelog](https://github.com/bmwill/diffy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bmwill/diffy/commits)

---
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: console-subscriber
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-updates
- dependency-name: open
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-updates
- dependency-name: sysinfo
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: rstest
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-updates
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-updates
- dependency-name: diffy
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-updates
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-16 15:22:10 +00:00
Kiril Videlov
cc8d7c9206 upgrade version of the windows crate 2024-07-16 16:48:42 +02:00
Kiril Videlov
2f06fcb7cf
upgrade mock_instant version 2024-07-16 15:51:15 +02:00
Pavel Laptev
b888fbc834
normilize-branch-name-update (#4392)
* refactor: Normalized branch name handling

* Refactor: use only one normalize function (rust)

* Deletion: unused `normalizeBranchName` function

* Update lib.rs

* Changed test to reflect new functionality

---------

Co-authored-by: Caleb Owens <caleb@gitbutler.com>
2024-07-16 11:23:09 +02:00
Kiril Videlov
fcce329118
Merge pull request #4399 from gitbutlerapp/Fix-for-the-something-went-wrong-situation
Fix for the "something went wrong" situation
2024-07-16 10:51:15 +02:00
Nico Domino
bc8d00bb88
fix: update wp.com csp to wildcard subdomain (#4397) 2024-07-16 08:35:27 +00:00
Kiril Videlov
b9c26df9a1
indicate when a hunk is poisoned
This means that the hunk is 'locked/depends on' multiple branches, and because of this, it cannot be manipulated
2024-07-16 10:34:32 +02:00
Kiril Videlov
dac6c118e0
dont explode when a patch failed to apply
This condition arises when a hunk in fact depends on hunks from two other commits from two separate branches (i.e. it's a hunk that fuses with both)
2024-07-16 10:33:18 +02:00
Kiril Videlov
d6ec849f5e
let hunk locking discover all locks 2024-07-16 10:17:07 +02:00
Nico Domino
879746c665
feat: add io.wp.com to img-src CSP for gravatar / auth0 fallback avatars (#4396) 2024-07-16 08:15:38 +00:00
Kiril Videlov
8ccd8d511e
Merge pull request #4349 from Byron/refactor
refactor and PoC for worktree mutability handling
2024-07-15 23:02:01 +02:00
Sebastian Thiel
613a773c77
fix remaining tests that depend on the auto-creation of vbranches 2024-07-15 22:36:44 +02:00
Sebastian Thiel
822fd92b9d
Enforce locking by making locks part of the public oplog API.
This way, all methods that care about the `oplog` also have to
care about choosing the right lock.
2024-07-15 21:09:33 +02:00
Mattias Granlund
6692acd261 Simplify SystemEditor readable 2024-07-15 14:34:55 +01:00
Sebastian Thiel
09ca2d0284
enforce in-process-synchronization during worktree updates and prolonged reads in oplog
That way it's assured that reads and writes don't intersect, but assure we only
hold such lock for the shortest amount of time for reads and and for the
full duration of writes.
2024-07-15 14:21:15 +02:00
Sebastian Thiel
3e79238e7f
assure conflicts::mark() writes its file atomically
That way it can't be observed half-written, or remain in a half-written
state in case of crash.
2024-07-15 08:20:06 +02:00
Sebastian Thiel
b3b87b34a5
reduce tauri state
This is in preparation for making operations that access the filesystems
less stateful, which in turn makes it less akward to identify writing
methods with `&mut` lateron.

This includes accepting that all we really need is a single directory
to generate everything else we need on the fly. This simplifies commands.

For good measure, this also simplifies imports of smaller crates that are
involved.
2024-07-14 22:27:53 +02:00
Sebastian Thiel
4a7b63a56e
various refactors in main functions called during project load
* use `ctx` as name instead of `project_repository` to make lines shorter
  and more readable. This could be done everywhere once the type-name changes
  as well.
* Where possible, avoid using `&self` for `VirtualBranchActions` as there is no state.
  For now I avoided to remove its usage as field in the filesystem monitor.
* Use a more modern way to use state in `tauri` commands.
* Add the `Ext` suffix to what clearly is extension traits.
2024-07-14 21:32:55 +02:00
Sebastian Thiel
f48d0e2746
adapt to changes in gitbutler-branch crate 2024-07-14 21:32:55 +02:00
Sebastian Thiel
85b4e564cd
simplify module paths of gitbutler-branch crate 2024-07-14 21:32:55 +02:00
Sebastian Thiel
4501b5dd51
minimize the public API of the branch crate
Only keep public what needs to be public right now, which always
helps with refactoring later.
2024-07-14 21:32:55 +02:00
Sebastian Thiel
4805f6e7e7
adapt to changes in gitbutler-branch-actions 2024-07-14 21:32:55 +02:00
Sebastian Thiel
5e408f6b2d
Assure a single path to an item (struct, fn)
Also, simplify paths and optimize them (to some extend) to seem
non-redundant when `use`ing them.
2024-07-14 21:32:55 +02:00
Sebastian Thiel
0079f2bcbe
minimize the public API of gitbutler-branch-actions crate.
Also avoid private traits where functions would be easier to use.
2024-07-14 21:32:54 +02:00
Sebastian Thiel
6fb6201ab9
assure docs can be built without warnings by default.
It's a good way to review import paths and the public API.
2024-07-14 21:32:49 +02:00
Sebastian Thiel
eaa18da9d0
Make the ProjectSelector multi-window aware
That way it will not allow to open a project if it's known to be open already.
2024-07-12 15:19:09 +02:00
Sebastian Thiel
38f800d877
assure the multi-window lock actually works
This includes the UI is responding to issues.
2024-07-12 15:19:09 +02:00
Sebastian Thiel
24b8bdaa86
Open new existing projects with Alt + click in project popup.
This is intentionally non-obvious for now while it's new.
2024-07-12 15:19:09 +02:00
Sebastian Thiel
c310942b12
keep track of state per window
This allows multiple application windows to be opened and managed.
2024-07-12 15:19:09 +02:00
Sebastian Thiel
ccd6a6fe0d
let UI trigger necessary updates on addition and removal 2024-07-12 15:19:09 +02:00
Sebastian Thiel
00303704f4
add project-lock to generalized state
This means the current watcher also includes a file-lock for the current project.
Later this can be generalized to be per-window.
2024-07-12 15:19:09 +02:00
Sebastian Thiel
4d2a153aed
Use extractors for project-commands
That way, it's clearer what facilities or global state
are used when invoking a particular command.
2024-07-12 15:19:09 +02:00
Sebastian Thiel
c51be90aea
Merge pull request #4338 from gitbutlerapp/Fix-double-remote-fetch
Fix double remote fetch
2024-07-12 10:37:34 +02:00
Sebastian Thiel
5f4e0adb28
remove now unused default_target() function 2024-07-12 10:30:56 +02:00
Mattias Granlund
58d3cd5aff Fix double fetching of remote
- all remotes already fetched in existing iter/map
2024-07-12 00:38:46 +01:00
Mattias Granlund
f832e0b83a Fix double loading of things on open
- fetch event is already in use by front end for reloading
2024-07-12 01:30:04 +03:00
Caleb Owens
c982e78567
Merge pull request #4328 from gitbutlerapp/split-branch-manager-into-seprate-traits
Use impls rather than private traits
2024-07-10 17:50:35 +02:00
Caleb Owens
38d54e3eaf
Use impls rather than private traits 2024-07-10 17:42:05 +02:00
Caleb Owens
b732bdf622
Merge pull request #4326 from gitbutlerapp/split-branch-manager-into-seprate-traits
Split branch manager into seperate traits
2024-07-10 17:33:04 +02:00
Caleb Owens
482a176333
Added some high level docs 2024-07-10 17:25:48 +02:00
Caleb Owens
ca4cdfe968
Split branch manager into seperate traits 2024-07-10 17:23:50 +02:00
Kiril Videlov
d9d20d20e9
fixes a regression created during refactoring 2024-07-10 17:23:07 +02:00
Kiril Videlov
87f956d871
move ReferenceName tagged string to gitbutler-reference crate
gitbutler-reference is where ReferenceName belongs. There are other thing in this crate that are not nice, but let's clean those up!
2024-07-10 16:48:59 +02:00