MCPcopy Create free account
hub / github.com/git/git / ref_store_remove_on_disk

Function ref_store_remove_on_disk

refs.c:2238–2281  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2236}
2237
2238int 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
2283int repo_resolve_gitlink_ref(struct repository *r,
2284 const char *submodule, const char *refname,

Callers 1

Calls 3

strbuf_addfFunction · 0.85
strbuf_releaseFunction · 0.85

Tested by

no test coverage detected