findRemoteBase function
Find the best remote branch to use as a base.
Implementation
Future<String?> findRemoteBase({String? cwd}) async {
// Try tracking branch
final tracking = await _runGit([
'rev-parse',
'--abbrev-ref',
'--symbolic-full-name',
'@{u}',
], cwd: cwd);
if (tracking.code == 0 && tracking.stdout.trim().isNotEmpty) {
return tracking.stdout.trim();
}
// Try remote show
final remoteRefs = await _runGit([
'remote',
'show',
'origin',
'--',
'HEAD',
], cwd: cwd);
if (remoteRefs.code == 0) {
final match = RegExp(r'HEAD branch: (\S+)').firstMatch(remoteRefs.stdout);
if (match != null) return 'origin/${match.group(1)}';
}
// Check common branches
for (final candidate in ['origin/main', 'origin/staging', 'origin/master']) {
final check = await _runGit(['rev-parse', '--verify', candidate], cwd: cwd);
if (check.code == 0) return candidate;
}
return null;
}