dapp 0.35.23 → 0.35.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/dapp/dapp.rb +0 -3
- data/lib/dapp/dapp/chef.rb +0 -8
- data/lib/dapp/dapp/dappfile.rb +0 -10
- data/lib/dapp/dapp/option_tags.rb +1 -1
- data/lib/dapp/dapp/sentry.rb +2 -3
- data/lib/dapp/dimg/build/stage/ga_archive.rb +1 -4
- data/lib/dapp/dimg/git_repo/base.rb +34 -227
- data/lib/dapp/dimg/git_repo/local.rb +9 -73
- data/lib/dapp/dimg/git_repo/own.rb +0 -4
- data/lib/dapp/dimg/git_repo/remote.rb +21 -29
- data/lib/dapp/kube/helm/values.rb +2 -2
- data/lib/dapp/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be6da76fd071625161bf829c7004669e9d32e1049bc76fbc47e5f4e5405c1121
|
4
|
+
data.tar.gz: 6e82c044625221031d1c10094935e48134fe088149ee976a92bc7a6309def346
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c748e01641e9c531840ccc9dd8238dbb04b2acef4340b4698785ff6db7290040979a1153f67fe8d587bce1e65b48ee639864982b27b203215ac322f7e9916dc4
|
7
|
+
data.tar.gz: 38bd43546751b84d7962bfb19a8a6e817bc911f168cc335a07db9f62904f3453a37a32a4bd81144882643c83da750bfb45682ebd520a7ca7a79552ba100938ab
|
data/lib/dapp/dapp.rb
CHANGED
@@ -102,9 +102,6 @@ module Dapp
|
|
102
102
|
def git_url
|
103
103
|
return unless git_own_repo_exist?
|
104
104
|
git_own_repo.remote_origin_url
|
105
|
-
rescue Dimg::Error::Rugged => e
|
106
|
-
return if e.net_status[:code] == :git_repository_without_remote_url
|
107
|
-
raise
|
108
105
|
end
|
109
106
|
|
110
107
|
def git_own_repo_exist?
|
data/lib/dapp/dapp/chef.rb
CHANGED
@@ -1,14 +1,6 @@
|
|
1
1
|
module Dapp
|
2
2
|
class Dapp
|
3
3
|
module Chef
|
4
|
-
def local_git_artifact_exclude_paths(&blk)
|
5
|
-
super do |exclude_paths|
|
6
|
-
exclude_paths << '.dapp_chef'
|
7
|
-
|
8
|
-
yield exclude_paths if block_given?
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
4
|
def builder_cookbook_path
|
13
5
|
path('.dapp_chef')
|
14
6
|
end
|
data/lib/dapp/dapp/dappfile.rb
CHANGED
@@ -12,16 +12,6 @@ module Dapp
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
def local_git_artifact_exclude_paths(&blk)
|
16
|
-
super do |exclude_paths|
|
17
|
-
exclude_paths << 'Dappfile'
|
18
|
-
exclude_paths << "dappfile.yml"
|
19
|
-
exclude_paths << "dappfile.yaml"
|
20
|
-
|
21
|
-
yield exclude_paths if block_given?
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
15
|
def expand_path(path, number = 1)
|
26
16
|
path = File.expand_path(path)
|
27
17
|
number.times.each { path = File.dirname(path) }
|
@@ -47,7 +47,7 @@ module Dapp
|
|
47
47
|
|
48
48
|
def branch_tags
|
49
49
|
return {} unless options[:tag_branch]
|
50
|
-
raise Error::Dapp, code: :git_branch_without_name if (branch = git_own_repo.
|
50
|
+
raise Error::Dapp, code: :git_branch_without_name if (branch = git_own_repo.head_branch_name) == 'HEAD'
|
51
51
|
{ git_branch: [branch] }
|
52
52
|
end
|
53
53
|
|
data/lib/dapp/dapp/sentry.rb
CHANGED
@@ -58,13 +58,12 @@ module Dapp
|
|
58
58
|
}.tap {|extra|
|
59
59
|
if git_own_repo_exist?
|
60
60
|
extra["git"] = {}.tap do |extra_git|
|
61
|
-
if git_own_repo.
|
61
|
+
if git_own_repo.remote_origin_url
|
62
62
|
extra_git["remote_origin_url"] = git_own_repo.remote_origin_url, # may contain https token
|
63
63
|
extra_git["name"] = self.git_url_to_name(git_own_repo.remote_origin_url)
|
64
64
|
end
|
65
65
|
|
66
66
|
extra_git["path"] = git_own_repo.path
|
67
|
-
extra_git["workdir_path"] = git_own_repo.workdir_path
|
68
67
|
extra_git["latest_commit"] = git_own_repo.head_commit unless git_own_repo.empty?
|
69
68
|
end
|
70
69
|
end
|
@@ -84,7 +83,7 @@ module Dapp
|
|
84
83
|
"dapp-build-cache-version" => ::Dapp::BUILD_CACHE_VERSION,
|
85
84
|
"dapp-command" => self.options[:dapp_command],
|
86
85
|
}.tap {|tags|
|
87
|
-
if git_own_repo_exist? && git_own_repo.
|
86
|
+
if git_own_repo_exist? && git_own_repo.remote_origin_url
|
88
87
|
tags["git-host"] = self.get_host_from_git_url(git_own_repo.remote_origin_url)
|
89
88
|
|
90
89
|
git_name = self.git_url_to_name(git_own_repo.remote_origin_url)
|
@@ -3,8 +3,6 @@ module Dapp
|
|
3
3
|
module Build
|
4
4
|
module Stage
|
5
5
|
class GAArchive < GABase
|
6
|
-
RESET_COMMIT_MESSAGES = ['[dapp reset]', '[reset dapp]'].freeze
|
7
|
-
|
8
6
|
def initialize(dimg, next_stage)
|
9
7
|
@prev_stage = BeforeInstallArtifact.new(dimg, self)
|
10
8
|
super
|
@@ -22,8 +20,7 @@ module Dapp
|
|
22
20
|
protected
|
23
21
|
|
24
22
|
def reset_commits
|
25
|
-
|
26
|
-
dimg.git_artifacts.map { |git_artifact| git_artifact.repo.find_commit_id_by_message(regex) }.compact.sort.uniq
|
23
|
+
dimg.git_artifacts.map { |git_artifact| git_artifact.repo.find_commit_id_by_message('(\[dapp reset\])|(\[reset dapp\])') }.compact.sort.uniq
|
27
24
|
end
|
28
25
|
|
29
26
|
def apply_command_method
|
@@ -13,9 +13,12 @@ module Dapp
|
|
13
13
|
@name = name
|
14
14
|
end
|
15
15
|
|
16
|
+
def exclude_paths
|
17
|
+
[]
|
18
|
+
end
|
19
|
+
|
16
20
|
def get_ruby2go_state_hash
|
17
21
|
{
|
18
|
-
"Dapp" => dapp.get_ruby2go_state_hash,
|
19
22
|
"Name" => @name.to_s,
|
20
23
|
}
|
21
24
|
end
|
@@ -24,208 +27,50 @@ module Dapp
|
|
24
27
|
@name = state["Name"]
|
25
28
|
end
|
26
29
|
|
27
|
-
def
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
def remote_origin_url
|
32
|
-
@remote_origin_url ||= begin
|
33
|
-
ro_url = url
|
34
|
-
while url_protocol(ro_url) == :noname
|
35
|
-
begin
|
36
|
-
parent_git = Rugged::Repository.discover(ro_url)
|
37
|
-
rescue Rugged::OSError
|
38
|
-
parent_git_path = parent_git ? parent_git.path : path
|
39
|
-
raise Error::Rugged, code: :git_repository_not_found, data: { path: ro_url, parent_git_path: parent_git_path }
|
40
|
-
end
|
41
|
-
|
42
|
-
ro_url = begin
|
43
|
-
git_url(parent_git)
|
44
|
-
rescue Error::Rugged => e
|
45
|
-
break if e.net_status[:code] == :git_repository_without_remote_url # local repository
|
46
|
-
raise
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
ro_url
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def remote_origin_url_protocol
|
55
|
-
url_protocol(remote_origin_url)
|
56
|
-
end
|
57
|
-
|
58
|
-
def nested_git_directories_patches(*_args)
|
59
|
-
raise
|
60
|
-
end
|
61
|
-
|
62
|
-
def submodules_params(commit, paths: [], exclude_paths: [])
|
63
|
-
raise "Workdir not supported for `#{self.class}` repository" if commit.nil?
|
64
|
-
submodules(commit, paths: paths, exclude_paths: exclude_paths).map(&method(:submodule_params))
|
65
|
-
end
|
66
|
-
|
67
|
-
def submodule_params(submodule)
|
68
|
-
{}.tap do |params|
|
69
|
-
params[:path] = submodule.path
|
70
|
-
params[:url] = begin
|
71
|
-
params_url = submodule_url(submodule.url)
|
72
|
-
params_url = "#{params_url}.git" if url_protocol(params[:url]) != :noname && !params_url.end_with?('.git')
|
73
|
-
params_url
|
74
|
-
end # https://github.com/libgit2/rugged/issues/761
|
75
|
-
|
76
|
-
params[:type] = begin
|
77
|
-
if url_protocol(params[:url]) == :noname
|
78
|
-
submodule_absolute_path = File.join(File.dirname(path), params[:path])
|
79
|
-
dapp.log_warning(desc: { code: :submodule_url_scheme_not_detected,
|
80
|
-
data: { url: params[:url], path: submodule_absolute_path } })
|
81
|
-
:local
|
82
|
-
else
|
83
|
-
:remote
|
84
|
-
end
|
85
|
-
end
|
86
|
-
params[:commit] = submodule.head_oid
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
def submodules(commit, paths: [], exclude_paths: [])
|
91
|
-
Rugged::SubmoduleCollection.new(submodules_git(commit)).select do |submodule|
|
92
|
-
next false if ignore_directory?(submodule.path, paths: paths, exclude_paths: exclude_paths)
|
93
|
-
next true if submodule.in_config?
|
94
|
-
dapp.log_warning(desc: { code: :submodule_mapping_not_found,
|
95
|
-
data: { path: submodule.path, repo: name } })
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
def submodules_git(commit)
|
100
|
-
submodules_git_path(commit).tap do |git_path|
|
101
|
-
break begin
|
102
|
-
if git_path.directory?
|
103
|
-
Rugged::Repository.new(git_path.to_s)
|
104
|
-
else
|
105
|
-
Rugged::Repository.clone_at(path.to_s, git_path.to_s).tap do |submodules_git|
|
106
|
-
begin
|
107
|
-
submodules_git.checkout(commit, strategy: :force)
|
108
|
-
rescue Rugged::ReferenceError
|
109
|
-
raise_submodule_commit_not_found!(commit)
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
def submodules_git_path(commit)
|
118
|
-
Pathname(File.join(dapp.host_docker_tmp_config_dir, "submodule", dapp.consistent_uniq_slugify(name), commit).to_s)
|
119
|
-
end
|
120
|
-
|
121
|
-
def raise_submodule_commit_not_found!(_)
|
122
|
-
raise
|
30
|
+
def empty?
|
31
|
+
return @empty if !@empty.nil?
|
32
|
+
@empty = ruby2go_method("IsEmpty")
|
33
|
+
@empty
|
123
34
|
end
|
124
35
|
|
125
|
-
def
|
126
|
-
|
127
|
-
case remote_origin_url_protocol
|
128
|
-
when :http, :https, :git
|
129
|
-
uri = URI.parse(remote_origin_url)
|
130
|
-
uri.path = File.expand_path(File.join(uri.path, gitsubmodule_url))
|
131
|
-
uri.to_s
|
132
|
-
when :ssh
|
133
|
-
host_with_user, group_and_project = remote_origin_url.split(':', 2)
|
134
|
-
group_and_project = File.expand_path(File.join('/', group_and_project, gitsubmodule_url))[1..-1]
|
135
|
-
[host_with_user, group_and_project].join(':')
|
136
|
-
else
|
137
|
-
raise
|
138
|
-
end
|
139
|
-
else
|
140
|
-
gitsubmodule_url
|
141
|
-
end
|
36
|
+
def find_commit_id_by_message(regex)
|
37
|
+
ruby2go_method("FindCommitIdByMessage", "regex" => regex)
|
142
38
|
end
|
143
39
|
|
144
|
-
|
145
|
-
|
146
|
-
# FIXME "всегда выдавать данные с исключенными путями".
|
147
|
-
# FIXME: Например, метод diff выдает данные без учета exclude_paths.
|
148
|
-
# FIXME: Лучше перенести фильтрацию в GitArtifact::diff_patches.
|
149
|
-
# FIXME: ИЛИ обеспечить этот инвариант, но это ограничит в возможностях
|
150
|
-
# FIXME: использование Rugged извне этого класса и это более сложный путь.
|
151
|
-
# FIXME: Лучше сейчас убрать фильтрацию, а добавить ее когда наберется достаточно
|
152
|
-
# FIXME: примеров использования.
|
153
|
-
|
154
|
-
def patches(from, to, paths: [], exclude_paths: [], **kwargs)
|
155
|
-
diff(from, to, **kwargs).patches.select do |patch|
|
156
|
-
!ignore_patch?(patch, paths: paths, exclude_paths: exclude_paths)
|
157
|
-
end
|
40
|
+
def commit_exists?(commit)
|
41
|
+
ruby2go_method("IsCommitExists", "commit" => commit)
|
158
42
|
end
|
159
43
|
|
160
|
-
def
|
161
|
-
|
162
|
-
end
|
44
|
+
def remote_origin_url
|
45
|
+
return @remote_origin_url if @remote_origin_url_set
|
163
46
|
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
fullpath = File.join(root, entry[:name]).reverse.chomp('/').reverse
|
168
|
-
next if ignore_path?(fullpath, paths: paths, exclude_paths: exclude_paths)
|
169
|
-
entries << [root, entry]
|
170
|
-
end
|
47
|
+
res = ruby2go_method("RemoteOriginUrl")
|
48
|
+
if res != ""
|
49
|
+
@remote_origin_url = res
|
171
50
|
end
|
172
|
-
|
51
|
+
@remote_origin_url_set = true
|
173
52
|
|
174
|
-
|
175
|
-
if to.nil?
|
176
|
-
raise "Workdir diff not supported for #{self.class}"
|
177
|
-
elsif from.nil?
|
178
|
-
Rugged::Tree.diff(git, nil, to, **kwargs)
|
179
|
-
else
|
180
|
-
lookup_commit(from).diff(lookup_commit(to), **kwargs)
|
181
|
-
end
|
53
|
+
@remote_origin_url
|
182
54
|
end
|
183
55
|
|
184
|
-
def
|
185
|
-
|
56
|
+
def latest_branch_commit(branch)
|
57
|
+
ruby2go_method("LatestBranchCommit", "branch" => branch)
|
186
58
|
end
|
187
59
|
|
188
60
|
def head_commit
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
def latest_branch_commit(_)
|
193
|
-
raise
|
194
|
-
end
|
195
|
-
|
196
|
-
def latest_tag_commit(_)
|
197
|
-
raise
|
198
|
-
end
|
199
|
-
|
200
|
-
def branch
|
201
|
-
git.head.name.sub(/^refs\/heads\//, '')
|
202
|
-
rescue Rugged::ReferenceError => e
|
203
|
-
raise Error::Rugged, code: :git_repository_reference_error, data: { name: name, message: e.message.downcase }
|
204
|
-
end
|
205
|
-
|
206
|
-
def tags
|
207
|
-
git.tags.map(&:name)
|
61
|
+
return @head_commit if !@head_commit.nil?
|
62
|
+
@head_commit = ruby2go_method("HeadCommit")
|
63
|
+
@head_commit
|
208
64
|
end
|
209
65
|
|
210
|
-
def
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
.map { |b| b.reverse.chomp('origin/'.reverse).reverse }
|
66
|
+
def head_branch_name
|
67
|
+
return @branch if !@branch.nil?
|
68
|
+
@branch = ruby2go_method("HeadBranchName")
|
69
|
+
@branch
|
215
70
|
end
|
216
71
|
|
217
|
-
|
218
|
-
|
219
|
-
msg = commit.message.encode('UTF-8', invalid: :replace, undef: :replace)
|
220
|
-
return commit.oid if msg =~ regex
|
221
|
-
end
|
222
|
-
end
|
223
|
-
|
224
|
-
def walker
|
225
|
-
walker = Rugged::Walker.new(git)
|
226
|
-
walker.push(git.head.target_id)
|
227
|
-
walker
|
228
|
-
end
|
72
|
+
# TODO Below operations does not affect build process, only used in sample.
|
73
|
+
# TODO Should be ported to golang without git_repo.GitRepo interface.
|
229
74
|
|
230
75
|
def lookup_object(oid)
|
231
76
|
git.lookup(oid)
|
@@ -235,54 +80,16 @@ module Dapp
|
|
235
80
|
git.lookup(commit)
|
236
81
|
end
|
237
82
|
|
238
|
-
def empty?
|
239
|
-
git.empty?
|
240
|
-
end
|
241
|
-
|
242
|
-
def tracked_remote_repository?
|
243
|
-
!git.remotes.to_a.empty?
|
244
|
-
end
|
245
|
-
|
246
83
|
protected
|
247
84
|
|
248
|
-
def
|
249
|
-
@git ||= Rugged::Repository.new(path.to_s, **kwargs)
|
250
|
-
end
|
251
|
-
|
252
|
-
def url
|
253
|
-
@url ||= git_config_remote_origin_url(git)
|
254
|
-
end
|
255
|
-
|
256
|
-
def git_url(git_repo)
|
257
|
-
git_config_remote_origin_url(git_repo)
|
258
|
-
end
|
259
|
-
|
260
|
-
def git_config_remote_origin_url(git_repo)
|
261
|
-
git_repo.config.to_hash['remote.origin.url'].tap do |url|
|
262
|
-
raise Error::Rugged, code: :git_repository_without_remote_url, data: { name: self.class, path: git_repo.path } if url.nil?
|
263
|
-
end
|
264
|
-
end
|
265
|
-
|
266
|
-
def url_protocol(url)
|
267
|
-
if (scheme = URI.parse(url).scheme).nil?
|
268
|
-
:noname
|
269
|
-
else
|
270
|
-
scheme.to_sym
|
271
|
-
end
|
272
|
-
rescue URI::InvalidURIError
|
273
|
-
:ssh
|
274
|
-
rescue Error::Rugged => e
|
275
|
-
return :none if e.net_status[:code] == :git_repository_without_remote_url
|
85
|
+
def ruby2go_method(method, args_hash={})
|
276
86
|
raise
|
277
87
|
end
|
278
88
|
|
279
|
-
|
280
|
-
|
281
|
-
def ignore_directory?(path, paths: [], exclude_paths: [])
|
282
|
-
ignore_path_base(path, exclude_paths: exclude_paths) do
|
283
|
-
paths.empty? || paths.any? { |p| check_path?(path, p) || check_subpath?(path, p) }
|
284
|
-
end
|
89
|
+
def git(**kwargs) # TODO remove
|
90
|
+
@git ||= Rugged::Repository.new(path.to_s, **kwargs)
|
285
91
|
end
|
92
|
+
|
286
93
|
end
|
287
94
|
end
|
288
95
|
end
|
@@ -18,75 +18,20 @@ module Dapp
|
|
18
18
|
}
|
19
19
|
end
|
20
20
|
|
21
|
-
def
|
22
|
-
|
23
|
-
rescue Rugged::RepositoryError, Rugged::OSError => _e
|
24
|
-
raise Error::Rugged, code: :local_git_repository_does_not_exist, data: { path: path }
|
25
|
-
end
|
26
|
-
|
27
|
-
def workdir_path
|
28
|
-
Pathname(git.workdir)
|
29
|
-
end
|
30
|
-
|
31
|
-
def nested_git_directories_patches(paths: [], exclude_paths: [], **kwargs)
|
32
|
-
patches(nil, nil, paths: paths, exclude_paths: exclude_paths, **kwargs).select do |patch|
|
33
|
-
delta_new_file = patch.delta.new_file
|
34
|
-
nested_git_repository_mode?(delta_new_file[:mode])
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def submodules_params(commit, paths: [], exclude_paths: [])
|
39
|
-
submodules(commit, paths: paths, exclude_paths: exclude_paths).map do |submodule|
|
40
|
-
submodule_params(submodule).tap do |params|
|
41
|
-
params[:commit] = submodule.workdir_oid || params[:commit] if commit.nil?
|
42
|
-
if submodule.in_workdir? && !submodule.uninitialized?
|
43
|
-
dapp.log_info("Using local submodule repository `#{params[:path]}`!")
|
44
|
-
params[:type] = :local
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end.compact
|
48
|
-
end
|
49
|
-
|
50
|
-
def submodules_git(commit)
|
51
|
-
if commit.nil?
|
52
|
-
git
|
53
|
-
else
|
54
|
-
super
|
55
|
-
end
|
56
|
-
end
|
21
|
+
def ruby2go_method(method, args_hash={})
|
22
|
+
res = dapp.ruby2go_git_repo(args_hash.merge("LocalGitRepo" => JSON.dump(get_ruby2go_state_hash), "method" => method))
|
57
23
|
|
58
|
-
|
59
|
-
raise Error::Rugged, code: :git_local_submodule_commit_not_found, data: { commit: commit, path: path }
|
60
|
-
end
|
24
|
+
raise res["error"] if res["error"]
|
61
25
|
|
62
|
-
|
63
|
-
delta_new_file = patch.delta.new_file
|
64
|
-
args = [delta_new_file[:path], paths: paths, exclude_paths: exclude_paths]
|
65
|
-
if nested_git_repository_mode?(delta_new_file[:mode])
|
66
|
-
ignore_directory?(*args)
|
67
|
-
else
|
68
|
-
ignore_path?(*args)
|
69
|
-
end
|
70
|
-
end
|
26
|
+
self.set_ruby2go_state_hash(JSON.load(res["data"]["LocalGitRepo"]))
|
71
27
|
|
72
|
-
|
73
|
-
mode == 0o040000
|
28
|
+
res["data"]["result"]
|
74
29
|
end
|
75
30
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
if from.nil? and to.nil?
|
81
|
-
mid_commit = head_commit
|
82
|
-
diff_obj = super(nil, mid_commit, **kwargs)
|
83
|
-
diff_obj.merge! git.lookup(mid_commit).diff_workdir(**kwargs)
|
84
|
-
diff_obj
|
85
|
-
elsif to.nil?
|
86
|
-
git.lookup(from).diff_workdir(**kwargs)
|
87
|
-
else
|
88
|
-
super
|
89
|
-
end
|
31
|
+
def path=(path) # TODO remove
|
32
|
+
@path ||= Pathname(Rugged::Repository.new(path).path)
|
33
|
+
rescue Rugged::RepositoryError, Rugged::OSError => _e
|
34
|
+
raise Error::Rugged, code: :local_git_repository_does_not_exist, data: { path: path }
|
90
35
|
end
|
91
36
|
|
92
37
|
def lookup_commit(commit)
|
@@ -94,15 +39,6 @@ module Dapp
|
|
94
39
|
rescue Rugged::OdbError, TypeError => _e
|
95
40
|
raise Error::Rugged, code: :commit_not_found_in_local_git_repository, data: { commit: commit, path: path }
|
96
41
|
end
|
97
|
-
|
98
|
-
protected
|
99
|
-
|
100
|
-
def git_repo_exist?(path)
|
101
|
-
Rugged::Repository.new(path)
|
102
|
-
true
|
103
|
-
rescue Rugged::RepositoryError, Rugged::OSError => _e
|
104
|
-
false
|
105
|
-
end
|
106
42
|
end
|
107
43
|
end
|
108
44
|
end
|
@@ -2,7 +2,7 @@ module Dapp
|
|
2
2
|
module Dimg
|
3
3
|
module GitRepo
|
4
4
|
class Remote < Base
|
5
|
-
CACHE_VERSION =
|
5
|
+
CACHE_VERSION = 4
|
6
6
|
|
7
7
|
attr_reader :url
|
8
8
|
|
@@ -22,6 +22,10 @@ module Dapp
|
|
22
22
|
@url = url
|
23
23
|
end
|
24
24
|
|
25
|
+
def url
|
26
|
+
@url ||= remote_origin_url
|
27
|
+
end
|
28
|
+
|
25
29
|
def ruby2go_method(method, args_hash={})
|
26
30
|
res = dapp.ruby2go_git_repo(args_hash.merge("RemoteGitRepo" => JSON.dump(get_ruby2go_state_hash), "method" => method))
|
27
31
|
|
@@ -35,7 +39,7 @@ module Dapp
|
|
35
39
|
def get_ruby2go_state_hash
|
36
40
|
super.tap {|res|
|
37
41
|
res["Url"] = @url.to_s
|
38
|
-
res["ClonePath"] = dapp.build_path("remote_git_repo", CACHE_VERSION.to_s, dapp.consistent_uniq_slugify(name),
|
42
|
+
res["ClonePath"] = dapp.build_path("remote_git_repo", CACHE_VERSION.to_s, dapp.consistent_uniq_slugify(name), url_protocol(url)).to_s # FIXME
|
39
43
|
res["IsDryRun"] = dapp.dry_run?
|
40
44
|
}
|
41
45
|
end
|
@@ -45,13 +49,9 @@ module Dapp
|
|
45
49
|
@url = state["Url"]
|
46
50
|
end
|
47
51
|
|
48
|
-
def
|
49
|
-
dapp.lock("remote_git_artifact.#{name}", default_timeout: 600, &blk)
|
50
|
-
end
|
51
|
-
|
52
|
-
def _rugged_credentials
|
52
|
+
def _rugged_credentials # TODO remove
|
53
53
|
@_rugged_credentials ||= begin
|
54
|
-
if
|
54
|
+
if url_protocol(url) == :ssh
|
55
55
|
host_with_user = url.split(':', 2).first
|
56
56
|
username = host_with_user.split('@', 2).reverse.last
|
57
57
|
Rugged::Credentials::SshKeyFromAgent.new(username: username)
|
@@ -60,46 +60,38 @@ module Dapp
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def path
|
63
|
-
Pathname(dapp.build_path("remote_git_repo", CACHE_VERSION.to_s, dapp.consistent_uniq_slugify(name),
|
63
|
+
Pathname(dapp.build_path("remote_git_repo", CACHE_VERSION.to_s, dapp.consistent_uniq_slugify(name), url_protocol(url)).to_s)
|
64
64
|
end
|
65
65
|
|
66
66
|
def clone_and_fetch
|
67
67
|
return ruby2go_method("CloneAndFetch")
|
68
68
|
end
|
69
69
|
|
70
|
-
def latest_branch_commit(branch)
|
71
|
-
git.ref("refs/remotes/#{branch_format(branch)}").tap do |ref|
|
72
|
-
raise Error::Rugged, code: :branch_not_exist_in_remote_git_repository, data: { branch: branch, url: url } if ref.nil?
|
73
|
-
break ref.target_id
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def latest_tag_commit(tag)
|
78
|
-
git.tags[tag].tap do |t|
|
79
|
-
raise Error::Rugged, code: :tag_not_exist_in_remote_git_repository, data: { tag: tag, url: url } if t.nil?
|
80
|
-
break t.target_id
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
70
|
def lookup_commit(commit)
|
85
71
|
super
|
86
72
|
rescue Rugged::OdbError, TypeError => _e
|
87
73
|
raise Error::Rugged, code: :commit_not_found_in_remote_git_repository, data: { commit: commit, url: url }
|
88
74
|
end
|
89
75
|
|
90
|
-
def raise_submodule_commit_not_found!(commit)
|
91
|
-
raise Error::Rugged, code: :git_remote_submodule_commit_not_found, data: { commit: commit, url: url }
|
92
|
-
end
|
93
|
-
|
94
76
|
protected
|
95
77
|
|
96
|
-
def git
|
78
|
+
def git # TODO remove
|
97
79
|
super(bare: true, credentials: _rugged_credentials)
|
98
80
|
end
|
99
81
|
|
100
82
|
private
|
101
83
|
|
102
|
-
def
|
84
|
+
def url_protocol(url) # TODO remove
|
85
|
+
if (scheme = URI.parse(url).scheme).nil?
|
86
|
+
:noname
|
87
|
+
else
|
88
|
+
scheme.to_sym
|
89
|
+
end
|
90
|
+
rescue URI::InvalidURIError
|
91
|
+
:ssh
|
92
|
+
end
|
93
|
+
|
94
|
+
def branch_format(name) # TODO remove
|
103
95
|
"origin/#{name.reverse.chomp('origin/'.reverse).reverse}"
|
104
96
|
end
|
105
97
|
end
|
@@ -38,8 +38,8 @@ module Dapp
|
|
38
38
|
elsif ENV["CI_COMMIT_REF_NAME"]
|
39
39
|
ci_info["branch"] = ci_info["ref"] = ENV["CI_COMMIT_REF_NAME"]
|
40
40
|
ci_info["is_branch"] = true
|
41
|
-
elsif dapp.git_own_repo_exist? and dapp.git_own_repo.
|
42
|
-
ci_info["branch"] = ci_info["ref"] = dapp.git_own_repo.
|
41
|
+
elsif dapp.git_own_repo_exist? and dapp.git_own_repo.head_branch_name != "HEAD"
|
42
|
+
ci_info["branch"] = ci_info["ref"] = dapp.git_own_repo.head_branch_name
|
43
43
|
ci_info["is_branch"] = true
|
44
44
|
elsif dapp.git_own_repo_exist?
|
45
45
|
git = dapp.git_own_repo.send(:git)
|
data/lib/dapp/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dapp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.35.
|
4
|
+
version: 0.35.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Stolyarov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mixlib-shellout
|