mirror of
https://github.com/multipleof4/gitea-github-cron.git
synced 2026-10-14 07:57:53 +00:00
Rename and freeze mirrors of moved GitHub repos
GitHub redirects transferred/renamed repos, so the existence check passed for them. Treat a redirect to a different full_name as gone, and disable periodic sync on renamed mirrors. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -124,24 +124,26 @@ const alreadyGone = (name, original) =>
|
|||||||
if (alreadyGone(repo.name, remote.name)) continue;
|
if (alreadyGone(repo.name, remote.name)) continue;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const exists = await request(
|
// GitHub redirects transferred/renamed repos, so a different full_name means it moved
|
||||||
|
const current = await request(
|
||||||
`${github}/repos/${encodeURIComponent(remote.owner)}/${encodeURIComponent(remote.name)}`,
|
`${github}/repos/${encodeURIComponent(remote.owner)}/${encodeURIComponent(remote.name)}`,
|
||||||
ghHeaders, 'GET', null, true
|
ghHeaders, 'GET', null, true
|
||||||
);
|
);
|
||||||
if (exists) continue;
|
if (current && key(current.full_name) === key(`${remote.owner}/${remote.name}`)) continue;
|
||||||
|
|
||||||
let number = 1, name;
|
let number = 1, name;
|
||||||
do name = goneName(repo.name, number++); while (occupied.has(key(name)));
|
do name = goneName(repo.name, number++); while (occupied.has(key(name)));
|
||||||
const updated = await request(
|
const updated = await request(
|
||||||
`${gitea}/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo.name)}`,
|
`${gitea}/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo.name)}`,
|
||||||
gtHeaders, 'PATCH', { name }
|
gtHeaders, 'PATCH', { name, mirror_interval: '0' }
|
||||||
);
|
);
|
||||||
if (key(updated.name) !== key(name)) throw new Error('Gitea did not return the requested name');
|
if (key(updated.name) !== key(name)) throw new Error('Gitea did not return the requested name');
|
||||||
occupied.delete(key(repo.name));
|
occupied.delete(key(repo.name));
|
||||||
occupied.add(key(name));
|
occupied.add(key(name));
|
||||||
facts.renamed++;
|
facts.renamed++;
|
||||||
facts.changes.push(`${owner}/${repo.name} → ${owner}/${name}`);
|
const note = current ? ` (moved to ${current.full_name})` : '';
|
||||||
console.log(`Renamed ${owner}/${repo.name} to ${owner}/${name}`);
|
facts.changes.push(`${owner}/${repo.name} → ${owner}/${name}${note}`);
|
||||||
|
console.log(`Renamed ${owner}/${repo.name} to ${owner}/${name}${note}`);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
facts.failures++;
|
facts.failures++;
|
||||||
console.error(`Failed to check or rename ${owner}/${repo.name}: ${error.message}`);
|
console.error(`Failed to check or rename ${owner}/${repo.name}: ${error.message}`);
|
||||||
|
|||||||
Reference in New Issue
Block a user