author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Tue, 13 Dec 2016 13:33:24 +0000 | |
changeset 102 | fc572bd895f2 |
parent 88 | 112075e99cef |
child 117 | f163911eb7bc |
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| |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
15 |
exts.each { |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
|
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 |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
20 |
return 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
|
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 |
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
33 |
def sh(cmd, cwd: Dir.pwd, &block) |
81
2a1efb99c83d
Oops, fixed bug introduced in de0e8016c2d5
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
75
diff
changeset
|
34 |
begin |
2a1efb99c83d
Oops, fixed bug introduced in de0e8016c2d5
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
75
diff
changeset
|
35 |
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
|
36 |
rescue |
2a1efb99c83d
Oops, fixed bug introduced in de0e8016c2d5
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
75
diff
changeset
|
37 |
return false |
2a1efb99c83d
Oops, fixed bug introduced in de0e8016c2d5
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
75
diff
changeset
|
38 |
end |
62
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
39 |
end |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
40 |
|
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
|
41 |
# 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
|
42 |
# 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
|
43 |
module_function |
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 |
def ensure_cvs_rsh_set() |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
45 |
if @cvs_rsh_set then |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
46 |
return |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
47 |
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
|
48 |
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
|
49 |
ssh_configured = ENV['CVS_RSH'] |
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 |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
52 |
if Gem.win_platform? then |
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. |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
55 |
if /^.*[pP]link(\.exe)?"?\s*(-ssh)?\s*(-2)?$/ =~ ssh_configured then |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
56 |
if ssh_in_path then |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
57 |
ssh = 'ssh' |
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 |
else |
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 |
if (File.exist? "c:\\msys64\\usr\\bin\\ssh.exe") then |
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 |
ssh = "\"c:\\msys64\\usr\\bin\\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
|
61 |
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
|
62 |
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
|
63 |
# 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
|
64 |
# 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
|
65 |
# 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
|
66 |
# `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
|
67 |
# style of agent, don't use `ssh.exe` event if available. |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
68 |
if ssh then |
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 |
if ENV['SSH_AUTH_SOCK'] then |
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 |
# 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
|
71 |
# 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
|
72 |
info("Setting CVS_RSH=\"#{ssh}\" for faster transfers") |
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 |
else |
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 |
# 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
|
75 |
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
|
76 |
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
|
77 |
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
|
78 |
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
|
79 |
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
|
80 |
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
|
81 |
else |
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 |
if not ssh_configured then |
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 |
ssh = "ssh" |
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 |
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
|
85 |
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
|
86 |
if ssh then |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
87 |
ENV['CVS_RSH'] = ssh |
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
88 |
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
|
89 |
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
|
90 |
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
|
91 |
|
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
92 |
|
6d918f722075
Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
81
diff
changeset
|
93 |
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
|
94 |
|
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
95 |
class CheckoutException < Exception |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
96 |
end # class CheckoutException |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
97 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
98 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
99 |
def self._check_type(type) |
62
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
100 |
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
|
101 |
raise CheckoutException.new("Unknown version control system type (#{type})") |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
102 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
103 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
104 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
105 |
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
|
106 |
type = repository.type |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
107 |
url = repository.canonical |
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
108 |
self._check_type(type) |
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
109 |
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
|
110 |
branch = kwargs[:branch] |
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
111 |
if branch == nil |
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
112 |
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
|
113 |
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
|
114 |
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
|
115 |
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
|
116 |
end |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
117 |
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
|
118 |
|
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
119 |
wc = root / directory |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
120 |
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
|
121 |
self.checkout(repository, directory, **kwargs) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
122 |
return |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
123 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
124 |
case 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
|
125 |
when :svn then _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
|
126 |
when :cvs then _update_cvs(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
|
127 |
when :git then _update_git(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
|
128 |
when :hg then _update_hg(repository, directory, branch, root, **kwargs) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
129 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
130 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
131 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
132 |
def self._update_hg(repository, directory, branch, root, **kwargs) |
72
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
133 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
134 |
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
|
135 |
separator = kwargs[:separator] || '.' |
72
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
136 |
revision = kwargs[:revision] |
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
137 |
if directory != nil then |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
138 |
url = "#{repository.canonical}/#{directory.gsub('/', separator)}" |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
139 |
end |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
140 |
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
|
141 |
begin |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
142 |
paths = hg.paths |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
143 |
if repository.staging then |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
144 |
if not paths.has_key? 'staging' |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
145 |
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
|
146 |
hg.paths = paths |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
147 |
end |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
148 |
hg.pull('staging') |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
149 |
end |
88
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
150 |
if repository.upstream then |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
151 |
if not paths.has_key? 'upstream' |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
152 |
paths['upstream'] = "#{repository.upstream}/#{directory.gsub('/', separator)}" |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
153 |
hg.paths = paths |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
154 |
end |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
155 |
hg.pull('upstream') |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
156 |
end |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
157 |
if not paths.has_key? 'canonical' |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
158 |
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
|
159 |
hg.paths = paths |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
160 |
end |
102
fc572bd895f2
Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
88
diff
changeset
|
161 |
hg.pull('canonical') |
72
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
162 |
# 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
|
163 |
# and update to it. If no bookmark is active, then look for bookmark |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
164 |
# `master`. If it exist, then update to `master`. If it |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
165 |
# 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
|
166 |
# The error is thrown if there's no bookmark `master` and |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
167 |
# branch has multiple heads since it's not clear which |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
168 |
# head rev to use. |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
169 |
if not revision then |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
170 |
revision = hg.bookmark() |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
171 |
if not revision then |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
172 |
bookmarks = hg.bookmarks(branch) |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
173 |
if (bookmarks.has_key? 'master') then |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
174 |
revision = 'master' |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
175 |
else |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
176 |
if (hg.heads(branch).size > 1) then |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
177 |
raise CheckoutException.new("HG: Cannot checkout #{directory}: branch #{branch} has multiple heads but no bookmark named 'master'!") |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
178 |
end |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
179 |
end |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
180 |
end |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
181 |
end |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
182 |
hg.update(revision || branch) |
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
|
183 |
rescue Exception => ex |
8d2d5dfe94d0
Refactored SCM support to use `hglib.rb` for performing Mercurial related tasks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
184 |
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
|
185 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
186 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
187 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
188 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
189 |
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
|
190 |
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
|
191 |
if not sh %W{svn --non-interactive --trust-server-cert update}, cwd: wc |
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
192 |
raise CheckoutException.new("SVN: Cannot update #{wc}") |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
193 |
end |
62
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
194 |
end |
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
195 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
196 |
def self._update_cvs(repository, directory, branch, root, **kwargs) |
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
|
197 |
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
|
198 |
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
|
199 |
if File.directory? wc |
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
200 |
if not sh %W{cvs -z 9 update -A -d}, cwd: wc |
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
201 |
raise CheckoutException.new("CVS: Cannot update #{wc}") |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
202 |
end |
62
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
203 |
else |
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
204 |
if not sh %W{cvs -z 9 update -A #{File.basename(wc)}}, cwd: File.dirname(wc) |
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
205 |
raise CheckoutException.new("CVS: Cannot update #{wc}") |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
206 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
207 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
208 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
209 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
210 |
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
|
211 |
type = repository.type |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
212 |
url = repository.canonical |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
213 |
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
|
214 |
|
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
215 |
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
|
216 |
branch = kwargs[:branch] |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
217 |
if branch == nil |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
218 |
if type == :svn |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
219 |
branch = 'trunk' |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
220 |
elsif type == :hg |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
221 |
branch = 'default' |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
222 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
223 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
224 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
225 |
wc = root / directory |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
226 |
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
|
227 |
self.update(repository, directory, **kwargs) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
228 |
return |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
229 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
230 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
231 |
if (not File.exists? File.dirname(wc)) |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
232 |
begin |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
233 |
FileUtils.mkdir_p(File.dirname(wc)) |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
234 |
rescue => ex |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
235 |
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
|
236 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
237 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
238 |
case 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
|
239 |
when :svn then _checkout_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
|
240 |
when :cvs then _checkout_cvs(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
|
241 |
when :git then _checkout_git(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
|
242 |
when :hg then _checkout_hg(repository, directory, branch, root, **kwargs) |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
243 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
244 |
|
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
245 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
246 |
|
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
|
247 |
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
|
248 |
url = "#{repository.canonical}/#{directory}/#{branch}" |
62
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
249 |
if not sh %W{svn --non-interactive --trust-server-cert co #{url} #{directory}}, cwd: root |
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
250 |
raise CheckoutException.new("SVN: Cannot checkout from #{url}") |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
251 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
252 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
253 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
254 |
def self._checkout_hg(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
|
255 |
separator = kwargs[:separator] || '.' |
72
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
256 |
revision = kwargs[:revision] |
75
9b57c88b2ab3
Use `hg clone` instead of `hg init` followed by `hg pull` to checkout a Mercurial repository
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
72
diff
changeset
|
257 |
|
102
fc572bd895f2
Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
88
diff
changeset
|
258 |
paths = {} |
fc572bd895f2
Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
88
diff
changeset
|
259 |
if repository.canonical then |
fc572bd895f2
Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
88
diff
changeset
|
260 |
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
|
261 |
else |
fc572bd895f2
Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
88
diff
changeset
|
262 |
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
|
263 |
end |
88
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
264 |
if repository.upstream then |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
265 |
paths['upstream'] = "#{repository.upstream}/#{directory.gsub('/', separator)}" |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
266 |
end |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
267 |
if repository.staging then |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
268 |
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
|
269 |
end |
88
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
270 |
|
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
|
271 |
begin |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
272 |
if repository.staging then |
88
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
273 |
paths['default'] = paths['staging'] |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
274 |
hg = HG::Repository.clone(paths['staging'], root / directory, noupdate: true) |
75
9b57c88b2ab3
Use `hg clone` instead of `hg init` followed by `hg pull` to checkout a Mercurial repository
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
72
diff
changeset
|
275 |
hg.paths = paths |
88
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
276 |
hg.pull('upstream') if paths['upstream'] |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
277 |
hg.pull('canonical') |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
278 |
elsif repository.upstream then |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
279 |
paths['default'] = paths['upstream'] |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
280 |
hg = HG::Repository.clone(paths['upstream'], root / directory, noupdate: true) |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
281 |
hg.paths = paths |
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
282 |
hg.pull('canonical') |
75
9b57c88b2ab3
Use `hg clone` instead of `hg init` followed by `hg pull` to checkout a Mercurial repository
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
72
diff
changeset
|
283 |
else |
102
fc572bd895f2
Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
88
diff
changeset
|
284 |
paths['default'] = paths['canonical'] |
88
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
85
diff
changeset
|
285 |
hg = HG::Repository.clone(paths['canonical'], root / directory, noupdate: true) |
75
9b57c88b2ab3
Use `hg clone` instead of `hg init` followed by `hg pull` to checkout a Mercurial repository
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
72
diff
changeset
|
286 |
hg.paths = paths |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
287 |
end |
72
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
288 |
# If revision is not specified, then look for bookmark |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
289 |
# `master`. If it exist, then check out `master`. If it |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
290 |
# 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
|
291 |
# The error is thrown if there's no bookmark `master` and |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
292 |
# branch has multiple heads since it's not clear which |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
293 |
# head rev to use. |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
294 |
if not revision then |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
295 |
bookmarks = hg.bookmarks(branch) |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
296 |
if (bookmarks.has_key? 'master') then |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
297 |
revision = 'master' |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
298 |
else |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
299 |
if (hg.heads(branch).size > 1) then |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
300 |
raise CheckoutException.new("HG: Cannot checkout #{directory}: branch #{branch} has multiple heads but no bookmark named 'master'!") |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
301 |
end |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
302 |
end |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
303 |
end |
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
304 |
|
3e832d54a4af
Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
71
diff
changeset
|
305 |
hg.update(revision || branch) |
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
|
306 |
#rescue Exception => e |
8d2d5dfe94d0
Refactored SCM support to use `hglib.rb` for performing Mercurial related tasks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
307 |
# raise CheckoutException.new("HG: Cannot clone from #{url}: #{e.message}") |
8d2d5dfe94d0
Refactored SCM support to use `hglib.rb` for performing Mercurial related tasks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
308 |
end |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
309 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
310 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
311 |
def self._checkout_cvs(repository, directory, branch, root, **kwargs) |
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
|
312 |
ensure_cvs_rsh_set() |
67
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
313 |
if not sh %W{cvs -z 9 -d #{repository.canonical} co #{directory}}, cwd: root |
75b6eb7b781c
Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
66
diff
changeset
|
314 |
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
|
315 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
316 |
end |
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
|
317 |
end # module Rake::Stx::SCM |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
318 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
319 |
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
|
320 |
# 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
|
321 |
repo = Rake::Stx::Configuration::Repository::find(repo_name) |
9099e2455d9c
Added support for multiple different repository sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
322 |
if not repo then |
9099e2455d9c
Added support for multiple different repository sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
323 |
error("checkout(): No repository found (#{repo_name})") |
62
de0e8016c2d5
Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
324 |
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
|
325 |
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
|
326 |
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
|
327 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
328 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
329 |
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
|
330 |
# 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
|
331 |
repo = Rake::Stx::Configuration::Repository::find(repo_name) |
9099e2455d9c
Added support for multiple different repository sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
332 |
if not repo then |
0
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
333 |
error("update(): No repository found (#{repo_name})") |
59
9099e2455d9c
Added support for multiple different repository sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
334 |
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
|
335 |
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
|
336 |
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
|
337 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
338 |
|
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 |
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
|
340 |
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
|
341 |
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
|
342 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
343 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
344 |
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
|
345 |
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
|
346 |
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
|
347 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
348 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
349 |
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
|
350 |
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
|
351 |
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
|
352 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
353 |
|
71
68c8cccbdec5
Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
354 |
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
|
355 |
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
|
356 |
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
|
357 |
end |
f46260ba26b1
Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
358 |