upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/src/lib/git
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/git')
-rw-r--r--src/lib/git/identify_ahead_behind.rs8
-rw-r--r--src/lib/git/mod.rs94
-rw-r--r--src/lib/git/nostr_url.rs8
3 files changed, 59 insertions, 51 deletions
diff --git a/src/lib/git/identify_ahead_behind.rs b/src/lib/git/identify_ahead_behind.rs
index baea687..d736522 100644
--- a/src/lib/git/identify_ahead_behind.rs
+++ b/src/lib/git/identify_ahead_behind.rs
@@ -184,10 +184,10 @@ mod tests {
184 identify_ahead_behind(&git_repo, &Some("feature".to_string()), &None)?; 184 identify_ahead_behind(&git_repo, &Some("feature".to_string()), &None)?;
185 185
186 assert_eq!(from_branch, "feature"); 186 assert_eq!(from_branch, "feature");
187 assert_eq!(ahead, vec![ 187 assert_eq!(
188 oid_to_sha1(&feature_oid), 188 ahead,
189 oid_to_sha1(&dev_oid_first) 189 vec![oid_to_sha1(&feature_oid), oid_to_sha1(&dev_oid_first)]
190 ]); 190 );
191 assert_eq!(to_branch, "main"); 191 assert_eq!(to_branch, "main");
192 assert_eq!(behind, vec![]); 192 assert_eq!(behind, vec![]);
193 193
diff --git a/src/lib/git/mod.rs b/src/lib/git/mod.rs
index 0256457..d4bf2f5 100644
--- a/src/lib/git/mod.rs
+++ b/src/lib/git/mod.rs
@@ -888,7 +888,7 @@ pub fn save_git_config_item(git_repo: &Option<&Repo>, item: &str, value: &str) -
888 git2::Config::open_default()? 888 git2::Config::open_default()?
889 .open_global()? 889 .open_global()?
890 .set_str(item, value) 890 .set_str(item, value)
891 .context(format!("failed to set global git config item {}", item)) 891 .context(format!("failed to set global git config item {item}"))
892 } 892 }
893} 893}
894 894
@@ -901,10 +901,7 @@ pub fn remove_git_config_item(git_repo: &Option<&Repo>, item: &str) -> Result<bo
901 git2::Config::open_default()? 901 git2::Config::open_default()?
902 .open_global()? 902 .open_global()?
903 .remove(item) 903 .remove(item)
904 .context(format!( 904 .context(format!("failed to remove existing git config item {item}"))?;
905 "failed to remove existing git config item {}",
906 item
907 ))?;
908 Ok(true) 905 Ok(true)
909 } 906 }
910} 907}
@@ -1271,7 +1268,7 @@ mod tests {
1271 +some content1\n\\ \ 1268 +some content1\n\\ \
1272 No newline at end of file\n\ 1269 No newline at end of file\n\
1273 --\n\ 1270 --\n\
1274 libgit2 1.9.0\n\ 1271 libgit2 1.9.1\n\
1275 \n\ 1272 \n\
1276 ", 1273 ",
1277 git_repo.make_patch_from_commit(&oid_to_sha1(&oid), &None)?, 1274 git_repo.make_patch_from_commit(&oid_to_sha1(&oid), &None)?,
@@ -1307,7 +1304,7 @@ mod tests {
1307 +some content1\n\\ \ 1304 +some content1\n\\ \
1308 No newline at end of file\n\ 1305 No newline at end of file\n\
1309 --\n\ 1306 --\n\
1310 libgit2 1.9.0\n\ 1307 libgit2 1.9.1\n\
1311 \n\ 1308 \n\
1312 ", 1309 ",
1313 git_repo.make_patch_from_commit(&oid_to_sha1(&oid), &Some((3, 5)))?, 1310 git_repo.make_patch_from_commit(&oid_to_sha1(&oid), &Some((3, 5)))?,
@@ -1493,10 +1490,10 @@ mod tests {
1493 &oid_to_sha1(&feature_oid), 1490 &oid_to_sha1(&feature_oid),
1494 )?; 1491 )?;
1495 assert_eq!(ahead, vec![]); 1492 assert_eq!(ahead, vec![]);
1496 assert_eq!(behind, vec![ 1493 assert_eq!(
1497 oid_to_sha1(&behind_2_oid), 1494 behind,
1498 oid_to_sha1(&behind_1_oid), 1495 vec![oid_to_sha1(&behind_2_oid), oid_to_sha1(&behind_1_oid),],
1499 ],); 1496 );
1500 Ok(()) 1497 Ok(())
1501 } 1498 }
1502 1499
@@ -1518,10 +1515,10 @@ mod tests {
1518 &oid_to_sha1(&main_oid), 1515 &oid_to_sha1(&main_oid),
1519 &oid_to_sha1(&ahead_2_oid), 1516 &oid_to_sha1(&ahead_2_oid),
1520 )?; 1517 )?;
1521 assert_eq!(ahead, vec![ 1518 assert_eq!(
1522 oid_to_sha1(&ahead_2_oid), 1519 ahead,
1523 oid_to_sha1(&ahead_1_oid), 1520 vec![oid_to_sha1(&ahead_2_oid), oid_to_sha1(&ahead_1_oid),],
1524 ],); 1521 );
1525 assert_eq!(behind, vec![]); 1522 assert_eq!(behind, vec![]);
1526 Ok(()) 1523 Ok(())
1527 } 1524 }
@@ -1550,14 +1547,14 @@ mod tests {
1550 &oid_to_sha1(&behind_2_oid), 1547 &oid_to_sha1(&behind_2_oid),
1551 &oid_to_sha1(&ahead_2_oid), 1548 &oid_to_sha1(&ahead_2_oid),
1552 )?; 1549 )?;
1553 assert_eq!(ahead, vec![ 1550 assert_eq!(
1554 oid_to_sha1(&ahead_2_oid), 1551 ahead,
1555 oid_to_sha1(&ahead_1_oid) 1552 vec![oid_to_sha1(&ahead_2_oid), oid_to_sha1(&ahead_1_oid)],
1556 ],); 1553 );
1557 assert_eq!(behind, vec![ 1554 assert_eq!(
1558 oid_to_sha1(&behind_2_oid), 1555 behind,
1559 oid_to_sha1(&behind_1_oid) 1556 vec![oid_to_sha1(&behind_2_oid), oid_to_sha1(&behind_1_oid)],
1560 ],); 1557 );
1561 Ok(()) 1558 Ok(())
1562 } 1559 }
1563 } 1560 }
@@ -2212,9 +2209,10 @@ mod tests {
2212 test_repo.populate_with_test_branch()?; 2209 test_repo.populate_with_test_branch()?;
2213 test_repo.checkout("main")?; 2210 test_repo.checkout("main")?;
2214 2211
2215 assert_eq!(git_repo.parse_starting_commits("HEAD~1")?, vec![ 2212 assert_eq!(
2216 str_to_sha1("431b84edc0d2fa118d63faa3c2db9c73d630a5ae")? 2213 git_repo.parse_starting_commits("HEAD~1")?,
2217 ],); 2214 vec![str_to_sha1("431b84edc0d2fa118d63faa3c2db9c73d630a5ae")?],
2215 );
2218 Ok(()) 2216 Ok(())
2219 } 2217 }
2220 2218
@@ -2224,9 +2222,10 @@ mod tests {
2224 let git_repo = Repo::from_path(&test_repo.dir)?; 2222 let git_repo = Repo::from_path(&test_repo.dir)?;
2225 test_repo.populate_with_test_branch()?; 2223 test_repo.populate_with_test_branch()?;
2226 2224
2227 assert_eq!(git_repo.parse_starting_commits("HEAD~1")?, vec![ 2225 assert_eq!(
2228 str_to_sha1("82ff2bcc9aa94d1bd8faee723d4c8cc190d6061c")? 2226 git_repo.parse_starting_commits("HEAD~1")?,
2229 ],); 2227 vec![str_to_sha1("82ff2bcc9aa94d1bd8faee723d4c8cc190d6061c")?],
2228 );
2230 Ok(()) 2229 Ok(())
2231 } 2230 }
2232 } 2231 }
@@ -2240,10 +2239,13 @@ mod tests {
2240 test_repo.populate_with_test_branch()?; 2239 test_repo.populate_with_test_branch()?;
2241 test_repo.checkout("main")?; 2240 test_repo.checkout("main")?;
2242 2241
2243 assert_eq!(git_repo.parse_starting_commits("HEAD~2")?, vec![ 2242 assert_eq!(
2244 str_to_sha1("431b84edc0d2fa118d63faa3c2db9c73d630a5ae")?, 2243 git_repo.parse_starting_commits("HEAD~2")?,
2245 str_to_sha1("af474d8d271490e5c635aad337abdc050034b16a")?, 2244 vec![
2246 ],); 2245 str_to_sha1("431b84edc0d2fa118d63faa3c2db9c73d630a5ae")?,
2246 str_to_sha1("af474d8d271490e5c635aad337abdc050034b16a")?,
2247 ],
2248 );
2247 Ok(()) 2249 Ok(())
2248 } 2250 }
2249 } 2251 }
@@ -2256,11 +2258,14 @@ mod tests {
2256 let git_repo = Repo::from_path(&test_repo.dir)?; 2258 let git_repo = Repo::from_path(&test_repo.dir)?;
2257 test_repo.populate_with_test_branch()?; 2259 test_repo.populate_with_test_branch()?;
2258 2260
2259 assert_eq!(git_repo.parse_starting_commits("HEAD~3")?, vec![ 2261 assert_eq!(
2260 str_to_sha1("82ff2bcc9aa94d1bd8faee723d4c8cc190d6061c")?, 2262 git_repo.parse_starting_commits("HEAD~3")?,
2261 str_to_sha1("a23e6b05aaeb7d1471b4a838b51f337d5644eeb0")?, 2263 vec![
2262 str_to_sha1("7ab82116068982671a8111f27dc10599172334b2")?, 2264 str_to_sha1("82ff2bcc9aa94d1bd8faee723d4c8cc190d6061c")?,
2263 ],); 2265 str_to_sha1("a23e6b05aaeb7d1471b4a838b51f337d5644eeb0")?,
2266 str_to_sha1("7ab82116068982671a8111f27dc10599172334b2")?,
2267 ],
2268 );
2264 Ok(()) 2269 Ok(())
2265 } 2270 }
2266 } 2271 }
@@ -2274,11 +2279,14 @@ mod tests {
2274 test_repo.populate_with_test_branch()?; 2279 test_repo.populate_with_test_branch()?;
2275 test_repo.checkout("main")?; 2280 test_repo.checkout("main")?;
2276 2281
2277 assert_eq!(git_repo.parse_starting_commits("af474d8..a23e6b0")?, vec![ 2282 assert_eq!(
2278 str_to_sha1("a23e6b05aaeb7d1471b4a838b51f337d5644eeb0")?, 2283 git_repo.parse_starting_commits("af474d8..a23e6b0")?,
2279 str_to_sha1("7ab82116068982671a8111f27dc10599172334b2")?, 2284 vec![
2280 str_to_sha1("431b84edc0d2fa118d63faa3c2db9c73d630a5ae")?, 2285 str_to_sha1("a23e6b05aaeb7d1471b4a838b51f337d5644eeb0")?,
2281 ],); 2286 str_to_sha1("7ab82116068982671a8111f27dc10599172334b2")?,
2287 str_to_sha1("431b84edc0d2fa118d63faa3c2db9c73d630a5ae")?,
2288 ],
2289 );
2282 Ok(()) 2290 Ok(())
2283 } 2291 }
2284 } 2292 }
diff --git a/src/lib/git/nostr_url.rs b/src/lib/git/nostr_url.rs
index a9b08eb..e9b482f 100644
--- a/src/lib/git/nostr_url.rs
+++ b/src/lib/git/nostr_url.rs
@@ -71,13 +71,13 @@ impl fmt::Display for NostrUrlDecoded {
71 } 71 }
72 write!(f, "nostr://")?; 72 write!(f, "nostr://")?;
73 if let Some(user) = &self.user { 73 if let Some(user) = &self.user {
74 write!(f, "{}@", user)?; 74 write!(f, "{user}@")?;
75 } 75 }
76 if let Some(protocol) = &self.protocol { 76 if let Some(protocol) = &self.protocol {
77 write!(f, "{}/", protocol)?; 77 write!(f, "{protocol}/")?;
78 } 78 }
79 if let Some(nip05) = &self.nip05 { 79 if let Some(nip05) = &self.nip05 {
80 write!(f, "{}/", nip05)?; 80 write!(f, "{nip05}/")?;
81 } else { 81 } else {
82 write!(f, "{}/", self.coordinate.public_key.to_bech32().unwrap())?; 82 write!(f, "{}/", self.coordinate.public_key.to_bech32().unwrap())?;
83 } 83 }
@@ -454,7 +454,7 @@ impl CloneUrl {
454 format!("{}@", user.as_deref().unwrap_or("git")).as_str(), 454 format!("{}@", user.as_deref().unwrap_or("git")).as_str(),
455 ); 455 );
456 if url.port().is_some() { 456 if url.port().is_some() {
457 formatted_url = format!("ssh://{}", formatted_url); 457 formatted_url = format!("ssh://{formatted_url}");
458 } else { 458 } else {
459 formatted_url = replace_first_occurrence(&formatted_url, '/', ':'); 459 formatted_url = replace_first_occurrence(&formatted_url, '/', ':');
460 } 460 }