mirror of
https://github.com/capistrano/capistrano
synced 2023-03-27 23:21:18 -04:00
Deprecate :git_strategy, etc. variables
These variables will be removed in 3.7.0, so deprecate them now to give users a heads-up. Also add an UPGRADING-3.7 guide to further explain the deprecations.
This commit is contained in:
parent
717fa69887
commit
f8609b9450
3 changed files with 110 additions and 0 deletions
|
@ -18,6 +18,9 @@ https://github.com/capistrano/capistrano/compare/v3.5.0...HEAD
|
||||||
* Fix `NoMethodError: undefined method gsub` when setting `:application` to a
|
* Fix `NoMethodError: undefined method gsub` when setting `:application` to a
|
||||||
Proc. [#1681](https://github.com/capistrano/capistrano/issues/1681)
|
Proc. [#1681](https://github.com/capistrano/capistrano/issues/1681)
|
||||||
(@mattbrictson)
|
(@mattbrictson)
|
||||||
|
* Deprecate `:git_strategy`, `:hg_strategy`, and `:svn_strategy` variables.
|
||||||
|
These will be completely removed in 3.7.0. Refer to the
|
||||||
|
[upgrading doc](UPGRADING-3.7.md) for details.
|
||||||
|
|
||||||
## `3.5.0`
|
## `3.5.0`
|
||||||
|
|
||||||
|
|
97
UPGRADING-3.7.md
Normal file
97
UPGRADING-3.7.md
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
# Capistrano 3.7.0 upgrade guide
|
||||||
|
|
||||||
|
Capistrano 3.7.0 has not yet been released. This guide serves as a preview of
|
||||||
|
what is *planned* for 3.7.0, so that you can be prepared to update your
|
||||||
|
Capistrano deployment if necessary once it becomes available.
|
||||||
|
|
||||||
|
If you wish to try the new 3.7.0 behavior today, you can do so by using the
|
||||||
|
`master` branch in your Gemfile:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
gem "capistrano", :github => "capistrano/capistrano"
|
||||||
|
```
|
||||||
|
|
||||||
|
## The :scm variable is deprecated
|
||||||
|
|
||||||
|
Up until now, Capistrano's SCM was configured using the `:scm` variable:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
# This is now deprecated
|
||||||
|
set :scm, :svn
|
||||||
|
```
|
||||||
|
|
||||||
|
To avoid deprecation warnings:
|
||||||
|
|
||||||
|
1. Remove `set :scm, ...` from your Capistrano configuration.
|
||||||
|
2. Add *one* of the following SCM declarations to your `Capfile`:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
# To use Git
|
||||||
|
require "capistrano/scm/git"
|
||||||
|
install_plugin Capistrano::SCM::Git
|
||||||
|
|
||||||
|
# To use Mercurial
|
||||||
|
require "capistrano/scm/hg"
|
||||||
|
install_plugin Capistrano::SCM::Hg
|
||||||
|
|
||||||
|
# To use Subversion
|
||||||
|
require "capistrano/scm/svn"
|
||||||
|
install_plugin Capistrano::SCM::Svn
|
||||||
|
```
|
||||||
|
|
||||||
|
## This is the last release where Git is the automatic default
|
||||||
|
|
||||||
|
If you do not specify an SCM, Capistrano assumes Git. However this behavior is
|
||||||
|
now deprecated. Add this to your Capfile to avoid deprecation warnings:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
require "capistrano/scm/git"
|
||||||
|
install_plugin Capistrano::SCM::Git
|
||||||
|
```
|
||||||
|
|
||||||
|
## :git_strategy, :hg_strategy, and :svn_strategy are removed
|
||||||
|
|
||||||
|
Capistrano 3.7.0 has a rewritten SCM system that relies on "plugins". This
|
||||||
|
system is more flexible than the old "strategy" system that only allowed certain
|
||||||
|
parts of SCM tasks to be customized.
|
||||||
|
|
||||||
|
If your deployment relies on a custom SCM strategy, you will need to rewrite
|
||||||
|
that strategy to be a full-fledged SCM plugin instead. There is a fairly
|
||||||
|
straightforward migration path: write your plugin to be a subclass of the
|
||||||
|
built-in SCM that you want to customize. For example:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
require "capistrano/scm/git"
|
||||||
|
|
||||||
|
class MyCustomGit < Capistrano::SCM::Git
|
||||||
|
# Override the methods you wish to customize, e.g.:
|
||||||
|
def clone_repo
|
||||||
|
# ...
|
||||||
|
end
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Then use your plugin in by loading it in the Capfile:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
require_relative "path/to/my_custom_git.rb"
|
||||||
|
install_plugin MyCustomGit
|
||||||
|
```
|
||||||
|
|
||||||
|
## Existing third-party SCMs are deprecated
|
||||||
|
|
||||||
|
If you are using a third-party SCM, you can continue using it without
|
||||||
|
changes, but you will see deprecation warnings. Contact the maintainer of the
|
||||||
|
third-party SCM gem and ask them about modifying the gem to work with the new
|
||||||
|
Capistrano 3.7.0 SCM plugin system.
|
||||||
|
|
||||||
|
## remote_file is removed
|
||||||
|
|
||||||
|
The `remote_file` method is no longer in Capistrano 3.7.0. You can read the
|
||||||
|
discussion that led to its removal here:
|
||||||
|
[issue 762](https://github.com/capistrano/capistrano/issues/762).
|
||||||
|
|
||||||
|
There is no direct replacement. To migrate to 3.7.0, you will need to rewrite
|
||||||
|
any parts of your deployment that use `remote_file` to use a different
|
||||||
|
mechanism for uploading files. Consider using the `upload!` method directly in
|
||||||
|
a procedural fashion instead.
|
|
@ -8,6 +8,16 @@ validate :application do |_key, value|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
[:git_strategy, :hg_strategy, :svn_strategy].each do |strategy|
|
||||||
|
validate(strategy) do |key, _value|
|
||||||
|
warn(
|
||||||
|
"[Deprecation Warning] #{key} is deprecated and will be removed in "\
|
||||||
|
"Capistrano 3.7.0.\n"\
|
||||||
|
"https://github.com/capistrano/capistrano/blob/master/UPGRADING-3.7.md"
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
set_if_empty :scm, :git
|
set_if_empty :scm, :git
|
||||||
set_if_empty :branch, "master"
|
set_if_empty :branch, "master"
|
||||||
set_if_empty :deploy_to, -> { "/var/www/#{fetch(:application)}" }
|
set_if_empty :deploy_to, -> { "/var/www/#{fetch(:application)}" }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue