Commit 4fdd561
Eric Bower
·
2026-08-09 11:14:57 -0400 EDT
parent 8759922
chore: ignore .jj during workspace copy
2 files changed,
+50,
-2
M
main.go
M
main.go
+2,
-2
| ... | ... | @@ -447,9 +447,9 @@ func (w *WorkspaceRsync) Setup() error { | |
| 447 | 447 | w.Cfg.KeyLocation, | |
| 448 | 448 | w.Cfg.CertificateLocation, | |
| 449 | 449 | ) | |
| 450 | - | cmd = exec.Command("rsync", "-e", sshcmd, "-rv", `--exclude="/.git"`, w.Source+"/", w.Dest+"/") | |
| 450 | + | cmd = exec.Command("rsync", "-e", sshcmd, "-rv", "--exclude=/.git", "--exclude=/.jj", w.Source+"/", w.Dest+"/") | |
| 451 | 451 | } else { | |
| 452 | - | cmd = exec.Command("rsync", "-rv", `--exclude="/.git"`, w.Source+"/", w.Dest+"/") | |
| 452 | + | cmd = exec.Command("rsync", "-rv", "--exclude=/.git", "--exclude=/.jj", w.Source+"/", w.Dest+"/") | |
| 453 | 453 | } | |
| 454 | 454 | return runCmd(cmd, log) | |
| 455 | 455 | } |
+48,
-0
| ... | ... | @@ -805,3 +805,51 @@ func TestWaitAndReport_Cancellation(t *testing.T) { | |
| 805 | 805 | } | |
| 806 | 806 | } | |
| 807 | 807 | } | |
| 808 | + | ||
| 809 | + | func TestWorkspaceRsync_ExcludesGitAndJJ(t *testing.T) { | |
| 810 | + | if _, err := exec.LookPath("rsync"); err != nil { | |
| 811 | + | t.Skip("rsync not found, skipping test") | |
| 812 | + | } | |
| 813 | + | ||
| 814 | + | srcDir := t.TempDir() | |
| 815 | + | if err := os.WriteFile(filepath.Join(srcDir, "hello.txt"), []byte("world"), 0644); err != nil { | |
| 816 | + | t.Fatalf("failed to write hello.txt: %v", err) | |
| 817 | + | } | |
| 818 | + | if err := os.MkdirAll(filepath.Join(srcDir, ".git"), 0755); err != nil { | |
| 819 | + | t.Fatalf("failed to mkdir .git: %v", err) | |
| 820 | + | } | |
| 821 | + | if err := os.WriteFile(filepath.Join(srcDir, ".git", "HEAD"), []byte("ref: refs/heads/main"), 0644); err != nil { | |
| 822 | + | t.Fatalf("failed to write .git/HEAD: %v", err) | |
| 823 | + | } | |
| 824 | + | if err := os.MkdirAll(filepath.Join(srcDir, ".jj"), 0755); err != nil { | |
| 825 | + | t.Fatalf("failed to mkdir .jj: %v", err) | |
| 826 | + | } | |
| 827 | + | if err := os.WriteFile(filepath.Join(srcDir, ".jj", "repo"), []byte("jj data"), 0644); err != nil { | |
| 828 | + | t.Fatalf("failed to write .jj/repo: %v", err) | |
| 829 | + | } | |
| 830 | + | ||
| 831 | + | wk := &WorkspaceRsync{ | |
| 832 | + | Cfg: &Cfg{}, | |
| 833 | + | Logger: slog.New(slog.NewTextHandler(io.Discard, nil)), | |
| 834 | + | Source: srcDir, | |
| 835 | + | } | |
| 836 | + | t.Cleanup(func() { | |
| 837 | + | _ = wk.Cleanup() | |
| 838 | + | }) | |
| 839 | + | ||
| 840 | + | if err := wk.Setup(); err != nil { | |
| 841 | + | t.Fatalf("WorkspaceRsync.Setup failed: %v", err) | |
| 842 | + | } | |
| 843 | + | ||
| 844 | + | destDir := wk.GetDir() | |
| 845 | + | if _, err := os.Stat(filepath.Join(destDir, "hello.txt")); os.IsNotExist(err) { | |
| 846 | + | t.Error("expected hello.txt to exist in dest workspace") | |
| 847 | + | } | |
| 848 | + | if _, err := os.Stat(filepath.Join(destDir, ".git")); !os.IsNotExist(err) { | |
| 849 | + | t.Error("expected .git to be excluded from dest workspace") | |
| 850 | + | } | |
| 851 | + | if _, err := os.Stat(filepath.Join(destDir, ".jj")); !os.IsNotExist(err) { | |
| 852 | + | t.Error("expected .jj to be excluded from dest workspace") | |
| 853 | + | } | |
| 854 | + | } | |
| 855 | + |