amp 0.5.2 → 0.5.3

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.
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
@@ -22,7 +22,7 @@ command :branch do |c|
22
22
  repo.dirstate.branch = _label
23
23
  Amp::UI.status("marked working directory as branch #{_label}")
24
24
  else
25
- Amp::UI.say("#{repo.dirstate.branch}")
25
+ Amp::UI.say repo.dirstate.branch
26
26
  end
27
27
  end
28
28
  end
@@ -1,7 +1,7 @@
1
1
  command :branches do |c|
2
2
  c.workflow :hg
3
3
  c.desc "Prints the current branches (active and closed)"
4
-
4
+ c.opt :active, "Only show active branches", :short => "-a"
5
5
  c.on_run do |opts, args|
6
6
  repo = opts[:repository]
7
7
 
@@ -10,12 +10,12 @@ command :branches do |c|
10
10
  [ active_branches.include?(tag), repo.changelog.rev(node), tag ]
11
11
  end
12
12
  branches.reverse!
13
- branches.each do |is_active, node, tag|
13
+ branches.sort {|a, b| b[1] <=> a[1]}.each do |is_active, node, tag|
14
14
  if !opts[:active] || is_active
15
15
  hexable = repo.lookup(node)
16
16
  if is_active
17
17
  branch_status = ""
18
- elsif !(repo.branch_heads(tag, :closed => false).include?(hexable))
18
+ elsif !(repo.branch_heads(:branch => tag, :closed => false).include?(hexable))
19
19
  notice = " (closed)"
20
20
  else
21
21
  notice = " (inactive)"
@@ -53,7 +53,7 @@ EOS
53
53
  base = base.map {|b| repo.lookup b }
54
54
 
55
55
  o = []
56
- has = {Amp::RevlogSupport::Node::NULL_ID => nil}
56
+ has = {Amp::Mercurial::RevlogSupport::Node::NULL_ID => nil}
57
57
 
58
58
  # iterates over each file node id
59
59
  base.each do |filename, node_id|
@@ -108,12 +108,12 @@ EOS
108
108
 
109
109
  # some error checking
110
110
  # yes, this calls Array#include, but the array is only 3 elements
111
- unless Amp::RevlogSupport::ChangeGroup::BUNDLE_TYPES.include? bundle_type
111
+ unless Amp::Mercurial::RevlogSupport::ChangeGroup::BUNDLE_TYPES.include? bundle_type
112
112
  raise abort('unknown bundle type specified with --type')
113
113
  end
114
114
 
115
115
  File.open fname, 'w' do |file|
116
- Amp::RevlogSupport::ChangeGroup.write_bundle cg, bundle_type, file
116
+ Amp::Mercurial::RevlogSupport::ChangeGroup.write_bundle cg, bundle_type, file
117
117
  end
118
118
  end # end on_run
119
119
  end
@@ -32,7 +32,6 @@ HELP
32
32
  require 'uri'
33
33
 
34
34
  src, rev, checkout = *c.parse_url(args.shift) # get the source url, revisions we want, and the checkout
35
- # puts [src, rev, checkout].inspect
36
35
  source = Amp::Repositories.pick opts[:global_config], src # make it an actual repository
37
36
  dest = (dest = args.shift) || File.basename(src) # get the destination URL
38
37
 
@@ -54,10 +53,10 @@ HELP
54
53
 
55
54
  if source.local? && copy # then we're copying
56
55
  FileUtils.copy_entry src, dest # copy everything, pray it's pristine
57
- dest_repo = Amp::Repositories::LocalRepository.new dest, false, opts[:global_config]
56
+ dest_repo = Amp::Repositories::Mercurial::LocalRepository.new dest, false, opts[:global_config]
58
57
  else # we have to pull
59
58
  # make the directory, cd into it, pull, and maaaaaaybe update
60
- dest_repo = Amp::Repositories::LocalRepository.new dest, true, opts[:global_config]
59
+ dest_repo = Amp::Repositories::Mercurial::LocalRepository.new dest, true, opts[:global_config]
61
60
  dest_repo.clone source, :revs => (rev ? rev.map {|r| source.lookup r } : []),
