Merge branch 'develop'

This commit is contained in:
2022-07-21 20:05:57 +02:00
9 changed files with 67 additions and 57 deletions

81
Cargo.lock generated
View File

@@ -47,9 +47,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]] [[package]]
name = "bytes" name = "bytes"
version = "1.1.0" version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" checksum = "f0b3de4a0c5e67e16066a0715723abd91edc2f9001d09c46e1dca929351e130e"
[[package]] [[package]]
name = "cache-padded" name = "cache-padded"
@@ -80,9 +80,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]] [[package]]
name = "clap" name = "clap"
version = "3.2.8" version = "3.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "190814073e85d238f31ff738fcb0bf6910cedeb73376c87cd69291028966fd83" checksum = "54635806b078b7925d6e36810b1755f2a4b5b4d57560432c1ecf60bcbe10602b"
dependencies = [ dependencies = [
"atty", "atty",
"bitflags", "bitflags",
@@ -332,7 +332,7 @@ dependencies = [
[[package]] [[package]]
name = "git-repo-manager" name = "git-repo-manager"
version = "0.7.5" version = "0.7.6"
dependencies = [ dependencies = [
"clap", "clap",
"comfy-table", "comfy-table",
@@ -367,9 +367,9 @@ dependencies = [
[[package]] [[package]]
name = "hashbrown" name = "hashbrown"
version = "0.12.1" version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db0d4cf898abf0081f964436dc980e96670a0f36863e4b83aaacdb65c9d7ccc3" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]] [[package]]
name = "heck" name = "heck"
@@ -590,9 +590,9 @@ dependencies = [
[[package]] [[package]]
name = "once_cell" name = "once_cell"
version = "1.12.0" version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225" checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1"
[[package]] [[package]]
name = "openssl-probe" name = "openssl-probe"
@@ -602,18 +602,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]] [[package]]
name = "openssl-src" name = "openssl-src"
version = "111.21.0+1.1.1p" version = "111.22.0+1.1.1q"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d0a8313729211913936f1b95ca47a5fc7f2e04cd658c115388287f8a8361008" checksum = "8f31f0d509d1c1ae9cada2f9539ff8f37933831fd5098879e482aa687d659853"
dependencies = [ dependencies = [
"cc", "cc",
] ]
[[package]] [[package]]
name = "openssl-sys" name = "openssl-sys"
version = "0.9.74" version = "0.9.75"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "835363342df5fba8354c5b453325b110ffd54044e588c539cf2f20a8014e4cb1" checksum = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f"
dependencies = [ dependencies = [
"autocfg", "autocfg",
"cc", "cc",
@@ -625,9 +625,9 @@ dependencies = [
[[package]] [[package]]
name = "os_str_bytes" name = "os_str_bytes"
version = "6.1.0" version = "6.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21326818e99cfe6ce1e524c2a805c189a99b5ae555a35d19f9a284b427d86afa" checksum = "648001efe5d5c0102d8cea768e348da85d90af8ba91f0bea908f157951493cd4"
[[package]] [[package]]
name = "parking" name = "parking"
@@ -677,18 +677,18 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
[[package]] [[package]]
name = "pin-project" name = "pin-project"
version = "1.0.10" version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e" checksum = "78203e83c48cffbe01e4a2d35d566ca4de445d79a85372fc64e378bfc812a260"
dependencies = [ dependencies = [
"pin-project-internal", "pin-project-internal",
] ]
[[package]] [[package]]
name = "pin-project-internal" name = "pin-project-internal"
version = "1.0.10" version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb" checksum = "710faf75e1b33345361201d36d04e98ac1ed8909151a017ed384700836104c74"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -821,9 +821,9 @@ dependencies = [
[[package]] [[package]]
name = "regex" name = "regex"
version = "1.5.6" version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1" checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
dependencies = [ dependencies = [
"aho-corasick", "aho-corasick",
"memchr", "memchr",
@@ -832,9 +832,9 @@ dependencies = [
[[package]] [[package]]
name = "regex-syntax" name = "regex-syntax"
version = "0.6.26" version = "0.6.27"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64" checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
[[package]] [[package]]
name = "remove_dir_all" name = "remove_dir_all"
@@ -847,9 +847,9 @@ dependencies = [
[[package]] [[package]]
name = "rustversion" name = "rustversion"
version = "1.0.7" version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a0a5f7c728f5d284929a1cccb5bc19884422bfe6ef4d6c409da2c41838983fcf" checksum = "24c8ad4f0c00e1eb5bc7614d236a7f1300e3dbd76b68cac8e06fb00b015ad8d8"
[[package]] [[package]]
name = "ryu" name = "ryu"
@@ -875,18 +875,18 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.137" version = "1.0.140"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" checksum = "fc855a42c7967b7c369eb5860f7164ef1f6f81c20c7cc1141f2a604e18723b03"
dependencies = [ dependencies = [
"serde_derive", "serde_derive",
] ]
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"
version = "1.0.137" version = "1.0.140"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be" checksum = "6f2122636b9fe3b81f1cb25099fcf2d3f542cdb1d45940d56c713158884a05da"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -906,9 +906,9 @@ dependencies = [
[[package]] [[package]]
name = "serde_yaml" name = "serde_yaml"
version = "0.8.24" version = "0.8.26"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "707d15895415db6628332b737c838b88c598522e4dc70647e59b72312924aebc" checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"ryu", "ryu",
@@ -957,9 +957,12 @@ dependencies = [
[[package]] [[package]]
name = "slab" name = "slab"
version = "0.4.6" version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32" checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef"
dependencies = [
"autocfg",
]
[[package]] [[package]]
name = "sluice" name = "sluice"
@@ -1118,9 +1121,9 @@ dependencies = [
[[package]] [[package]]
name = "tracing-attributes" name = "tracing-attributes"
version = "0.1.21" version = "0.1.22"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc6b8ad3567499f98a1db7a752b07a7c8c7c7c34c332ec00effb2b0027974b7c" checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -1154,15 +1157,15 @@ checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992"
[[package]] [[package]]
name = "unicode-ident" name = "unicode-ident"
version = "1.0.1" version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c" checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7"
[[package]] [[package]]
name = "unicode-normalization" name = "unicode-normalization"
version = "0.1.20" version = "0.1.21"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81dee68f85cab8cf68dec42158baf3a79a1cdc065a8b103025965d6ccb7f6cbd" checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6"
dependencies = [ dependencies = [
"tinyvec", "tinyvec",
] ]

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "git-repo-manager" name = "git-repo-manager"
version = "0.7.5" version = "0.7.6"
edition = "2021" edition = "2021"
authors = [ authors = [
@@ -44,7 +44,7 @@ path = "src/grm/main.rs"
version = "=0.5.9" version = "=0.5.9"
[dependencies.serde] [dependencies.serde]
version = "=1.0.137" version = "=1.0.140"
features = ["derive"] features = ["derive"]
[dependencies.git2] [dependencies.git2]
@@ -54,20 +54,20 @@ version = "=0.14.4"
version = "=2.1.0" version = "=2.1.0"
[dependencies.clap] [dependencies.clap]
version = "=3.2.8" version = "=3.2.14"
features = ["derive", "cargo"] features = ["derive", "cargo"]
[dependencies.console] [dependencies.console]
version = "=0.15.0" version = "=0.15.0"
[dependencies.regex] [dependencies.regex]
version = "=1.5.6" version = "=1.6.0"
[dependencies.comfy-table] [dependencies.comfy-table]
version = "=6.0.0" version = "=6.0.0"
[dependencies.serde_yaml] [dependencies.serde_yaml]
version = "=0.8.24" version = "=0.8.26"
[dependencies.serde_json] [dependencies.serde_json]
version = "=1.0.82" version = "=1.0.82"

View File

@@ -32,6 +32,13 @@ build-release:
build-release-static: build-release-static:
cargo build --release --target {{static_target}} --features=static-build cargo build --release --target {{static_target}} --features=static-build
pushall:
for r in $(git remote) ; do \
for branch in develop master ; do \
git push $r $branch ; \
done ; \
done
release-patch: release-patch:
./release.sh patch ./release.sh patch

View File

@@ -10,7 +10,7 @@
- [Git Worktrees](./worktrees.md) - [Git Worktrees](./worktrees.md)
- [Working with Worktrees](./worktree_working.md) - [Working with Worktrees](./worktree_working.md)
- [Worktrees and Remotes](./worktree_remotes.md) - [Worktrees and Remotes](./worktree_remotes.md)
- [Behaviour Details](./worktree_behaviour.md) - [Behavior Details](./worktree_behavior.md)
- [FAQ](./faq.md) - [FAQ](./faq.md)
- [Developer Documentation](./developing.md) - [Developer Documentation](./developing.md)
- [Testing](./testing.md) - [Testing](./testing.md)

View File

@@ -16,7 +16,7 @@ functions (like validation of certain input).
## E2E tests ## E2E tests
The main focus of the testing setup lays on the e2e tests. Each user-facing The main focus of the testing setup lays on the e2e tests. Each user-facing
behaviour *should* have a corresponding e2e test. These are the most important behavior *should* have a corresponding e2e test. These are the most important
tests, as they test functionality the user will use in the end. tests, as they test functionality the user will use in the end.
The test suite is written in python and uses The test suite is written in python and uses
@@ -28,7 +28,7 @@ Effectively, each tests works like this:
* Set up some prerequisites (e.g. different git repositories or configuration * Set up some prerequisites (e.g. different git repositories or configuration
files) files)
* Run `grm` * Run `grm`
* Check that everything is according to expected behaviour (e.g. that `grm` had * Check that everything is according to expected behavior (e.g. that `grm` had
certain output and exit code, that the target repositories have certain certain output and exit code, that the target repositories have certain
branches, heads and remotes, ...) branches, heads and remotes, ...)
@@ -39,8 +39,8 @@ configuration exists, what a config value is set to, how the repository looks
like, ...) like, ...)
Whenever you write a new test, think about the different circumstances that can Whenever you write a new test, think about the different circumstances that can
happen. What are the failure modes? What affects the behaviour? Parametrize each happen. What are the failure modes? What affects the behavior? Parametrize each
of these behaviours. of these behaviors.
### Optimization ### Optimization

View File

@@ -70,7 +70,7 @@ def test_worktree_add(
explicit_track_branch_name = f"{default_remote}/{worktree_name}" explicit_track_branch_name = f"{default_remote}/{worktree_name}"
timestamp = datetime.datetime.now().replace(microsecond=0).isoformat() timestamp = datetime.datetime.now().replace(microsecond=0).isoformat()
# GitPython has some weird behaviour here. It is not possible to use kwargs # GitPython has some weird behavior here. It is not possible to use kwargs
# to set the commit and author date. # to set the commit and author date.
# #
# `committer_date=x` (which is documented) does not work, as `git commit` # `committer_date=x` (which is documented) does not work, as `git commit`
@@ -79,7 +79,7 @@ def test_worktree_add(
# `author_date=x` does not work, as it's now called --date in `git commit` # `author_date=x` does not work, as it's now called --date in `git commit`
# #
# `date=x` should work, but is refused by GitPython, as it does not know # `date=x` should work, but is refused by GitPython, as it does not know
# about the new behaviour in `git commit` # about the new behavior in `git commit`
# #
# Fortunately, there are env variables that control those timestamps. # Fortunately, there are env variables that control those timestamps.
os.environ["GIT_COMMITTER_DATE"] = str(timestamp) os.environ["GIT_COMMITTER_DATE"] = str(timestamp)

View File

@@ -233,7 +233,7 @@ impl Worktree {
let operation = operation.map_err(convert_libgit2_error)?; let operation = operation.map_err(convert_libgit2_error)?;
// This is required to preserve the commiter of the rebased // This is required to preserve the commiter of the rebased
// commits, which is the expected behaviour. // commits, which is the expected behavior.
let rebased_commit = repo let rebased_commit = repo
.0 .0
.find_commit(operation.id()) .find_commit(operation.id())
@@ -357,7 +357,7 @@ impl Worktree {
let operation = operation.map_err(convert_libgit2_error)?; let operation = operation.map_err(convert_libgit2_error)?;
// This is required to preserve the commiter of the rebased // This is required to preserve the commiter of the rebased
// commits, which is the expected behaviour. // commits, which is the expected behavior.
let rebased_commit = repo let rebased_commit = repo
.0 .0
.find_commit(operation.id()) .find_commit(operation.id())

View File

@@ -81,9 +81,9 @@
//! * Instead of just picking `origin/prefix/foobar`, grm will complain because //! * Instead of just picking `origin/prefix/foobar`, grm will complain because
//! it also selected `remote2/foobar`. //! it also selected `remote2/foobar`.
//! //!
//! This is just emergent behaviour of the logic above. Fixing it would require //! This is just emergent behavior of the logic above. Fixing it would require
//! additional logic for that edge case. I assume that it's just so rare to get //! additional logic for that edge case. I assume that it's just so rare to get
//! that behaviour that it's acceptable for now. //! that behavior that it's acceptable for now.
//! //!
//! Now we either have a commit, we aborted, or we do not have commit. In the //! Now we either have a commit, we aborted, or we do not have commit. In the
//! last case, as stated above, we check out the "default" branch. //! last case, as stated above, we check out the "default" branch.
@@ -137,7 +137,7 @@
//! `foobar`. As both `remote1/foobar` and `remote2/foobar` as the same, the new //! `foobar`. As both `remote1/foobar` and `remote2/foobar` as the same, the new
//! worktree will use that as the state of the new branch. But as `grm` cannot //! worktree will use that as the state of the new branch. But as `grm` cannot
//! tell which remote branch to track, it will not set up remote tracking. This //! tell which remote branch to track, it will not set up remote tracking. This
//! behaviour may be a bit confusing, but first, there is no good way to resolve //! behavior may be a bit confusing, but first, there is no good way to resolve
//! this, and second, the situation should be really rare (when having multiple //! this, and second, the situation should be really rare (when having multiple
//! remotes, you would generally have a `default_remote` configured). //! remotes, you would generally have a `default_remote` configured).
//! //!
@@ -463,7 +463,7 @@ impl<'a> Worktree<'a, WithRemoteTrackingBranch<'a>> {
// //
// > failed to make directory '/{repo}/.git-main-working-tree/worktrees/dir/test // > failed to make directory '/{repo}/.git-main-working-tree/worktrees/dir/test
// //
// This is a discrepancy between the behaviour of libgit2 and the // This is a discrepancy between the behavior of libgit2 and the
// git CLI when creating worktrees with slashes: // git CLI when creating worktrees with slashes:
// //
// The git CLI will create the worktree's configuration directory // The git CLI will create the worktree's configuration directory