Commit 0e9d4f30f4961cc7ee768995a37c5bf9a123c08a
1 parent
fba8ad56
Exists in
master
and in
4 other branches
Refactor Satellite#clear and rename it to clear_and_update!
Showing
2 changed files
with
43 additions
and
18 deletions
Show diff stats
lib/gitlab/satellite/action.rb
... | ... | @@ -50,10 +50,7 @@ module Gitlab |
50 | 50 | # |
51 | 51 | # Note: use this within #in_locked_and_timed_satellite |
52 | 52 | def prepare_satellite!(repo) |
53 | - project.satellite.clear | |
54 | - | |
55 | - repo.git.reset(hard: true) | |
56 | - repo.git.fetch({}, :origin) | |
53 | + project.satellite.clear_and_update! | |
57 | 54 | |
58 | 55 | repo.git.config({}, "user.name", user.name) |
59 | 56 | repo.git.config({}, "user.email", user.email) | ... | ... |
lib/gitlab/satellite/satellite.rb
... | ... | @@ -9,20 +9,10 @@ module Gitlab |
9 | 9 | @project = project |
10 | 10 | end |
11 | 11 | |
12 | - #will be deleted all branches except PARKING_BRANCH | |
13 | - def clear | |
14 | - Dir.chdir(path) do | |
15 | - heads = Grit::Repo.new(".").heads.map{|head| head.name} | |
16 | - if heads.include? PARKING_BRANCH | |
17 | - `git checkout #{PARKING_BRANCH}` | |
18 | - else | |
19 | - `git checkout -b #{PARKING_BRANCH}` | |
20 | - end | |
21 | - heads.delete(PARKING_BRANCH) | |
22 | - heads.each do |head| | |
23 | - `git branch -D #{head}` | |
24 | - end | |
25 | - end | |
12 | + def clear_and_update! | |
13 | + delete_heads! | |
14 | + clear_working_dir! | |
15 | + update_from_source! | |
26 | 16 | end |
27 | 17 | |
28 | 18 | def create |
... | ... | @@ -36,6 +26,44 @@ module Gitlab |
36 | 26 | def path |
37 | 27 | Rails.root.join("tmp", "repo_satellites", project.path) |
38 | 28 | end |
29 | + | |
30 | + private | |
31 | + | |
32 | + # Clear the working directory | |
33 | + def clear_working_dir! | |
34 | + repo.git.reset(hard: true) | |
35 | + end | |
36 | + | |
37 | + # Deletes all branches except the parking branch | |
38 | + # | |
39 | + # This ensures we have no name clashes or issues updating branches when | |
40 | + # working with the satellite. | |
41 | + def delete_heads! | |
42 | + heads = repo.heads.map{|head| head.name} | |
43 | + | |
44 | + # update or create the parking branch | |
45 | + if heads.include? PARKING_BRANCH | |
46 | + repo.git.checkout({}, PARKING_BRANCH) | |
47 | + else | |
48 | + repo.git.checkout({b: true}, PARKING_BRANCH) | |
49 | + end | |
50 | + | |
51 | + # remove the parking branch from the list of heads ... | |
52 | + heads.delete(PARKING_BRANCH) | |
53 | + # ... and delete all others | |
54 | + heads.each { |head| repo.git.branch({D: true}, head) } | |
55 | + end | |
56 | + | |
57 | + def repo | |
58 | + @repo ||= Grit::Repo.new(path) | |
59 | + end | |
60 | + | |
61 | + # Updates the satellite from Gitolite | |
62 | + # | |
63 | + # Note: this will only update remote branches (i.e. origin/*) | |
64 | + def update_from_source! | |
65 | + repo.git.fetch({}, :origin) | |
66 | + end | |
39 | 67 | end |
40 | 68 | end |
41 | 69 | end | ... | ... |