Class: ASF::SVN

Inherits:
Object
  • Object
show all
Defined in:
lib/whimsy/asf/svn.rb

Class Method Summary collapse

Class Method Details

.[](name) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/whimsy/asf/svn.rb', line 21

def self.[](name)
  result = repos[(@mock+name.sub('private/','')).to_s.sub(/\/*$/, '')] ||
    repos[(@base+name).to_s.sub(/\/*$/, '')] # lose trailing slash

  return result if result

  # recursively try parent directory
  if name.include? '/'
    base = File.basename(name)
    result = self[File.dirname(name)]
    if result and File.exist?(File.join(result, base))
      File.join(result, base)
    end
  end
end

.repos ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/whimsy/asf/svn.rb', line 11

def self.repos
  @semaphore.synchronize do
    @repos ||= Hash[Dir[*ASF::Config.get(:svn)].map { |name| 
      Dir.chdir name.untaint do
        [`svn info`[/URL: (.*)/,1].sub(/^http:/,'https:'), Dir.pwd.untaint]
      end
    }]
  end
end