| 2236 | } |
| 2237 | |
| 2238 | int ref_store_remove_on_disk(struct ref_store *refs, struct strbuf *err) |
| 2239 | { |
| 2240 | int ret = refs->be->remove_on_disk(refs, err); |
| 2241 | |
| 2242 | if (!ret) { |
| 2243 | enum ref_storage_format format = ref_storage_format_by_name(refs->be->name); |
| 2244 | struct strbuf sb = STRBUF_INIT; |
| 2245 | |
| 2246 | /* Backends apart from the files backend create stubs. */ |
| 2247 | if (format == REF_STORAGE_FORMAT_FILES) |
| 2248 | return ret; |
| 2249 | |
| 2250 | /* Alternate refs backend require stubs in the gitdir. */ |
| 2251 | if (refs->repo->ref_storage_payload) |
| 2252 | return ret; |
| 2253 | |
| 2254 | strbuf_addf(&sb, "%s/HEAD", refs->gitdir); |
| 2255 | if (unlink(sb.buf) < 0) { |
| 2256 | strbuf_addf(err, "could not delete stub HEAD: %s", |
| 2257 | strerror(errno)); |
| 2258 | ret = -1; |
| 2259 | } |
| 2260 | strbuf_reset(&sb); |
| 2261 | |
| 2262 | strbuf_addf(&sb, "%s/refs/heads", refs->gitdir); |
| 2263 | if (unlink(sb.buf) < 0) { |
| 2264 | strbuf_addf(err, "could not delete stub heads: %s", |
| 2265 | strerror(errno)); |
| 2266 | ret = -1; |
| 2267 | } |
| 2268 | strbuf_reset(&sb); |
| 2269 | |
| 2270 | strbuf_addf(&sb, "%s/refs", refs->gitdir); |
| 2271 | if (rmdir(sb.buf) < 0) { |
| 2272 | strbuf_addf(err, "could not delete refs directory: %s", |
| 2273 | strerror(errno)); |
| 2274 | ret = -1; |
| 2275 | } |
| 2276 | |
| 2277 | strbuf_release(&sb); |
| 2278 | } |
| 2279 | |
| 2280 | return ret; |
| 2281 | } |
| 2282 | |
| 2283 | int repo_resolve_gitlink_ref(struct repository *r, |
| 2284 | const char *submodule, const char *refname, |
no test coverage detected