Skip to content

Commit

Permalink
Merge branch 'fix-26'
Browse files Browse the repository at this point in the history
  • Loading branch information
Byron committed Nov 18, 2022
2 parents 3708131 + 87678db commit 7ea3d6e
Show file tree
Hide file tree
Showing 18 changed files with 207 additions and 62 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Expand Up @@ -15,7 +15,7 @@ include = ["src/**/*", "LICENSE.md", "README.md", "CHANGELOG.md"]
test = false

[dependencies]
git-repository = { version = "0.27.0", default-features = false, features = ["max-performance-safe", "blocking-network-client", "blocking-http-transport"] }
git-repository = { version = "0.28.0", default-features = false, features = ["max-performance-safe", "blocking-network-client", "blocking-http-transport"] }
serde = { version = "1", features = ["std", "derive"] }
serde_json = "1"
bstr = "1.0.1"
Expand Down
99 changes: 52 additions & 47 deletions src/index/diff/delegate.rs
Expand Up @@ -35,7 +35,7 @@ impl Delegate {
match change.event {
Addition { entry_mode, id } => {
if let Some(obj) = entry_data(entry_mode, id)? {
for line in (&obj.data).lines() {
for line in obj.data.lines() {
let version = version_from_json_line(line, change.location)?;
self.changes.push(if version.yanked {
Change::Yanked(version)
Expand Down Expand Up @@ -75,67 +75,72 @@ impl Delegate {
.iter()
.map(|&line| input.interner[line].as_bstr())
.peekable();
match (lines_before.peek().is_some(), lines_after.peek().is_some()) {
(true, false) => {
for removed in lines_before {
match version_from_json_line(removed, location) {
Ok(version) => {
self.delete_version_ids.insert(version.id());
}
Err(e) => {
err = Some(e);
break;
let mut remember = |version: CrateVersion| {
self.changes.push(if version.yanked {
Change::Yanked(version)
} else {
Change::Added(version)
});
};
'outer: loop {
match (lines_before.peek().is_some(), lines_after.peek().is_some())
{
(true, false) => {
for removed in lines_before {
match version_from_json_line(removed, location) {
Ok(version) => {
self.delete_version_ids.insert(version.id());
}
Err(e) => {
err = Some(e);
break;
}
}
}
break 'outer;
}
}
(false, true) => {
for inserted in lines_after {
match version_from_json_line(inserted, location) {
Ok(version) => {
self.changes.push(if version.yanked {
Change::Yanked(version)
} else {
Change::Added(version)
});
}
Err(e) => {
err = Some(e);
break;
(false, true) => {
for inserted in lines_after {
match version_from_json_line(inserted, location) {
Ok(version) => remember(version),
Err(e) => {
err = Some(e);
break;
}
}
}
break 'outer;
}
}
(true, true) => {
for (removed, inserted) in lines_before.zip(lines_after) {
match version_from_json_line(inserted, location).and_then(
|inserted| {
version_from_json_line(removed, location)
.map(|removed| (removed, inserted))
},
) {
Ok((removed, inserted)) => {
if removed.yanked != inserted.yanked {
self.changes.push(if inserted.yanked {
Change::Yanked(inserted)
} else {
Change::Added(inserted)
});
(true, true) => {
for (removed, inserted) in
lines_before.by_ref().zip(lines_after.by_ref())
{
match version_from_json_line(inserted, location)
.and_then(|inserted| {
version_from_json_line(removed, location)
.map(|removed| (removed, inserted))
}) {
Ok((removed_version, inserted_version)) => {
if removed_version.yanked
!= inserted_version.yanked
{
remember(inserted_version);
}
}
Err(e) => {
err = Some(e);
break;
}
}
Err(e) => {
err = Some(e);
break;
}
}
}
(false, false) => break 'outer,
}
(false, false) => {}
}
},
);
if let Some(err) = err {
return Err(err.into());
return Err(err);
}
}
}
Expand Down
8 changes: 3 additions & 5 deletions src/index/diff/mod.rs
Expand Up @@ -97,14 +97,12 @@ impl Index {
.ok()
.and_then(|head| {
head.into_remote(git::remote::Direction::Fetch)
.map(|r| r.ok())
.flatten()
.and_then(|r| r.ok())
})
.or_else(|| {
self.repo
.find_default_remote(git::remote::Direction::Fetch)
.map(|r| r.ok())
.flatten()
.and_then(|r| r.ok())
})
})
})
Expand Down Expand Up @@ -146,7 +144,7 @@ impl Index {
.iter()
.find_map(|m| match &m.remote {
git::remote::fetch::Source::Ref(r) => (r.unpack().0 == branch_name)
.then(|| m.local.as_ref())
.then_some(m.local.as_ref())
.flatten(),
_ => None,
})
Expand Down
Git LFS file not shown
4 changes: 4 additions & 0 deletions tests/fixtures/index-parts/commit.list
Expand Up @@ -328,3 +328,7 @@ f23a8e44f4eb505ae1d228d14053f3ab65ce3382
20eeece15a0dd4f7fa505409a5914debfb84006e
reproduce-#19
reproduce-#20
reproduce-#26-1
reproduce-#26-2
reproduce-#26-3
reproduce-#26-4
1 change: 0 additions & 1 deletion tests/fixtures/index-parts/reproduce-#19.msg
@@ -1,2 +1 @@
reproduce issue #19
reproduce issue #19
12 changes: 12 additions & 0 deletions tests/fixtures/index-parts/reproduce-#26-1.diff
@@ -0,0 +1,12 @@
diff --git b/an/si/ansi-color-codec a/an/si/ansi-color-codec
new file mode 100644
index 0000000000..f3400fa0eb
--- /dev/null
+++ a/an/si/ansi-color-codec
@@ -0,0 +1,6 @@
+{"name":"ansi-color-codec","vers":"0.2.9","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"a18b40315b9f13d98ae2ee8df35cdb810d696d197f859c15365fb6d34ecbba11","features":{},"yanked":true,"links":null}
+{"name":"ansi-color-codec","vers":"0.3.1","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"b14431739f0b027eede3789fc83f1c13deae067f369e8456ef5d183ddbdf82c4","features":{},"yanked":true,"links":null}
+{"name":"ansi-color-codec","vers":"0.3.2","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"fed46d46cba320856b6a9186d60129dfad6c142a5a6c00c922cfa6990140c26f","features":{},"yanked":true,"links":null}
+{"name":"ansi-color-codec","vers":"0.3.3","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"ad5a24fc4e47f61b52b8b4c6544bb47db648666f5a742b8776cc90a98a4c2459","features":{},"yanked":true,"links":null}
+{"name":"ansi-color-codec","vers":"0.3.4","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"1048f2e4c18e0a4ca910a8f78da2b31c8257f5ffe4922432c85ac1677933722b","features":{},"yanked":false,"links":null}
+{"name":"ansi-color-codec","vers":"0.3.5","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"9b56ec379f35520cdb52f98d3269cd26d59088414fef86817d4f933c06b9374a","features":{},"yanked":false,"links":null}
1 change: 1 addition & 0 deletions tests/fixtures/index-parts/reproduce-#26-1.msg
@@ -0,0 +1 @@
reproduce issue #26: create ansi-color-codec file at b49672ff6a2
9 changes: 9 additions & 0 deletions tests/fixtures/index-parts/reproduce-#26-2.diff
@@ -0,0 +1,9 @@
diff --git a/an/si/ansi-color-codec b/an/si/ansi-color-codec
index f3400fa0eb..ca9114c44d 100644
--- a/an/si/ansi-color-codec
+++ b/an/si/ansi-color-codec
@@ -4,3 +4,4 @@
{"name":"ansi-color-codec","vers":"0.3.3","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"ad5a24fc4e47f61b52b8b4c6544bb47db648666f5a742b8776cc90a98a4c2459","features":{},"yanked":true,"links":null}
{"name":"ansi-color-codec","vers":"0.3.4","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"1048f2e4c18e0a4ca910a8f78da2b31c8257f5ffe4922432c85ac1677933722b","features":{},"yanked":false,"links":null}
{"name":"ansi-color-codec","vers":"0.3.5","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"9b56ec379f35520cdb52f98d3269cd26d59088414fef86817d4f933c06b9374a","features":{},"yanked":false,"links":null}
+{"name":"ansi-color-codec","vers":"0.3.11","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"92d898f94a19fefba0f0b9906376ef7e1be7e542cd958fd0fd4de1c7c2c9818a","features":{},"yanked":false,"links":null}
1 change: 1 addition & 0 deletions tests/fixtures/index-parts/reproduce-#26-2.msg
@@ -0,0 +1 @@
reproduce issue #26: updating ansi-color-codec 0.3.11 da97cd0243
12 changes: 12 additions & 0 deletions tests/fixtures/index-parts/reproduce-#26-3.diff
@@ -0,0 +1,12 @@
diff --git a/an/si/ansi-color-codec b/an/si/ansi-color-codec
index ca9114c44d..36a32366eb 100644
--- a/an/si/ansi-color-codec
+++ b/an/si/ansi-color-codec
@@ -2,6 +2,6 @@
{"name":"ansi-color-codec","vers":"0.3.1","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"b14431739f0b027eede3789fc83f1c13deae067f369e8456ef5d183ddbdf82c4","features":{},"yanked":true,"links":null}
{"name":"ansi-color-codec","vers":"0.3.2","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"fed46d46cba320856b6a9186d60129dfad6c142a5a6c00c922cfa6990140c26f","features":{},"yanked":true,"links":null}
{"name":"ansi-color-codec","vers":"0.3.3","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"ad5a24fc4e47f61b52b8b4c6544bb47db648666f5a742b8776cc90a98a4c2459","features":{},"yanked":true,"links":null}
-{"name":"ansi-color-codec","vers":"0.3.4","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"1048f2e4c18e0a4ca910a8f78da2b31c8257f5ffe4922432c85ac1677933722b","features":{},"yanked":false,"links":null}
+{"name":"ansi-color-codec","vers":"0.3.4","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"1048f2e4c18e0a4ca910a8f78da2b31c8257f5ffe4922432c85ac1677933722b","features":{},"yanked":true,"links":null}
{"name":"ansi-color-codec","vers":"0.3.5","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"9b56ec379f35520cdb52f98d3269cd26d59088414fef86817d4f933c06b9374a","features":{},"yanked":false,"links":null}
{"name":"ansi-color-codec","vers":"0.3.11","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"92d898f94a19fefba0f0b9906376ef7e1be7e542cd958fd0fd4de1c7c2c9818a","features":{},"yanked":false,"links":null}
1 change: 1 addition & 0 deletions tests/fixtures/index-parts/reproduce-#26-3.msg
@@ -0,0 +1 @@
reproduce issue #26: yanking ansi-color-codec 0.3.4 1533f8e863
11 changes: 11 additions & 0 deletions tests/fixtures/index-parts/reproduce-#26-4.diff
@@ -0,0 +1,11 @@
diff --git a/an/si/ansi-color-codec b/an/si/ansi-color-codec
index 36a32366eb..f24049269d 100644
--- a/an/si/ansi-color-codec
+++ b/an/si/ansi-color-codec
@@ -3,5 +3,5 @@
{"name":"ansi-color-codec","vers":"0.3.2","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"fed46d46cba320856b6a9186d60129dfad6c142a5a6c00c922cfa6990140c26f","features":{},"yanked":true,"links":null}
{"name":"ansi-color-codec","vers":"0.3.3","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"ad5a24fc4e47f61b52b8b4c6544bb47db648666f5a742b8776cc90a98a4c2459","features":{},"yanked":true,"links":null}
{"name":"ansi-color-codec","vers":"0.3.4","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"1048f2e4c18e0a4ca910a8f78da2b31c8257f5ffe4922432c85ac1677933722b","features":{},"yanked":true,"links":null}
-{"name":"ansi-color-codec","vers":"0.3.5","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"9b56ec379f35520cdb52f98d3269cd26d59088414fef86817d4f933c06b9374a","features":{},"yanked":false,"links":null}
+{"name":"ansi-color-codec","vers":"0.3.5","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"9b56ec379f35520cdb52f98d3269cd26d59088414fef86817d4f933c06b9374a","features":{},"yanked":true,"links":null}
{"name":"ansi-color-codec","vers":"0.3.11","deps":[{"name":"clap","req":"^4.0.23","features":["derive"],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"ctrlc","req":"^3.2.3","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"92d898f94a19fefba0f0b9906376ef7e1be7e542cd958fd0fd4de1c7c2c9818a","features":{},"yanked":false,"links":null}

0 comments on commit 7ea3d6e

Please sign in to comment.