<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -27,10 +27,28 @@ role :db,  &quot;{REPLACE WITH YOUR SERVER}&quot;, :primary =&gt; true
 
 # ----- Marley tasks ----------------------------------------------------------
 
+data_directory_name   = CONFIG['data_directory'].split('/').last
+remote_data_directory = File.join(deploy_to, data_directory_name)
+
 namespace :sync do
   namespace :setup do
-    desc &quot;Set up remote repository on server with post-receive hook for autoupdating content and add remote to yout data repository&quot;
+    desc &quot;Set up data directory on remote either by Git-cloning local stuff or cloning from Github&quot;
     task :default do
+      Capistrano::CLI.ui.say &quot;Choose how to setup data directory on remote:&quot;
+      Capistrano::CLI.ui.choose do |menu|
+        menu.prompt = &quot;Choose 1 or 2:&quot;
+        menu.choice(&quot;By uploading local data&quot;) do
+          Capistrano::CLI.ui.say(&quot;* Setting up data directory on remote by uploading local&quot;)
+          upload_local
+        end
+        menu.choice(&quot;By cloning Github repository&quot;) do
+          Capistrano::CLI.ui.say(&quot;* Setting up data  directory on remote by cloning Github&quot;)
+          clone_github
+        end
+      end
+    end
+    desc &quot;Set up remote repository on server with post-receive hook for autoupdating content and add remote to yout data repository&quot;
+    task :upload_local do
       upload_data_repository
       add_post_receive_hook_for_data_repository
       add_git_remote_to_data_directory
@@ -43,7 +61,6 @@ namespace :sync do
     end
     task :add_post_receive_hook_for_data_repository do
       post_receive_script   = &quot;#{deploy_to}/articles.git/hooks/post-receive&quot;
-      remote_data_directory = File.join(deploy_to, CONFIG['data_directory'].split('/').last)
       hook_command =&quot;export GIT_DIR=.git; cd #{remote_data_directory}; git pull origin master; echo \&quot;[Post-receive] Data directory has been synchronized in #{remote_data_directory}\&quot;&quot;
       run &quot;chmod +x #{post_receive_script}; echo '#{hook_command}' &gt;&gt; #{post_receive_script}&quot;
       puts &quot;--- Added post-receive hook for Git repository\n&quot;
@@ -52,12 +69,13 @@ namespace :sync do
       `cd #{CONFIG['data_directory']}; git remote add sync #{user}@#{roles[:app].instance_variable_get(:@static_servers).first.instance_variable_get(:@host)}:#{deploy_to}/articles.git`
       puts &quot;--- Added remote repository 'sync' for data. Use 'git push sync' to synchronize your content.\n&quot;
     end
-    desc &quot;Add Github remote repo in your data directory&quot;
-    task :github do
-      remote_data_directory = File.join(deploy_to, CONFIG['data_directory'].split('/').last)
+    desc &quot;Clone Github remote repo in your data directory&quot;
+    task :clone_github do
       url = Capistrano::CLI.ui.ask &quot;Enter Github clone URL (you need to setup deploy keys for private repo):&quot;
-      run &quot;cd #{remote_data_directory}; git clone #{url} .&quot;
-      run &quot;cd #{remote_data_directory}; git remote add github #{url}&quot;
+      run &quot;cd #{deploy_to}; git clone #{url} #{data_directory_name}&quot;
+      Capistrano::CLI.ui.say &quot;\n&quot;
+      Capistrano::CLI.ui.say &quot;Setup Post-Receive URL hook (http://github.com/guides/post-receive-hooks) in administration for \
+                              your Github repository to: http://{YOUR APPLICATION}/sync?token=#{CONFIG['github_token']}&quot;
     end
   end
 end
@@ -65,7 +83,13 @@ end
 namespace :app do
   desc &quot;Upload configuration file (config/config.yml) to deploy&quot;
   task :upload_config, :roles =&gt; :app do
-   top.upload('config/config.yml', &quot;#{shared_path}/config.yml&quot; )
+   # Fix directory nesting on server (app is in /DEPLOY/releases/XXX)
+   config_yml = File.read( File.join(File.dirname(__FILE__), 'config.yml') ).gsub!(/data_directory: &quot;(.*)&quot;/, 'data_directory: &quot;../\1&quot;')
+   File.open( File.join(File.dirname(__FILE__), 'config.remote.yml'), 'w' ) { |f| f &lt;&lt; config_yml }
+   top.upload('config/config.remote.yml', &quot;#{shared_path}/config.yml&quot; )
+  end
+  task :create_data_directory do
+    run &quot;mkdir -p #{remote_data_directory}&quot;
   end
   task :create_database_for_comments do
     run &quot;cd #{current_path}; rake app:install:create_database_for_comments&quot;
@@ -74,12 +98,12 @@ end
 
 # ----- Hooks ----------------------------------------------------------------
 
-before &quot;deploy:cold&quot; do
-  app.upload_config
+after &quot;sync:setup&quot; do
+  app.create_database_for_comments
 end
 
-after &quot;deploy:cold&quot; do
-  app.create_database_for_comments
+after &quot;deploy:setup&quot; do
+  app.upload_config
 end
 
 after &quot;deploy:update_code&quot; do</diff>
      <filename>config/deploy.example.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>73a6e8cb929c8be42d94a6be4369e2ec5c314ac1</id>
    </parent>
  </parents>
  <author>
    <name>Karel Minarik</name>
    <email>karmi@karmi.cz</email>
  </author>
  <url>http://github.com/lukeredpath/marley/commit/de5373eae68a73b92a5397fea9e7c8a75ad74b6c</url>
  <id>de5373eae68a73b92a5397fea9e7c8a75ad74b6c</id>
  <committed-date>2008-11-09T04:02:59-08:00</committed-date>
  <authored-date>2008-11-09T04:02:59-08:00</authored-date>
  <message>Fixed Rake tasks for setting up syncing data with Git repositories</message>
  <tree>0ba84372d8a80b395283214baa30144842e67fe2</tree>
  <committer>
    <name>Karel Minarik</name>
    <email>karmi@karmi.cz</email>
  </committer>
</commit>
