Skip to content

Commit 7ea3d6e

Browse files
committed
Merge branch 'fix-26'
2 parents 3708131 + 87678db commit 7ea3d6e

18 files changed

+207
-62
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ include = ["src/**/*", "LICENSE.md", "README.md", "CHANGELOG.md"]
1515
test = false
1616

1717
[dependencies]
18-
git-repository = { version = "0.27.0", default-features = false, features = ["max-performance-safe", "blocking-network-client", "blocking-http-transport"] }
18+
git-repository = { version = "0.28.0", default-features = false, features = ["max-performance-safe", "blocking-network-client", "blocking-http-transport"] }
1919
serde = { version = "1", features = ["std", "derive"] }
2020
serde_json = "1"
2121
bstr = "1.0.1"

src/index/diff/delegate.rs

Lines changed: 52 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ impl Delegate {
3535
match change.event {
3636
Addition { entry_mode, id } => {
3737
if let Some(obj) = entry_data(entry_mode, id)? {
38-
for line in (&obj.data).lines() {
38+
for line in obj.data.lines() {
3939
let version = version_from_json_line(line, change.location)?;
4040
self.changes.push(if version.yanked {
4141
Change::Yanked(version)
@@ -75,67 +75,72 @@ impl Delegate {
7575
.iter()
7676
.map(|&line| input.interner[line].as_bstr())
7777
.peekable();
78-
match (lines_before.peek().is_some(), lines_after.peek().is_some()) {
79-
(true, false) => {
80-
for removed in lines_before {
81-
match version_from_json_line(removed, location) {
82-
Ok(version) => {
83-
self.delete_version_ids.insert(version.id());
84-
}
85-
Err(e) => {
86-
err = Some(e);
87-
break;
78+
let mut remember = |version: CrateVersion| {
79+
self.changes.push(if version.yanked {
80+
Change::Yanked(version)
81+
} else {
82+
Change::Added(version)
83+
});
84+
};
85+
'outer: loop {
86+
match (lines_before.peek().is_some(), lines_after.peek().is_some())
87+
{
88+
(true, false) => {
89+
for removed in lines_before {
90+
match version_from_json_line(removed, location) {
91+
Ok(version) => {
92+
self.delete_version_ids.insert(version.id());
93+
}
94+
Err(e) => {
95+
err = Some(e);
96+
break;
97+
}
8898
}
8999
}
100+
break 'outer;
90101
}
91-
}
92-
(false, true) => {
93-
for inserted in lines_after {
94-
match version_from_json_line(inserted, location) {
95-
Ok(version) => {
96-
self.changes.push(if version.yanked {
97-
Change::Yanked(version)
98-
} else {
99-
Change::Added(version)
100-
});
101-
}
102-
Err(e) => {
103-
err = Some(e);
104-
break;
102+
(false, true) => {
103+
for inserted in lines_after {
104+
match version_from_json_line(inserted, location) {
105+
Ok(version) => remember(version),
106+
Err(e) => {
107+
err = Some(e);
108+
break;
109+
}
105110
}
106111
}
112+
break 'outer;
107113
}
108-
}
109-
(true, true) => {
110-
for (removed, inserted) in lines_before.zip(lines_after) {
111-
match version_from_json_line(inserted, location).and_then(
112-
|inserted| {
113-
version_from_json_line(removed, location)
114-
.map(|removed| (removed, inserted))
115-
},
116-
) {
117-
Ok((removed, inserted)) => {
118-
if removed.yanked != inserted.yanked {
119-
self.changes.push(if inserted.yanked {
120-
Change::Yanked(inserted)
121-
} else {
122-
Change::Added(inserted)
123-
});
114+
(true, true) => {
115+
for (removed, inserted) in
116+
lines_before.by_ref().zip(lines_after.by_ref())
117+
{
118+
match version_from_json_line(inserted, location)
119+
.and_then(|inserted| {
120+
version_from_json_line(removed, location)
121+
.map(|removed| (removed, inserted))
122+
}) {
123+
Ok((removed_version, inserted_version)) => {
124+
if removed_version.yanked
125+
!= inserted_version.yanked
126+
{
127+
remember(inserted_version);
128+
}
129+
}
130+
Err(e) => {
131+
err = Some(e);
132+
break;
124133
}
125-
}
126-
Err(e) => {
127-
err = Some(e);
128-
break;
129134
}
130135
}
131136
}
137+
(false, false) => break 'outer,
132138
}
133-
(false, false) => {}
134139
}
135140
},
136141
);
137142
if let Some(err) = err {
138-
return Err(err.into());
143+
return Err(err);
139144
}
140145
}
141146
}

src/index/diff/mod.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,12 @@ impl Index {
9797
.ok()
9898
.and_then(|head| {
9999
head.into_remote(git::remote::Direction::Fetch)
100-
.map(|r| r.ok())
101-
.flatten()
100+
.and_then(|r| r.ok())
102101
})
103102
.or_else(|| {
104103
self.repo
105104
.find_default_remote(git::remote::Direction::Fetch)
106-
.map(|r| r.ok())
107-
.flatten()
105+
.and_then(|r| r.ok())
108106
})
109107
})
110108
})
@@ -146,7 +144,7 @@ impl Index {
146144
.iter()
147145
.find_map(|m| match &m.remote {
148146
git::remote::fetch::Source::Ref(r) => (r.unpack().0 == branch_name)
149-
.then(|| m.local.as_ref())
147+
.then_some(m.local.as_ref())
150148
.flatten(),
151149
_ => None,
152150
})
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
version https://git-lfs.github.com/spec/v1
2-
oid sha256:6483a2d6d35e9b77c260bde0f150aa10c88a55b60c7ca5e9e565dffa93036f26
3-
size 585556
2+
oid sha256:f55d095a0258290d760d1dc8c0cc71cb5dbaaad93dc96c06b3d34349b02d8455
3+
size 588940

tests/fixtures/index-parts/commit.list

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,3 +328,7 @@ f23a8e44f4eb505ae1d228d14053f3ab65ce3382
328328
20eeece15a0dd4f7fa505409a5914debfb84006e
329329
reproduce-#19
330330
reproduce-#20
331+
reproduce-#26-1
332+
reproduce-#26-2
333+
reproduce-#26-3
334+
reproduce-#26-4
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
11
reproduce issue #19
2-
reproduce issue #19
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
diff --git b/an/si/ansi-color-codec a/an/si/ansi-color-codec
2+
new file mode 100644
3+
index 0000000000..f3400fa0eb
4+
--- /dev/null
5+
+++ a/an/si/ansi-color-codec
6+
@@ -0,0 +1,6 @@
7+
+{"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}
8+
+{"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}
9+
+{"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}
10+
+{"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}
11+
+{"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}
12+
+{"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}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
reproduce issue #26: create ansi-color-codec file at b49672ff6a2
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
diff --git a/an/si/ansi-color-codec b/an/si/ansi-color-codec
2+
index f3400fa0eb..ca9114c44d 100644
3+
--- a/an/si/ansi-color-codec
4+
+++ b/an/si/ansi-color-codec
5+
@@ -4,3 +4,4 @@
6+
{"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}
7+
{"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}
8+
{"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}
9+
+{"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}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
reproduce issue #26: updating ansi-color-codec 0.3.11 da97cd0243

0 commit comments

Comments
 (0)