62
61
  :stream => opts[:stream] # the actual cloning which pulls
63
62
  end
@@ -91,8 +90,8 @@ HELP
91
90
 
92
91
  [source, dest_repo]
93
92
  rescue
94
- p "RESCUE ME"
95
- FileUtils.remove_entry dest # kill the dir if we've had any problems
93
+ #FileUtils.remove_entry dest # kill the dir if we've had any problems
94
+ raise
96
95
  end
97
96
  end
98
97
  end
@@ -1,7 +1,7 @@
1
1
  command :commit do |c|
2
2
  c.workflow :hg
3
3
 
4
- c.desc "Commit yo shit"
4
+ c.desc "Commit files from the staging area to the repository"
5
5
  c.opt :force, "Forces files to be committed", :short => "-f"
6
6
  c.opt :include, "Includes the given patterns", :short => "-I", :type => :string
7
7
  c.opt :exclude, "Ignores the given patterns", :short => "-E", :type => :string
@@ -29,6 +29,7 @@ amp commit [options]+ [FILE]+
29
29
  EOS
30
30
 
31
31
  c.on_run do |opts, args|
32
+
32
33
  repo = opts[:repository]
33
34
 
34
35
  files = args
@@ -37,6 +38,41 @@ EOS
37
38
  extra = {}
38
39
  match = Amp::Match.create(:files => files, :includer => included, :excluder => excluded) { !files.any? }
39
40
  opts.merge! :match => match, :extra => extra
41
+
42
+ changes = calculate_dirstate_commit(repo, files, match)
43
+ opts[:modified], opts[:removed] = (changes[:modified] + changes[:added]), changes[:removed]
44
+ File.open("/log.txt","a") {|f| f.puts "committing: #{opts.inspect} #{args.inspect} #{changes.inspect}\n"}
40
45
  repo.commit opts
41
46
  end
47
+
48
+ ##
49
+ # Calculates what changes to commit for the given list of files.
50
+ # Bases this upon the dirstate.
51
+ #
52
+ # @param [Array<String>] files the explicit files to check (if any)
53
+ # @param [Amp::Match] match the matcher object to fall back on
54
+ # @return [Hash] all the changes from the current dirstate.
55
+ def calculate_dirstate_commit(repo, files, match)
56
+ changes = nil
57
+ if files.any?
58
+ changes = {:modified => [], :removed => [], :added => []}
59
+ # split the files up so we can deal with them appropriately
60
+ files.each do |file|
61
+ case repo.staging_area.file_status file
62
+ when :normal, :merged, :added
63
+ changes[:modified] << file
64
+ when :removed
65
+ changes[:removed] << file
66
+ when :untracked
67
+ Amp::UI.warn "#{file} not tracked!"
68
+ else
69
+ Amp::UI.err "#{file} has unknown state #{state[0]}"
70
+ end
71
+ end
72
+ else
73
+ changes = repo.status(:match => match)
74
+ end
75
+ changes
76
+ end
77
+
42
78
  end
@@ -23,7 +23,8 @@ command :copy do |c|
23
23
  sources = args[0..-2]
24
24
  destination = args.last
25
25
  sources.each do |source|
26
- repo.copy source, destination, opts
26
+ Amp::UI.say "#{source} => #{destination}"
27
+ repo.staging_area.copy source, destination, opts
27
28
  end
28
29
  end
29
30
  end
@@ -13,7 +13,7 @@ namespace :debug do
13
13
  Amp::UI.say "|---------|------------|------------|----------|-----------|--------------|--------------|--------------|"
14
14
  Amp::UI.say "| rev | offset | length | base | linkrev | nodeid | parent1 | parent2 |"
15
15
  Amp::UI.say "|---------|------------|------------|----------|-----------|--------------|--------------|--------------|"
16
- revlog = Amp::Revlog.new(opener, index_file)
16
+ revlog = Amp::Mercurial::Revlog.new(opener, index_file)
17
17
  idx = 0
18
18
  revlog.each do |entry|
19
19
  node = entry.node_id
