Commit Graph

1491 Commits

Author SHA1 Message Date
Kiril Videlov
03659e4731 Add tests for Stack method push_series 2024-10-02 01:49:12 +02:00
Kiril Videlov
b5325e2d55 Add tests for Stack method update_series 2024-10-02 01:20:37 +02:00
Kiril Videlov
28a6e0a2bf Fixe an issue with Stack.add_series 2024-10-01 23:46:22 +02:00
Kiril Videlov
9ce6dd8635 Rename Stack trait methods to refer to 'series' 2024-10-01 21:51:53 +02:00
Kiril Videlov
4cf5983dfb Stacking: maintain correct order of heads when updating 2024-10-01 18:28:24 +02:00
Kiril Videlov
72e6004f1c Stack: move functions for manipulating heads to own module 2024-10-01 17:41:33 +02:00
Kiril Videlov
00e2b891dd Stacking: Assert no loose commits can be created (outside of a series) 2024-10-01 17:37:26 +02:00
Kiril Videlov
1b953d286c Stacking: enforce that patch references point to changeIDs when available 2024-10-01 17:19:04 +02:00
Kiril Videlov
04c17656bb Stacking: Maintain the correct heads order when adding new ones 2024-10-01 16:12:49 +02:00
estib
876817eaba Factor out the move_commit function
Move the `move_commit` function to a separate module.
Add some unit tests for testing whether the commit is locked.
2024-10-01 13:35:49 +02:00
Kiril Videlov
3ba6f7238a Tests for Stack trait implementation 2024-09-30 00:22:35 +02:00
Kiril Videlov
d0c1679b68 Adds a "list_branches" (series) method to the Stack trait
This pre-computes a list of which commits/patches belong to which series in the stack
2024-09-29 22:18:15 +02:00
Kiril Videlov
f6ec80d8ce Adds a trait Stack with an implementation for Branch
This provides a well defined interface for interacting with Stacks. It is implemented for gitbutler_branch::Branch, and it is specifically meant to operate on and update the `heads` field of Branch
This facilitates creating, updating, removing, pushing and listing of "stacked branches" within the Stack (formerly the virtual branch).
2024-09-29 19:26:39 +02:00
Kiril Videlov
a2aafd919b Introduce PatchReference and a heads field on Branch
- The PatchReference type represents a "reference" that is entirely managed by GitButler. It can either point to a commit or a GitButler change (which itself points to a commit)
- The Branch type (as persisted in virtual_branches.toml) now has a `heads` fields with a list of PatchReferences. This list is not to be meant to be manipulated directly, but with the `Stack` trait
2024-09-28 12:34:29 +02:00
Caleb Owens
a468ec7783 Added the tests 2024-10-01 17:12:46 +02:00
Mattias Granlund
1cdc3b7110 Add patch series to vbranch API struct 2024-10-01 16:09:07 +02:00
Caleb Owens
d571ee2ddb Fix applying mergable branch 2024-10-01 13:32:48 +02:00
Kiril Videlov
3742349a22
Merge pull request #4999 from icorbrey-contrib/master
chore: Bump `git2-hooks`
2024-09-30 19:00:56 +02:00
Caleb Owens
3a921031d3 Remove erroniously preserved dbg statements 2024-09-30 18:08:23 +02:00
Caleb Owens
c7d2bfa025 Support symlinks in create_wd_tree 2024-09-30 18:02:46 +02:00
Isaac Corbrey
7045f1c365 chore: Bump git2-hooks 2024-09-30 11:54:34 -04:00
Caleb Owens
511ca5212e Support executable blobs 2024-09-30 17:34:20 +02:00
Caleb Owens
6d52977202 Remove worktree_path and use workdir function in create_wd_tree 2024-09-30 12:27:34 +02:00
Caleb Owens
e4ecddc690 Extract create_wd_tree test into test directory 2024-09-30 12:26:31 +02:00
Kiril Videlov
9dde8e7f7e
Merge pull request #4995 from gitbutlerapp/Use-new-checkout_combined_trees-in-upstream-integration
Use the new checkout_combined_trees in upstream integration
2024-09-30 11:36:28 +02:00
Caleb Owens
dc45ab2aac Use the new checkout_combined_trees in upstream integration 2024-09-30 02:01:11 +02:00
Caleb Owens
c3f6db382a Add more tests to undo commit 2024-09-30 01:53:21 +02:00
Caleb Owens
87663bea2d Remove instances where add_all was used to get a tree of the current working directory 2024-09-29 23:39:23 +02:00
Caleb Owens
06af1c5fe9 Ensure that the index indeed remains unchanged 2024-09-29 23:23:50 +02:00
Caleb Owens
102b941d3e Use new git2 implementation 2024-09-29 23:18:07 +02:00
Caleb Owens
47a4fc03c7 Update testing framework 2024-09-29 20:23:23 +02:00
Caleb Owens
be1fc2cf7e Checkout trees after reordering (and make generic function for it) 2024-09-28 18:46:41 +02:00
Caleb Owens
947a9c7ff1 Fix branch.tree properties getting set to conflicted trees. 2024-09-28 18:45:11 +02:00
Caleb Owens
7f348d8a6d Add tests for reordering commits 2024-09-28 17:50:32 +02:00
Nico Domino
216fca1cec
fix: simplify crates/package.json setup (#4986) 2024-09-28 15:29:48 +00:00
Nico Domino
8b84f46df1
fix: add crates to pnpm-workspace to avoid Vercel CI (#4855) 2024-09-28 12:19:25 +02:00
Caleb Owens
31242dbe2b Add helper function for matching trees, and start testing rebasing.
Basic rebasing tests
2024-09-26 14:42:14 +02:00
Caleb Owens
46fa53a878 Fix merge commit unconflicted state
more tests
2024-09-25 23:37:37 +02:00
Caleb Owens
9cbebba5cf
Fix testcase for merge_vbranch_upstream_clean_rebase 2024-09-25 15:15:29 +02:00
Caleb Owens
8a84753e92
Merge branch 'master' into Testing-rebase 2024-09-24 20:00:38 +02:00
Caleb Owens
f74f2dcf26 More tests! 2024-09-24 19:52:21 +02:00
Kiril Videlov
86460fb675
Merge pull request #4964 from Byron/commit-with-headers
`gitoxide` for commit with headers
2024-09-24 18:47:29 +02:00
Caleb Owens
bbbf81c4c1 Start to introduce index resolution tests 2024-09-24 17:01:38 +02:00
Sebastian Thiel
0e63323456
remove commit-buffer as it's not needed anymore for dealing with headers. 2024-09-24 15:57:58 +02:00
Sebastian Thiel
fe7d5d92e7
add crate to keep gitoxide conversions to prevent duplication 2024-09-24 15:54:07 +02:00
Caleb Owens
a395dab091 Refactor some of rebase.rs 2024-09-24 13:20:02 +02:00
Sebastian Thiel
d16656816d
Use gix to create signed commits with multiple headers. 2024-09-24 13:02:34 +02:00
Sebastian Thiel
ada4b17c47
Make sure test doesn't fail if the default branch isn't master.
Ideally repository creation is standardized to avoid these issues,
but for now this is just the minimal fix to make the test suite
work for me.
2024-09-24 11:08:10 +02:00
Sebastian Thiel
9f6c01c5ab
make tests work under more conditions
Currently tests rely to be run globally so `branch-actions` can set
the required feature flags.

Now more crates that need it will set it so that their tests can be
run individually.
2024-09-24 11:01:13 +02:00
estib
7dbadb13a9 Get the upstream name from the pushed virtual branch
Once the push of a virtual branch succeeded, return the ref name and the remote name in order to correctly determine which branch name to create a PR from.
2024-09-16 18:15:06 +02:00
estib
184629d1d4 Create a method to find a commit by its ID
Find a commit in the repository by its ID
2024-09-18 16:46:16 +02:00
Nico Domino
992496f6a5
fix: protect read file from path traversal (#4943) 2024-09-22 17:12:45 +00:00
estib
d1c71898cc The edit branch should not be listed in the side bar
The `gitbutler/edit` branch should not be listed in the side bar of the application
2024-09-18 14:28:25 +02:00
Caleb Owens
224c03528b Improve index resolution 2024-09-18 11:45:38 +02:00
Caleb Owens
2a3f0e8a04 Fix (some) wrong files displaying in edit mode 2024-09-17 14:31:58 +02:00
estib
4dca18ff3e fix: Calculate the right file tree when resolving
Get the correct file tree when resolving a conflict
2024-09-18 11:11:00 +02:00
ndom91
ad2290dc7a fix: bump tauri@1.8.0 in preparation for v2 upgrade 2024-09-17 17:10:45 +02:00
Caleb Owens
cc8d3f4810 Did shit good 2024-09-16 16:42:23 +02:00
Caleb Owens
be4652653a Handle merge commits better in edit mdoe 2024-09-13 17:20:13 +02:00
Caleb Owens
d995a04b31 Correct merge commit logic 2024-09-13 12:57:46 +02:00
Caleb Owens
4ff32885e4 Start using new rebasing code when applying branches 2024-09-13 12:34:21 +02:00
Caleb Owens
e626a6f6ba Resolve creation/deletion conflicts 2024-09-13 12:32:01 +02:00
Kiril Videlov
57c3e8b5d2
Merge pull request #4900 from Byron/better-locking
ignore lock-errors on filesystems that lack support
2024-09-16 10:22:51 +02:00
Mattias Granlund
b4f30530b0 Drop unnecessary mapping of error code on push failure
- the removed line would overwrite any previously set code
- unknown is still the default if code is missing
2024-09-16 10:20:14 +02:00
Sebastian Thiel
31626b726b
Edit trees directly when running create_wd_tree() to bypass the index. 2024-09-14 18:48:01 +02:00
Sebastian Thiel
6285d9177e
fix: ignore lock-failures on filesystems that don't support it (#4895)
Just like `cargo` does.
2024-09-14 08:48:17 +02:00
Esteban Vega
1a47f5ec4d
Merge pull request #4850 from gitbutlerapp/ndom91/use-template-dropdown
fix: refactor pr template path input to pre-filled `Select` instead of `TextBox`
2024-09-13 17:25:58 +02:00
Caleb Owens
edd0cbe0e6 Rename unapplying 2024-09-13 16:58:42 +02:00
ndom91
aa91c4ca42 fix: cargo test 2024-09-13 12:25:21 +02:00
ndom91
e8bb66c151 fix: use relativePath and get project basePath on rust side 2024-09-13 12:01:03 +02:00
ndom91
e842b282ae fix: merge conflicts 2024-09-13 11:15:06 +02:00
Caleb Owens
db992dedfa
Merge pull request #4869 from gitbutlerapp/update-api
Update api
2024-09-12 13:23:05 +02:00
Caleb Owens
932070ca1f
Read index 2024-09-12 13:03:04 +02:00
Caleb Owens
1389b9e465
A time before time 2024-09-12 12:46:36 +02:00
Sebastian Thiel
630c253637
for safety, don't fail if the file to be removed doesn't exist.
The code could run into this if `allow_new_file` is `true` and no
file actually exists.
Maybe in practice this can't happen, but calls can be made that trigger this.
2024-09-11 21:39:21 +02:00
Sebastian Thiel
ffdb0f6e2f
Minor refactor for slightly improved readability
Maybe the intent of some parts is clearer now as well.
2024-09-11 21:34:18 +02:00
Kiril Videlov
530a982379
fixes a bug where discarding created files does not work 2024-09-11 21:06:50 +02:00
Kiril Videlov
63a8603054
fixes a bug where discarding deleted files doesnt work 2024-09-11 21:06:34 +02:00
Kiril Videlov
8ad8797b5d
whenever a hunk is reversed also reverse change type 2024-09-11 20:48:09 +02:00
Kiril Videlov
199129162d
on empty new file the generic hunk is type added 2024-09-11 20:47:15 +02:00
Caleb Owens
aeea013ba0
Update base branch button feature flagged 2024-09-11 15:18:20 +02:00
Caleb Owens
6e7aefd5c3
Merge commiting 2024-09-11 14:47:36 +02:00
Caleb Owens
955c99e5d8
Rebasing working 2024-09-11 13:43:39 +02:00
Caleb Owens
191686ec4d
Ahhh, don't loose shit 2024-09-11 11:23:20 +02:00
ndom91
8194283275 fix: simplify error handling read_file_from_workspa 2024-09-10 19:22:03 +02:00
ndom91
b7a037b1dc fix: move new template methods to PRService 2024-09-10 19:18:42 +02:00
ndom91
13c866da73 Merged origin/master into ndom91/use-template-dropdown 2024-09-10 18:56:29 +02:00
ndom91
781fbb5a13 fix: merge conflict 2024-09-10 18:55:45 +02:00
GitButler
e889d90779 GitButler WIP Commit 2024-09-10 18:45:48 +02:00
Kiril Videlov
f93fad98c1
Update gix-path to version 0.10.11 2024-09-10 17:37:10 +02:00
ndom91
f53b5b8f2e chore: more cleanup 2024-09-10 17:34:22 +02:00
Kiril Videlov
4ddc6a9a32
Merge pull request #4863 from gitbutlerapp/update-branch-repo-commit-removal
fix a bug where deleting a vbranch fails to update state
2024-09-10 17:32:02 +02:00
ndom91
4aa9e96ced fix: use pullRequestPath as boolean 2024-09-10 17:24:51 +02:00
Kiril Videlov
620ea1418f
Merge pull request #4864 from Zamoca42/fix/wsl-window-maximize-bug
fix: A bug with Wayland display (Error 71) in WSL
2024-09-10 17:23:34 +02:00
ndom91
eecea80884 fix: read pr tempalte from disk 2024-09-10 17:14:35 +02:00
Chooooooo
d4718f73bc fix: Disable window state plugin on Linux
Disable the `tauri_plugin_window_state` plugin on Linux platforms as it
causes issues with the application's window behavior. This change ensures
the application runs smoothly across all supported platforms.
2024-09-10 23:42:24 +09:00
ndom91
25bbe28411 fix: cleanup and pass absolute path from rust to FE 2024-09-10 13:55:18 +02:00
Chooooooo
0dc81b1e49 fix: Disable window state plugin for now
The window state plugin is causing issues with the application, so it is being temporarily disabled. This change will allow the application to function without the plugin until the issue can be resolved.
2024-09-10 20:42:47 +09:00
ndom91
e888025499 fix: move PrTemplate fns to gitHost 2024-09-10 12:22:02 +02:00
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