From 6134f7cfa1f6d33584845dd90ecfd9998b7b543a Mon Sep 17 00:00:00 2001 From: Brandon Jones Date: Tue, 8 Oct 2024 09:45:13 +0100 Subject: [PATCH] feat: write the file header for the root git directory --- cmd/bazel-git/archive.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/cmd/bazel-git/archive.go b/cmd/bazel-git/archive.go index 47a3a6f..438a8bf 100644 --- a/cmd/bazel-git/archive.go +++ b/cmd/bazel-git/archive.go @@ -82,6 +82,9 @@ func writeTar(repo *git.Repository, commit *object.Commit, prefix string, archiv if err = writeCommitHash(commit, archive); err != nil { return err } + if err = writeRoot(commit, prefix, archive); err != nil { + return err + } for { name, entry, err := walker.Next() @@ -169,6 +172,23 @@ func writeMetadata(repo *git.Repository, commit *object.Commit, name string, ent return nil } +func writeRoot(commit *object.Commit, prefix string, archive *tar.Writer) error { + header := &tar.Header{ + Name: prefix, + Mode: 0775, + Size: 0, + Typeflag: tar.TypeDir, + ModTime: commit.Committer.When, + } + + err := archive.WriteHeader(header) + if err != nil { + return err + } + + return nil +} + func adjustName(entry object.TreeEntry, name string, prefix string) string { name = prefix + name if entry.Mode == filemode.Dir || entry.Mode == filemode.Submodule { -- GitLab