author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Thu, 28 Feb 2019 11:15:57 +0000 | |
changeset 262 | 3bd7db4697fd |
parent 249 | 20b718d60bba |
child 263 | dd183640f63e |
permissions | -rw-r--r-- |
66
8d2d5dfe94d0
Refactored SCM support to use `hglib.rb` for performing Mercurial related tasks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1 |
require 'rakelib/hglib' |
8d2d5dfe94d0
Refactored SCM support to use `hglib.rb` for performing Mercurial related tasks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
2 |
|
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
module Rake |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
6 |
module Rake::StX |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
|
85
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
9 |
# Cross-platform way of finding an executable in the $PATH. |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
10 |
# |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
11 |
# which('ruby') #=> /usr/bin/ruby |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
12 |
def which(cmd) |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
13 |
exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : [''] |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
14 |
ENV['PATH'].split(File::PATH_SEPARATOR).each do |path| |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
15 |
exts.each {|ext| |
85
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
16 |
exe = File.join(path, "#{cmd}#{ext}") |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
17 |
return exe if File.executable?(exe) && !File.directory?(exe) |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
18 |
} |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
19 |
end |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
20 |
nil |
85
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
21 |
end |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
22 |
|
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
23 |
cvs_rsh_set = false |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
24 |
|
60
57c963e85a00
Cleanup: Renamed `vcs.rb` & `Rake::StX::VCS` to `scm.rb` and `Rake::StX::SCM`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
59
diff
changeset
|
25 |
module Rake::Stx::SCM |
62
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
26 |
# Not quite sure why following code |
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
27 |
# |
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
28 |
# include RakeFileUtils |
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
29 |
# |
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
30 |
# does not make extra methods (like `sh`) defined in `extensions.rb` |
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
31 |
# visible here. To workaround, define them here. Ugly... |
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
32 |
module_function |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
33 |
|
62
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
34 |
def sh(cmd, cwd: Dir.pwd, &block) |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
35 |
begin |
81
2a1efb99c83d
Oops, fixed bug introduced in de0e8016c2d5
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
75
diff
changeset
|
36 |
return RakeFileUtils::sh(cmd, cwd: cwd, &block) |
2a1efb99c83d
Oops, fixed bug introduced in de0e8016c2d5
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
75
diff
changeset
|
37 |
rescue |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
38 |
return false |
81
2a1efb99c83d
Oops, fixed bug introduced in de0e8016c2d5
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
75
diff
changeset
|
39 |
end |
62
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
40 |
end |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
41 |
|
85
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
42 |
# Make sure CVS_RSH environment variable is properly set. Prefer MSYS2 ssh.exe |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
43 |
# over plink.exe. For details, see `hglib.rb`, method `sshconf()` |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
44 |
module_function |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
45 |
|
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
46 |
def ensure_cvs_rsh_set |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
47 |
return if @cvs_rsh_set |
85
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
48 |
ssh = nil |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
49 |
ssh_configured = ENV['CVS_RSH'] |
85
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
50 |
ssh_in_path = which('ssh') ? true : false |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
51 |
plink_in_path = which('plink') ? true : false |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
52 |
if Gem.win_platform? |
85
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
53 |
# If CVS_RSH is not set or is set to plink.exe, try to change to |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
54 |
# MSYS2 ssh.exe as it gives better performance on (fast) LANs. |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
55 |
if /^.*[pP]link(\.exe)?"?\s*(-ssh)?\s*(-2)?$/ =~ ssh_configured |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
56 |
ssh_in_path ? (ssh = 'ssh') : (ssh = %q{"c:\msys64\usr\bin\ssh.exe"} if File.exist? %q{c:\msys64\usr\bin\ssh.exe}) |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
57 |
|
85
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
58 |
# Sigh, we should not tamper with SSH configuration wildly. User may have |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
59 |
# her ssh and mercurial properly configured to use `plink.exe` and `pageant`. |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
60 |
# If we just start using `ssh.exe` clone/pull might not work beause |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
61 |
# `ssh.exe` cannot talk to `pageant`. So, if we don't find OpenSSH's |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
62 |
# style of agent, don't use `ssh.exe` event if available. |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
63 |
if ssh |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
64 |
if ENV['SSH_AUTH_SOCK'] |
85
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
65 |
# Good, OpenSSH agent running but still, be nice and tell the |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
66 |
# user SSH configuration has been tampered wirh. |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
67 |
info("Setting CVS_RSH=\"#{ssh}\" for faster transfers") |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
68 |
else |
85
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
69 |
# No agent, no fun. Be nice and give user a hit |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
70 |
warn("Not using CVS_RSH=\"#{ssh}\" option because SSH agent is not running") |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
71 |
warn("For faster CVS checkout over LAN, consider using ssh-agent or ssh-pageant (if you want to use PuTTY's pageant)") |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
72 |
ssh = nil |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
73 |
end |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
74 |
end |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
75 |
end |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
76 |
else |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
77 |
ssh = 'ssh' unless ssh_configured |
85
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
78 |
end |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
79 |
ENV['CVS_RSH'] = ssh if ssh |
85
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
80 |
cvs_rsh_set = true |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
81 |
end |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
82 |
|
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
83 |
|
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
84 |
public |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
85 |
|
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
86 |
class CheckoutException < Exception |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
87 |
end # class CheckoutException |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
88 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
89 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
90 |
def self._check_type(type) |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
91 |
raise CheckoutException.new("Unknown version control system type (#{type})") if type != :cvs and type != :svn and type != :git and type != :hg |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
92 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
93 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
94 |
def self.update(repository, directory, **kwargs) |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
95 |
type = repository.type |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
96 |
url = repository.canonical |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
97 |
self._check_type(type) |
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
98 |
root = kwargs[:root] || BUILD_DIR |
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
99 |
branch = kwargs[:branch] |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
100 |
if branch.nil? |
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
101 |
if type == :svn |
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
102 |
branch = 'trunk' |
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
103 |
elsif type == :hg |
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
104 |
branch = 'default' |
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
105 |
end |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
106 |
end |
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
107 |
|
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
108 |
wc = root / directory |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
109 |
unless File.exist? wc |
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
110 |
self.checkout(repository, directory, **kwargs) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
111 |
return |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
112 |
end |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
113 |
|
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
114 |
case type |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
115 |
when :svn |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
116 |
_update_svn(repository, directory, branch, root, **kwargs) |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
117 |
when :cvs |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
118 |
_update_cvs(repository, directory, branch, root, **kwargs) |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
119 |
when :git |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
120 |
_update_git(repository, directory, branch, root, **kwargs) |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
121 |
when :hg |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
122 |
_update_hg(repository, directory, branch, root, **kwargs) |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
123 |
else |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
124 |
error("Type #{type} not found") |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
125 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
126 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
127 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
128 |
def self._update_hg(repository, directory, branch, root, **kwargs) |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
129 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
130 |
wc = root / directory |
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
131 |
separator = kwargs[:separator] || '.' |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
132 |
revision = kwargs[:revision] |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
133 |
url = "#{repository.canonical}/#{directory.gsub('/', separator)}" unless directory.nil? |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
134 |
hg = HG::Repository.new(wc) |
66
8d2d5dfe94d0
Refactored SCM support to use `hglib.rb` for performing Mercurial related tasks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
135 |
begin |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
136 |
paths = hg.paths |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
137 |
if repository.staging |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
138 |
unless paths.has_key? 'staging' |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
139 |
paths['staging'] = "#{repository.staging}/#{directory.gsub('/', separator)}" |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
140 |
hg.paths = paths |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
141 |
end |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
142 |
hg.pull('staging') |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
143 |
end |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
144 |
if repository.upstream |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
145 |
unless paths.has_key? 'upstream' |
88
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
146 |
paths['upstream'] = "#{repository.upstream}/#{directory.gsub('/', separator)}" |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
147 |
hg.paths = paths |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
148 |
end |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
149 |
hg.pull('upstream') |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
150 |
end |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
151 |
unless paths.has_key? 'canonical' |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
152 |
paths['canonical'] = "#{repository.canonical}/#{directory.gsub('/', separator)}" |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
153 |
hg.paths = paths |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
154 |
end |
102
fc572bd895f2
Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
88
diff
changeset
|
155 |
hg.pull('canonical') |
72
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
156 |
# If revision is not specified, then look for an active bookmark |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
157 |
# and update to it. If no bookmark is active, then look for bookmark |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
158 |
# `master`. If it exist, then update to `master`. If it |
72
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
159 |
# does not, then update to tip or throw an error. |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
160 |
# The error is thrown if there's no bookmark `master` and |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
161 |
# branch has multiple heads since it's not clear which |
72
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
162 |
# head rev to use. |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
163 |
unless revision |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
164 |
revision = hg.bookmark |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
165 |
unless revision |
72
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
166 |
bookmarks = hg.bookmarks(branch) |
249
20b718d60bba
Rakefiles: automagically checkout revisions for given branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
220
diff
changeset
|
167 |
if bookmarks.has_key? BUILD_BRANCH |
20b718d60bba
Rakefiles: automagically checkout revisions for given branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
220
diff
changeset
|
168 |
revision = BUILD_BRANCH |
20b718d60bba
Rakefiles: automagically checkout revisions for given branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
220
diff
changeset
|
169 |
elsif bookmarks.has_key? 'master' |
72
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
170 |
revision = 'master' |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
171 |
else |
220
8faa459a7ee9
Rakefiles: do not consider secret changesets as heads when updating
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
137
diff
changeset
|
172 |
if hg.heads(branch, include_secret: false).size > 1 |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
173 |
raise CheckoutException.new("HG: Cannot checkout #{directory}: directory. The ->#{branch}<- branch has multiple heads but no bookmark named 'master'! (All other branches are ignored)") |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
174 |
end |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
175 |
end |
72
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
176 |
end |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
177 |
end |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
178 |
hg.update(revision || branch) |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
179 |
rescue Exception => ex |
66
8d2d5dfe94d0
Refactored SCM support to use `hglib.rb` for performing Mercurial related tasks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
180 |
raise CheckoutException.new("HG: Cannot update #{wc}: #{ex.message}") |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
181 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
182 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
183 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
184 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
185 |
def self._update_svn(repository, directory, branch, root, **kwargs) |
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
186 |
wc = root / directory |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
187 |
raise CheckoutException.new("SVN: Cannot update #{wc}") unless (sh %W{svn --non-interactive --trust-server-cert update}, cwd: wc) |
62
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
188 |
end |
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
189 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
190 |
def self._update_cvs(repository, directory, branch, root, **kwargs) |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
191 |
ensure_cvs_rsh_set |
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
192 |
wc = root / directory |
62
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
193 |
if File.directory? wc |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
194 |
raise CheckoutException.new("CVS: Cannot update #{wc}") unless (sh %W{cvs -z 9 update -A -d}, cwd: wc) |
62
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
195 |
else |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
196 |
raise CheckoutException.new("CVS: Cannot update #{wc}") unless (sh %W{cvs -z 9 update -A #{File.basename(wc)}}, cwd: File.dirname(wc)) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
197 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
198 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
199 |
|
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
200 |
def self.checkout(repository, directory, **kwargs) |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
201 |
type = repository.type |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
202 |
url = repository.canonical |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
203 |
self._check_type(type) |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
204 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
205 |
root = kwargs[:root] || BUILD_DIR |
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
206 |
branch = kwargs[:branch] |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
207 |
if branch.nil? |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
208 |
if type == :svn |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
209 |
branch = 'trunk' |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
210 |
elsif type == :hg |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
211 |
branch = 'default' |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
212 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
213 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
214 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
215 |
wc = root / directory |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
216 |
if File.exist? wc |
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
217 |
self.update(repository, directory, **kwargs) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
218 |
return |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
219 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
220 |
|
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
221 |
|
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
222 |
unless File.exists? File.dirname(wc) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
223 |
begin |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
224 |
FileUtils.mkdir_p(File.dirname(wc)) |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
225 |
rescue => ex |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
226 |
raise CheckoutException.new("Cannot create directory for working copy (#{ex})") |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
227 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
228 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
229 |
case type |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
230 |
when :svn |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
231 |
_checkout_svn(repository, directory, branch, root, **kwargs) |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
232 |
when :cvs |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
233 |
_checkout_cvs(repository, directory, branch, root, **kwargs) |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
234 |
when :git |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
235 |
_checkout_git(repository, directory, branch, root, **kwargs) |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
236 |
when :hg |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
237 |
_checkout_hg(repository, directory, branch, root, **kwargs) |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
238 |
else |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
239 |
error("Type #{type} not found") |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
240 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
241 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
242 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
243 |
|
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
244 |
def self._checkout_svn(repository, directory, branch, root, **kwargs) |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
245 |
url = "#{repository.canonical}/#{directory}/#{branch}" |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
246 |
raise CheckoutException.new("SVN: Cannot checkout from #{url}") unless (sh %W{svn --non-interactive --trust-server-cert co #{url} #{directory}}, cwd: root) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
247 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
248 |
|
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
249 |
def self._checkout_hg(repository, directory, branch, root, **kwargs) |
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
250 |
separator = kwargs[:separator] || '.' |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
251 |
revision = kwargs[:revision] |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
252 |
|
102
fc572bd895f2
Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
88
diff
changeset
|
253 |
paths = {} |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
254 |
if repository.canonical |
102
fc572bd895f2
Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
88
diff
changeset
|
255 |
paths['canonical'] = "#{repository.canonical}/#{directory.gsub('/', separator)}" |
fc572bd895f2
Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
88
diff
changeset
|
256 |
else |
fc572bd895f2
Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
88
diff
changeset
|
257 |
raise Exception.new("Repository named #{repository.name} does not define mandatory canonical repository URL") |
fc572bd895f2
Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
88
diff
changeset
|
258 |
end |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
259 |
if repository.upstream |
88
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
260 |
paths['upstream'] = "#{repository.upstream}/#{directory.gsub('/', separator)}" |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
261 |
end |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
262 |
if repository.staging |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
263 |
paths['staging'] = "#{repository.staging}/#{directory.gsub('/', separator)}" |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
264 |
end |
120
2c4e52c4c930
Do not use `hg clone ...` to create and pull changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
117
diff
changeset
|
265 |
paths['default'] = paths['staging'] || paths['upstream'] || paths['canonical'] |
88
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
266 |
|
66
8d2d5dfe94d0
Refactored SCM support to use `hglib.rb` for performing Mercurial related tasks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
267 |
begin |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
268 |
hg = HG::Repository.init(root / directory) |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
269 |
# Configure path aliases. |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
270 |
# |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
271 |
# Set the repository as non-publishing, This way when cloning from a staging |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
272 |
# repo changes in draft phase would remain drafs. This is essential to |
120
2c4e52c4c930
Do not use `hg clone ...` to create and pull changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
117
diff
changeset
|
273 |
# employ evolve extension and being able to fix & evolve changes in clones |
2c4e52c4c930
Do not use `hg clone ...` to create and pull changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
117
diff
changeset
|
274 |
# (on a CI server, for instance) and being able to push back without need to |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
275 |
# fiddle around phases. |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
276 |
# |
120
2c4e52c4c930
Do not use `hg clone ...` to create and pull changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
117
diff
changeset
|
277 |
# The downside is that we cannot do an `uncompressed` pull. This is the price |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
278 |
# we have to pay. |
120
2c4e52c4c930
Do not use `hg clone ...` to create and pull changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
117
diff
changeset
|
279 |
hg.config_set( |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
280 |
phases: {'publish' => 'false'}, |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
281 |
paths: paths |
120
2c4e52c4c930
Do not use `hg clone ...` to create and pull changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
117
diff
changeset
|
282 |
) |
2c4e52c4c930
Do not use `hg clone ...` to create and pull changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
117
diff
changeset
|
283 |
|
2c4e52c4c930
Do not use `hg clone ...` to create and pull changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
117
diff
changeset
|
284 |
hg.pull('staging') if repository.staging |
2c4e52c4c930
Do not use `hg clone ...` to create and pull changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
117
diff
changeset
|
285 |
hg.pull('upstream') if repository.upstream |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
286 |
hg.pull('canonical') if repository.canonical |
72
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
287 |
# If revision is not specified, then look for bookmark |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
288 |
# `master`. If it exist, then check out `master`. If it |
72
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
289 |
# does not, then checkout tip or throw an error. |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
290 |
# The error is thrown if there's no bookmark `master` and |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
291 |
# branch has multiple heads since it's not clear which |
72
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
292 |
# head rev to use. |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
293 |
unless revision |
72
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
294 |
bookmarks = hg.bookmarks(branch) |
249
20b718d60bba
Rakefiles: automagically checkout revisions for given branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
220
diff
changeset
|
295 |
if bookmarks.has_key? BUILD_BRANCH |
20b718d60bba
Rakefiles: automagically checkout revisions for given branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
220
diff
changeset
|
296 |
revision = BUILD_BRANCH |
20b718d60bba
Rakefiles: automagically checkout revisions for given branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
220
diff
changeset
|
297 |
elsif bookmarks.has_key? 'master' |
72
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
298 |
revision = 'master' |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
299 |
else |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
300 |
if hg.heads(branch).size > 1 |
72
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
301 |
raise CheckoutException.new("HG: Cannot checkout #{directory}: branch #{branch} has multiple heads but no bookmark named 'master'!") |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
302 |
end |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
303 |
end |
72
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
304 |
end |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
305 |
|
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
306 |
hg.update(revision || branch) |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
307 |
#rescue Exception => e |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
308 |
# raise CheckoutException.new("HG: Cannot clone from #{url}: #{e.message}") |
66
8d2d5dfe94d0
Refactored SCM support to use `hglib.rb` for performing Mercurial related tasks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
309 |
end |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
310 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
311 |
|
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
312 |
def self._checkout_cvs(repository, directory, branch, root, **kwargs) |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
313 |
revision = kwargs[:revision] || nil |
117
f163911eb7bc
Win32: Workarounds for bugs in eXept's Win32 makefiles as of 2017-01-13
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
102
diff
changeset
|
314 |
revision_arg = '' |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
315 |
if revision |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
316 |
raise Exception.new('CVS only support date spec as revision: option (YYYY-MM-DD)') unless revision.match(/^\d{4}-([0]\d|[1][012])-([012]\d|[3][01])$/) |
117
f163911eb7bc
Win32: Workarounds for bugs in eXept's Win32 makefiles as of 2017-01-13
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
102
diff
changeset
|
317 |
revision_arg = " -D #{revision}" |
f163911eb7bc
Win32: Workarounds for bugs in eXept's Win32 makefiles as of 2017-01-13
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
102
diff
changeset
|
318 |
end |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
319 |
ensure_cvs_rsh_set |
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
320 |
unless sh "cvs -z 9 -d #{repository.canonical} co #{revision_arg} #{directory}", cwd: root |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
321 |
raise CheckoutException.new("CVS: Cannot checkout #{directory}from #{repository.url}") |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
322 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
323 |
end |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
324 |
|
60
57c963e85a00
Cleanup: Renamed `vcs.rb` & `Rake::StX::VCS` to `scm.rb` and `Rake::StX::SCM`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
59
diff
changeset
|
325 |
end # module Rake::Stx::SCM |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
326 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
327 |
def checkout(repo_name, directory, **kwargs) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
328 |
# repository should be symbolic name |
59
9099e2455d9c
Added support for multiple different repository sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
329 |
repo = Rake::Stx::Configuration::Repository::find(repo_name) |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
330 |
error("checkout: No repository found (#{repo_name})") unless repo |
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
331 |
kwargs[:separator] = repo.separator |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
332 |
Rake::Stx::SCM.checkout(repo, directory, **kwargs) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
333 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
334 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
335 |
def update(repo_name, directory, **kwargs) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
336 |
# repository should be symbolic name |
59
9099e2455d9c
Added support for multiple different repository sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
337 |
repo = Rake::Stx::Configuration::Repository::find(repo_name) |
137
e665031cade7
Cleaning up code and having it more rubyish
Patrik Svestka <patrik.svestka@gmail.com>
parents:
120
diff
changeset
|
338 |
error("update: No repository found (#{repo_name})") unless repo |
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
339 |
kwargs[:separator] = repo.separator |
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
340 |
Rake::Stx::SCM.update(repo, directory, **kwargs) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
341 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
342 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
343 |
def cvs(url, directory, **kwargs) |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
344 |
repo = Rake::Stx::Configuration::Repository.new(:type => :cvs, :url => url) |
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
345 |
Rake::Stx::SCM.checkout(repo, directory, **kwargs) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
346 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
347 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
348 |
def svn(url, directory, **kwargs) |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
349 |
repo = Rake::Stx::Configuration::Repository.new(:type => :svn, :url => url) |
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
350 |
Rake::Stx::SCM.checkout(repo, directory, **kwargs) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
351 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
352 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
353 |
def hg(url, directory, **kwargs) |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
354 |
repo = Rake::Stx::Configuration::Repository.new(:type => :hg, :url => url) |
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
355 |
Rake::Stx::SCM.checkout(repo, directory, **kwargs) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
356 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
357 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
358 |
def git(url, directory, **kwargs) |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
359 |
repo = Rake::Stx::Configuration::Repository.new(:type => :git, :url => url) |
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
360 |
Rake::Stx::SCM.checkout(repo, directory, **kwargs) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
361 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
362 |