gitbulk 0.0.3.364300 → 0.0.5.364361

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 910b9d211e964625b1be8aa4116d8bb3eac256ef4684a082e1c15ddae28a32e6
4
- data.tar.gz: 328b957a3810177dc90382eeafa8e89f9c6e6fcb642b94e23b8507d125b7ed16
3
+ metadata.gz: 73adcbf1b528189df65e38826c3bee7324d76e5aa20ee287adff2f3579d8eecb
4
+ data.tar.gz: d0ee46a8e8fc75b2369710d1cf2c38d83afa3ed30d33a0bf200b8b2116add5eb
5
5
  SHA512:
6
- metadata.gz: 61cb0b6ebb3972fdc99c84b23825377c9c5a1eea58ef65260008cd861f7f12b0811b3ab897aad9f6577063be755ced80f9043153290ab60617d29804b98293a4
7
- data.tar.gz: 13873fed8285a8d4bc4a954d30393e5ad2ce5d32761672567095a121ee913522ba563e678c7678631bbb50e9316c0b817cd17683ea374a722ac22042e6a73fe6
6
+ metadata.gz: 4a9edf63e467d4dca805d3e81bab9b32d75477968b8e112aa96285952bd8af9521e8acdf29a7517e97464c4c09c15320f95392faa4f3de40d4dcbcd41d1784f2
7
+ data.tar.gz: 570550cfac20f9a5b68acd24c7b12db3e871497ba2bdcfc8a1944b3ecd1815de327d56b314161fabd15c778828ea553f6facc483b6fd1f78790120cb419985cc
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gitbulk (0.0.3)
4
+ gitbulk (0.0.5)
5
5
  activesupport
6
6
  colorize
7
7
  fileutils
data/bin/gitbulk CHANGED
@@ -25,6 +25,7 @@ Gitbulk::Util.setup
25
25
 
26
26
  @opts = {
27
27
  dryrun: ENV.fetch('GITBULK_DRYRUN', 'false').to_bool,
28
+ twoway: ENV.fetch('GITBULK_TWOWAY', 'false').to_bool,
28
29
  config: ENV.fetch('GITBULK_CONFIG', './gitbulk.yml'),
29
30
  log_level: ENV.fetch('LOG_LEVEL', ::Logger::INFO)
30
31
  }
@@ -37,6 +38,11 @@ parser = OptionParser.new do |o|
37
38
  @opts[:config] = File.expand_path(path.strip)
38
39
  end
39
40
 
41
+ o.on('--twoway',
42
+ 'ENV[GITBULK_TWOWAY]'.ljust(25) + 'Experimental using https://github.com/it3xl/git-repo-sync') do
43
+ @opts[:twoway] = true
44
+ end
45
+
40
46
  o.on('--dryrun',
41
47
  'ENV[GITBULK_DRYRUN]'.ljust(25) + 'Dry Run') do
42
48
  @opts[:dryrun] = true
@@ -62,23 +68,52 @@ FileUtils.mkdir_p(File.expand_path(config['workdir']))
62
68
 
63
69
  $exit_with_error = 0
64
70
 
65
- Dir.chdir(config['workdir']) do |_dir|
71
+ Dir.chdir(config['workdir']) do |wd|
72
+ ENV['GITBULK_REPOS'] = Dir.getwd
66
73
  config['repositories'].shuffle.each do |repo|
67
74
  git = repo['git']
68
75
 
69
76
  logger.info "Mirroring: #{git.inspect}".colorize(:green)
70
77
 
71
-
72
- Gitbulk::Util.within_repo(git, logger: logger) do |_name|
73
- repo['mirrors'].shuffle.each do |mirror|
74
- logger.info "Pushing to #{mirror}".colorize(:blue)
75
-
76
- # cmd = "git push --mirror #{mirror}"
77
- cmd = "git push --all #{mirror}"
78
- if @opts[:dryrun]
79
- logger.tagged('DRYRUN') { logger.info cmd }
80
- else
81
- Gitbulk::Util.cmd!(cmd)
78
+ if @opts[:twoway]
79
+ spec = Gem::Specification.find_by_name("gitbulk")
80
+ gem_root = spec.gem_dir
81
+ syncer_home = File.join(gem_root, "lib", "git-repo-sync")
82
+ syncer = "git-sync.sh"
83
+ ENV['PATH'] = "#{ENV['PATH']}:#{syncer_home}"
84
+ logger.tagged('TWOWAY'.colorize(:red)) do
85
+ repo['mirrors'].shuffle.each do |mirror|
86
+ name = Gitbulk::Util.name_slug(git) + '_' + Gitbulk::Util.name_slug(mirror)
87
+ cmd = "git_sync_project_folder=#{Gitbulk::Util.name_slug(name)} url_a=#{git} url_b=#{mirror} git-sync.sh"
88
+ allcmd = "git push origin_b --all"
89
+ tagscmd = "git push origin_b --tags"
90
+ if @opts[:dryrun]
91
+ logger.tagged('DRYRUN') { logger.info cmd }
92
+ logger.tagged('DRYRUN') { logger.info allcmd }
93
+ logger.tagged('DRYRUN') { logger.info tagscmd }
94
+ else
95
+ logger.info cmd
96
+ Gitbulk::Util.cmd!(cmd)
97
+ Dir.chdir("sync-projects/#{name}/sync_repo") do |_dir|
98
+ Gitbulk::Util.cmd!(allcmd)
99
+ Gitbulk::Util.cmd!(tagscmd)
100
+ end
101
+ end
102
+ end
103
+ end
104
+ else
105
+ # generic way
106
+ Gitbulk::Util.within_repo(git, logger: logger) do |_name|
107
+ repo['mirrors'].shuffle.each do |mirror|
108
+ logger.info "Pushing to #{mirror}".colorize(:blue)
109
+
110
+ # cmd = "git push --mirror #{mirror}"
111
+ cmd = "git push --all #{mirror}"
112
+ if @opts[:dryrun]
113
+ logger.tagged('DRYRUN') { logger.info cmd }
114
+ else
115
+ Gitbulk::Util.cmd!(cmd)
116
+ end
82
117
  end
83
118
  end
84
119
  end
data/lib/gitbulk/utils.rb CHANGED
@@ -49,6 +49,10 @@ module Gitbulk
49
49
  end
50
50
  end
51
51
 
52
+ def name_slug(git)
53
+ git.downcase.gsub(/\W+/, '_')
54
+ end
55
+
52
56
  def cmd!(cmd, capture: false, logger: $logger)
53
57
  $cmdnum ||= 0
54
58
  $cmdnum += 1
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Gitbulk
4
4
 
5
- VERSION = '0.0.3'
5
+ VERSION = '0.0.5'
6
6
 
7
7
  end
8
8
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitbulk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3.364300
4
+ version: 0.0.5.364361
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samoilenko Yuri