public
Description: Piston is a utility that eases vendor branch management. This repository is a complete reimplementation of Piston to provide different backends, depending on the repositories and working copies you pistonize from.
Homepage: http://piston.rubyforge.org/
Clone URL: git://github.com/francois/piston.git
Commands can now remember data that is not specific to the handler.

Piston::Commands::Import stores the lock status, for example.
francois (author)
Mon Mar 24 19:20:52 -0700 2008
commit  f159782db5d976475ab12cc5db883ac84f439fb9
tree    d203ccb504a69a0cf117f0ef4164248a1f945360
parent  fa63f093d00e848ca3efb929f15acca34b199a9c
...
18
19
20
21
 
22
23
24
...
18
19
20
 
21
22
23
24
0
@@ -18,7 +18,7 @@ module Piston
0
           revision.checkout_to(tmpdir)
0
           working_copy.create
0
           working_copy.copy_from(revision)
0
- working_copy.remember(revision.remember_values)
0
+ working_copy.remember({:lock => options[:lock]}, revision.remember_values)
0
           working_copy.finalize
0
         ensure
0
           debug {"Removing temporary directory: #{tmpdir}"}
...
76
77
78
79
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
82
83
 
84
85
86
...
76
77
78
 
 
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
 
99
100
101
102
0
@@ -76,11 +76,27 @@ module Piston
0
     end
0
 
0
     # Stores a Hash of values that can be retrieved later.
0
- def remember(values)
0
- logger.debug {"Remembering #{values.inspect}"}
0
+ def remember(*args)
0
+ case args.length
0
+ when 1
0
+ values, handler_values = Hash.new, args.shift
0
+ when 2
0
+ values, handler_values = args.shift, args.shift
0
+ else
0
+ raise ArgumentError, "Piston::WorkingCopy#\remember expected 1 or 2 arguments, received #{args.length}"
0
+ end
0
+
0
+ values["format"] = 1
0
+
0
+ # Stringify keys
0
+ values.keys.each do |key|
0
+ values[key.to_s] = values.delete(key)
0
+ end
0
+
0
+ logger.debug {"Remembering #{values.inspect} as well as #{handler_values.inspect}"}
0
       yaml_path = path + ".piston.yml"
0
       File.open(yaml_path, "wb") do |f|
0
- f.write({"format" => 1, "handler" => values}.to_yaml)
0
+ f.write(values.merge("handler" => handler_values).to_yaml)
0
       end
0
 
0
       logger.debug {"Calling \#after_remember on #{yaml_path}"}
...
28
29
30
 
 
 
 
 
 
 
 
 
 
31
...
28
29
30
31
32
33
34
35
36
37
38
39
40
41
0
@@ -28,4 +28,14 @@ class TestWorkingCopyRememberance < Test::Unit::TestCase
0
     @wc.expects(:after_remember).with(@wcdir + ".piston.yml")
0
     @wc.remember("a" => "b")
0
   end
0
+
0
+ def test_remember_with_two_args_remembers_handler_values_separately
0
+ values = {"lock" => true}
0
+ handler_values = {"a" => "b"}
0
+
0
+ @wc.remember(values, handler_values)
0
+
0
+ actual = YAML.load((@wcdir + ".piston.yml").read)
0
+ assert_equal values.merge("format" => 1, "handler" => handler_values), actual
0
+ end
0
 end

Comments

    No one has commented yet.