@@ -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