@@ -9,20 +9,15 @@ command :diff do |c|
9
9
  revs << "tip" if revs.size == 0
10
10
  revs << nil if revs.size == 1
11
11
 
12
- revs.map! {|key| repo[key]}
12
+ revs.map! {|key| repo[key] }
13
13
 
14
14
  differences = repo.status(:node_1 => revs[0], :node_2 => revs[1])
15
15
  files = differences[:added] + differences[:removed] + differences[:deleted] + differences[:modified]
16
16
 
17
17
  files.each do |filename|
18
- vf_old, vf_new = revs.map {|rev| rev.get_file filename}
19
- date_old, date_new = revs.map {|rev| rev.easy_date }
20
- path_old, path_new = vf_old.path, vf_new.path || "/dev/null"
21
- rev_old, rev_new = vf_old.file_rev, vf_new.file_rev
18
+ vf_old, vf_new = revs.map {|rev| rev.get_file filename}
22
19
 
23
- diff = vf_new.file_log.unified_revision_diff rev_old, date_old, rev_new,
24
- date_new, path_old, path_new,
25
- :pretty => !opts[:"no-color"]
20
+ diff = vf_old.unified_diff_with vf_new, :pretty => !opts[:"no-color"]
26
21
  Amp::UI::say diff
27
22
  end
28
23
 
@@ -1,11 +1,12 @@
1
1
  command :forget do |c|
2
2
  c.workflow :hg
3
- c.desc "Stop tracking a file"
3
+ c.desc "Remove the file from the staging area"
4
4
 
5
5
  c.on_run do |opts, args|
6
6
  repo = opts[:repository]
7
7
 
8
- puts "Forgetting #{args.size} file#{args.size == 1 ? '' : 's'}"
9
- repo.forget args
8
+ puts "Removing #{args.size} file#{args.size == 1 ? '' : 's'} from the staging area"
9
+ args.each {|f| repo.staging_area.normal f; print '.'}
10
+ puts
10
11
  end
11
- end
12
+ end
@@ -9,13 +9,13 @@ command :identify do |c|
9
9
  c.on_run do |opts, args|
10
10
  repo = opts[:repository]
11
11
  opts[:id] = opts[:num] = true unless opts[:num] || opts[:id] || opts[:branch] || opts[:tags]
12
- working_changeset = repo[nil]
13
- parent_changeset = working_changeset.parents.first
14
12
 
15
- Amp::UI.tell parent_changeset.node_id.short_hex + " " if opts[:id]
16
- Amp::UI.tell parent_changeset.revision.to_s + " " if opts[:num]
17
- Amp::UI.tell parent_changeset.branch + " " if opts[:branch]
18
- Amp::UI.tell parent_changeset.tags.join(" ") + " " if opts[:tags]
13
+ changeset = repo[opts[:rev] || nil]
14
+
15
+ Amp::UI.tell changeset.node_id.short_hex + " " if opts[:id]
16
+ Amp::UI.tell changeset.revision.to_s + " " if opts[:num]
17
+ Amp::UI.tell changeset.branch + " " if opts[:branch]
18
+ Amp::UI.tell changeset.tags.join(" ") + " " if opts[:tags]
19
19
 
20
20
  Amp::UI.say
21
21
 
@@ -84,7 +84,7 @@ EOS
84
84
  if opts[:exact]
85
85
  raise abort('not a mercurial patch') unless data[:node_id] && data[:p1]
86
86
  p1 = repo.lookup data[:p1]
87
- p2 = repo.lookup data[:p2] || Amp::RevlogSupport::Node::NULL_ID.hexlify
87
+ p2 = repo.lookup data[:p2] || Amp::Mercurial::RevlogSupport::Node::NULL_ID.hexlify
88
88
 
89
89
  repo.update(p1, false, true, nil).success? if p1 != wp.first.node
90
90
  repo.dirstate.parents = [p1, p2]
@@ -65,10 +65,10 @@ HELP
65
65
  bundle_type = (remote.local? && "HG10GZ") || "HG10UN" # ???
66
66
  require 'tempfile'
