buildr 1.3.5-java → 1.4.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. data/CHANGELOG +153 -8
  2. data/README.rdoc +1 -1
  3. data/addon/buildr/antlr.rb +5 -5
  4. data/addon/buildr/drb.rb +18 -18
  5. data/addon/buildr/hibernate.rb +18 -14
  6. data/addon/buildr/javacc.rb +4 -4
  7. data/addon/buildr/jetty.rb +5 -5
  8. data/addon/buildr/nailgun.rb +23 -23
  9. data/addon/buildr/openjpa.rb +1 -1
  10. data/addon/buildr/org/apache/buildr/BuildrNail$Main.class +0 -0
  11. data/addon/buildr/org/apache/buildr/BuildrNail.class +0 -0
  12. data/addon/buildr/org/apache/buildr/JettyWrapper$1.class +0 -0
  13. data/addon/buildr/org/apache/buildr/JettyWrapper$BuildrHandler.class +0 -0
  14. data/addon/buildr/org/apache/buildr/JettyWrapper.class +0 -0
  15. data/addon/buildr/protobuf.rb +75 -0
  16. data/addon/buildr/xmlbeans.rb +5 -5
  17. data/buildr.buildfile +2 -2
  18. data/buildr.gemspec +8 -7
  19. data/doc/_layouts/default.html +2 -2
  20. data/doc/artifacts.textile +4 -4
  21. data/doc/building.textile +35 -3
  22. data/doc/contributing.textile +5 -0
  23. data/doc/download.textile +16 -5
  24. data/doc/extending.textile +38 -12
  25. data/doc/installing.textile +6 -5
  26. data/doc/languages.textile +182 -42
  27. data/doc/more_stuff.textile +2 -2
  28. data/doc/packaging.textile +14 -15
  29. data/doc/projects.textile +7 -2
  30. data/doc/quick_start.textile +4 -4
  31. data/doc/scripts/buildr-git.rb +63 -63
  32. data/doc/scripts/gitflow.rb +21 -21
  33. data/doc/settings_profiles.textile +9 -2
  34. data/doc/testing.textile +16 -5
  35. data/etc/KEYS +38 -0
  36. data/lib/buildr.rb +1 -1
  37. data/lib/buildr/core.rb +1 -0
  38. data/lib/buildr/core/application.rb +33 -27
  39. data/lib/buildr/core/build.rb +41 -28
  40. data/lib/buildr/core/cc.rb +172 -0
  41. data/lib/buildr/core/checks.rb +1 -1
  42. data/lib/buildr/core/common.rb +7 -6
  43. data/lib/buildr/core/compile.rb +7 -8
  44. data/lib/buildr/core/doc.rb +263 -0
  45. data/lib/buildr/core/environment.rb +6 -6
  46. data/lib/buildr/core/filter.rb +77 -35
  47. data/lib/buildr/core/generate.rb +7 -7
  48. data/lib/buildr/core/help.rb +1 -1
  49. data/lib/buildr/core/osx.rb +6 -6
  50. data/lib/buildr/core/progressbar.rb +4 -4
  51. data/lib/buildr/core/project.rb +144 -36
  52. data/lib/buildr/core/shell.rb +34 -34
  53. data/lib/buildr/core/test.rb +89 -20
  54. data/lib/buildr/core/transports.rb +8 -7
  55. data/lib/buildr/core/util.rb +77 -23
  56. data/lib/buildr/groovy/bdd.rb +5 -5
  57. data/lib/buildr/groovy/compiler.rb +19 -15
  58. data/lib/buildr/groovy/shell.rb +6 -6
  59. data/lib/buildr/ide/eclipse.rb +148 -75
  60. data/lib/buildr/ide/eclipse/java.rb +3 -3
  61. data/lib/buildr/ide/eclipse/plugin.rb +8 -5
  62. data/lib/buildr/ide/eclipse/scala.rb +4 -2
  63. data/lib/buildr/ide/idea.rb +2 -2
  64. data/lib/buildr/ide/idea7x.rb +23 -4
  65. data/lib/buildr/java.rb +1 -0
  66. data/lib/buildr/java/ant.rb +4 -4
  67. data/lib/buildr/java/bdd.rb +51 -54
  68. data/lib/buildr/java/cobertura.rb +57 -35
  69. data/lib/buildr/java/commands.rb +14 -5
  70. data/lib/buildr/java/compiler.rb +3 -217
  71. data/lib/buildr/java/deprecated.rb +4 -4
  72. data/lib/buildr/java/doc.rb +70 -0
  73. data/lib/buildr/java/emma.rb +22 -22
  74. data/lib/buildr/java/jruby.rb +4 -4
  75. data/lib/buildr/java/jtestr_runner.rb.erb +27 -25
  76. data/lib/buildr/java/org/apache/buildr/JavaTestFilter.class +0 -0
  77. data/lib/buildr/java/org/apache/buildr/JavaTestFilter.java +8 -3
  78. data/lib/buildr/java/packaging.rb +30 -29
  79. data/lib/buildr/java/pom.rb +4 -4
  80. data/lib/buildr/java/rjb.rb +6 -6
  81. data/lib/buildr/java/test_result.rb +61 -85
  82. data/lib/buildr/java/tests.rb +44 -27
  83. data/lib/buildr/java/version_requirement.rb +8 -8
  84. data/lib/buildr/packaging/archive.rb +55 -22
  85. data/lib/buildr/packaging/artifact.rb +75 -36
  86. data/lib/buildr/packaging/artifact_namespace.rb +90 -78
  87. data/lib/buildr/packaging/artifact_search.rb +5 -5
  88. data/lib/buildr/packaging/gems.rb +11 -7
  89. data/lib/buildr/packaging/package.rb +10 -7
  90. data/lib/buildr/packaging/tar.rb +14 -14
  91. data/lib/buildr/packaging/version_requirement.rb +30 -10
  92. data/lib/buildr/packaging/ziptask.rb +51 -13
  93. data/lib/buildr/scala.rb +1 -0
  94. data/lib/buildr/scala/bdd.rb +25 -20
  95. data/lib/buildr/scala/compiler.rb +87 -40
  96. data/lib/buildr/scala/doc.rb +106 -0
  97. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.class +0 -0
  98. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.java +57 -0
  99. data/lib/buildr/scala/shell.rb +14 -9
  100. data/lib/buildr/scala/tests.rb +33 -26
  101. data/lib/buildr/shell.rb +33 -33
  102. data/rakelib/all-in-one.rake +113 -0
  103. data/rakelib/checks.rake +1 -1
  104. data/rakelib/doc.rake +7 -0
  105. data/rakelib/package.rake +1 -1
  106. data/rakelib/release.rake +9 -6
  107. data/rakelib/rspec.rake +26 -7
  108. data/rakelib/setup.rake +15 -3
  109. data/rakelib/stage.rake +18 -11
  110. data/spec/addon/drb_spec.rb +25 -25
  111. data/spec/core/application_spec.rb +111 -21
  112. data/spec/core/build_spec.rb +16 -15
  113. data/spec/core/cc_spec.rb +174 -0
  114. data/spec/core/checks_spec.rb +34 -34
  115. data/spec/core/common_spec.rb +51 -5
  116. data/spec/core/compile_spec.rb +89 -14
  117. data/spec/core/extension_spec.rb +127 -19
  118. data/spec/core/generate_spec.rb +2 -2
  119. data/spec/core/project_spec.rb +10 -10
  120. data/spec/core/test_spec.rb +144 -35
  121. data/spec/core/transport_spec.rb +8 -8
  122. data/spec/core/util_spec.rb +63 -5
  123. data/spec/groovy/bdd_spec.rb +5 -5
  124. data/spec/groovy/compiler_spec.rb +29 -18
  125. data/spec/ide/eclipse_spec.rb +185 -9
  126. data/spec/ide/idea7x_spec.rb +22 -10
  127. data/spec/java/ant_spec.rb +9 -5
  128. data/spec/java/bdd_spec.rb +29 -37
  129. data/spec/java/cobertura_spec.rb +12 -12
  130. data/spec/java/commands_spec.rb +34 -0
  131. data/spec/java/compiler_spec.rb +53 -53
  132. data/spec/java/emma_spec.rb +11 -11
  133. data/spec/java/java_spec.rb +10 -10
  134. data/spec/java/packaging_spec.rb +67 -20
  135. data/spec/java/test_coverage_helper.rb +18 -18
  136. data/spec/java/tests_spec.rb +13 -9
  137. data/spec/packaging/archive_spec.rb +187 -20
  138. data/spec/packaging/artifact_namespace_spec.rb +172 -83
  139. data/spec/packaging/artifact_spec.rb +83 -18
  140. data/spec/packaging/packaging_spec.rb +41 -14
  141. data/spec/sandbox.rb +23 -12
  142. data/spec/scala/bdd_spec.rb +13 -8
  143. data/spec/scala/compiler_spec.rb +18 -13
  144. data/spec/scala/scala.rb +3 -3
  145. data/spec/scala/tests_spec.rb +46 -24
  146. data/spec/spec_helpers.rb +28 -10
  147. data/spec/version_requirement_spec.rb +25 -11
  148. metadata +148 -132
  149. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner$.class +0 -0
  150. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.scala +0 -35
  151. data/rakelib/stage.rake~ +0 -213
