-
-
Notifications
You must be signed in to change notification settings - Fork 28
Open
Labels
enhancementNew feature or requestNew feature or request
Description
概要
別PCで作業の続きをしたいケースで、リモートにしかブランチが存在しない場合、現在の実装では branchExists がローカルブランチしかチェックしないため、既存ブランチが無視されて main から新規ブランチが作成されてしまう。
現状の動作
createSharedClone 内の branchExists は git rev-parse --verify <branch> でローカルブランチのみ確認している。
- ローカルにブランチあり → ✅ そのブランチでクローン
- リモートにのみあり → ❌ main から新規ブランチ作成(リモートの内容が引き継がれない)
- どこにもなし → 新規ブランチ作成
期待する動作
3段階でブランチを解決する:
- ローカルにブランチあり → そのブランチでクローン
- リモート(origin)にあり → そのブランチでクローン(
git clone --branchがリモート名も解決可能) - どこにもなし → ベースブランチからクローン → 新規ブランチ作成
実装方針
branchExists を拡張し、origin/<branch> もチェックする:
private static branchExists(projectDir: string, branch: string): boolean {
// ローカルブランチ
try {
execFileSync('git', ['rev-parse', '--verify', branch], { cwd: projectDir, stdio: 'pipe' });
return true;
} catch {}
// リモート追跡ブランチ
try {
execFileSync('git', ['rev-parse', '--verify', \`origin/${branch}\`], { cwd: projectDir, stdio: 'pipe' });
return true;
} catch {}
return false;
}cloneAndIsolate は git clone --branch を使っており、リモートブランチ名でも解決してくれるため変更不要。
ユースケース
- PC-A で takt がブランチを push 済み
- PC-B で同じブランチ名を指定して
takt add→takt run - リモートから既存ブランチが取得され、続きから作業できる
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request