sync-worktrees 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +55 -80
  3. package/dist/index.js +7 -4
  4. package/dist/index.js.map +1 -1
  5. package/dist/services/config-loader.service.js +7 -7
  6. package/dist/services/config-loader.service.js.map +1 -1
  7. package/dist/services/git.service.d.ts +4 -1
  8. package/dist/services/git.service.d.ts.map +1 -1
  9. package/dist/services/git.service.js +72 -21
  10. package/dist/services/git.service.js.map +1 -1
  11. package/dist/services/worktree-sync.service.d.ts.map +1 -1
  12. package/dist/services/worktree-sync.service.js +14 -3
  13. package/dist/services/worktree-sync.service.js.map +1 -1
  14. package/dist/types/index.d.ts +2 -2
  15. package/dist/types/index.d.ts.map +1 -1
  16. package/dist/utils/cli.d.ts +1 -0
  17. package/dist/utils/cli.d.ts.map +1 -1
  18. package/dist/utils/cli.js +10 -12
  19. package/dist/utils/cli.js.map +1 -1
  20. package/dist/utils/config-generator.d.ts.map +1 -1
  21. package/dist/utils/config-generator.js +55 -20
  22. package/dist/utils/config-generator.js.map +1 -1
  23. package/dist/utils/git-url.d.ts +15 -0
  24. package/dist/utils/git-url.d.ts.map +1 -0
  25. package/dist/utils/git-url.js +41 -0
  26. package/dist/utils/git-url.js.map +1 -0
  27. package/dist/utils/interactive.d.ts.map +1 -1
  28. package/dist/utils/interactive.js +43 -28
  29. package/dist/utils/interactive.js.map +1 -1
  30. package/package.json +8 -5
  31. package/dist/__tests__/fixtures/git-responses.d.ts +0 -114
  32. package/dist/__tests__/fixtures/git-responses.d.ts.map +0 -1
  33. package/dist/__tests__/fixtures/git-responses.js +0 -119
  34. package/dist/__tests__/fixtures/git-responses.js.map +0 -1
  35. package/dist/__tests__/helpers/mock-helpers.d.ts +0 -29
  36. package/dist/__tests__/helpers/mock-helpers.d.ts.map +0 -1
  37. package/dist/__tests__/helpers/mock-helpers.js +0 -82
  38. package/dist/__tests__/helpers/mock-helpers.js.map +0 -1
  39. package/dist/__tests__/integration.test.d.ts +0 -2
  40. package/dist/__tests__/integration.test.d.ts.map +0 -1
  41. package/dist/__tests__/integration.test.js +0 -300
  42. package/dist/__tests__/integration.test.js.map +0 -1
  43. package/dist/__tests__/setup.d.ts +0 -2
  44. package/dist/__tests__/setup.d.ts.map +0 -1
  45. package/dist/__tests__/setup.js +0 -18
  46. package/dist/__tests__/setup.js.map +0 -1
  47. package/dist/services/__tests__/config-loader.service.test.d.ts +0 -2
  48. package/dist/services/__tests__/config-loader.service.test.d.ts.map +0 -1
  49. package/dist/services/__tests__/config-loader.service.test.js +0 -222
  50. package/dist/services/__tests__/config-loader.service.test.js.map +0 -1
  51. package/dist/services/__tests__/git.service.test.d.ts +0 -2
  52. package/dist/services/__tests__/git.service.test.d.ts.map +0 -1
  53. package/dist/services/__tests__/git.service.test.js +0 -289
  54. package/dist/services/__tests__/git.service.test.js.map +0 -1
  55. package/dist/services/__tests__/worktree-sync.service.test.d.ts +0 -2
  56. package/dist/services/__tests__/worktree-sync.service.test.d.ts.map +0 -1
  57. package/dist/services/__tests__/worktree-sync.service.test.js +0 -272
  58. package/dist/services/__tests__/worktree-sync.service.test.js.map +0 -1
  59. package/dist/utils/__tests__/config-generator.test.d.ts +0 -2
  60. package/dist/utils/__tests__/config-generator.test.d.ts.map +0 -1
  61. package/dist/utils/__tests__/config-generator.test.js +0 -142
  62. package/dist/utils/__tests__/config-generator.test.js.map +0 -1
  63. package/dist/utils/__tests__/interactive.test.d.ts +0 -2
  64. package/dist/utils/__tests__/interactive.test.d.ts.map +0 -1
  65. package/dist/utils/__tests__/interactive.test.js +0 -281
  66. package/dist/utils/__tests__/interactive.test.js.map +0 -1
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Yordan Kanchelov
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # sync-worktrees
2
2
 
