amp 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (232) hide show
  1. data/.gitignore +12 -0
  2. data/.hgignore +3 -0
  3. data/AUTHORS +1 -1
  4. data/Manifest.txt +99 -38
  5. data/README.md +3 -3
  6. data/Rakefile +53 -18
  7. data/SCHEDULE.markdown +5 -1
  8. data/TODO.markdown +120 -149
  9. data/ampfile.rb +3 -1
  10. data/bin/amp +4 -1
  11. data/ext/amp/bz2/extconf.rb +1 -1
  12. data/ext/amp/mercurial_patch/extconf.rb +1 -1
  13. data/ext/amp/mercurial_patch/mpatch.c +4 -3
  14. data/ext/amp/priority_queue/extconf.rb +1 -1
  15. data/ext/amp/support/extconf.rb +1 -1
  16. data/ext/amp/support/support.c +1 -1
  17. data/lib/amp.rb +125 -67
  18. data/lib/amp/commands/command.rb +12 -10
  19. data/lib/amp/commands/command_support.rb +8 -1
  20. data/lib/amp/commands/commands/help.rb +2 -20
  21. data/lib/amp/commands/commands/init.rb +14 -2
  22. data/lib/amp/commands/commands/templates.rb +6 -4
  23. data/lib/amp/commands/commands/version.rb +15 -1
  24. data/lib/amp/commands/commands/workflow.rb +3 -3
  25. data/lib/amp/commands/commands/workflows/git/add.rb +3 -3
  26. data/lib/amp/commands/commands/workflows/git/copy.rb +1 -1
  27. data/lib/amp/commands/commands/workflows/git/rm.rb +4 -2
  28. data/lib/amp/commands/commands/workflows/hg/add.rb +1 -1
  29. data/lib/amp/commands/commands/workflows/hg/addremove.rb +2 -2
  30. data/lib/amp/commands/commands/workflows/hg/annotate.rb +8 -2
  31. data/lib/amp/commands/commands/workflows/hg/bisect.rb +253 -0
  32. data/lib/amp/commands/commands/workflows/hg/branch.rb +1 -1
  33. data/lib/amp/commands/commands/workflows/hg/branches.rb +3 -3
  34. data/lib/amp/commands/commands/workflows/hg/bundle.rb +3 -3
  35. data/lib/amp/commands/commands/workflows/hg/clone.rb +4 -5
  36. data/lib/amp/commands/commands/workflows/hg/commit.rb +37 -1
  37. data/lib/amp/commands/commands/workflows/hg/copy.rb +2 -1
  38. data/lib/amp/commands/commands/workflows/hg/debug/index.rb +1 -1
  39. data/lib/amp/commands/commands/workflows/hg/diff.rb +3 -8
  40. data/lib/amp/commands/commands/workflows/hg/forget.rb +5 -4
  41. data/lib/amp/commands/commands/workflows/hg/identify.rb +6 -6
  42. data/lib/amp/commands/commands/workflows/hg/import.rb +1 -1
  43. data/lib/amp/commands/commands/workflows/hg/incoming.rb +2 -2
  44. data/lib/amp/commands/commands/workflows/hg/log.rb +5 -4
  45. data/lib/amp/commands/commands/workflows/hg/merge.rb +1 -1
  46. data/lib/amp/commands/commands/workflows/hg/move.rb +5 -3
  47. data/lib/amp/commands/commands/workflows/hg/outgoing.rb +1 -1
  48. data/lib/amp/commands/commands/workflows/hg/push.rb +6 -7
  49. data/lib/amp/commands/commands/workflows/hg/remove.rb +2 -2
  50. data/lib/amp/commands/commands/workflows/hg/resolve.rb +6 -23
  51. data/lib/amp/commands/commands/workflows/hg/root.rb +1 -2
  52. data/lib/amp/commands/commands/workflows/hg/status.rb +21 -12
  53. data/lib/amp/commands/commands/workflows/hg/tag.rb +2 -2
  54. data/lib/amp/commands/commands/workflows/hg/untrack.rb +12 -0
  55. data/lib/amp/commands/commands/workflows/hg/verify.rb +13 -3
  56. data/lib/amp/commands/commands/workflows/hg/what_changed.rb +18 -0
  57. data/lib/amp/commands/dispatch.rb +12 -13
  58. data/lib/amp/dependencies/amp_support.rb +1 -1
  59. data/lib/amp/dependencies/amp_support/ruby_amp_support.rb +1 -0
  60. data/lib/amp/dependencies/maruku.rb +136 -0
  61. data/lib/amp/dependencies/maruku/attributes.rb +227 -0
  62. data/lib/amp/dependencies/maruku/defaults.rb +71 -0
  63. data/lib/amp/dependencies/maruku/errors_management.rb +92 -0
  64. data/lib/amp/dependencies/maruku/helpers.rb +260 -0
  65. data/lib/amp/dependencies/maruku/input/charsource.rb +326 -0
  66. data/lib/amp/dependencies/maruku/input/extensions.rb +69 -0
  67. data/lib/amp/dependencies/maruku/input/html_helper.rb +189 -0
  68. data/lib/amp/dependencies/maruku/input/linesource.rb +111 -0
  69. data/lib/amp/dependencies/maruku/input/parse_block.rb +615 -0
  70. data/lib/amp/dependencies/maruku/input/parse_doc.rb +234 -0
  71. data/lib/amp/dependencies/maruku/input/parse_span_better.rb +746 -0
  72. data/lib/amp/dependencies/maruku/input/rubypants.rb +225 -0
  73. data/lib/amp/dependencies/maruku/input/type_detection.rb +147 -0
  74. data/lib/amp/dependencies/maruku/input_textile2/t2_parser.rb +163 -0
  75. data/lib/amp/dependencies/maruku/maruku.rb +33 -0
  76. data/lib/amp/dependencies/maruku/output/to_ansi.rb +223 -0
  77. data/lib/amp/dependencies/maruku/output/to_html.rb +991 -0
  78. data/lib/amp/dependencies/maruku/output/to_markdown.rb +164 -0
  79. data/lib/amp/dependencies/maruku/output/to_s.rb +56 -0
  80. data/lib/amp/dependencies/maruku/string_utils.rb +191 -0
  81. data/lib/amp/dependencies/maruku/structures.rb +167 -0
  82. data/lib/amp/dependencies/maruku/structures_inspect.rb +87 -0
  83. data/lib/amp/dependencies/maruku/structures_iterators.rb +61 -0
  84. data/lib/amp/dependencies/maruku/textile2.rb +1 -0
  85. data/lib/amp/dependencies/maruku/toc.rb +199 -0
  86. data/lib/amp/dependencies/maruku/usage/example1.rb +33 -0
  87. data/lib/amp/dependencies/maruku/version.rb +40 -0
  88. data/lib/amp/dependencies/priority_queue.rb +2 -1
  89. data/lib/amp/dependencies/python_config.rb +2 -1
  90. data/lib/amp/graphs/ancestor.rb +2 -1
  91. data/lib/amp/graphs/copies.rb +236 -233
  92. data/lib/amp/help/entries/__default__.erb +31 -0
  93. data/lib/amp/help/entries/commands.erb +6 -0
  94. data/lib/amp/help/entries/mdtest.md +35 -0
  95. data/lib/amp/help/entries/silly +3 -0
  96. data/lib/amp/help/help.rb +288 -0
  97. data/lib/amp/profiling_hacks.rb +5 -3
  98. data/lib/amp/repository/abstract/abstract_changeset.rb +97 -0
  99. data/lib/amp/repository/abstract/abstract_local_repo.rb +181 -0
  100. data/lib/amp/repository/abstract/abstract_staging_area.rb +180 -0
  101. data/lib/amp/repository/abstract/abstract_versioned_file.rb +100 -0
  102. data/lib/amp/repository/abstract/common_methods/changeset.rb +75 -0
  103. data/lib/amp/repository/abstract/common_methods/local_repo.rb +277 -0
  104. data/lib/amp/repository/abstract/common_methods/staging_area.rb +233 -0
  105. data/lib/amp/repository/abstract/common_methods/versioned_file.rb +71 -0
  106. data/lib/amp/repository/generic_repo_picker.rb +78 -0
  107. data/lib/amp/repository/git/repo_format/changeset.rb +336 -0
  108. data/lib/amp/repository/git/repo_format/staging_area.rb +192 -0
  109. data/lib/amp/repository/git/repo_format/versioned_file.rb +119 -0
  110. data/lib/amp/repository/git/repositories/local_repository.rb +164 -0
  111. data/lib/amp/repository/git/repository.rb +41 -0
  112. data/lib/amp/repository/mercurial/encoding/mercurial_diff.rb +382 -0
  113. data/lib/amp/repository/mercurial/encoding/mercurial_patch.rb +1 -0
  114. data/lib/amp/repository/mercurial/encoding/patch.rb +294 -0
  115. data/lib/amp/repository/mercurial/encoding/pure_ruby/ruby_mercurial_patch.rb +124 -0
  116. data/lib/amp/repository/mercurial/merging/merge_ui.rb +327 -0
  117. data/lib/amp/repository/mercurial/merging/simple_merge.rb +452 -0
  118. data/lib/amp/repository/mercurial/repo_format/branch_manager.rb +266 -0
  119. data/lib/amp/repository/mercurial/repo_format/changeset.rb +768 -0
  120. data/lib/amp/repository/mercurial/repo_format/dir_state.rb +716 -0
  121. data/lib/amp/repository/mercurial/repo_format/journal.rb +218 -0
  122. data/lib/amp/repository/mercurial/repo_format/lock.rb +210 -0
  123. data/lib/amp/repository/mercurial/repo_format/merge_state.rb +228 -0
  124. data/lib/amp/repository/mercurial/repo_format/staging_area.rb +367 -0
  125. data/lib/amp/repository/mercurial/repo_format/store.rb +487 -0
  126. data/lib/amp/repository/mercurial/repo_format/tag_manager.rb +322 -0
  127. data/lib/amp/repository/mercurial/repo_format/updatable.rb +543 -0
  128. data/lib/amp/repository/mercurial/repo_format/updater.rb +848 -0
  129. data/lib/amp/repository/mercurial/repo_format/verification.rb +433 -0
  130. data/lib/amp/repository/mercurial/repositories/bundle_repository.rb +216 -0
  131. data/lib/amp/repository/mercurial/repositories/http_repository.rb +386 -0
  132. data/lib/amp/repository/mercurial/repositories/local_repository.rb +2034 -0
  133. data/lib/amp/repository/mercurial/repository.rb +119 -0
  134. data/lib/amp/repository/mercurial/revlogs/bundle_revlogs.rb +249 -0
  135. data/lib/amp/repository/mercurial/revlogs/changegroup.rb +217 -0
  136. data/lib/amp/repository/mercurial/revlogs/changelog.rb +339 -0
  137. data/lib/amp/repository/mercurial/revlogs/file_log.rb +152 -0
  138. data/lib/amp/repository/mercurial/revlogs/index.rb +500 -0
  139. data/lib/amp/repository/mercurial/revlogs/manifest.rb +201 -0
  140. data/lib/amp/repository/mercurial/revlogs/node.rb +20 -0
  141. data/lib/amp/repository/mercurial/revlogs/revlog.rb +1026 -0
  142. data/lib/amp/repository/mercurial/revlogs/revlog_support.rb +129 -0
  143. data/lib/amp/repository/mercurial/revlogs/versioned_file.rb +597 -0
  144. data/lib/amp/repository/repository.rb +11 -88
  145. data/lib/amp/server/extension/amp_extension.rb +3 -3
  146. data/lib/amp/server/fancy_http_server.rb +1 -1
  147. data/lib/amp/server/fancy_views/_browser.haml +1 -1
  148. data/lib/amp/server/fancy_views/_diff_file.haml +1 -8
  149. data/lib/amp/server/fancy_views/changeset.haml +2 -2
  150. data/lib/amp/server/fancy_views/file.haml +1 -1
  151. data/lib/amp/server/fancy_views/file_diff.haml +1 -1
  152. data/lib/amp/support/amp_ui.rb +13 -29
  153. data/lib/amp/support/generator.rb +1 -1
  154. data/lib/amp/support/loaders.rb +1 -2
  155. data/lib/amp/support/logger.rb +10 -16
  156. data/lib/amp/support/match.rb +18 -4
  157. data/lib/amp/support/mercurial/ignore.rb +151 -0
  158. data/lib/amp/support/openers.rb +8 -3
  159. data/lib/amp/support/support.rb +91 -46
  160. data/lib/amp/templates/{blank.commit.erb → mercurial/blank.commit.erb} +0 -0
  161. data/lib/amp/templates/{blank.log.erb → mercurial/blank.log.erb} +0 -0
  162. data/lib/amp/templates/{default.commit.erb → mercurial/default.commit.erb} +0 -0
  163. data/lib/amp/templates/{default.log.erb → mercurial/default.log.erb} +0 -0
  164. data/lib/amp/templates/template.rb +18 -18
  165. data/man/amp.1 +51 -0
  166. data/site/src/about/commands.haml +1 -1
  167. data/site/src/css/amp.css +1 -1
  168. data/site/src/index.haml +3 -3
  169. data/tasks/man.rake +39 -0
  170. data/tasks/stats.rake +1 -10
  171. data/tasks/yard.rake +1 -50
  172. data/test/dirstate_tests/test_dir_state.rb +10 -8
  173. data/test/functional_tests/annotate.out +31 -0
  174. data/test/functional_tests/test_functional.rb +155 -63
  175. data/test/localrepo_tests/ampfile.rb +12 -0
  176. data/test/localrepo_tests/test_local_repo.rb +56 -57
  177. data/test/manifest_tests/test_manifest.rb +3 -5
  178. data/test/merge_tests/test_merge.rb +3 -3
  179. data/test/revlog_tests/test_revlog.rb +14 -6
  180. data/test/store_tests/test_fncache_store.rb +19 -19
  181. data/test/test_19_compatibility.rb +46 -0
  182. data/test/test_base85.rb +2 -2
  183. data/test/test_bdiff.rb +2 -2
  184. data/test/test_changegroup.rb +59 -0
  185. data/test/test_commands.rb +2 -2
  186. data/test/test_difflib.rb +2 -2
  187. data/test/test_generator.rb +34 -0
  188. data/test/test_ignore.rb +203 -0
  189. data/test/test_journal.rb +18 -13
  190. data/test/test_match.rb +2 -2
  191. data/test/test_mdiff.rb +3 -3
  192. data/test/test_mpatch.rb +3 -3
  193. data/test/test_multi_io.rb +40 -0
  194. data/test/test_support.rb +18 -2
  195. data/test/test_templates.rb +38 -0
  196. data/test/test_ui.rb +79 -0
  197. data/test/testutilities.rb +56 -0
  198. metadata +168 -49
  199. data/ext/amp/bz2/mkmf.log +0 -38
  200. data/lib/amp/encoding/mercurial_diff.rb +0 -378
  201. data/lib/amp/encoding/mercurial_patch.rb +0 -1
  202. data/lib/amp/encoding/patch.rb +0 -292
  203. data/lib/amp/encoding/pure_ruby/ruby_mercurial_patch.rb +0 -123
  204. data/lib/amp/merges/merge_state.rb +0 -164
  205. data/lib/amp/merges/merge_ui.rb +0 -322
  206. data/lib/amp/merges/simple_merge.rb +0 -450
  207. data/lib/amp/repository/branch_manager.rb +0 -234
  208. data/lib/amp/repository/dir_state.rb +0 -950
  209. data/lib/amp/repository/journal.rb +0 -203
  210. data/lib/amp/repository/lock.rb +0 -207
  211. data/lib/amp/repository/repositories/bundle_repository.rb +0 -214
  212. data/lib/amp/repository/repositories/http_repository.rb +0 -377
  213. data/lib/amp/repository/repositories/local_repository.rb +0 -2661
  214. data/lib/amp/repository/store.rb +0 -485
  215. data/lib/amp/repository/tag_manager.rb +0 -319
  216. data/lib/amp/repository/updatable.rb +0 -532
  217. data/lib/amp/repository/verification.rb +0 -431
  218. data/lib/amp/repository/versioned_file.rb +0 -475
  219. data/lib/amp/revlogs/bundle_revlogs.rb +0 -246
  220. data/lib/amp/revlogs/changegroup.rb +0 -217
  221. data/lib/amp/revlogs/changelog.rb +0 -338
  222. data/lib/amp/revlogs/changeset.rb +0 -521
  223. data/lib/amp/revlogs/file_log.rb +0 -165
  224. data/lib/amp/revlogs/index.rb +0 -493
  225. data/lib/amp/revlogs/manifest.rb +0 -195
  226. data/lib/amp/revlogs/node.rb +0 -18
  227. data/lib/amp/revlogs/revlog.rb +0 -1045
  228. data/lib/amp/revlogs/revlog_support.rb +0 -126
  229. data/lib/amp/support/ignore.rb +0 -144
  230. data/site/Rakefile +0 -38
  231. data/test/test_amp.rb +0 -9
  232. data/test/test_helper.rb +0 -15
