added possibility to use origin branches
[GITManagedWebpage.git] / GITManagedWebpage.class.php
index 7622b30ebd41a15ff707329d29b8ce1b2c871311..5b15d8cbf32293e6209683935ce3756d0628e306 100644 (file)
@@ -90,7 +90,7 @@ class GITManagedWebpage {
             } else
                 $argstr .= " ".escapeshellarg($arg);
         }
-        $gitcmd = 'git '.escapeshellarg('--git-dir='.$this->workdir.'repository/.git').' '.escapeshellarg('--work-tree='.$this->workdir.'repository/.git').$argstr;
+        $gitcmd = 'git '.escapeshellarg('--git-dir='.$this->workdir.'repository/.git').' '.escapeshellarg('--work-tree='.$this->workdir.'repository').$argstr;
         $output = shell_exec($gitcmd);
         return $output;
     }
@@ -218,7 +218,7 @@ class GITManagedWebpage {
         if($branch == $default_branch)
             $dir = $this->localdir;
         else
-            $dir = $this->workdir.'branch_'.$branch.'/';
+            $dir = $this->workdir.'branch_'.str_replace(array('/'), array('_'), $branch).'/';
         if(file_exists($dir))
             return $dir;
         else if($create) {
@@ -234,7 +234,7 @@ class GITManagedWebpage {
         $current_branch = str_replace(array("\r", "\n"), array("", ""), $this->gitcmd("rev-parse", "--abbrev-ref", "HEAD"));
         if($current_branch != $branch)
             $this->gitcmd("checkout", $branch);
-        echo $this->gitcmd("pull");
+        $this->gitcmd("pull");
         $gitret = $this->gitcmd("rev-list", "--max-count=1", $branch);
         preg_match("#([a-z0-9]{40})#", $gitret, $match);
         $newest_version = $match[1];
@@ -290,8 +290,12 @@ class GITManagedWebpage {
         if($this->loopedcall)
             return;
         
-        if(!$this->branchExists($branch))
-            return false;
+        if(!$this->branchExists($branch)) {
+            if($this->branchExists('origin/'.$branch))
+                $branch = 'origin/'.$branch;
+            else
+                return false;
+        }
         $this->setActiveBranch($branch, $remember);
         
         if(!$this->localBranchPath($branch)) {