3
- Automatically synchronize Git worktrees with remote branches. Keep your local worktrees in sync with remote repositories - perfect for CI/CD environments, multi-branch development workflows, and automated testing setups.
3
+ Automatically synchronize Git worktrees with remote branches. Keep your local worktrees in sync with remote repositories - perfect for multi-branch development workflows and automated testing setups.
4
4
 
5
5
  ## Features
6
6
 
@@ -10,6 +10,7 @@ Automatically synchronize Git worktrees with remote branches. Keep your local wo
10
10
  - 🛡️ Safe operations - won't delete worktrees with uncommitted changes or unpushed commits
11
11
  - 📝 Clear logging with timestamps and progress indicators
12
12
  - 📋 Config file support for managing multiple repositories
13
+ - 💾 Space-efficient bare repository storage - no duplicate working trees
13
14
 
14
15
  ## Installation
15
16
 
@@ -25,31 +26,14 @@ pnpm add -g sync-worktrees
25
26
 
26
27
  ## Usage
27
28
 
28
- ### One-time sync
29
-
30
29
  ```bash
31
- sync-worktrees --repoPath /path/to/repo --worktreeDir /path/to/worktrees --runOnce
32
- ```
30
+ # Single repository (one-time sync)
31
+ sync-worktrees --repoUrl https://github.com/user/repo.git --worktreeDir ./worktrees --runOnce
33
32
 
34
- ### Scheduled sync (default: hourly)
33
+ # Single repository (scheduled hourly)
34
+ sync-worktrees --repoUrl https://github.com/user/repo.git --worktreeDir ./worktrees
35
35
 
36
- ```bash
37
- sync-worktrees --repoPath /path/to/repo --worktreeDir /path/to/worktrees
38
- ```
39
-
40
- ### Clone and sync a new repository
41
-
42
- ```bash
43
- sync-worktrees \
44
- --repoPath /path/to/repo \
45
- --repoUrl git@github.com:user/repo.git \
46
- --worktreeDir /path/to/worktrees \
47
- --runOnce
48
- ```
49
-
50
- ### Using a config file
51
-
52
- ```bash
36
+ # Multiple repositories (using config file)
53
37
  sync-worktrees --config ./sync-worktrees.config.js
54
38
  ```
55
39
 
@@ -60,8 +44,8 @@ sync-worktrees --config ./sync-worktrees.config.js
60
44
  | `--config` | `-c` | Path to JavaScript config file | No | - |
61
45
  | `--filter` | `-f` | Filter repositories by name (wildcards supported) | No | - |
62
46
  | `--list` | `-l` | List configured repositories and exit | No | `false` |
63
- | `--repoPath` | `-r` | Absolute path to the target repository | Yes* | - |
64
- | `--repoUrl` | `-u` | Git repository URL for cloning | No | - |
47
+ | `--repoUrl` | `-u` | Git repository URL (HTTPS or SSH) | Yes* | - |
48
+ | `--bareRepoDir` | `-b` | Directory for bare repository | No | `.bare/<repo-name>` |
65
49
  | `--worktreeDir` | `-w` | Directory for storing worktrees | Yes* | - |
66
50
  | `--cronSchedule` | `-s` | Cron pattern for scheduling | No | `0 * * * *` (hourly) |
67
51
  | `--runOnce` | - | Execute once and exit | No | `false` |
@@ -71,80 +55,67 @@ sync-worktrees --config ./sync-worktrees.config.js
71
55
 
72
56
  ## Examples
73
57
 