67
67
  file = Tempfile.new("hg-incoming-bundle", Dir.pwd)
68
- Amp::RevlogSupport::ChangeGroup.write_bundle(cg, bundle_type, file)
68
+ Amp::Mercurial::RevlogSupport::ChangeGroup.write_bundle(cg, bundle_type, file)
69
69
  cleanup = file.path
70
70
  unless remote.local?
71
- remote = Amp::Repositories::BundleRepository.new(repo.root, opts[:global_config], cleanup)
71
+ remote = Amp::Repositories::Mercurial::BundleRepository.new(repo.root, opts[:global_config], cleanup)
72
72
  end
73
73
  end
74
74
  opts.merge! :template_type => :log
@@ -1,10 +1,11 @@
1
1
  command :log do |c|
2
2
  c.workflow :hg
3
3
  c.desc "Prints the commit history."
4
- c.add_opt :verbose, "Verbose output", {:short => "-v"}
5
- c.add_opt :limit, "Limit how many revisions to show", {:short => "-l", :type => :integer, :default => -1}
6
- c.add_opt :template, "Which template to use while printing", {:short => "-t", :type => :string, :default => "default"}
7
- c.add_opt :no_output, "Doesn't print output (useful for benchmarking)"
4
+ c.opt :verbose, "Verbose output", {:short => "-v"}
5
+ c.opt :limit, "Limit how many revisions to show", {:short => "-l", :type => :integer, :default => -1}
6
+ c.opt :template, "Which template to use while printing", {:short => "-t", :type => :string, :default => "default"}
7
+ c.opt :no_output, "Doesn't print output (useful for benchmarking)"
8
+
8
9
  c.on_run do |options, args|
9
10
  repo = options[:repository]
10
11
  limit = options[:limit]
@@ -9,7 +9,7 @@ command :merge do |c|
9
9
  repo = opts[:repository]
10
10
  if !opts[:rev]
11
11
  branch = repo[nil].branch
12
- bheads = repo.branch_heads[branch]
12
+ bheads = repo.branch_heads(:branch => branch)
13
13
  if bheads.size > 2
14
14
  raise abort("branch #{branch} has #{bheads.size} - please merge " +
15
15
  " with an explicit revision")
@@ -10,13 +10,15 @@ command :move do |c|
10
10
  c.before do |opts, args|
11
11
  if args.size < 2
12
12
  Amp::UI.say "Usage: amp move source destination"
13
- c.break
13
+ cut!
14
14
  elsif args.size > 2 && !File.directory?(args.last)
15
15
  Amp::UI.say "If you want to move more than 1 file, your destination must" +
16
16
  " be a directory."
17
- c.break
17
+ cut!
18
+ else
19
+ true
18
20
  end
19
- true
21
+
20
22
  end
21
23
 
22
24
  c.on_run do |opts, args|
@@ -49,7 +49,7 @@ HELP
49
49
  o.each do |node_id|
50
50
  # get the parents of the node so that we can check if it's a merge
51
51
  # (merges have two parents)
52
- parents = repo.changelog.parents(node_id).select {|p| p.not_null? }
52
+ parents = repo[node_id].parents
53
53
 
54
54
  # We skip printing this if it's a merge (parents.size == 2)
55
55
  # and we're NOT printing merges (opts[:"no-merges"])
@@ -6,14 +6,13 @@ command :push do |c|
6
6
  c.opt :force, "Ignore remote heads", :short => "-f"
7
7
 
8
8
  c.on_run do |opts, args|
9
- repo = opts[:repository]
10
- dest = opts[:remote] || repo.config["paths","default-push"] || repo.config["paths","default"]
11
- opts[:revs] ||= nil
12
- remote = Amp::Support.parse_hg_url(dest, opts[:revs])
9
+ repo = opts[:repository]
10
+ dest = opts[:remote] || repo.config["paths","default-push"] || repo.config["paths","default"]
11
+ opts[:revs] ||= nil
12
+ remote = Amp::Support.parse_hg_url(dest, opts[:revs])
13
13
  dest, revs, checkout = remote[:url], remote[:revs], remote[:head]
