commit 2525ab87dc9207e6b7166536bdba6b030315c5ef
parent 293e00857a1605229efa888988392d1c16f67e63
Author: Ryan Wolf <johnwayne@pseudony.ms>
Date: Wed, 16 Apr 2025 23:09:46 -0400
write readme to index, crash if missing
Diffstat:
1 file changed, 22 insertions(+), 3 deletions(-)
diff --git a/stagit.c b/stagit.c
@@ -1181,6 +1181,18 @@ writerefs(FILE *fp)
return 0;
}
+int
+writeindex(git_object *obj)
+{
+ const char *entryname;
+ char filepath[PATH_MAX], entrypath[PATH_MAX], oid[8];
+ size_t filesize;
+ filesize = git_blob_rawsize((git_blob *)obj);
+ writeblob(obj, "index.html", "", filesize);
+ return 0;
+}
+
+
void
usage(char *argv0)
{
@@ -1193,6 +1205,7 @@ int
main(int argc, char *argv[])
{
git_object *obj = NULL;
+ git_object *readme_obj = NULL;
const git_oid *head = NULL;
mode_t mask;
FILE *fp, *fpread;
@@ -1316,10 +1329,9 @@ main(int argc, char *argv[])
/* check README */
for (i = 0; i < LEN(readmefiles) && !readme; i++) {
- if (!git_revparse_single(&obj, repo, readmefiles[i]) &&
- git_object_type(obj) == GIT_OBJ_BLOB)
+ if (!git_revparse_single(&readme_obj, repo, readmefiles[i]) &&
+ git_object_type(readme_obj) == GIT_OBJ_BLOB)
readme = readmefiles[i] + strlen("HEAD:");
- git_object_free(obj);
}
if (!git_revparse_single(&obj, repo, "HEAD:.gitmodules") &&
@@ -1412,6 +1424,13 @@ main(int argc, char *argv[])
checkfileerror(fp, "tags.xml", 'w');
fclose(fp);
+ /* index */
+ if (!readme) {
+ err(1, "no readme, can't write index");
+ }
+ writeindex(readme_obj);
+ git_object_free(readme_obj);
+
/* rename new cache file on success */
if (cachefile && head) {
if (rename(tmppath, cachefile))