74
- ### Basic one-time sync
75
- ```bash
76
- sync-worktrees -r /home/user/my-repo -w /home/user/my-repo-worktrees --runOnce
77
- ```
78
-
79
- ### Custom cron schedule (every 30 minutes)
58
+ ### Single repository
80
59
  ```bash
81
- sync-worktrees -r /home/user/my-repo -w /home/user/my-repo-worktrees -s "*/30 * * * *"
82
- ```
60
+ # One-time sync
61
+ sync-worktrees -u https://github.com/user/repo.git -w ./worktrees --runOnce
83
62
 
84
- ### Clone and sync a repository
85
- ```bash
86
- sync-worktrees \
87
- -r /home/user/new-repo \
88
- -u https://github.com/example/project.git \
89
- -w /home/user/new-repo-worktrees \
90
- --runOnce
63
+ # Scheduled sync (every 30 minutes)
64
+ sync-worktrees -u git@github.com:user/repo.git -w ./worktrees -s "*/30 * * * *"
91
65
  ```
92
66
 
93
67
  ### Using a config file
94
68
  ```bash
95
- # Sync all repositories in config
69
+ # Sync all repositories
96
70
  sync-worktrees --config ./sync-worktrees.config.js
97
71
 
98
- # Sync specific repositories
99
- sync-worktrees --config ./sync-worktrees.config.js --filter "frontend-*,backend-*"
72
+ # Filter specific repositories
73
+ sync-worktrees --config ./sync-worktrees.config.js --filter "frontend-*"
100
74
 
101
75
  # List configured repositories
102
76
  sync-worktrees --config ./sync-worktrees.config.js --list
103
-
104
- # Override config settings
105
- sync-worktrees --config ./sync-worktrees.config.js --runOnce
106
77
  ```
107
78
 
108
79
  ## Configuration File
109
80
 
110
- The config file is a JavaScript module that exports configuration for multiple repositories. This allows you to manage multiple repositories with different settings in a single command.
111
-
112
- ### Basic Config Structure
81
+ For managing multiple repositories, create a JavaScript config file:
113
82
 
114
83
  ```javascript
115
84
  module.exports = {
116
- // Optional global defaults
85
+ // Optional defaults for all repositories
117
86
  defaults: {
118
- cronSchedule: "0 * * * *",
87
+ cronSchedule: "0 * * * *", // Hourly
119
88
  runOnce: false
120
89
  },
121
90
 
122
- // Array of repository configurations
123
91
  repositories: [
124
92
  {
125
- name: "my-project", // Unique identifier
126
- repoUrl: "https://github.com/user/repo.git",
127
- repoPath: "/path/to/repo",
128
- worktreeDir: "/path/to/worktrees",
129
- cronSchedule: "*/30 * * * *", // Override default
130
- runOnce: false // Override default
93
+ name: "frontend", // Unique identifier
94
+ repoUrl: "https://github.com/company/frontend.git",
95
+ worktreeDir: "./worktrees/frontend", // Relative paths supported
96
+ cronSchedule: "*/30 * * * *" // Override default
97
+ },
98
+ {
99
+ name: "backend",
100
+ repoUrl: process.env.BACKEND_REPO_URL, // Environment variables supported
101
+ worktreeDir: "/absolute/path/backend-worktrees"
102
+ // Uses default schedule
131
103
  }
132
104
  ]
133
105
  };
134
106
  ```
135
107
 
136
- ### Advanced Features
137
-
138
- - **Environment variables**: Use `process.env` to read from environment
139
- - **Dynamic paths**: Use Node.js modules like `path` and `os`
140
- - **Conditional config**: Include/exclude repos based on environment
141
- - **Relative paths**: Resolved relative to the config file location
142
-
143
- See `sync-worktrees.config.example.js` for more examples.
108
+ **Notes:**
109
+ - Relative paths are resolved from the config file location
110
+ - `bareRepoDir` defaults to `.bare/<repo-name>` if not specified
111
+ - Repository-specific settings override defaults
144
112
 
145
113
  ## How it works
146
114
 