14
- remote_repo = Amp::Repositories.pick(repo.config, dest, false)
15
-
16
- revs = revs.map {|rev| repo.lookup rev } if revs
14
+ remote_repo = Amp::Repositories.pick(repo.config, dest, false)
15
+ revs = revs.map {|rev| repo.lookup rev } if revs
17
16
 
18
17
  result = repo.push remote_repo, :force => opts[:force], :revs => revs
19
18
  end
@@ -1,7 +1,7 @@
1
1
  command :remove do |c|
2
2
  c.workflow :hg
3
3
  c.desc "Removes files from the repository on next commit"
4
- c.opt :after, "record as delete for missing files (whether or not to actually delete files)", :short => "-A", :default => false
4
+ c.opt :"no-unlink", "Don't unlink the files", :short => "-A", :default => false
5
5
  c.opt :force, "Forces removal of files", :short => "-f", :default => false
6
6
  c.opt :include, "include names matching the given patterns", :short => "-I", :type => :string
7
7
  c.opt :exclude, "exclude names matching the given patterns", :short => "-X", :type => :string
@@ -31,7 +31,7 @@ command :remove do |c|
31
31
  (remove + forget).sort.each {|f| Amp::UI.status "removing #{f}..." }
32
32
  end
33
33
 
34
- repo.remove(remove, :unlink => ! opts[:after]) # forgetting occurs here
34
+ repo.staging_area.remove(remove, :unlink => ! opts[:"no-unlink"]) # forgetting occurs here
35
35
  repo.forget(forget)
36
36
 
37
37
  remove += forget
@@ -9,10 +9,8 @@ command :resolve do |c|
9
9
  c.opt :exclude, "Specify patterns of files to exclude in the operation", :short => "-E", :type => :string
10
10
 
11
11
  c.before do |opts, args|
12
- parse_args = lambda {|os| [:all, :mark, :unmark, :list].map {|i| os[i] } }
13
-
14
12
  # Checks to make sure user input is valid
15
- all, mark, unmark, list = *parse_args[ opts ]
13
+ all, mark, unmark, list = [:all, :mark, :unmark, :list].map {|i| opts[i] }
16
14
 
17
15
  if (list && (mark || unmark)) || (mark && unmark)
18
16
  raise abort("too many options specified")
@@ -31,10 +29,8 @@ command :resolve do |c|
31
29
 
32
30
  c.on_run do |opts, args|
33
31
  repo = opts[:repository]
34
- parse_args = lambda {|os| [:all, :mark, :unmark, :list].map {|i| os[i] } }
35
32
 
36
- all, mark, unmark, list = *parse_args[opts]
37
- merge_state = Amp::Merges::MergeState.new(repo)
33
+ all, mark, unmark, list = [:all, :mark, :unmark, :list].map {|i| opts[i] }
38
34
 
39
35
  if opts[:all]
40
36
  # the block means "default to true" - so basically ignore all other input
@@ -47,34 +43,21 @@ command :resolve do |c|
47
43
  end
48
44
 
49
45
  # iterate over each entry in the merge state file
50
- merge_state.each do |file, status|
46
+ repo.uncommitted_merge_files.each do |file, status|
51
47
  # check to see if our user wants this file
52
48
  if match.call(file)
53
49
  if list
54
50
  Amp::UI.say "#{status.first} #{file}"
55
51
  elsif mark
56
52
  # the "r" means resolved
57
- merge_state.mark(file, "r")
53
+ repo.mark_resolved(file)
58
54
  Amp::UI.say "#{file} marked as #{"resolved".blue}"
59
55
  elsif unmark
60
56
  # the "u" means unresolved
61
- merge_state.mark(file, "u")
57
+ repo.mark_conflicted(file)
62
58
  Amp::UI.say "#{file} marked as #{"unresolved".red}"
63
59
  else
