Project

General

Profile

Patch #1993 ยป subversion_adapter.rb.patch

Chaoqun Zou, 2008-10-06 10:36

View differences:

subversion_adapter.rb Locally Modified (Based On LOCAL)
76 76
          path ||= ''
77 77
          identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
78 78
          entries = Entries.new
79
          cmd = "#{SVN_BIN} list --xml #{target(path)}@#{identifier}"
79
          cmd = "#{SVN_BIN} list --xml #{target(URI.escape(path))}@#{identifier}"
80 80
          cmd << credentials_string
81 81
          shellout(cmd) do |io|
82 82
            output = io.read
......
86 86
                # Skip directory if there is no commit date (usually that
87 87
                # means that we don't have read access to it)
88 88
                next if entry.attributes['kind'] == 'dir' && entry.elements['commit'].elements['date'].nil?
89
                entries << Entry.new({:name => entry.elements['name'].text,
89
                entries << Entry.new({:name => URI.unescape(entry.elements['name'].text),
90 90
                            :path => ((path.empty? ? "" : "#{path}/") + entry.elements['name'].text),
91 91
                            :kind => entry.attributes['kind'],
92 92
                            :size => (entry.elements['size'] and entry.elements['size'].text).to_i,
......
112 112
          return nil unless self.class.client_version_above?([1, 5, 0])
113 113
          
114 114
          identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
115
          cmd = "#{SVN_BIN} proplist --verbose --xml #{target(path)}@#{identifier}"
115
          cmd = "#{SVN_BIN} proplist --verbose --xml #{target(URI.escape(path))}@#{identifier}"
116 116
          cmd << credentials_string
117 117
          properties = {}
118 118
          shellout(cmd) do |io|
......
137 137
          cmd = "#{SVN_BIN} log --xml -r #{identifier_from}:#{identifier_to}"
138 138
          cmd << credentials_string
139 139
          cmd << " --verbose " if  options[:with_paths]
140
          cmd << ' ' + target(path)
140
          cmd << ' ' + target(URI.escape(path))
141 141
          shellout(cmd) do |io|
142 142
            begin
143 143
              doc = REXML::Document.new(io)
......
174 174
          cmd = "#{SVN_BIN} diff -r "
175 175
          cmd << "#{identifier_to}:"
176 176
          cmd << "#{identifier_from}"
177
          cmd << " #{target(path)}@#{identifier_from}"
177
          cmd << " #{target(URI.escape(path))}@#{identifier_from}"
178 178
          cmd << credentials_string
179 179
          diff = []
180 180
          shellout(cmd) do |io|
......
188 188
        
189 189
        def cat(path, identifier=nil)
190 190
          identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
191
          cmd = "#{SVN_BIN} cat #{target(path)}@#{identifier}"
191
          cmd = "#{SVN_BIN} cat #{target(URI.escape(path))}@#{identifier}"
192 192
          cmd << credentials_string
193 193
          cat = nil
194 194
          shellout(cmd) do |io|
......
201 201
        
202 202
        def annotate(path, identifier=nil)
203 203
          identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD"
204
          cmd = "#{SVN_BIN} blame #{target(path)}@#{identifier}"
204
          cmd = "#{SVN_BIN} blame #{target(URI.escape(path))}@#{identifier}"
205 205
          cmd << credentials_string
206 206
          blame = Annotate.new
207 207
          shellout(cmd) do |io|
    (1-1/1)