147
- 1. **Initialization**: Clones the repository if it doesn't exist (when `--repoUrl` is provided)
115
+ 1. **Initialization**:
116
+ - Clones the repository as a bare repository (space-efficient, no working tree)
117
+ - Creates a main worktree for immediate use
118
+ - Stores bare repository in `.bare/<repo-name>` by default
148
119
  2. **Synchronization**:
149
120
  - Fetches latest changes from all remotes
150
121
  - Creates worktrees for new remote branches
@@ -159,21 +130,17 @@ See `sync-worktrees.config.example.js` for more examples.
159
130
  ## Development
160
131
 
161
132
  ```bash
162
- # Clone the repository
133
+ # Setup
163
134
  git clone https://github.com/yordan-kanchelov/sync-worktrees.git
164
135
  cd sync-worktrees
165
-
166
- # Install dependencies
167
136
  pnpm install
168
137
 
169
- # Build
138
+ # Build and test
170
139
  pnpm build
171
-
172
- # Run tests
173
140
  pnpm test
174
141
 
175
- # Development mode
176
- pnpm dev -- --repoPath /path/to/repo --worktreeDir /path/to/worktrees --runOnce
142
+ # Run in development mode
143
+ pnpm dev -- --repoUrl https://github.com/user/repo.git --worktreeDir ./worktrees --runOnce
177
144
  ```
178
145
 
179
146
  ### Available Scripts
@@ -181,12 +148,19 @@ pnpm dev -- --repoPath /path/to/repo --worktreeDir /path/to/worktrees --runOnce
181
148
  - `pnpm build` - Build the project
182
149
  - `pnpm dev` - Run in development mode
183
150
  - `pnpm test` - Run tests
151
+ - `pnpm test:watch` - Run tests in watch mode
152
+ - `pnpm test:coverage` - Run tests with coverage report
184
153
  - `pnpm lint` - Check linting
154
+ - `pnpm lint:fix` - Auto-fix linting errors
185
155
  - `pnpm typecheck` - Run type checking
186
156
  - `pnpm changeset` - Create a changeset for your changes
187
157
  - `pnpm version` - Update versions based on changesets
188
158
  - `pnpm release` - Build and publish to npm
189
159
 
160
+ ### Testing
161
+
162
+ The test suite uses Jest with comprehensive unit and integration tests. Common test utilities are available in `src/__tests__/test-utils.ts` including mock factories, test data constants, and helper functions. Use these utilities when writing tests to maintain consistency.
163
+
190
164
  ## Contributing
191
165
 
