Surface the tree ID in Gitiles FS as a .gitid file.
Change-Id: I084ea0c7ecebbd9faecbd39cd92ed4eee5b091b3
diff --git a/fs/gitilesfs.go b/fs/gitilesfs.go
index 984ac29..91d1a93 100644
--- a/fs/gitilesfs.go
+++ b/fs/gitilesfs.go
@@ -306,6 +306,9 @@
parent.NewChild(base, false, n)
}
+ r.Inode().NewChild(".gitid",
+ false, newDataNode([]byte(r.tree.ID)))
+
// We don't need the tree data anymore.
r.tree = nil
return nil
diff --git a/fs/gitilesfs_test.go b/fs/gitilesfs_test.go
index 6a711d7..4411575 100644
--- a/fs/gitilesfs_test.go
+++ b/fs/gitilesfs_test.go
@@ -163,6 +163,35 @@
return listener, err
}
+func TestGitilesFSTreeID(t *testing.T) {
+ fix, err := newTestFixture()
+ if err != nil {
+ t.Fatal("newTestFixture", err)
+ }
+ defer fix.cleanup()
+
+ repoService := fix.service.NewRepoService("platform/build/kati")
+ treeResp, err := repoService.GetTree("ce34badf691d36e8048b63f89d1a86ee5fa4325c", "", true)
+ if err != nil {
+ t.Fatal("Tree:", err)
+ }
+
+ options := GitilesOptions{}
+
+ fs := NewGitilesRoot(fix.cache, treeResp, repoService, options)
+ if err := fix.mount(fs); err != nil {
+ t.Fatal("mount", err)
+ }
+
+ want := "58d9fdae2c26d82e04f3fcafc4358b99109f0e70"
+ path := filepath.Join(fix.mntDir, ".gitid")
+ if got, err := ioutil.ReadFile(path); err != nil {
+ t.Errorf("ReadFile(.gitid): %v", err)
+ } else if string(got) != want {
+ t.Errorf("got %q, want %q", got, want)
+ }
+}
+
func TestGitilesFS(t *testing.T) {
fix, err := newTestFixture()
if err != nil {