# HG changeset patch # User Olaf Wintermann # Date 1765999600 -3600 # Node ID 08333803df48b0356682b7648e867276237a89e3 # Parent e24fc79b7980d2204ac296030507b8cd112f5dd8 save build result diff -r e24fc79b7980 -r 08333803df48 .hgignore --- a/.hgignore Tue Dec 16 21:16:32 2025 +0100 +++ b/.hgignore Wed Dec 17 20:26:40 2025 +0100 @@ -1,3 +1,4 @@ ^.idea/ ^tmp/ ^out/ +^testrepo/ diff -r e24fc79b7980 -r 08333803df48 src/main.go --- a/src/main.go Tue Dec 16 21:16:32 2025 +0100 +++ b/src/main.go Wed Dec 17 20:26:40 2025 +0100 @@ -124,15 +124,31 @@ } tmp := "tmp" + out := "out" for _, repo := range config.Repository { - if err = create_repo_archive(&repo, tpl, tmp); err != nil { + commit := get_commit_info(repo.Path) + if commit == nil { + log.Print("cannot get current commit info for repo ", repo.Path) + continue + } + result_dir := path.Join(out, commit.Node) + _, err := os.Stat(result_dir) + if err == nil { + log.Printf("repository %s commit %s already built", repo.Path, commit.NodeShort) + continue + } + + if err := create_repo_archive(&repo, tpl, tmp); err != nil { log.Fatal(err) } results := exec_buildenvs(config, &repo, tmp) - err = save_result(&repo, results, tmp) + err = save_result(&repo, commit, results, tmp) + if err != nil { + log.Print("cannot save results for commit ", commit.NodeShort) + } } } @@ -332,13 +348,13 @@ return buildResults } -func get_commit_info(tmp_dir string) *Commit { +func get_commit_info(repo_dir string) *Commit { var outb, errb bytes.Buffer commit := &Commit{} cmd := exec.Command("hg", "log", "-r", ".", "-T", "{rev}\\t{node|short}\\t{node}\\t{date|isodate}") - cmd.Dir = path.Join(tmp_dir, "build/src") + cmd.Dir = repo_dir cmd.Stdout = &outb cmd.Stderr = &errb if err := cmd.Run(); err != nil { @@ -363,7 +379,7 @@ errb.Reset() cmd = exec.Command("hg", "log", "-r", ".", "-T", "{author}") - cmd.Dir = path.Join(tmp_dir, "build/src") + cmd.Dir = repo_dir cmd.Stdout = &outb cmd.Stderr = &errb if err := cmd.Run(); err != nil { @@ -374,7 +390,7 @@ commit.Author = outb.String() cmd = exec.Command("hg", "log", "-r", ".", "-T", "{desc}") - cmd.Dir = path.Join(tmp_dir, "build/src") + cmd.Dir = repo_dir cmd.Stdout = &outb cmd.Stderr = &errb if err := cmd.Run(); err != nil { @@ -387,11 +403,15 @@ return commit } -func save_result(repo *Repository, result []BuildEnvResult, tmp_dir string) error { - //out_dir := "out/" +func save_result(repo *Repository, commit *Commit, result []BuildEnvResult, tmp_dir string) error { + out_dir := "out/" + src := path.Join(tmp_dir, "result") + dst := path.Join(out_dir, commit.Node) - // get commit infos - get_commit_info(tmp_dir) + // move result + if err := os.Rename(src, dst); err != nil { + return err + } return nil } diff -r e24fc79b7980 -r 08333803df48 testconfig.xml --- a/testconfig.xml Tue Dec 16 21:16:32 2025 +0100 +++ b/testconfig.xml Wed Dec 17 20:26:40 2025 +0100 @@ -5,7 +5,7 @@ - ../ucx + testrepo x1 true