<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,4 +1,4 @@
-Copyright (c) 2005,2006 Jamis Buck
+Copyright (c) 2005-2007 Jamis Buck &lt;jamis@37signals.com&gt;
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the</diff>
      <filename>MIT-LICENSE</filename>
    </modified>
    <modified>
      <diff>@@ -2,34 +2,36 @@
 
 Capistrano is a utility and framework for executing commands in parallel on multiple remote machines, via SSH. It uses a simple DSL (borrowed in part from Rake, http://rake.rubyforge.org/) that allows you to define _tasks_, which may be applied to machines in certain roles. It also supports tunneling connections via some gateway machine to allow operations to be performed behind VPN's and firewalls.
 
-Capistrano was originally designed to simplify and automate deployment of web applications to distributed environments, and so it comes with many tasks predefined for that (&quot;update_code&quot; and &quot;deploy&quot;, for instance).
+Capistrano was originally designed to simplify and automate deployment of web applications to distributed environments, and originally came bundled with a set of tasks designed for deploying Rails applications. The deployment tasks are now (as of Capistrano 2.0) distributed as a separate package: capistrano-deploy.
 
 == Dependencies
 
-Capistrano depends upon the Net::SSH library by Jamis Buck (http://net-ssh.rubyforge.org). Net::SSH itself depends on the Needle library (http://needle.rubyforge.org), also by Jamis Buck.
+* Net::SSH and Net::SFTP (http://net-ssh.rubyforge.org)
+* Needle (via Net::SSH)
+* HighLine (http://highline.rubyforge.org)
+
+If you want to run the tests, you'll also need to have the following dependencies installed:
+
+* Mocha (http://mocha.rubyforge.org)
 
 == Assumptions
 
-In keeping with Rails' &quot;convention over configuration&quot;, Capistrano makes several assumptions about how you will use it (most, if not all, of which may be explicitly overridden):
+Capistrano is &quot;opinionated software&quot;, which means it has very firm ideas about how things ought to be done, and tries to force those ideas on you. Some of the assumptions behind these opinions are:
 
-* You are writing web applications and want to use Capistrano to deploy them.
-* You are using Ruby on Rails (http://www.rubyonrails.com) to build your apps.
-* You are using Subversion (http://subversion.tigris.org/) to manage your source code.
-* You are running your apps using FastCGI, together with Rails' spinner/reaper utilities.
+* You are using SSH to access the remote servers.
+* You either have the same password to all target machines, or you have public keys in place to allow passwordless access to them.
 
-As with the rest of Rails, if you can abide by these assumptions, you can use Capistrano &quot;out of the box&quot;. If any of these assumptions do not hold, you'll need to make some adjustments to your deployment recipe files.
+Do not expect these assumptions to change.
 
 == Usage
 
-More documentation is always pending, but you'll want to see the user manual for detailed usage instructions. (The manual is online at http://manuals.rubyonrails.org/read/book/17).
-
 In general, you'll use Capistrano as follows:
 
-* Create a deployment recipe (&quot;deploy.rb&quot;) for your application. You can use the sample recipe in examples/sample.rb as a starting point.
-* Use the +cap+ script to execute your recipe (see below).
+* Create a recipe file (&quot;capfile&quot; or &quot;Capfile&quot;).
+* Use the +cap+ script to execute your recipe.
 
 Use the +cap+ script as follows:
 
-    cap -vvv someaction
+    cap sometask
 
-By default, the script will look for a file called one of &lt;tt&gt;config/deploy&lt;/tt&gt;, &lt;tt&gt;config/deploy.rb&lt;/tt&gt;, &lt;tt&gt;capistrano&lt;/tt&gt;, or &lt;tt&gt;capistrano.rb&lt;/tt&gt;. You can the &lt;tt&gt;-v&lt;/tt&gt; switch multiple times (as shown) to increase the verbosity of the output. The +someaction+ text indicates which action to execute.
+By default, the script will look for a file called one of +capfile+ or +Capfile+. The +someaction+ text indicates which task to execute. You can do &quot;cap -h&quot; to see all the available options and &quot;cap -T&quot; to see all the available tasks.</diff>
      <filename>README</filename>
    </modified>
    <modified>
      <diff>@@ -6,7 +6,7 @@ Gem::Specification.new do |s|
   s.version = PKG_VERSION
   s.platform = Gem::Platform::RUBY
   s.summary = &lt;&lt;-DESC.strip.gsub(/\n\s+/, &quot; &quot;)
-    Capistrano is a framework and utility for executing commands in parallel
+    Capistrano is a utility and framework for executing commands in parallel
     on multiple remote machines, via SSH.
   DESC
 </diff>
      <filename>capistrano.gemspec</filename>
    </modified>
    <modified>
      <diff>@@ -1,113 +1,14 @@
-# You must always specify the application and repository for every recipe. The
-# repository must be the URL of the repository you want this recipe to
-# correspond to. The deploy_to path must be the path on each machine that will
-# form the root of the application path.
+# set :user, &quot;flippy&quot;
+# set :password, &quot;hello-flippy&quot;
+# set :gateway, &quot;gateway.example.com&quot;
 
-set :application, &quot;sample&quot;
-set :repository, &quot;http://svn.example.com/#{application}/trunk&quot;
+role :web, &quot;web1.example.com&quot;
+role :app, &quot;app1.example.com&quot;, &quot;app2.example.com&quot;
 
-# The deploy_to path is optional, defaulting to &quot;/u/apps/#{application}&quot;.
-
-set :deploy_to, &quot;/path/to/app/root&quot;
-
-# The user value is optional, defaulting to user-name of the current user. This
-# is the user name that will be used when logging into the deployment boxes.
-
-set :user, &quot;flippy&quot;
-
-# By default, the source control module (scm) is set to &quot;subversion&quot;. You can
-# set it to any supported scm:
-
-set :scm, :subversion
-
-# gateway is optional, but allows you to specify the address of a computer that
-# will be used to tunnel other requests through, such as when your machines are
-# all behind a VPN or something
-
-set :gateway, &quot;gateway.example.com&quot;
-
-# You can define any number of roles, each of which contains any number of
-# machines. Roles might include such things as :web, or :app, or :db, defining
-# what the purpose of each machine is. You can also specify options that can
-# be used to single out a specific subset of boxes in a particular role, like
-# :primary =&gt; true.
-
-role :web, &quot;www01.example.com&quot;, &quot;www02.example.com&quot;
-role :app, &quot;app01.example.com&quot;, &quot;app02.example.com&quot;, &quot;app03.example.com&quot;
-role :db,  &quot;db01.example.com&quot;, :primary =&gt; true
-role :db,  &quot;db02.example.com&quot;, &quot;db03.example.com&quot;
-
-# Define tasks that run on all (or only some) of the machines. You can specify
-# a role (or set of roles) that each task should be executed on. You can also
-# narrow the set of servers to a subset of a role by specifying options, which
-# must match the options given for the servers to select (like :primary =&gt; true)
-
-desc &lt;&lt;DESC
-An imaginary backup task. (Execute the 'show_tasks' task to display all
-available tasks.)
+desc &lt;&lt;-DESC
+This is a sample task. It is only intended to be used as a demonstration of \
+how you can define your own tasks.
 DESC
-
-task :backup, :roles =&gt; :db, :only =&gt; { :primary =&gt; true } do
-  # the on_rollback handler is only executed if this task is executed within
-  # a transaction (see below), AND it or a subsequent task fails.
-  on_rollback { delete &quot;/tmp/dump.sql&quot; }
-
-  run &quot;mysqldump -u theuser -p thedatabase &gt; /tmp/dump.sql&quot; do |ch, stream, out|
-    ch.send_data &quot;thepassword\n&quot; if out =~ /^Enter password:/
-  end
-end
-
-# Tasks may take advantage of several different helper methods to interact
-# with the remote server(s). These are:
-#
-# * run(command, options={}, &amp;block): execute the given command on all servers
-#   associated with the current task, in parallel. The block, if given, should
-#   accept three parameters: the communication channel, a symbol identifying the
-#   type of stream (:err or :out), and the data. The block is invoked for all
-#   output from the command, allowing you to inspect output and act
-#   accordingly.
-# * sudo(command, options={}, &amp;block): same as run, but it executes the command
-#   via sudo.
-# * delete(path, options={}): deletes the given file or directory from all
-#   associated servers. If :recursive =&gt; true is given in the options, the
-#   delete uses &quot;rm -rf&quot; instead of &quot;rm -f&quot;.
-# * put(buffer, path, options={}): creates or overwrites a file at &quot;path&quot; on
-#   all associated servers, populating it with the contents of &quot;buffer&quot;. You
-#   can specify :mode as an integer value, which will be used to set the mode
-#   on the file.
-# * render(template, options={}) or render(options={}): renders the given
-#   template and returns a string. Alternatively, if the :template key is given,
-#   it will be treated as the contents of the template to render. Any other keys
-#   are treated as local variables, which are made available to the (ERb)
-#   template.
-
-desc &quot;Demonstrates the various helper methods available to recipes.&quot;
-task :helper_demo do
-  # &quot;setup&quot; is a standard task which sets up the directory structure on the
-  # remote servers. It is a good idea to run the &quot;setup&quot; task at least once
-  # at the beginning of your app's lifetime (it is non-destructive).
-  setup
-
-  buffer = render(&quot;maintenance.rhtml&quot;, :deadline =&gt; ENV['UNTIL'])
-  put buffer, &quot;#{shared_path}/system/maintenance.html&quot;, :mode =&gt; 0644
-  sudo &quot;killall -USR1 dispatch.fcgi&quot;
-  run &quot;#{release_path}/script/spin&quot;
-  delete &quot;#{shared_path}/system/maintenance.html&quot;
-end
-
-# You can use &quot;transaction&quot; to indicate that if any of the tasks within it fail,
-# all should be rolled back (for each task that specifies an on_rollback
-# handler).
-
-desc &quot;A task demonstrating the use of transactions.&quot;
-task :long_deploy do
-  transaction do
-    update_code
-    disable_web
-    symlink
-    migrate
-  end
-
-  restart
-  enable_web
+task :sample_task, :roles =&gt; :app do
+  run &quot;ls -l&quot;
 end</diff>
      <filename>examples/sample.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>THANKS</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>c0e2ee20f9ed0d7cb3a5466d1ebcf55dd41891b6</id>
    </parent>
  </parents>
  <author>
    <name>Jamis Buck</name>
    <email>jamis@37signals.com</email>
  </author>
  <url>http://github.com/jamis/capistrano/commit/414da791d23ee9184d473533843a41919e059db0</url>
  <id>414da791d23ee9184d473533843a41919e059db0</id>
  <committed-date>2007-03-04T14:25:51-08:00</committed-date>
  <authored-date>2007-03-04T14:25:51-08:00</authored-date>
  <message>THANKS file is not applicable anymore. Bring various other files up-to-date with reality.


git-svn-id: http://svn.rubyonrails.org/rails/tools/capistrano@6326 5ecf4fe2-1ee6-0310-87b1-e25e094e27de</message>
  <tree>c5bc8d7fa38da582d0bd94fc951ac0b1da53dd9b</tree>
  <committer>
    <name>Jamis Buck</name>
    <email>jamis@37signals.com</email>
  </committer>
</commit>
