continued working on basic functionality
authorpk910 <philipp@zoelle1.de>
Sat, 5 Oct 2013 23:42:21 +0000 (01:42 +0200)
committerpk910 <philipp@zoelle1.de>
Sat, 5 Oct 2013 23:42:21 +0000 (01:42 +0200)
GITManagedWebpage.class.php

index 305530b1ba1195254bd2cd8c266a25ec3ce5ccfe..0cf408ce4bc1550134e1b9ca2908bc86ff820c8e 100644 (file)
@@ -33,6 +33,7 @@ class GITManagedWebpage {
     private $loopedcall = false;
     private $config = null;
     private $config_changed = true;
+    private $activeSession = null;
     
     public function __construct($giturl, $workdir = null, $localdir = null) {
         if(session_status() != PHP_SESSION_ACTIVE) {
@@ -238,13 +239,20 @@ class GITManagedWebpage {
         preg_match("#([a-z0-9]{40})#", $gitret, $match);
         $newest_version = $match[1];
         
+        $deleted_files = array();
         if(($current_version = $this->getConfig('version_'.$branch))) {
+            echo $current_version . " == " . $newest_version;
             if($current_version == $newest_version)
                 return;
             else {
-                //applying patch
-                $difftxt = $this->gitcmd("diff", $current_version, $newest_version);
-                echo $difftxt;
+                $override_all = true;
+                $delfiles = $this->gitcmd("diff", "--diff-filter=D", "--name-only", $current_version, $newest_version);
+                $delfiles = explode("\n", str_replace(array("\r"), array(""), $delfiles));
+                foreach($delfiles as $file) {
+                    if(!$file)
+                        continue;
+                    $deleted_files[] = $file;
+                }
             }
         } else
             $override_all = true;
@@ -254,9 +262,14 @@ class GITManagedWebpage {
                 shell_exec('rsync -avz --exclude ".git" '.escapeshellarg($this->workdir."repository/").' '.escapeshellarg($path));
             else
                 shell_exec('tar -c --exclude ".git" -C '.escapeshellarg($this->workdir."repository").' . | tar -x -C '.escapeshellarg($path));
+            
+            // remove deleted files
+            foreach($deleted_files as $file) {
+                unlink($path.$file);
+            }
         }
         $this->setConfig('version_'.$branch, $newest_version);
-        //$this->saveConfig();
+        $this->saveConfig();
     }
     
     /* public function update()