@@ -280,7 +280,7 @@ Buildr.application.on_failure do |title, message, ex|
280
280
  end
281
281
  {% endhighlight %}
282
282
 
283
- You can place this code inside @buildr.rb@ in your home directory.
283
+ You can place this code inside @buildr.rb@ in the @.buildr@ directory under your home directory.
284
284
 
285
285
  h2(#eclipse). Eclipse
286
286
 
@@ -390,7 +390,7 @@ require 'buildr/java/emma'
390
390
  require 'buildr/jdepend'
391
391
  {% endhighlight %}
392
392
 
393
- You may want to add those to the Buildfile. Alternatively, you can use these tasks for all your projects without modifying the Buildfile. One convenient method is to add these lines to the @buildr.rb@ file in your home directory.
393
+ You may want to add those to the Buildfile. Alternatively, you can use these tasks for all your projects without modifying the Buildfile. One convenient method is to add these lines to the @buildr.rb@ file in the @.buildr@ directory under your home directory.
394
394
 
395
395
  Another option is to require it from the command line (@--require@ or @-r@), for example:
396
396
 
@@ -101,22 +101,21 @@ The @include@ method accepts files, directories and file tasks. You can also us
101
101
  And the same way you @include@, you can also @exclude@ specific files you don't want showing up in the ZIP. For example, to exclude @.draft@ and @.raw@ files:
102
102
 
103
103
  {% highlight ruby %}
104
- package(:zip).include('target/docs').
105
- exclude('target/docs/**/*.{draft,raw}')
104
+ package(:zip).include(_('target/docs')).exclude('*.draft', '*.raw')
106
105
  {% endhighlight %}
107
106
 
108
107
  So far we've included files under the root of the ZIP. Let's include some files under a given path using the @:path@ option:
109
108
 
110
109
  {% highlight ruby %}
111
- package(:zip).include 'target/docs', :path=>"#{id}-#{version}"
110
+ package(:zip).include _('target/docs'), :path=>"#{id}-#{version}"
112
111
  {% endhighlight %}
113
112
 
114
113
  If you need to use the @:path@ option repeatedly, consider using the @tap@ method instead. For example:
115
114
 
116
115
  {% highlight ruby %}
117
116
  package(:zip).path("#{id}-#{version}").tap do |path|
118
- path.include 'target/docs'
119
- path.include 'README'
117
+ path.include _('target/docs')
118
+ path.include _('README')
120
119
  end
121
120
  {% endhighlight %}
122
121
 
@@ -127,33 +126,33 @@ p(note). To allow you to spread files across different paths, the include/exclud
127
126
  If you need to include a file or directory under a different name, use the @:as@ option. For example:
128
127
 
129
128
  {% highlight ruby %}
130
- package(:zip).include('corporate-logo-350x240.png', :as=>'logo.png')
129
+ package(:zip).include(_('corporate-logo-350x240.png'), :as=>'logo.png')
131
130
  {% endhighlight %}
132
131
 
133
132
  You can also use @:as=>'.'@ to include all files from the given directory. For example:
134
133
 
135
134
  {% highlight ruby %}
136
- package(:zip).include 'target/docs/*'
137
- package(:zip).include 'target/docs', :as=>'.'
135
+ package(:zip).include _('target/docs/*')
136
+ package(:zip).include _('target/docs'), :as=>'.'
138
137
  {% endhighlight %}
139
138
 
140
- These two are almost identical. They both include all the files from the @target/docs@ directory, but not the directory itself. But they operate differently. The first line expands to include all the files in @target/docs@. If you don't already have files in @target/docs@, well, then it won't do anything interesting. Your ZIP will come up empty. The second file includes the directory itself, but strips the path during inclusion. You can define it now, create these files later, and then ZIP them all up.
139
+ These two perform identically. They both include all the files from the @target/docs@ directory, but not the directory itself, and they are both lazy, meaning that the files can be created later and they will still get packaged into the zip package.
141
140
 
142
- For example, when @package :jar@ decides to include all the files from @target/classes@, it's still working on the project definition, and has yet to compile anything. Since @target/classes@ may be empty, may not even exist, it uses @:as=>'.'@.
141
+ For example, when you use @package :jar@, under the hood it specifies to include all the files from @target/classes@ with @:as=>'.'@. Even though this happens during project definition and nothing has been compiled yet (and in fact @target/classes@ may not even exist yet), the .class files generated during compilation are still packaged in the .jar file, as expected.
143
142
 
144
143
  If you need to get rid of all the included files, call the @clean@ method. Some packaging types default to adding various files and directories, for example, JAR packaging will include all the compiled classes and resources.
145
144
 
146
145
  You can also merge two ZIP files together, expanding the content of one ZIP into the other. For example:
147
146
 
148
147
  {% highlight ruby %}
149
- package(:zip).merge 'part1.zip', 'part2.zip'
148
+ package(:zip).merge _('part1.zip'), _('part2.zip')
150
149
  {% endhighlight %}
151
150
 
152
151
  If you need to be more selective, you can apply the include/exclude pattern to the expanded ZIP. For example:
153
152
 
154
153
  {% highlight ruby %}
155
154
  # Everything but the libs
156
- package(:zip).merge('bigbad.war').exclude('libs/**/*')
155
+ package(:zip).merge(_('bigbad.war')).exclude('libs/**/*')
157
156
  {% endhighlight %}
158
157
 
159
158
 
@@ -257,7 +256,7 @@ If you already have WSDL files in the @src/main/axis2@ directory but would like
257
256
  {% highlight ruby %}
258
257
  # Host name depends on environment.
259
258
  host = ENV['ENV'] == 'test' ? 'test.host' : 'ws.example.com'
260
- filter.from('src/main/axis2').into('target').
259
+ filter.from(_('src/main/axis2')).into(_(:target)).
261
260
  include('services.xml', '==*==.wsdl').using('http_port'=>'8080', 'http_host'=>host)
262
261
  package(:aar).wsdls.clear
263
262
  package(:aar).with(:services_xml=>_('target/services.xml'), :wsdls=>_('target/==*==.wsdl'))
@@ -404,11 +403,11 @@ package :sources
404
403
 
405
404
  This one creates a ZIP package with the classifier "sources" that will contain all the source directories in that project, typically @src/main/java@, but also other sources generated from Apt, JavaCC, XMLBeans and friends.
406
405
 
407
- You can also generate a ZIP package with the classifier "javadoc" that contains the JavaDoc documentation for the project. It uses the same set of documentation files generated by the project's @javadoc@ task, so you can use it in combination with the @javadoc@ method. For example:
406
+ You can also generate a ZIP package with the classifier "javadoc" that contains the JavaDoc documentation for the project. It uses the same set of documentation files generated by the project's @doc@ task, so you can use it in combination with the @doc@ method. For example:
408
407
 
409
408
  {% highlight ruby %}
410
409
  package :javadoc
411
- javadoc :windowtitle=>'Buggy but Works'
410
+ doc :windowtitle=>'Buggy but Works'
412
411
  {% endhighlight %}
413
412
 
414
413
  By default Buildr picks the project's description for the window title.
data/doc/projects.textile CHANGED
@@ -13,7 +13,9 @@ Feed it a project definition, and Buildr will set up all these tasks for you. Th
13
13
  The remainder of this guide deals with what it takes to build a project. But first, let's pick up a sample project to work with. We'll call it _killer-app_:
14
14
 
15
15
  {% highlight ruby %}
16
- require 'buildr'
16
+ require "buildr/openjpa"
17
+
18
+ include Buildr::OpenJPA
17
19
 
18
20
  VERSION_NUMBER = '1.0'
19
21
 
@@ -90,7 +92,7 @@ When you start with a new project you won't see the @target@ or @reports@ direct
90
92
 
91
93
  h2(#naming). Naming And Finding Projects
92
94
 
93
- Each project has a given name, the first argument you pass when calling @define@. The project name is just a string, but we advise to stay clear of colon (@:@) and slashes (@/@ and @\@), which could conflict with other task and file names. Also, avoid using common Buildr task names, don't pick @compile@ or @build@ for your project name.
95
+ Each project has a given name, the first argument you pass when calling @define@. The project name is just a string, but we advise to stay clear of colon (@:@) and slashes (@/@ and @\@), which could conflict with other task and file names. Also, avoid using common Buildr task names, don't pick @compile@, @build@ or any existing task name for your project name.
94
96
 
95
97
  Since each project knows its parent project, child projects and siblings, you can reference them from within the project using just the given name. In other cases, you'll need to use the full name. The full name is just @parent:child@. So if you wanted to refer to _teh-impl_, you could do so with either @project('killer-app:teh-impl')@ or @project('killer-app').project('teh-impl')@.
96
98
 
@@ -201,6 +203,9 @@ For example:
201
203
  # Relative to the current project
202
204
  path_to('src', 'main', 'java')
203
205
 
206
+ # the same using symbols
207
+ path_to(:src, :main, :java)
208
+
204
209
  # Exactly the same thing
205
210
  _('src/main/java')
206
211
 
@@ -169,7 +169,7 @@ If there is one area in which Buildr excels, it is defining custom tasks. This
169
169
  define 'killer-app' do
170
170
  project.version = '0.1.0'
171
171
  package :jar
172
-
172
+
173
173
  task :run => :compile do
174
174
  system 'java -cp target/classes org.apache.killer.Main'
175
175
  end
@@ -185,13 +185,13 @@ $ buildr killer-app:run
185
185
  This works, but it's clumsy. The reason we had to give the "@killer-app:@" prefix is because we defined the @run@ task _within_ our project, rather than outside of the @define@ block. However, if we define @run@ outside of the project, then we don't really have access to the @compile@ task (which is project-specific). The solution here is a bit of magic known as @local_task@. This is how tasks like @compile@ and @test@, which are technically project-specific (think: instance methods) can be invoked without the fully-qualified project name:
186
186
 
187
187
  {% highlight ruby %}
188
- local_task :run
188
+ Project.local_task :run
189
189
 
190
190
  define 'killer-app' do
191
191
  project.version '0.1.0'
192
-
192
+
193
193
  package :jar
194
-
194
+
195
195
  task :run => :compile do
196
196
  system 'java -cp target/classes org.apache.killer.Main'
197
197
  end
@@ -29,7 +29,7 @@
29
29
  # git apache setup svn --help
30
30
  # git apache sync --help
31
31
  #
32
- # To configure your local repo for svn synchronization,
32
+ # To configure your local repo for svn synchronization,
33
33
  #
34
34
  # git apache update-authors
35
35
  # git remote add upstream git@github.com:buildr/buildr.git
@@ -77,11 +77,11 @@ module BuildrGit
77
77
  def options(opts)
78
78
  opts.url = @@url
79
79
  opts.file = self.class.authors_file
80
- [['-u', '--url URL',
80
+ [['-u', '--url URL',
81
81
  "From URL. defaults to: #{opts.url}", lambda { |url|
82
82
  opts.url = url
83
83
  }],
84
- ['-f', '--file FILE',
84
+ ['-f', '--file FILE',
85
85
  "Write to FILE, defaults to #{opts.file}", lambda { |path|
86
86
  opts.file = path
87
87
  }]
@@ -97,7 +97,7 @@ module BuildrGit
97
97
 
98
98
  class CloneCommand < GitFlow/:clone
99
99
  @help = "Create a clone from github.com/buildr repository."
100
-
100
+
101
101
  def options(opts)
102
102
  opts.origin = 'git://github.com/buildr/buildr.git'
103
103
  opts.svn_prefix = 'apache'
@@ -113,7 +113,7 @@ module BuildrGit
113
113
 
114
114
  def execute(opts, argv)
115
115
  git 'clone', opts.origin, opts.local
116
- Dir.chdir(opts.local) do
116
+ Dir.chdir(opts.local) do
117
117
  run 'update-users'
118
118
  run 'setup'
119
119
  end
@@ -125,7 +125,7 @@ module BuildrGit
125
125
  def options(opt)
126
126
  []
127
127
  end
128
-
128
+
129
129
  def execute(opt, argv)
130
130
  run 'setup', 'alias'
131
131
  run 'setup', 'svn'
@@ -146,10 +146,10 @@ module BuildrGit
146
146
  opt.svn_prefix = 'apache'
147
147
  opt.svn_path = 'buildr'
148
148
  opt.townhall = 'origin'
149
- [['--username SVN_USER', 'Use Apache svn username for this svn remote',
149
+ [['--username SVN_USER', 'Use Apache svn username for this svn remote',
150
150
  lambda { |e| opt.apache_login = e }],
151
151
  ['--svn-prefix PREFIX', 'The name of svn remote to use for project.',
152
- "Defaults to #{opt.svn_prefix}",
152
+ "Defaults to #{opt.svn_prefix}",
153
153
  lambda{|p| opt.svn_prefix = p }],
154
154
  ['--svn-uri URI', lambda {|p| opt.svn_uri = p }],
155
155
  ['--svn-rev REVISION', lambda {|p| opt.svn_rev = p }],
@@ -166,21 +166,21 @@ module BuildrGit
166
166
  git 'config', 'svn.authorsfile', authors_file
167
167
  git 'config', 'apache.svn', opt.svn_prefix
168
168
  git 'config', 'apache.git', opt.townhall
169
-
169
+
170
170
  if opt.apache_login
171
171
  user, email = UpdateUsersCommand.user_email(opt.apache_login, authors_file)
172
172
  puts "You claim to be #{user} <#{email}> with apache login: #{opt.apache_login}"
173
173
  git('config', 'user.name', user)
174
174
  git('config', 'user.email', email)
175
175
  end
176
-
176
+
177
177
  if opt.svn_rev
178
178
  revision = opt.svn_rev
179
179
  else
180
180
  location, revision = svn_loc_rev
181
181
  revision = opt.svn_rev || revision
182
182
  end
183
-
183
+
184
184
  if opt.svn_uri
185
185
  repo = opt.svn_uri
186
186
  else
@@ -189,13 +189,13 @@ module BuildrGit
189
189
  repo = $`
190
190
  end
191
191
 
192
- # Tell git where the svn repository is
192
+ # Tell git where the svn repository is
193
193
  git('config', "svn-remote.#{opt.svn_prefix}.url", repo)
194
194
  git('config', "svn-remote.#{opt.svn_prefix}.fetch",
195
195
  "#{opt.svn_path}/trunk:refs/remotes/#{opt.svn_prefix}/trunk")
196
- git('config', "svn-remote.#{opt.svn_prefix}.branches",
196
+ git('config', "svn-remote.#{opt.svn_prefix}.branches",
197
197
  "#{opt.svn_path}/branches/*:refs/remotes/#{opt.svn_prefix}/*")
198
- git('config', "svn-remote.#{opt.svn_prefix}.tags",
198
+ git('config', "svn-remote.#{opt.svn_prefix}.tags",
199
199
  "#{opt.svn_path}/tags/*:refs/remotes/#{opt.svn_prefix}/tags/*")
200
200
 
201
201
  # Store the user for svn dcommit
@@ -214,9 +214,9 @@ module BuildrGit
214
214
  # update svn metadata
215
215
  mkdir_p(expand_path('.git/svn'))
216
216
  svn_meta = expand_path('.git/svn/.metadata')
217
- git('config', '--file', svn_meta,
217
+ git('config', '--file', svn_meta,
218
218
  "svn-remote.#{opt.svn_prefix}.branches-maxRev", revision)
219
- git('config', '--file', svn_meta,
219
+ git('config', '--file', svn_meta,
220
220
  "svn-remote.#{opt.svn_prefix}.tags-maxRev", revision)
221
221
  end
222
222
 
@@ -255,18 +255,18 @@ apache.svn - The svn remote using to get changes from Apache SVN.
255
255
  class SyncCommand < GitFlow/:sync
256
256
  @help = "Synchronizes between Apache svn and git townhall."
257
257
  @documentation = <<-DOC
258
- This command will perform the following actions:
258
+ This command will perform the following actions:
259
259
  * fetch changes from apache svn.
260
260
  * rebase them on the current branch or on the one specified with --onto
261
261
  * dcommit (this will push your changes to Apache trunk)
262
262
 
263
263
  GIT CONFIG VALUES:
264
264
 
265
- apache.svn
265
+ apache.svn
266
266
  The svn remote using to get changes from Apache SVN.
267
267
  Set by setup-svn --svn-prefix.
268
268
 
269
- apache.git
269
+ apache.git
270
270
  The git remote used as townhall repository.
271
271
  Set by setup-svn --townhall.
272
272
 
@@ -281,7 +281,7 @@ DOC
281
281
  opt.git_branch = 'master'
282
282
  opt.apache_git = git('config', '--get', 'apache.git').chomp rescue nil
283
283
  opt.apache_svn = git('config', '--get', 'apache.svn').chomp rescue nil
284
- opt.svn_username = git('config', '--get',
284
+ opt.svn_username = git('config', '--get',
285
285
  "svn-remote.#{opt.apache_svn}.username").chomp rescue nil
286
286
  [['--apache-svn SVN_REMOTE', 'The SVN remote used to get changes from Apache',
287
287
  "Current value: #{opt.apache_svn}",
@@ -289,15 +289,15 @@ DOC
289
289
  ['--apache-git REMOTE', 'The git remote used as town-hall repository.',
290
290
  "Current value: #{opt.apache_git}",
291
291
  lambda { |r| opt.apache_git = r }],
292
- ['--username SVN_USER',
292
+ ['--username SVN_USER',
293
293
  'Specify the SVN username for dcommit',
294
294
  "Defaults to: #{opt.svn_username}",
295
295
  lambda { |b| opt.svn_username = b }],
296
296
  ['--svn-branch SVN_BRANCH',
297
- 'Specify the SVN branch to rebase changes from, and where to dcommit',
297
+ 'Specify the SVN branch to rebase changes from, and where to dcommit',
298
298
  "Defaults to: #{opt.svn_branch}",
299
299
  lambda { |b| opt.svn_branch = b }],
300
- ['--git-branch REMOTE_BRANCH',
300
+ ['--git-branch REMOTE_BRANCH',
301
301
  'Specify the remote town-hall branch (on apache.git) to update',
302
302
  "Defaults to: #{opt.git_branch}",
303
303
  lambda { |b| opt.git_branch = b }],
@@ -318,29 +318,29 @@ DOC
318
318
  # obtain latest changes from svn
319
319
  git('svn', 'fetch', '--svn-remote', opt.apache_svn)
320
320
  # obtain latest changes from git
321
- git('fetch', opt.apache_git,
321
+ git('fetch', opt.apache_git,
322
322
  "#{opt.git_branch}:refs/remotes/#{opt.apache_git}/#{opt.git_branch}")
323
323
 
324
324
  # rebase svn changes in the desired branch
325
325
  git('rebase', "#{opt.apache_svn}/#{opt.svn_branch}", opt.branch)
326
326
  git('rebase', "#{opt.apache_git}/#{opt.git_branch}", opt.branch)
327
-
327
+
328
328
  # dcommit to the specific svn branch
329
- ['svn', 'dcommit',
329
+ ['svn', 'dcommit',
330
330
  '--svn-remote', opt.apache_svn, '--commit-url', commit_url].tap do |cmd|
331
331
  if opt.svn_username
332
332
  cmd << '--username' << opt.svn_username
333
333
  end
334
334
  git(*cmd)
335
335
  end
336
-
336
+
337
337
  # update townhall remote ref
338
- git('update-ref',
338
+ git('update-ref',
339
339
  "refs/remotes/#{opt.apache_git}/#{opt.git_branch}",
340
340
  "refs/remotes/#{opt.apache_svn}/#{opt.svn_branch}")
341
341
 
342
342
  # forward the remote townhall/master to apache/trunk
343
- git('push', opt.apache_git,
343
+ git('push', opt.apache_git,
344
344
  "refs/remotes/#{opt.apache_git}/#{opt.git_branch}:#{opt.git_branch}")
345
345
 
346
346
  # get back to the original branch
@@ -349,7 +349,7 @@ DOC
349
349
  end
350
350
 
351
351
 
352
- # This one is displayed when the user executes this script using
352
+ # This one is displayed when the user executes this script using
353
353
  # open-uri -e
354
354
  HEADER = <<HEADER
355
355
 
@@ -364,8 +364,8 @@ and recommended workflow, or any other option.
364
364
 
365
365
  Ctrl+D or an invalid option to abort
366
366
  HEADER
367
-
368
- # When fork is completed, we display the following notice on a
367
+
368
+ # When fork is completed, we display the following notice on a
369
369
  # pager, giving the user a brief overview of git aliases used
370
370
  # to keep the mirror in sync.
371
371
  NOTICE = <<NOTICE
@@ -381,27 +381,27 @@ ALIASES:
381
381
 
382
382
  git apache merge # Merge already fetched changes on the current branch
383
383
  # Use this command to get up to date with trunk changes
384
- # you can always cherry-pick from the apache/trunk
384
+ # you can always cherry-pick from the apache/trunk
385
385
  # branch.
386
386
 
387
387
  git apache pull # get apache-fetch && git apache-merge
388
-
389
- git apache push # Push to Apache's SVN. Only staged changes (those
390
- # recorded using `git commit`) will be sent to SVN.
388
+
389
+ git apache push # Push to Apache's SVN. Only staged changes (those
390
+ # recorded using `git commit`) will be sent to SVN.
391
391
  # You need not to be on the master branch.
392
392
  # Actually you can work on a tiny-feature branch and
393
- # commit directly from it.
393
+ # commit directly from it.
394
394
  #
395
- # VERY IMPORTANT:
395
+ # VERY IMPORTANT:
396
396
  #
397
397
  # Missing commits on Apache's SVN will be sent using
398
398
  # your apache svn account. This means that you can
399
399
  # make some commits on behalf of others (like patches
400
400
  # comming from JIRA issues or casual contributors)
401
- # Review the apache-push alias on .git/config if you
401
+ # Review the apache-push alias on .git/config if you
402
402
  # want to change login-name used for commit to SVN.
403
- #
404
- # See the recommended workflow to avoid commiting
403
+ #
404
+ # See the recommended workflow to avoid commiting
405
405
  # other developers' changes and the following section.
406
406
 
407
407
  THE GITHUB MIRROR:
@@ -410,11 +410,11 @@ THE GITHUB MIRROR:
410
410
 
411
411
  http://github.com/buildr/buildr
412
412
 
413
- This mirror DOES NOT replace Apache's SVN repository. We really care about
414
- using Apache infrastructure and following Apache project guidelines for
413
+ This mirror DOES NOT replace Apache's SVN repository. We really care about
414
+ using Apache infrastructure and following Apache project guidelines for
415
415
  contributions. This git mirror is provided only for developers convenience,
416
416
  allowing them to easily create experimental branches or review code from
417
- other committers.
417
+ other committers.
418
418
 
419
419
  All code that wants to make it to the official Apache Buildr repository needs
420
420
  to be committed to the Apache SVN repository by using the command:
@@ -423,39 +423,39 @@ THE GITHUB MIRROR:
423
423
 
424
424
  This command will synchronize both ways svn<->git to keep trunk upto date.
425
425
  You need to be an Apache committer and have permissions on the SVN repo.
426
-
426
+
427
427
  It's VERY IMPORTANT for Buildr committers to remember that contributions from
428
428
  external entities wanting to be accepted will require them to sign the Apache ICLA.
429
- We provide the git mirror to make it easier for people to experiment and
429
+ We provide the git mirror to make it easier for people to experiment and
430
430
  contribute back to Buildr, before merging their code in, please remember they
431
- have to create create a JIRA issue granting ASF permission to include their code,
431
+ have to create create a JIRA issue granting ASF permission to include their code,
432
432
  just like any other contribution following Apache's guidelines.
433
433
 
434
- So, it's very important - if you care about meritocracy - to follow or at
434
+ So, it's very important - if you care about meritocracy - to follow or at
435
435
  least that you get an idea of the recommended workflow.
436
436
 
437
437
  RECOMMENDED WORKFLOW:
438
-
439
- So now that you have your local buildr copy you can create topic branches
440
- to work on independent features, and still merge easily with head changes.
438
+
439
+ So now that you have your local buildr copy you can create topic branches
440
+ to work on independent features, and still merge easily with head changes.
441
441
 
442
442
  They may seem lots of things to consider, but it's all for Buildr's healt.
443
443
  As all things git, you can always follow your own workflow and even create
444
444
  aliases on you .git/config file to avoid typing much. So, here they are:
445
445
 
446
- 1) get your gitflow configured
446
+ 1) get your gitflow configured
447
447
  (you have already do so, this was the most difficult part)
448
448
 
449
449
  2) create a topic branch to work on, say.. you want to add cool-feature:
450
450
 
451
- git checkout -b cool-feature master
451
+ git checkout -b cool-feature master
452
452
  # now on branch cool-feature
453
453
 
454
454
  3) hack hack hack.. use the source luke.
455
- every time you feel you have something important like added failing
455
+ every time you feel you have something important like added failing
456
456
  spec, added part of feature, or resolved some conflict from merges,
457
- you can commit your current progress. If you want to be selective, use:
458
-
457
+ you can commit your current progress. If you want to be selective, use:
458
+
459
459
  git commit --interactive
460
460
 
461
461
  3) review your changes, get ALL specs passing, repeat step 3 as needed
@@ -465,12 +465,12 @@ RECOMMENDED WORKFLOW:
465
465
  git apache-fetch
466
466
  # You can inspect the upstream changes without having to merge them
467
467
  git log apache/trunk # what are they doing!!
468
-
468
+
469
469
  5) integrate mainstream changes to your cool-feature branch, you can always
470
470
  use `git cherry-pick` to select only some commits.
471
471
 
472
472
  git merge apache/trunk cool-feature
473
-
473
+
474
474
  6) Go to 3 unless ALL specs are passing.
475
475
 
476
476
  7.a) (Skip to 7.b you have commit bit on Apache's SVN)
@@ -481,19 +481,19 @@ RECOMMENDED WORKFLOW:
481
481
  https://issues.apache.org/jira/browse/BUILDR
482
482
  dev@buildr.apache.org
483
483
 
484
- 7.b) Now you have everyhing on staging area and merged important changes
484
+ 7.b) Now you have everyhing on staging area and merged important changes
485
485
  from apache/trunk, it's time to commit them to Apache's SVN.
486
486
 
487
- git apache-push
487
+ git apache-push
488
488
 
489
489
  8) Optional. If you are a buildr committer you may want to synchronize
490
- the github mirror for helping others to get changes without having to
490
+ the github mirror for helping others to get changes without having to
491
491
  wait on Victor's cronjob to run every hour (useful for urgent changes).
492
492
 
493
493
  git synchronize
494
494
 
495
495
  9) Pull changes from origin frequently.
496
-
496
+
497
497
  git fetch origin
498
498
  git rebase --onto origin/master master master
499
499
 
@@ -508,5 +508,5 @@ RESOURCES:
508
508
 
509
509
  NOTICE
510
510
  #' for emacs
511
-
511
+
512
512
  end