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
+2, -2
......@@ -447,9 +447,9 @@ func (w *WorkspaceRsync) Setup() error {
447447 w.Cfg.KeyLocation,
448448 w.Cfg.CertificateLocation,
449449 )
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+"/")
451451 } 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+"/")
453453 }
454454 return runCmd(cmd, log)
455455 }
+48, -0
......@@ -805,3 +805,51 @@ func TestWaitAndReport_Cancellation(t *testing.T) {
805805 }
806806 }
807807 }
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+