@@ -1394,83 +1394,84 @@ public static void RemoveContextMenuRegistryAPKInstall(string contextRegRoot)
13941394 /// <returns></returns>
13951395 public static string ReadGitBranchInfo ( string projectPath , bool searchParentFolders )
13961396 {
1397- string results = null ;
1398-
1399- if ( searchParentFolders )
1397+ DirectoryInfo directoryInfo = new DirectoryInfo ( projectPath ) ;
1398+ while ( directoryInfo != null )
14001399 {
1401- DirectoryInfo directoryInfo = new DirectoryInfo ( projectPath ) ;
1400+ string gitDir = Path . Combine ( directoryInfo . FullName , ".git" ) ;
1401+ string headFile = Path . Combine ( gitDir , "HEAD" ) ;
14021402
1403- while ( directoryInfo != null )
1403+ if ( Directory . Exists ( gitDir ) && File . Exists ( headFile ) )
14041404 {
1405- string dirName = Path . Combine ( directoryInfo . FullName , ".git" ) ;
1405+ string headContent = File . ReadAllText ( headFile ) . Trim ( ) ;
1406+ int pos = headContent . LastIndexOf ( '/' ) + 1 ;
1407+ return ( pos < headContent . Length ) ? headContent . Substring ( pos ) : headContent ;
1408+ }
14061409
1407- if ( Directory . Exists ( dirName ) )
1408- {
1409- string branchFile = Path . Combine ( dirName , "HEAD" ) ;
1410- if ( File . Exists ( branchFile ) )
1411- {
1412- // removes extra end of line
1413- results = string . Join ( " " , File . ReadAllLines ( branchFile ) ) ;
1414- // get branch only
1415- int pos = results . LastIndexOf ( "/" ) + 1 ;
1416- results = results . Substring ( pos , results . Length - pos ) ;
1417- return results ;
1418- }
1419- }
1420- directoryInfo = directoryInfo . Parent ;
1410+ if ( ! searchParentFolders )
1411+ {
1412+ break ;
14211413 }
1414+ directoryInfo = directoryInfo . Parent ;
14221415 }
1423- else
1416+
1417+ return null ;
1418+ }
1419+
1420+
1421+ public static string ReadPlasticBranchInfo ( string projectPath , bool searchParentFolders )
1422+ {
1423+ string branchName = null ;
1424+ DirectoryInfo directoryInfo = new DirectoryInfo ( projectPath ) ;
1425+
1426+ while ( directoryInfo != null )
14241427 {
1425- string dirName = Path . Combine ( projectPath , ".git " ) ;
1426- if ( Directory . Exists ( dirName ) )
1428+ string plasticSelectorPath = Path . Combine ( directoryInfo . FullName , ".plastic" , "plastic.selector ") ;
1429+ if ( File . Exists ( plasticSelectorPath ) )
14271430 {
1428- string branchFile = Path . Combine ( dirName , "HEAD" ) ;
1429- if ( File . Exists ( branchFile ) )
1431+ branchName = ExtractPlasticBranch ( plasticSelectorPath ) ;
1432+ if ( ! string . IsNullOrEmpty ( branchName ) )
14301433 {
1431- // removes extra end of line
1432- results = string . Join ( " " , File . ReadAllLines ( branchFile ) ) ;
1433- // get branch only
1434- int pos = results . LastIndexOf ( "/" ) + 1 ;
1435- results = results . Substring ( pos , results . Length - pos ) ;
1436-
1434+ return branchName ;
14371435 }
14381436 }
1437+
1438+ if ( ! searchParentFolders )
1439+ {
1440+ break ;
1441+ }
1442+
1443+ directoryInfo = directoryInfo . Parent ;
14391444 }
1440- return results ;
1445+
1446+ return branchName ;
14411447 }
14421448
1443- public static string ReadPlasticBranchInfo ( string projectPath )
1449+ private static string ExtractPlasticBranch ( string plasticSelectorPath )
14441450 {
1445- string branchName = null ;
1446- string plasticSelectorPath = Path . Combine ( projectPath , ".plastic" , "plastic.selector" ) ;
1447-
1448- if ( File . Exists ( plasticSelectorPath ) )
1451+ string [ ] lines = File . ReadAllLines ( plasticSelectorPath ) ;
1452+ foreach ( string line in lines )
14491453 {
1450- string [ ] lines = File . ReadAllLines ( plasticSelectorPath ) ;
1451- foreach ( string line in lines )
1454+ string trimmedLine = line . Trim ( ) ;
1455+ if ( trimmedLine . StartsWith ( "br " ) || trimmedLine . StartsWith ( "smartbranch " ) )
14521456 {
1453- string trimmedLine = line . Trim ( ) ;
1454- if ( trimmedLine . StartsWith ( "br " ) || trimmedLine . StartsWith ( "smartbranch " ) )
1457+ // Extract the first quoted string
1458+ var match = Regex . Match ( trimmedLine , "\" ([^\" ]+)\" " ) ;
1459+ if ( match . Success )
14551460 {
1456- // Extract the branch name between quotes
1457- var match = Regex . Match ( trimmedLine , "\" ([^ \" ]+) \" " ) ;
1458- if ( match . Success )
1461+ string branchName = match . Groups [ 1 ] . Value ;
1462+ // Remove leading slash if present (e.g. , "/main" becomes "main")
1463+ if ( branchName . StartsWith ( "/" ) )
14591464 {
1460- branchName = match . Groups [ 1 ] . Value ;
1461- // Remove the leading slash if present
1462- if ( branchName . StartsWith ( "/" ) )
1463- {
1464- branchName = branchName . Substring ( 1 ) ;
1465- }
1466- break ;
1465+ branchName = branchName . Substring ( 1 ) ;
14671466 }
1467+ return branchName ;
14681468 }
14691469 }
14701470 }
1471- return branchName ;
1471+ return null ;
14721472 }
14731473
1474+
14741475 //public static Platform GetTargetPlatform(string projectPath)
14751476 static string GetTargetPlatformRaw ( string projectPath )
14761477 {
0 commit comments