64
- # retry the merge
65
- working_changeset = repo[nil]
66
- merge_changeset = working_changeset.parents.last
67
-
68
- # backup the current file to a .resolve file (but retain the extension
69
- # so editors that rely on extensions won't bug out)
70
- path = repo.working_join file
71
- File.copy(path, path + ".resolve" + File.extname(path))
72
-
73
- # try to merge the files!
74
- merge_state.resolve(file, working_changeset, merge_changeset)
75
-
76
- # restore the backup to .orig (overwriting the old one)
77
- File.move(path + ".resolve" + File.extname(path), path + ".orig" + File.extname(path))
60
+ repo.try_resolve_conflict(file)
78
61
  end
79
62
  end
80
63
  end
@@ -7,7 +7,6 @@ amp root
7
7
  Prints the path to the current repository's root.
8
8
  EOF
9
9
  c.on_run do |opts, args|
10
- repo = opts[:repository]
11
- puts repo.root
10
+ puts opts[:repository].root
12
11
  end
13
12
  end
@@ -26,9 +26,11 @@ command :status do |c|
26
26
  'added' => :blue,
27
27
  'removed' => :red,
28
28
  'deleted' => :magenta,
29
+ 'copied' => :blue,
30
+ 'moved' => :red,
29
31
  'unknown' => :green,
30
32
  'ignored' => :yellow,
31
- 'clean' => :white
33
+ 'clean' => :white,
32
34
  }
33
35
  states = ['modified',
34
36
  'added' ,
@@ -36,11 +38,13 @@ command :status do |c|
36
38
  'deleted' ,
37
39
  'unknown' ,
38
40
  'ignored' ,
39
- 'clean' ]
41
+ 'clean' ,
42
+ 'copied' ,
43
+ 'moved' ]
40
44
  show = states.select {|k| options[k.to_sym] } # filter the list down
41
-
42
45
  show = states if options[:all]
43
46
  show = states[0..4] if show.empty?
47
+ #show += states[7..8] unless options[:hg]
44
48
 
45
49
  statopts = {:node_1 => node1, :node_2 => node2 }
46
50
 
@@ -65,7 +69,6 @@ command :status do |c|
65
69
  changestates.each do |state, char, files|
66
70
  if show.include? state
67
71
  files.each do |f|
68
- #Amp::Logger.info("#{char} #{f}")
69
72
  if options[:"no-color"]
70
73
  Amp::UI.tell "#{char} #{File.join(cwd, f.to_s)[1..-1]}#{stop}" unless f.nil?
71
74
  else
@@ -82,21 +85,27 @@ command :status do |c|
82
85
 
83
86
  if options[:"no-color"]
84
87
  Amp::UI.say("#{state.upcase}" +
85
- " => #{num_of_files} file#{num_of_files == 1 ? 's' : ''}")
88
+ " => #{num_of_files} file#{num_of_files == 1 ? '' : 's'}")
86
89
  else
87
90
  Amp::UI.say("#{state.upcase.send colors[state]}" +
88
- " => #{num_of_files} file#{num_of_files == 1 ? 's' : ''}")
91
+ " => #{num_of_files} file#{num_of_files == 1 ? '' : 's'}")
89
92
  end
90
93
 
91
- status[state.to_sym].each do |file|
92
- #Amp::Logger.info("#{state[0,1].upcase} #{file}")
93
- Amp::UI.say "\t#{File.join(cwd, file)[1..-1]}"
94
+ unless [:copied, :moved].include? state.to_sym
95
+ status[state.to_sym].each do |file|
96
+ Amp::UI.say "\t#{File.join(cwd, file)[1..-1]}"
97
+ end
98
+ else
99
+ status[state.to_sym].each do |(src, dst)|
100
+ Amp::UI.say "\t#{File.join(cwd, src)[1..-1]} => #{File.join(cwd, dst)[1..-1]}"
101
+ end
94
102
  end
95
-
96
103
  end
97
104
 
98
- Amp::UI.say
99
- Amp::UI.say "#{status[:delta]} bytes were changed" if status[:delta]
105
+ unless show.map {|s| status[s.to_sym] }.all? {|s| s.empty? }
106
+ Amp::UI.say
107
+ Amp::UI.say "#{status[:delta]} bytes were changed" if status[:delta]
108
+ end
100
109
  end
101
110
  end
102
111