data/ampfile.rb CHANGED
@@ -17,7 +17,7 @@ Amp::Command.new("silly") do |c|
17
17
  end
18
18
 
19
19
  # command :push do |c|
20
- # c.before { system "rake test" }
20
+ # c.before { system "hg verify" }
21
21
  # end
22
22
 
23
23
  template :silly, <<-EOF
@@ -39,6 +39,8 @@ command "stats" do |c|
39
39
  end
40
40
  end
41
41
 
42
+ # bisect_command
43
+
42
44
  namespace :docs do
43
45
 
44
46
  command "gen" do |c|
data/bin/amp CHANGED
@@ -27,4 +27,7 @@ end
27
27
 
28
28
  require File.join(File.dirname(follow_link(__FILE__)), "..", "lib", "amp")
29
29
 
30
- Amp::Dispatch.run
30
+ result = Amp::Dispatch.run
31
+
32
+ # ensure status makes it out
33
+ exit(result ? 0 : 1)
@@ -19,7 +19,7 @@ end
19
19
 
20
20
  dir_config('bz2')
21
21
  if !have_library('bz2', 'BZ2_bzWriteOpen')
22
- raise "libz2 not found"
22
+ raise "bzip2 headers not found. If you are on Linux, install the libbz2-dev package. If you are on Mac OS X, you should not see this error."
23
23
  end
