Skip to content

Commit

Permalink
Add a Repository class for managing repositories.
Browse files Browse the repository at this point in the history
  - Let the repository recognize the SCM type
  - Add an SVN repository to test/repositories
  - Failed to add a Git repository to test/repositories, figure that out later
  • Loading branch information
Manfred committed Aug 20, 2008
1 parent 2bd0731 commit 370ea36
Show file tree
Hide file tree
Showing 6 changed files with 87 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/hail.rb
Expand Up @@ -4,6 +4,7 @@
require 'optparse'

require 'hail/workbench'
require 'hail/repository'

module Hail
VERSION = '0.6.0'
Expand Down
21 changes: 21 additions & 0 deletions lib/hail/repository.rb
@@ -0,0 +1,21 @@
module Hail
class Repository
attr_accessor :directory

def initialize(options={})
@directory = options[:directory]
end

def scm
self.class.recognize_scm(directory)
end

def self.recognize_scm(directory)
if File.exist?(File.join(directory, '.git'))
'git'
elsif File.exist?(File.join(directory, '.svn'))
'svn'
end
end
end
end
35 changes: 35 additions & 0 deletions test/hail_repository_spec.rb
@@ -0,0 +1,35 @@
require File.expand_path('../helper.rb', __FILE__)

describe "Repository" do
it "should recognize git repositories" do
Hail::Repository.recognize_scm(File.join(TEST_ROOT, 'repositories', 'original')).should == 'git'
end

it "should recognize svn repositories" do
Hail::Repository.recognize_scm(File.join(TEST_ROOT, 'repositories', 'clone')).should == 'svn'
end

it "should know that it doesn't recognize other repositories" do
Hail::Repository.recognize_scm(File.join(TEST_ROOT, 'repositories')).should.be.nil
end
end

describe "A Git Repository" do
before do
@repository = Hail::Repository.new(:directory => File.join(TEST_ROOT, 'repositories', 'original'))
end

it "should have 'git' as scm" do
@repository.scm.should == 'git'
end
end

describe "An Subversion Repository" do
before do
@repository = Hail::Repository.new(:directory => File.join(TEST_ROOT, 'repositories', 'clone'))
end

it "should have 'svn' as scm" do
@repository.scm.should == 'svn'
end
end
28 changes: 28 additions & 0 deletions test/repositories/clone/.svn/entries
@@ -0,0 +1,28 @@
8

dir
0
file:///Users/manfred/Code/hail/test/repositories/svn
file:///Users/manfred/Code/hail/test/repositories/svn



2008-08-20T16:49:35.624570Z
0



svn:special svn:externals svn:needs-lock











c8febcad-ff5f-4c32-9116-c64acc132d67

1 change: 1 addition & 0 deletions test/repositories/clone/.svn/format
@@ -0,0 +1 @@
8
1 change: 1 addition & 0 deletions test/repositories/original/.gitignore
@@ -0,0 +1 @@
!.git

0 comments on commit 370ea36

Please sign in to comment.