192
166
  This project uses [changesets](https://github.com/changesets/changesets) to manage versions and releases.
@@ -194,13 +168,14 @@ This project uses [changesets](https://github.com/changesets/changesets) to mana
194
168
  ### Making Changes
195
169
 
196
170
  1. Make your changes and commit them
197
- 2. Run `pnpm changeset` to create a changeset describing your changes
198
- 3. Select the appropriate version bump type (patch/minor/major)
199
- 4. Write a summary of your changes for the changelog
200
- 5. Commit the generated changeset file
171
+ 2. Write tests for your changes using the test utilities in `src/__tests__/test-utils.ts`
172
+ 3. Run `pnpm changeset` to create a changeset describing your changes
173
+ 4. Select the appropriate version bump type (patch/minor/major)
174
+ 5. Write a summary of your changes for the changelog
175
+ 6. Commit the generated changeset file
201
176
 
202
177
  The CI will automatically create a PR to update versions when changesets are merged to main, and will publish to npm when that PR is merged.
203
178
 
204
179
  ## License
205
180
 
206
- ISC
181
+ MIT © [Yordan Kanchelov](https://github.com/yordan-kanchelov)
package/dist/index.js CHANGED
@@ -79,8 +79,11 @@ async function runMultipleRepositories(repositories, runOnce) {
79
79
  console.log(`\n🔄 Syncing ${repositories.length} repositories...`);
80
80
  for (const repoConfig of repositories) {
81
81
  console.log(`\n📦 Repository: ${repoConfig.name}`);
82
- console.log(` Path: ${repoConfig.repoPath}`);
82
+ console.log(` URL: ${repoConfig.repoUrl}`);
83
83
  console.log(` Worktrees: ${repoConfig.worktreeDir}`);
84
+ if (repoConfig.bareRepoDir) {
85
+ console.log(` Bare repo: ${repoConfig.bareRepoDir}`);
86
+ }
84
87
  const syncService = new worktree_sync_service_1.WorktreeSyncService(repoConfig);
85
88
  services.set(repoConfig.name, syncService);
86
89
  try {
@@ -133,12 +136,12 @@ async function listRepositories(configPath) {
133
136
  configFile.repositories.forEach((repo, index) => {
134
137
  const resolved = configLoader.resolveRepositoryConfig(repo, configFile.defaults, configDir);
135
138
  console.log(`${index + 1}. ${resolved.name}`);
136
- console.log(` Repository: ${resolved.repoPath}`);
139
+ console.log(` URL: ${resolved.repoUrl}`);
137
140
  console.log(` Worktrees: ${resolved.worktreeDir}`);
138
141
  console.log(` Schedule: ${resolved.cronSchedule}`);
139
142
  console.log(` Run Once: ${resolved.runOnce}`);
140
- if (resolved.repoUrl) {
141
- console.log(` URL: ${resolved.repoUrl}`);
143
+ if (resolved.bareRepoDir) {
144
+ console.log(` Bare repo: ${resolved.bareRepoDir}`);
142
145
  }
143
146
  console.log("");
144
147
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -83,14 +83,14 @@ class ConfigLoaderService {
83
83
  throw new Error(`Duplicate repository name: ${repoObj.name}`);
84
84
  }
85
85
  seenNames.add(repoObj.name);
86
- if (!repoObj.repoPath || typeof repoObj.repoPath !== "string") {
87
- throw new Error(`Repository '${repoObj.name}' must have a 'repoPath' property`);
86
+ if (!repoObj.repoUrl || typeof repoObj.repoUrl !== "string") {
87
+ throw new Error(`Repository '${repoObj.name}' must have a 'repoUrl' property`);
88
88
  }
89
89
  if (!repoObj.worktreeDir || typeof repoObj.worktreeDir !== "string") {
90
90
  throw new Error(`Repository '${repoObj.name}' must have a 'worktreeDir' property`);
91
91
  }
92
- if (repoObj.repoUrl !== undefined && typeof repoObj.repoUrl !== "string") {
93
- throw new Error(`Repository '${repoObj.name}' has invalid 'repoUrl' property`);
92
+ if (repoObj.bareRepoDir !== undefined && typeof repoObj.bareRepoDir !== "string") {
93
+ throw new Error(`Repository '${repoObj.name}' has invalid 'bareRepoDir' property`);
94
94
  }
95
95
  if (repoObj.cronSchedule !== undefined && typeof repoObj.cronSchedule !== "string") {
96
96
  throw new Error(`Repository '${repoObj.name}' has invalid 'cronSchedule' property`);
@@ -115,13 +115,13 @@ class ConfigLoaderService {
115
115
  resolveRepositoryConfig(repo, defaults, configDir) {
116
116
  const resolved = {
117
117
  name: repo.name,
118
- repoPath: this.resolvePath(repo.repoPath, configDir),
118
+ repoUrl: repo.repoUrl,
119
119
  worktreeDir: this.resolvePath(repo.worktreeDir, configDir),
120
120
  cronSchedule: repo.cronSchedule ?? defaults?.cronSchedule ?? "0 * * * *",
121
121
  runOnce: repo.runOnce ?? defaults?.runOnce ?? false,
122
122
  };
123
- if (repo.repoUrl) {
124
- resolved.repoUrl = repo.repoUrl;
123
+ if (repo.bareRepoDir) {
124
+ resolved.bareRepoDir = this.resolvePath(repo.bareRepoDir, configDir);
125
125
  }
126
126
  return resolved;
127
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.service.js","sourceRoot":"","sources":["../../src/services/config-loader.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-loader.service.js","sourceRoot":"","sources":["../../src/services/config-loader.service.ts"],"names":[],"mappings":"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"}
@@ -3,13 +3,15 @@ import type { SimpleGit } from "simple-git";
3
3
  export declare class GitService {
4
4
  private config;
5
5
  private git;
6
+ private bareRepoPath;
7
+ private mainWorktreePath;
6
8
  constructor(config: Config);
7
9
  initialize(): Promise<SimpleGit>;
8
10
  getGit(): SimpleGit;
9
11
  fetchAll(): Promise<void>;
10
12
  getRemoteBranches(): Promise<string[]>;
11
13
  addWorktree(branchName: string, worktreePath: string): Promise<void>;
12
- removeWorktree(branchName: string): Promise<void>;
14
+ removeWorktree(worktreePath: string): Promise<void>;
13
15
  pruneWorktrees(): Promise<void>;
14
16
  checkWorktreeStatus(worktreePath: string): Promise<boolean>;
15
17
  hasUnpushedCommits(worktreePath: string): Promise<boolean>;
@@ -18,5 +20,6 @@ export declare class GitService {
18
20
  path: string;
19
21
  branch: string;
20
22
  }[]>;
23
+ private getWorktreesFromBare;
21
24
  }
22
25
  //# sourceMappingURL=git.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git.service.d.ts","sourceRoot":"","sources":["../../src/services/git.service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,qBAAa,UAAU;IAGT,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,GAAG,CAA0B;gBAEjB,MAAM,EAAE,MAAM;IAE5B,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;IAqBtC,MAAM,IAAI,SAAS;IAOb,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzB,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAMtC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpE,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjD,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM3D,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB1D,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAMnC,YAAY,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CA6BlE"}
1
+ {"version":3,"file":"git.service.d.ts","sourceRoot":"","sources":["../../src/services/git.service.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,qBAAa,UAAU;IAKT,OAAO,CAAC,MAAM;IAJ1B,OAAO,CAAC,GAAG,CAA0B;IACrC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAS;gBAEb,MAAM,EAAE,MAAM;IAK5B,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;IAsEtC,MAAM,IAAI,SAAS;IAOb,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzB,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAMtC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpE,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM3D,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB1D,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAMnC,YAAY,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;YAKnD,oBAAoB;CA4BnC"}
@@ -38,31 +38,77 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.GitService = void 0;
40
40
  const fs = __importStar(require("fs/promises"));
41
+ const path = __importStar(require("path"));
41
42
  const simple_git_1 = __importDefault(require("simple-git"));
43
+ const git_url_1 = require("../utils/git-url");
42
44
  class GitService {
43
45
  config;
44
46
  git = null;
47
+ bareRepoPath;
48
+ mainWorktreePath;
45
49
  constructor(config) {
46
50
  this.config = config;
51
+ this.bareRepoPath = this.config.bareRepoDir || (0, git_url_1.getDefaultBareRepoDir)(this.config.repoUrl);
52
+ this.mainWorktreePath = path.join(this.config.worktreeDir, "main");
47
53
  }
48
54
  async initialize() {
49
- const { repoPath, repoUrl } = this.config;
55
+ const { repoUrl } = this.config;
50
56
  try {
51
- await fs.access(repoPath);
52
- console.log(`Repository path at "${repoPath}" already exists. Using it.`);
53
- this.git = (0, simple_git_1.default)(repoPath);
54
- return this.git;
57
+ // Check if bare repo already exists
58
+ await fs.access(path.join(this.bareRepoPath, "HEAD"));
59
+ console.log(`Bare repository at "${this.bareRepoPath}" already exists. Using it.`);
55
60
  }
56
61
  catch {
57
- if (!repoUrl) {
58
- throw new Error(`Repo path "${repoPath}" not found and no --repoUrl was provided to clone from.`);
62
+ // Clone as bare repository
63
+ console.log(`Cloning from "${repoUrl}" as bare repository into "${this.bareRepoPath}"...`);
64
+ // Validate bareRepoPath before using path.dirname()
65
+ if (!this.bareRepoPath || this.bareRepoPath.trim() === "") {
66
+ throw new Error("Invalid bare repository path: path cannot be empty");
59
67
  }
60
- console.log(`Cloning from "${repoUrl}" into "${repoPath}"...`);
61
- await (0, simple_git_1.default)().clone(repoUrl, repoPath);
68
+ const resolvedBareRepoPath = path.resolve(this.bareRepoPath);
69
+ const parentDir = path.dirname(resolvedBareRepoPath);
70
+ // Check if bareRepoPath is a root directory or if parent directory is the same as bareRepoPath
71
+ if (parentDir === resolvedBareRepoPath || parentDir === "/" || /^[A-Za-z]:[\\/]?$/.test(parentDir)) {
72
+ throw new Error(`Invalid bare repository path: "${this.bareRepoPath}" is a root directory or has invalid parent directory`);
73
+ }
74
+ await fs.mkdir(path.dirname(resolvedBareRepoPath), { recursive: true });
75
+ await (0, simple_git_1.default)().clone(repoUrl, this.bareRepoPath, ["--bare"]);
62
76
  console.log("✅ Clone successful.");
63
- this.git = (0, simple_git_1.default)(repoPath);
64
- return this.git;
65
77
  }
78
+ // Configure bare repository for worktrees
79
+ const bareGit = (0, simple_git_1.default)(this.bareRepoPath);
80
+ // Check if remote.origin.fetch config already exists to prevent duplicates
81
+ const fetchRefspec = "+refs/heads/*:refs/remotes/origin/*";
82
+ try {
83
+ const existingFetch = await bareGit.raw(["config", "--get-all", "remote.origin.fetch"]);
84
+ if (!existingFetch.includes(fetchRefspec)) {
85
+ await bareGit.addConfig("remote.origin.fetch", fetchRefspec);
86
+ }
87
+ }
88
+ catch {
89
+ // Config doesn't exist, add it
90
+ await bareGit.addConfig("remote.origin.fetch", fetchRefspec);
91
+ }
92
+ // Check if main worktree exists
93
+ let needsMainWorktree = true;
94
+ try {
95
+ const worktrees = await this.getWorktreesFromBare(bareGit);
96
+ needsMainWorktree = !worktrees.some((w) => w.path === this.mainWorktreePath);
97
+ }
98
+ catch {
99
+ // If worktree list fails, assume we need main worktree
100
+ }
101
+ if (needsMainWorktree) {
102
+ // Create main worktree if it doesn't exist
103
+ console.log(`Creating main worktree at "${this.mainWorktreePath}"...`);
104
+ await fs.mkdir(this.config.worktreeDir, { recursive: true });
105
+ // Use absolute path for worktree add to avoid relative path issues
106
+ const absoluteWorktreePath = path.resolve(this.mainWorktreePath);
107
+ await bareGit.raw(["worktree", "add", absoluteWorktreePath, "main"]);
108
+ }
109
+ // Use the main worktree as our primary git instance
110
+ this.git = (0, simple_git_1.default)(this.mainWorktreePath);
111
+ return this.git;
66
112
  }
67
113
  getGit() {
68
114
  if (!this.git) {
@@ -81,18 +127,20 @@ class GitService {
81
127
  return branches.all.filter((b) => b.startsWith("origin/")).map((b) => b.replace("origin/", ""));
82
128
  }
83
129
  async addWorktree(branchName, worktreePath) {
84
- const git = this.getGit();
85
- await git.raw(["worktree", "add", worktreePath, branchName]);
130
+ const bareGit = (0, simple_git_1.default)(this.bareRepoPath);
131
+ // Use absolute path for worktree add to avoid relative path issues
132
+ const absoluteWorktreePath = path.resolve(worktreePath);
133
+ await bareGit.raw(["worktree", "add", absoluteWorktreePath, branchName]);
86
134
  console.log(` - Created worktree for '${branchName}'`);
87
135
  }
88
- async removeWorktree(branchName) {
89
- const git = this.getGit();
90
- await git.raw(["worktree", "remove", branchName, "--force"]);
91
- console.log(` - ✅ Safely removed stale worktree for '${branchName}'.`);
136
+ async removeWorktree(worktreePath) {
137
+ const bareGit = (0, simple_git_1.default)(this.bareRepoPath);
138
+ await bareGit.raw(["worktree", "remove", worktreePath, "--force"]);
139
+ console.log(` - ✅ Safely removed stale worktree at '${worktreePath}'.`);
92
140
  }
93
141
  async pruneWorktrees() {
94
- const git = this.getGit();
95
- await git.raw(["worktree", "prune"]);
142
+ const bareGit = (0, simple_git_1.default)(this.bareRepoPath);
143
+ await bareGit.raw(["worktree", "prune"]);
96
144
  console.log("Pruned worktree metadata.");
97
145
  }
98
146
  async checkWorktreeStatus(worktreePath) {
@@ -123,8 +171,11 @@ class GitService {
123
171
  return branchSummary.current;
124
172
  }
125
173
  async getWorktrees() {
126
- const git = this.getGit();
127
- const result = await git.raw(["worktree", "list", "--porcelain"]);
174
+ const bareGit = (0, simple_git_1.default)(this.bareRepoPath);
175
+ return this.getWorktreesFromBare(bareGit);
176
+ }
177
+ async getWorktreesFromBare(bareGit) {
178
+ const result = await bareGit.raw(["worktree", "list", "--porcelain"]);
128
179
  const worktrees = [];
129
180
  const lines = result.trim().split("\n");
130
181
  let currentWorktree = {};
@@ -1 +1 @@
1
- {"version":3,"file":"git.service.js","sourceRoot":"","sources":["../../src/services/git.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git.service.js","sourceRoot":"","sources":["../../src/services/git.service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-sync.service.d.ts","sourceRoot":"","sources":["../../src/services/worktree-sync.service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,qBAAa,mBAAmB;IAGlB,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,UAAU,CAAa;gBAEX,MAAM,EAAE,MAAM;IAI5B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAmCb,kBAAkB;YAoBlB,iBAAiB;YAgCjB,0BAA0B;CA2BzC"}
1
+ {"version":3,"file":"worktree-sync.service.d.ts","sourceRoot":"","sources":["../../src/services/worktree-sync.service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,qBAAa,mBAAmB;IAGlB,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,UAAU,CAAa;gBAEX,MAAM,EAAE,MAAM;IAI5B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAmCb,kBAAkB;YAoBlB,iBAAiB;YAgCjB,0BAA0B;CAuCzC"}
@@ -100,7 +100,7 @@ class WorktreeSyncService {
100
100
  const isClean = await this.gitService.checkWorktreeStatus(worktreePath);
101
101
  const hasUnpushed = await this.gitService.hasUnpushedCommits(worktreePath);
102
102
  if (isClean && !hasUnpushed) {
103
- await this.gitService.removeWorktree(branchName);
103
+ await this.gitService.removeWorktree(worktreePath);
104
104
  }
105
105
  else {
106
106
  if (!isClean) {
@@ -122,9 +122,20 @@ class WorktreeSyncService {
122
122
  }
123
123
  async cleanupOrphanedDirectories(worktrees) {
124
124
  try {
125
- const worktreePaths = worktrees.map((w) => path.basename(w.path));
125
+ const worktreeRelativePaths = worktrees.map((w) => path.relative(this.config.worktreeDir, w.path));
126
126
  const allDirs = await fs.readdir(this.config.worktreeDir);
127
- const orphanedDirs = allDirs.filter((dir) => !worktreePaths.includes(dir));
127
+ // For each directory, check if it's part of any worktree path
128
+ const orphanedDirs = [];
129
+ for (const dir of allDirs) {
130
+ // Check if this directory is part of any worktree path
131
+ const isPartOfWorktree = worktreeRelativePaths.some((worktreePath) => {
132
+ // Either the directory IS a worktree or it's a parent of a worktree
133
+ return worktreePath === dir || worktreePath.startsWith(dir + path.sep);
134
+ });
135
+ if (!isPartOfWorktree) {
136
+ orphanedDirs.push(dir);
137
+ }
138
+ }
128
139
  if (orphanedDirs.length > 0) {
129
140
  console.log(`Found ${orphanedDirs.length} orphaned directories: ${orphanedDirs.join(", ")}`);
130
141
  for (const dir of orphanedDirs) {