author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Sun, 04 Dec 2016 22:21:22 +0000 | |
changeset 88 | 112075e99cef |
parent 86 | f2a7a4378c22 |
child 105 | 983a637074e6 |
permissions | -rw-r--r-- |
68
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
# This file contains various tasks usefull for Smalltalk/X jv-branch |
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
# development. Currently it only supports working with Mercurial repositories, |
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
# Honestly, there's not much one can do with CVS, we're using it only for |
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
# packages that have not been converted to Mercurial. |
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
|
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
6 |
namespace :'workflow' do |
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
# A helper function to :push-upstream and push-staging tasks |
79
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
8 |
def hg_repositories() |
68
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
9 |
project.packages_and_application.each do | pkg | |
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
10 |
if not pkg.nested_package? then |
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
repo = Rake::Stx::Configuration::Repository::find(pkg.repository) |
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
if repo.type == :'hg' then |
79
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
13 |
hg = HG::Repository.new(BUILD_DIR / pkg.directory) |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
14 |
yield hg |
68
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
end |
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
16 |
end |
79
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
17 |
end |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
18 |
end |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
19 |
|
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
20 |
def push(remote, user, pass, review_only, push_bookmark) |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
21 |
hg_repositories do | hg | |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
22 |
opts = { |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
23 |
:user => user, |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
24 |
:pass => pass, |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
25 |
} |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
26 |
if review_only then |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
27 |
opts[:rev] = '.' |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
28 |
remote_url = hg.paths[remote] || remote |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
29 |
bookmark = hg.bookmark() |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
30 |
puts "" |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
31 |
puts "== changes going to #{remote_url} ==" |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
32 |
puts "" |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
33 |
hg.outgoing(remote, **opts) |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
34 |
puts "" |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
35 |
if push_bookmark and bookmark then |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
36 |
puts "Will update bookmark '#{bookmark}" |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
37 |
end |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
38 |
puts "====================================" |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
39 |
puts "" |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
40 |
else |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
41 |
if push_bookmark && bookmark then |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
42 |
opts[:bookmarks] = ['.'] |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
43 |
else |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
44 |
opts[:rev] = '.' |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
45 |
end |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
46 |
hg.push(remote, **opts) |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
47 |
end |
68
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
48 |
end |
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
49 |
end |
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
50 |
|
79
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
51 |
desc "Display changes to be pushed to upstream repositores (use it to review what workflow:push-upstream would do)" |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
52 |
task :'out-upstream', :user, :pass do | t, args | |
88
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
86
diff
changeset
|
53 |
push('upstream', args[:user], args[:pass], true, false) |
79
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
54 |
end |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
55 |
task :'out-upstream' => :'setup' |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
56 |
|
68
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
57 |
desc "Push currently checked out revisions to upstream repositories (to be called after all tests pass on all configurations)" |
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
58 |
task :'push-upstream', :user, :pass do | t, args | |
88
112075e99cef
Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
86
diff
changeset
|
59 |
push('upstream', args[:user], args[:pass], false, false) |
68
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
60 |
end |
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
61 |
task :'push-upstream' => :'setup' |
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
62 |
|
79
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
63 |
|
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
64 |
desc "Display changes to be pushed to staging repositores (use it to review what workflow:push-staging would do)" |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
65 |
task :'out-staging', :user, :pass do | t, args | |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
66 |
push('staging', args[:user], args[:pass], true, true) |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
67 |
end |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
68 |
task :'out-staging' => :'setup' |
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
69 |
|
68
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
70 |
desc "Push currently checked out revisions to staging repositories (to be by developer to test her changes)" |
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
71 |
task :'push-staging', :user, :pass do | t, args | |
79
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
72 |
push('staging', args[:user], args[:pass], false, true) |
68
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
73 |
end |
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
74 |
task :'push-staging' => :'setup' |
79
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
75 |
|
86
f2a7a4378c22
Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
79
diff
changeset
|
76 |
desc "(Auto)merge changes (from eXept)" |
f2a7a4378c22
Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
79
diff
changeset
|
77 |
task :'merge' => :'setup' do |
f2a7a4378c22
Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
79
diff
changeset
|
78 |
if not which("hg-automerge.rb") then |
f2a7a4378c22
Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
79
diff
changeset
|
79 |
info "Cannot find 'hg-automerge.rb' in PATH" |
f2a7a4378c22
Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
79
diff
changeset
|
80 |
info "You may find it at https://bitbucket.org/janvrany/jv-scripts" |
f2a7a4378c22
Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
79
diff
changeset
|
81 |
error "Cannot find 'hg-automerge.rb' in PATH" |
f2a7a4378c22
Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
79
diff
changeset
|
82 |
end |
f2a7a4378c22
Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
79
diff
changeset
|
83 |
hg_repositories_failed_to_merge = [] |
f2a7a4378c22
Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
79
diff
changeset
|
84 |
hg_repositories do | hg | |
f2a7a4378c22
Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
79
diff
changeset
|
85 |
if File.exist? (hg.path / '.hgautomerge') then |
f2a7a4378c22
Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
79
diff
changeset
|
86 |
info "Merging #{hg.path}" |
f2a7a4378c22
Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
79
diff
changeset
|
87 |
sh "hg-automerge.rb --cwd #{hg.path}" |
f2a7a4378c22
Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
79
diff
changeset
|
88 |
else |
f2a7a4378c22
Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
79
diff
changeset
|
89 |
info "Not merging #{hg.path} - no merge config found." |
f2a7a4378c22
Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
79
diff
changeset
|
90 |
info "To configure run: 'hg-automerge.rb --cwd #{hg.path} --config'" |
f2a7a4378c22
Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
79
diff
changeset
|
91 |
end |
f2a7a4378c22
Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
79
diff
changeset
|
92 |
end |
f2a7a4378c22
Added task `workflow:merge' to ease merging code from eXept
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
79
diff
changeset
|
93 |
end |
79
1058962ee3ef
Added new tasks: `workflow:out-staging` and `workflow:out-upstream`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
94 |
|
68
61d8bee7c4d4
Added new tasks - `workflow:push-upstream` and `workflow:push-staging`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
95 |
end |