24
24
 
25
25
  if enable_config("shared", true)
@@ -2,4 +2,4 @@ require 'mkmf'
2
2
  if RUBY_VERSION =~ /1.9/ then
3
3
  $CPPFLAGS += " -DRUBY_19"
4
4
  end
5
- create_makefile("MercurialPatch")
5
+ create_makefile("amp/CMercurialPatch")
@@ -33,7 +33,7 @@ static uint32_t ntohl(uint32_t x)
33
33
  #endif
34
34
 
35
35
 
36
- VALUE rb_mAmp, rb_mDiffs, rb_mMercurialPatch;
36
+ VALUE rb_mAmp, rb_mMercurial, rb_mDiffs, rb_mMercurialPatch;
37
37
 
38
38
 
39
39
  struct frag {
@@ -394,11 +394,12 @@ static VALUE amp_mpatch_patched_size(VALUE self, VALUE orig_r, VALUE bin_r)
394
394
  }
395
395
 
396
396
 
397
- void Init_MercurialPatch() {
397
+ void Init_CMercurialPatch() {
398
398
 
399
399
  rb_mAmp = rb_define_module("Amp");
400
400
  rb_mDiffs = rb_define_module_under(rb_mAmp, "Diffs");
401
- rb_mMercurialPatch = rb_define_module_under(rb_mDiffs, "MercurialPatch");
401
+ rb_mMercurial = rb_define_module_under(rb_mDiffs, "Mercurial");
402
+ rb_mMercurialPatch = rb_define_module_under(rb_mMercurial, "MercurialPatch");
402
403
 
403
404
  rb_define_singleton_method(rb_mMercurialPatch, "patched_size", amp_mpatch_patched_size, 2);
404
405
  rb_define_singleton_method(rb_mMercurialPatch, "apply_patches", amp_mpatch_apply_patches, 2);
@@ -2,4 +2,4 @@ require 'mkmf'
2
2
  if RUBY_VERSION =~ /1.9/ then
3
3
  $CPPFLAGS += " -DRUBY_19"
4
4
  end
5
- create_makefile("CPriorityQueue")
5
+ create_makefile("amp/CPriorityQueue")
@@ -2,4 +2,4 @@ require 'mkmf'
2
2
  if RUBY_VERSION =~ /1.9/ then
3
3
  $CPPFLAGS += " -DRUBY_19"
4
4
  end
5
- create_makefile("Support")
5
+ create_makefile("amp/CSupport")
@@ -221,7 +221,7 @@ static VALUE amp_string_unhexlify(VALUE self) {
221
221
  * this function is run. All we need to do is add the new methods, and look up the
222
222
  * symbols for to_dirstate_symbol.
223
223
  */
224
- void Init_Support() {
224
+ void Init_CSupport() {
225
225
  if (little_endian == -1) little_endian = (ntohl(8) != 8);
226
226
 
227
227
  // methods added to String class
data/lib/amp.rb CHANGED
@@ -1,8 +1,9 @@
1
1
  module Amp; end
2
2
  # The root directory of this application
3
3
  Amp::CODE_ROOT = File.expand_path File.dirname(__FILE__)
4
- $: << Amp::CODE_ROOT # now we don't need to do `require "#{curdir}..."
5
-
4
+ Amp::EXT_ROOT = File.expand_path File.join(File.dirname(__FILE__), "..", "ext")
5
+ $:.unshift Amp::CODE_ROOT # now we don't need to do `require "#{curdir}..."
6
+ $:.unshift Amp::EXT_ROOT
6
7
  # Timing variable
7
8
  $start ||= Time.now
8
9
  # Should we display anything?
@@ -12,15 +13,18 @@ $USE_RUBY ||= false
12
13
  # Are we a command-line app? Default to no.
13
14
  $cl ||= false
14
15
 
16
+
17
+
15
18
  require "amp/support/loaders.rb"
16
19
 
20
+ need { 'amp/profiling_hacks' }
21
+
17
22
  #require 'profile'
18
23
  require 'fileutils'
19
24
  require 'stringio'
20
25
 
21
26
  local_start = Time.now
22
27
 
23
-
24
28
  ###############
25
29
  # The Amp Magic
26
30
  ###############
@@ -30,87 +34,138 @@ module Amp
30
34
  autoload :Generator, "amp/support/generator.rb"
31
35
  autoload :Opener, "amp/support/openers.rb"
32
36
  autoload :Match, "amp/support/match.rb"
33
- autoload :Ignore, "amp/support/ignore.rb"
34
37
  autoload :AmpConfig, "amp/support/amp_config.rb"
35
38
  autoload :UI, "amp/support/amp_ui.rb"
36
-
37
- autoload :Journal, "amp/repository/journal.rb"
38
- autoload :VersionedFile, "amp/repository/versioned_file.rb"
39
- autoload :VersionedWorkingFile, "amp/repository/versioned_file.rb"
40
39
 
41
- autoload :Revlog, "amp/revlogs/revlog.rb"
42
- autoload :Manifest, "amp/revlogs/manifest.rb"
43
- autoload :FileLog, "amp/revlogs/file_log.rb"
44
- autoload :Changeset, "amp/revlogs/changeset.rb"
45
- autoload :WorkingDirectoryChangeset, "amp/revlogs/changeset.rb"
46
- autoload :ChangeGroup, "amp/revlogs/changegroup.rb"
47
- autoload :ChangeLog, "amp/revlogs/changelog.rb"
40
+ module Git
41
+ autoload :Changeset, "amp/repository/git/repo_format/changeset.rb"
42
+ autoload :WorkingDirectoryChangeset, "amp/repository/git/repo_format/changeset.rb"
43
+ autoload :VersionedFile, "amp/repository/git/repo_format/versioned_file.rb"
44
+ autoload :VersionedWorkingFile, "amp/repository/git/repo_format/versioned_file.rb"
45
+ end
46
+
47
+ module Mercurial
48
+ autoload :Ignore, "amp/support/mercurial/ignore.rb"
49
+
50
+ autoload :Journal, "amp/repository/mercurial/repo_format/journal.rb"
51
+ autoload :VersionedFile, "amp/repository/mercurial/revlogs/versioned_file.rb"
52
+ autoload :VersionedWorkingFile, "amp/repository/mercurial/revlogs/versioned_file.rb"
53
+
54
+ autoload :Revlog, "amp/repository/mercurial/revlogs/revlog.rb"
55
+ autoload :Manifest, "amp/repository/mercurial/revlogs/manifest.rb"
56
+ autoload :FileLog, "amp/repository/mercurial/revlogs/file_log.rb"
57
+ autoload :ChangeLog, "amp/repository/mercurial/revlogs/changelog.rb"
58
+ autoload :ChangeGroup, "amp/repository/mercurial/revlogs/changegroup.rb"
59
+ autoload :Changeset, "amp/repository/mercurial/repo_format/changeset.rb"
60
+ autoload :WorkingDirectoryChangeset, "amp/repository/mercurial/repo_format/changeset.rb"
61
+ end
48
62
 
49
63
  module Bundles
50
- autoload :BundleChangeLog, "amp/revlogs/bundle_revlogs.rb"
51
- autoload :BundleFileLog, "amp/revlogs/bundle_revlogs.rb"
52
- autoload :BundleManifest, "amp/revlogs/bundle_revlogs.rb"
53
- autoload :BundleRevlog, "amp/revlogs/bundle_revlogs.rb"
54
- end
55
-
56
- module Encoding
64
+ module Mercurial
65
+ autoload :BundleChangeLog, "amp/repository/mercurial/revlogs/bundle_revlogs.rb"
66
+ autoload :BundleFileLog, "amp/repository/mercurial/revlogs/bundle_revlogs.rb"
67
+ autoload :BundleManifest, "amp/repository/mercurial/revlogs/bundle_revlogs.rb"
68
+ autoload :BundleRevlog, "amp/repository/mercurial/revlogs/bundle_revlogs.rb"
69
+ end
70
+ end
71
+
72
+ module Encoding
57
73
  autoload :Base85, "amp/encoding/base85.rb"
58
74
  end
59
75
 
60
- module Diffs
76
+ module Diffs
61
77
  autoload :BinaryDiff, "amp/encoding/binary_diff.rb"
62
- autoload :MercurialDiff, "amp/encoding/mercurial_diff.rb"
63
- autoload :MercurialPatch, "amp/encoding/mercurial_patch.rb"
64
78
  autoload :SequenceMatcher, "amp/encoding/difflib.rb"
79
+
80
+ module Mercurial
81
+ autoload :MercurialDiff, "amp/repository/mercurial/encoding/mercurial_diff.rb"
82
+ autoload :MercurialPatch, "amp/repository/mercurial/encoding/mercurial_patch.rb"
83
+ end
65
84
  end
66
85
 
67
86
  module Graphs
68
- autoload :AncestorCalculator, "amp/graphs/ancestor.rb"
69
- autoload :CopyCalculator, "amp/graphs/copies.rb"
87
+ autoload :AncestorCalculator, "amp/graphs/ancestor.rb"
88
+ module Mercurial
89
+ autoload :CopyCalculator, "amp/graphs/copies.rb"
90
+ end
70
91
  end
71
-
72
- module Merges
73
- autoload :MergeState, "amp/merges/merge_state.rb"
74
- autoload :MergeUI, "amp/merges/merge_ui.rb"
75
- autoload :ThreeWayMerger, "amp/merges/simple_merge.rb"
92
+
93
+ module Help
94
+ autoload :HelpUI, "amp/help/help.rb"
95
+ autoload :HelpEntry, "amp/help/help.rb"
96
+ autoload :HelpRegistry, "amp/help/help.rb"
97
+ autoload :CommandHelpEntry, "amp/help/help.rb"
98
+ autoload :FileHelpEntry, "amp/help/help.rb"
99
+ end
100
+
101
+ module Merges
102
+ module Mercurial
103
+ autoload :MergeState, "amp/repository/mercurial/repo_format/merge_state.rb"
104
+ autoload :MergeUI, "amp/repository/mercurial/merging/merge_ui.rb"
105
+ autoload :ThreeWayMerger, "amp/repository/mercurial/merging/simple_merge.rb"
106
+ end
76
107
  end
77
108
 
78
109
  module Repositories
79
- autoload :BranchManager, "amp/repository/branch_manager.rb"
80
- autoload :BundleRepository, "amp/repository/repositories/bundle_repository.rb"
81
- autoload :DirState, "amp/repository/dir_state.rb"
82
- autoload :HTTPRepository, "amp/repository/repositories/http_repository.rb"
83
- autoload :HTTPSRepository, "amp/repository/repositories/http_repository.rb"
84
- autoload :LocalRepository, "amp/repository/repositories/local_repository.rb"
85
- autoload :Lock, "amp/repository/lock.rb"
86
- autoload :Stores, "amp/repository/store.rb"
87
- autoload :TagManager, "amp/repository/tag_manager.rb"
88
- autoload :Updatable, "amp/repository/updatable.rb"
89
- autoload :Verification, "amp/repository/verification.rb"
90
- end
91
-
92
- module RevlogSupport
93
- autoload :ChangeGroup, "amp/revlogs/changegroup.rb"
94
- autoload :Index, "amp/revlogs/index.rb"
95
- autoload :IndexInlineNG, "amp/revlogs/index.rb"
96
- autoload :IndexVersion0, "amp/revlogs/index.rb"
97
- autoload :IndexVersionNG, "amp/revlogs/index.rb"
98
- autoload :Node, "amp/revlogs/node.rb"
99
- autoload :Support, "amp/revlogs/revlog_support.rb"
110
+ autoload :GenericRepoPicker, "amp/repository/generic_repo_picker.rb"
111
+ autoload :AbstractLocalRepository, "amp/repository/abstract/abstract_local_repo.rb"
112
+ autoload :AbstractStagingArea, "amp/repository/abstract/abstract_staging_area.rb"
113
+ autoload :AbstractChangeset, "amp/repository/abstract/abstract_changeset.rb"
114
+ autoload :AbstractVersionedFile, "amp/repository/abstract/abstract_versioned_file.rb"
115
+ autoload :CommonChangesetMethods, "amp/repository/abstract/common_methods/changeset.rb"
116
+ autoload :CommonLocalRepoMethods, "amp/repository/abstract/common_methods/local_repo.rb"
117
+ autoload :CommonStagingAreaMethods, "amp/repository/abstract/common_methods/staging_area.rb"
118
+ autoload :CommonChangesetMethods, "amp/repository/abstract/common_methods/changeset.rb"
119
+ autoload :CommonVersionedFileMethods,"amp/repository/abstract/common_methods/versioned_file.rb"
120
+
121
+ module Git
122
+ autoload :LocalRepository, "amp/repository/git/repositories/local_repository.rb"
123
+ autoload :GitPicker, "amp/repository/git/repository.rb"
124
+ autoload :StagingArea, "amp/repository/git/repo_format/staging_area.rb"
125
+ end
126
+
127
+ module Mercurial
128
+ autoload :BranchManager, "amp/repository/mercurial/repo_format/branch_manager.rb"
129
+ autoload :BundleRepository, "amp/repository/mercurial/repositories/bundle_repository.rb"
130
+ autoload :DirState, "amp/repository/mercurial/repo_format/dir_state.rb"
131
+ autoload :HTTPRepository, "amp/repository/mercurial/repositories/http_repository.rb"
132
+ autoload :HTTPSRepository, "amp/repository/mercurial/repositories/http_repository.rb"
133
+ autoload :LocalRepository, "amp/repository/mercurial/repositories/local_repository.rb"
134
+ autoload :Lock, "amp/repository/mercurial/repo_format/lock.rb"
135
+ autoload :MercurialPicker, "amp/repository/mercurial/repository.rb"
136
+ autoload :Repository, "amp/repository/mercurial/repository.rb"
137
+ autoload :StagingArea, "amp/repository/mercurial/repo_format/staging_area.rb"
138
+ autoload :Stores, "amp/repository/mercurial/repo_format/store.rb"
139
+ autoload :TagManager, "amp/repository/mercurial/repo_format/tag_manager.rb"
140
+ autoload :Updatable, "amp/repository/mercurial/repo_format/updatable.rb"
141
+ autoload :Verification, "amp/repository/mercurial/repo_format/verification.rb"
142
+ end
100
143
  end
101
144
 
102
- module Servers
103
- autoload :FancyHTTPServer, "amp/server/fancy_http_server.rb"
104
- autoload :HTTPServer, "amp/server/http_server.rb"
105
- autoload :HTTPAuthorizedServer, "amp/server/http_server.rb"
106
- autoload :RepoUserManagement, "amp/server/repo_user_management.rb"
107
- autoload :User, "amp/server/amp_user.rb"
145
+ module Mercurial
146
+ module RevlogSupport
147
+ autoload :ChangeGroup, "amp/repository/mercurial/revlogs/changegroup.rb"
148
+ autoload :Index, "amp/repository/mercurial/revlogs/index.rb"
149
+ autoload :IndexInlineNG, "amp/repository/mercurial/revlogs/index.rb"
150
+ autoload :IndexVersion0, "amp/repository/mercurial/revlogs/index.rb"
151
+ autoload :IndexVersionNG, "amp/repository/mercurial/revlogs/index.rb"
152
+ autoload :Node, "amp/repository/mercurial/revlogs/node.rb"
153
+ autoload :Support, "amp/repository/mercurial/revlogs/revlog_support.rb"
154
+ end
108
155
  end
109
156
 
110
- module Support
111
- autoload :Logger, "amp/support/logger.rb"
112
- autoload :MultiIO, "amp/support/multi_io.rb"
113
- autoload :Template, "amp/templates/template.rb"
157
+ module Servers
158
+ autoload :FancyHTTPServer, "amp/server/fancy_http_server.rb"
159
+ autoload :HTTPServer, "amp/server/http_server.rb"
160
+ autoload :HTTPAuthorizedServer, "amp/server/http_server.rb"
161
+ autoload :RepoUserManagement, "amp/server/repo_user_management.rb"
162
+ autoload :User, "amp/server/amp_user.rb"
163
+ end
164
+
165
+ module Support
166
+ autoload :Logger, "amp/support/logger.rb"
167
+ autoload :MultiIO, "amp/support/multi_io.rb"
168
+ autoload :Template, "amp/templates/template.rb"
114
169
  end
115
170
  end
116
171
 
@@ -128,6 +183,7 @@ end
128
183
  autoload :Archive, "amp/dependencies/minitar.rb"
129
184
  autoload :Zip, "amp/dependencies/zip/zip.rb"
130
185
  autoload :PriorityQueue, "amp/dependencies/priority_queue.rb"
186
+ autoload :Maruku, "amp/dependencies/maruku.rb"
131
187
 
132
188
  #############################
133
189
  # Files we need to just *run*
@@ -138,22 +194,24 @@ require "amp/dependencies/amp_support.rb"
138
194
  require "amp/support/ruby_19_compatibility.rb"
139
195
  require "amp/support/support.rb"
140
196
  require "amp/templates/template.rb"
197
+ require "amp/repository/mercurial/repository.rb" # we're just loading in
198
+ require 'amp/repository/git/repository.rb' # all of the base repositories
141
199
 
142
200
  if $cl # if it's a command line app
143
201
  include Amp::KernelMethods
144
202
  require "amp/commands/command.rb"
145
203
  require_dir { "amp/commands/*.rb" }
146
204
  require_dir { "amp/commands/commands/*.rb" }
147
-
148
205
  else
149
206
  # it's not a command line app
150
207
  require 'amp/support/docs.rb' # live documentation access
151
208
  end
209
+
152
210
  require "amp/repository/repository.rb"
153
211
 
154
212
  module Amp
155
- VERSION = '0.5.2'
156
- VERSION_TITLE = "John Locke"
213
+ VERSION = '0.5.3'
214
+ VERSION_TITLE = "John Locke" # the next one should totally be "Suomalaisen Susijengi"
157
215
 
158
216
  def self.new_irb_session(bndng)
159
217
  require 'irb'
@@ -197,4 +255,4 @@ if ENV["TESTING"] == "true"
197
255
  end
198
256
 
199
257
  # Benchmarking stuff
200
- #need { 'amp/profiling_hacks' }
258
+
@@ -147,8 +147,8 @@ module Amp
147
147
  attr_accessor :name
148
148
  # Short, 1-line description of the command
149
149
  attr_accessor :description
150
- # The Trollop parser
151
- attr_accessor :parser
150
+ # The Trollop parser.
151
+ attr_reader :parser
152
152
 
153
153
  ##
154
154
  # Creates a command in the Amp system. Simply instantiating a new
@@ -177,7 +177,7 @@ module Amp
177
177
  full_name = (self.class.current_namespaces + [name]).join(":")
178
178
  name = full_name.to_sym
179
179
  if self.class.all_commands[name]
180
- yield self.class.all_commands[name] if block_given?
180
+ yield self.class.all_commands[name] if block_given?
181
181
  return self.class.all_commands[name]
182
182
  end
183
183
 
@@ -190,9 +190,10 @@ module Amp
190
190
 
191
191
  @workflows = []
192
192
  @synonyms = []
193
- yield(self) if block_given?
193
+ yield self if block_given?
194
194
  workflow :all if @workflows.empty?
195
195
  @options += GLOBAL_OPTIONS
196
+ Amp::Help::CommandHelpEntry.new(full_name, self)
196
197
  end
197
198
 
198
199
  ##
@@ -225,10 +226,10 @@ module Amp
225
226
  # default :"no-color", true
226
227
  # end
227
228
  # @param [Symbol, #to_sym] opt the option to modify. Can be symbol or string.
228
- # @param value the new default value for the option
229
+ # @param [Object] value the new default value for the option
229
230
  def default(opt, value)
230
231
  opt = opt.to_sym
231
- the_opt = @options.select {|o| o[:name] == opt}.first
232
+ the_opt = @options.find {|o| o[:name] == opt }
232
233
  if the_opt
233
234
  the_opt[:options][:default] = value
234
235
  end
@@ -307,7 +308,8 @@ module Amp
307
308
 
308
309
  @before << block if block
309
310
  @before
310
- end
311
+ end
312
+
311
313
  ##
312
314
  # This returns the list of actions to run after the command, in order (first
313
315
  # ones are run first). You can modify this array in any way you choose, and
@@ -456,14 +458,14 @@ module Amp
456
458
  # @return [Amp::Command] the command being run
457
459
  def run(options={}, args=[])
458
460
  # run the before commands
459
- @before.each {|cmd| result = cmd.run options, args; return if !result || $break }
461
+ @before.each {|cmd| result = cmd.run options, args; return false if !result || $break }
460
462
 
461
463
  @code[options, args] # and of course the actual command...
462
464
 
463
465
  # top it off with the after commands
464
- @after.each {|cmd| result = cmd.run options, args; return if !result || $break }
466
+ @after.each {|cmd| result = cmd.run options, args; return false if !result || $break }
465
467
 
466
- self
468
+ true
467
469
  end
468
470
 
469
471
  NO_REPO_ALLOWED = {}
@@ -47,7 +47,7 @@ module Amp
47
47
  def revision_pair(repo, revisions)
48
48
  #revisions = [revisions] unless revisions.is_a?(Array)
49
49
  if !revisions || revisions.empty?
50
- return repo.dirstate.parents.first, nil
50
+ return repo.parents.first, nil
51
51
  end
52
52
  stop = nil
53
53
 
@@ -133,5 +133,12 @@ module Amp
133
133
  message
134
134
  end
135
135
 
136
+ def parse_revision_range(input)
137
+ match = input.match /(\d+)(?:#{REV_SEP}(\d*))?/
138
+ fin = match[2]
139
+ fin &&= fin.empty? ? nil : fin.to_i
140
+ [match[1].to_i, fin]
141
+ end
142
+
136
143
  end
137
144
  end