func (o *Environment) Track(pkg *gdf.Package, recursive bool) (data []byte, err error) { revisions := map[string]revision{} for im, _ := range pkg.ImportedPackages { //o.trackedImportRevisions(pkg.Path) iPkg, e := o.GetPkg(im) if e != nil { err = e return } if iPkg.Internal { continue } if !iPkg.IsInPath(pkg.Path) && !pkg.IsInPath(iPkg.Path) { revisions[im] = o.getRevision(iPkg.Dir(), pkg.Path) } if recursive { o.recursiveImportRevisions(revisions, iPkg, pkg.Path) continue } } data, err = json.MarshalIndent(revisions, "", " ") if err != nil { return } filename := path.Join(pkg.Dir(), revFileName) err = ioutil.WriteFile(filename, data, 0644) return }