Решение на Пета задача от Георги Карапетров

Обратно към всички решения

Към профила на Георги Карапетров

Резултати

  • 0 точки от тестове
  • 0 бонус точки
  • 0 точки общо
  • 2 успешни тест(а)
  • 28 неуспешни тест(а)

Код

class OutputMessage
attr_reader :message
def initialize(message = "Generic command", success = true)
@message = message
@success = success
end
def success?
@success
end
def error?
not @success
end
end
class ObjectStore
def self.init(&block)
object_store = ObjectStore.new
object_store.instance_eval(&block) if block_given?
object_store
end
def initialize
@commits = {}
@branches = [Branch.new("master")]
@current_branch = @branches.last
@stored_objects = []
end
def conform_to_result(instance)
instance.instance_eval do
def result
@result
end
def result=(other)
@result = other
end
@result = nil
end
end
def add(name, object)
message = OutputMessage.new("Added #{name}", true)
conform_to_result(message)
message.result = object
message
end
def commit(message)
success = changes > 0
error_message = "Nothing to commit, working directory clean."
success_message = "#{message}\n\t#{changes} objects changed"
object_message = success ? success_message : error_message
OutputMessage.new(object_message, success)
end
def remove(name)
success = object_exists?(name)
error_message = "Object #{name} is not committed."
success_message = "Added #{name} for removal."
object_message = success ? success_message : error_message
message = OutputMessage.new(object_message, success)
conform_to_result(message)
message.result = get_object_for_name(name) if success
message
end
def checkout(commit_hash)
success = commit_exists?(commit_hash)
error_message = "Commit #{commit_hash} does not exist."
success_message = "HEAD is now at #{commit_hash}."
object_message = success ? success_message : error_message
message = OutputMessage.new(object_message, success)
conform_to_result(message)
message.result = @commits[commit_hash] if success
message
end
def get_object_for_name(name)
@stored_objects.select { |object| object.name == name}.first
end
def changes
#TODO: changes
1
end
def commit_exists?(hash)
@commits.has_key? hash
end
def object_exists?(name)
@stored_objects.filter { |object| object.name == name } != []
end
end
class Branch
def initialize(name = "master", commits = {})
@name = name
@commits = commits
end
def self.create(branch_name)
success = branch_exists?(branch_name)
error_message = "Branch #{branch_name} already exists."
success_message = "Created branch #{branch_name}."
message = success ? success_message : error_message
#super.add_branch Branch.new(branch_name, current_commits)
OutputMessage.new(message, success)
end
def branch_exists?
#TODO: branch exists
true
end
def current_commits
[]
end
end

Лог от изпълнението

FFFFFFFFFFFFFFFFFFFFFFFFFF..FF

Failures:

  1) ObjectStore can add objects
     Failure/Error: expect(repo.add("object", "content")).to be_success("Added object to stage.", "content")
       expected #<OutputMessage:0x007fc7d64e98f0 @message="Added object", @success=true, @result="content"> to be success "Added object to stage." and "content"
     # /tmp/d20160111-5693-1pocetw/spec.rb:23:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  2) ObjectStore can commit objects
     Failure/Error: expect(repo.commit("So cool!")).to be_success("So cool!\n\t2 objects changed", repo.head.result)
     NoMethodError:
       undefined method `head' for #<ObjectStore:0x007fc7d64e5020>
     # /tmp/d20160111-5693-1pocetw/spec.rb:30:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  3) ObjectStore cannot commit without changed objects
     Failure/Error: expect(repo.commit("So cool!!")).to be_error("Nothing to commit, working directory clean.")
       expected #<OutputMessage:0x007fc7d64d9798 @message="So cool!!\n\t1 objects changed", @success=true> to be error "Nothing to commit, working directory clean."
     # /tmp/d20160111-5693-1pocetw/spec.rb:35:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  4) ObjectStore can remove objects
     Failure/Error: expect(repo.remove("object1")).to be_success("Added object1 for removal.", "content1")
     NoMethodError:
       undefined method `filter' for []:Array
     # /tmp/d20160111-5693-1pocetw/solution.rb:99:in `object_exists?'
     # /tmp/d20160111-5693-1pocetw/solution.rb:62:in `remove'
     # /tmp/d20160111-5693-1pocetw/spec.rb:43:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  5) ObjectStore can commit changes which include only removed objects
     Failure/Error: repo.remove("object2")
     NoMethodError:
       undefined method `filter' for []:Array
     # /tmp/d20160111-5693-1pocetw/solution.rb:99:in `object_exists?'
     # /tmp/d20160111-5693-1pocetw/solution.rb:62:in `remove'
     # /tmp/d20160111-5693-1pocetw/spec.rb:52:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  6) ObjectStore cannot remove objects that are not committed
     Failure/Error: expect(repo.remove("object2")).to be_error("Object object2 is not committed.")
     NoMethodError:
       undefined method `filter' for []:Array
     # /tmp/d20160111-5693-1pocetw/solution.rb:99:in `object_exists?'
     # /tmp/d20160111-5693-1pocetw/solution.rb:62:in `remove'
     # /tmp/d20160111-5693-1pocetw/spec.rb:60:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  7) ObjectStore can show head
     Failure/Error: last_commit = repo.commit("There we go").result
     NoMethodError:
       undefined method `result' for #<OutputMessage:0x007fc7d64c3bf0>
     # /tmp/d20160111-5693-1pocetw/spec.rb:68:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  8) ObjectStore cannot show head for empty repository
     Failure/Error: expect(repo.head).to be_error("Branch master does not have any commits yet.")
     NoMethodError:
       undefined method `head' for #<ObjectStore:0x007fc7d64c1710>
     # /tmp/d20160111-5693-1pocetw/spec.rb:74:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  9) ObjectStore can show log of changes for a single commit
     Failure/Error: commit = repo.commit("So cool!").result
     NoMethodError:
       undefined method `result' for #<OutputMessage:0x007fc7d64ae840>
     # /tmp/d20160111-5693-1pocetw/spec.rb:81:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  10) ObjectStore can show log of changes for a single commit
     Failure/Error: commit = repo.commit("So cool!").result
     NoMethodError:
       undefined method `result' for #<OutputMessage:0x007fc7d613d260>
     # /tmp/d20160111-5693-1pocetw/spec.rb:90:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  11) ObjectStore can show log of changes for multiple commits
     Failure/Error: commit1 = repo.commit("First commit").result
     NoMethodError:
       undefined method `result' for #<OutputMessage:0x007fc7d5f3a030>
     # /tmp/d20160111-5693-1pocetw/spec.rb:98:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  12) ObjectStore shows the log for the current branch only
     Failure/Error: commit1 = repo.commit("First commit").result
     NoMethodError:
       undefined method `result' for #<OutputMessage:0x007fc7d612b380>
     # /tmp/d20160111-5693-1pocetw/spec.rb:114:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  13) ObjectStore cannot show log for empty repository
     Failure/Error: expect(repo.log).to be_error("Branch master does not have any commits yet.")
     NoMethodError:
       undefined method `log' for #<ObjectStore:0x007fc7d61212e0>
     # /tmp/d20160111-5693-1pocetw/spec.rb:133:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  14) ObjectStore can list branches
     Failure/Error: repo.branch.create("develop")
     NoMethodError:
       undefined method `branch' for #<ObjectStore:0x007fc7d6118618>
     # /tmp/d20160111-5693-1pocetw/spec.rb:138:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  15) ObjectStore can create branches
     Failure/Error: expect(repo.branch.create("develop")).to be_success("Created branch develop.")
     NoMethodError:
       undefined method `branch' for #<ObjectStore:0x007fc7d61069b8>
     # /tmp/d20160111-5693-1pocetw/spec.rb:145:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  16) ObjectStore cannot create branch if already exists
     Failure/Error: expect(repo.branch.create("master")).to be_error("Branch master already exists.")
     NoMethodError:
       undefined method `branch' for #<ObjectStore:0x007fc7d60f7f80>
     # /tmp/d20160111-5693-1pocetw/spec.rb:150:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  17) ObjectStore can switch branches
     Failure/Error: first_commit = repo.commit("First commit").result
     NoMethodError:
       undefined method `result' for #<OutputMessage:0x007fc7d60e5448>
     # /tmp/d20160111-5693-1pocetw/spec.rb:156:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  18) ObjectStore cannot switch to nonexisting branch
     Failure/Error: expect(repo.branch.checkout("develop")).to be_error("Branch develop does not exist.")
     NoMethodError:
       undefined method `branch' for #<ObjectStore:0x007fc7d60d0750>
     # /tmp/d20160111-5693-1pocetw/spec.rb:168:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  19) ObjectStore can remove branch
     Failure/Error: repo.branch.create("develop")
     NoMethodError:
       undefined method `branch' for #<ObjectStore:0x007fc7d60c60e8>
     # /tmp/d20160111-5693-1pocetw/spec.rb:173:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  20) ObjectStore cannot remove current branch
     Failure/Error: expect(repo.branch.remove("master")).to be_error("Cannot remove current branch.")
     NoMethodError:
       undefined method `branch' for #<ObjectStore:0x007fc7d60b64e0>
     # /tmp/d20160111-5693-1pocetw/spec.rb:179:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  21) ObjectStore cannot remove nonexisting branch
     Failure/Error: expect(repo.branch.remove("develop")).to be_error("Branch develop does not exist.")
     NoMethodError:
       undefined method `branch' for #<ObjectStore:0x007fc7d60b40f0>
     # /tmp/d20160111-5693-1pocetw/spec.rb:184:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  22) ObjectStore can be initialized with block
     Failure/Error: $second_commit = commit("Second commit").result
     NoMethodError:
       undefined method `result' for #<OutputMessage:0x007fc7d60a9cb8>
     # /tmp/d20160111-5693-1pocetw/spec.rb:193:in `block (3 levels) in <top (required)>'
     # /tmp/d20160111-5693-1pocetw/solution.rb:20:in `instance_eval'
     # /tmp/d20160111-5693-1pocetw/solution.rb:20:in `init'
     # /tmp/d20160111-5693-1pocetw/spec.rb:188:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  23) ObjectStore can return objects
     Failure/Error: expect(repo.get("number")).to be_success("Found object number.", 21)
     NoMethodError:
       undefined method `get' for #<ObjectStore:0x007fc7d6094f20>
     # /tmp/d20160111-5693-1pocetw/spec.rb:202:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  24) ObjectStore cannot return not committed objects
     Failure/Error: expect(repo.get("string")).to be_error("Object string is not committed.")
     NoMethodError:
       undefined method `get' for #<ObjectStore:0x007fc7d606b080>
     # /tmp/d20160111-5693-1pocetw/spec.rb:209:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  25) ObjectStore cannot return objects when no commits
     Failure/Error: expect(repo.get("string")).to be_error("Object string is not committed.")
     NoMethodError:
       undefined method `get' for #<ObjectStore:0x007fc7d604e9a8>
     # /tmp/d20160111-5693-1pocetw/spec.rb:214:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  26) ObjectStore can checkout commits
     Failure/Error: first_commit = repo.commit("First commit").result
     NoMethodError:
       undefined method `result' for #<OutputMessage:0x007fc7d6047428>
     # /tmp/d20160111-5693-1pocetw/spec.rb:220:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  27) ObjectStore can show the objects in a repo after overwriting an object
     Failure/Error: first_commit = repo.commit("First commit").result
     NoMethodError:
       undefined method `result' for #<OutputMessage:0x007fc7d601bc38>
     # /tmp/d20160111-5693-1pocetw/spec.rb:242:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  28) ObjectStore can show the objects of a repo after removing an object
     Failure/Error: first_commit = repo.commit("First commit").result
     NoMethodError:
       undefined method `result' for #<OutputMessage:0x007fc7d6018718>
     # /tmp/d20160111-5693-1pocetw/spec.rb:258:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

Finished in 0.01462 seconds
30 examples, 28 failures

Failed examples:

rspec /tmp/d20160111-5693-1pocetw/spec.rb:21 # ObjectStore can add objects
rspec /tmp/d20160111-5693-1pocetw/spec.rb:26 # ObjectStore can commit objects
rspec /tmp/d20160111-5693-1pocetw/spec.rb:33 # ObjectStore cannot commit without changed objects
rspec /tmp/d20160111-5693-1pocetw/spec.rb:38 # ObjectStore can remove objects
rspec /tmp/d20160111-5693-1pocetw/spec.rb:46 # ObjectStore can commit changes which include only removed objects
rspec /tmp/d20160111-5693-1pocetw/spec.rb:56 # ObjectStore cannot remove objects that are not committed
rspec /tmp/d20160111-5693-1pocetw/spec.rb:63 # ObjectStore can show head
rspec /tmp/d20160111-5693-1pocetw/spec.rb:72 # ObjectStore cannot show head for empty repository
rspec /tmp/d20160111-5693-1pocetw/spec.rb:77 # ObjectStore can show log of changes for a single commit
rspec /tmp/d20160111-5693-1pocetw/spec.rb:86 # ObjectStore can show log of changes for a single commit
rspec /tmp/d20160111-5693-1pocetw/spec.rb:95 # ObjectStore can show log of changes for multiple commits
rspec /tmp/d20160111-5693-1pocetw/spec.rb:111 # ObjectStore shows the log for the current branch only
rspec /tmp/d20160111-5693-1pocetw/spec.rb:131 # ObjectStore cannot show log for empty repository
rspec /tmp/d20160111-5693-1pocetw/spec.rb:136 # ObjectStore can list branches
rspec /tmp/d20160111-5693-1pocetw/spec.rb:143 # ObjectStore can create branches
rspec /tmp/d20160111-5693-1pocetw/spec.rb:148 # ObjectStore cannot create branch if already exists
rspec /tmp/d20160111-5693-1pocetw/spec.rb:153 # ObjectStore can switch branches
rspec /tmp/d20160111-5693-1pocetw/spec.rb:166 # ObjectStore cannot switch to nonexisting branch
rspec /tmp/d20160111-5693-1pocetw/spec.rb:171 # ObjectStore can remove branch
rspec /tmp/d20160111-5693-1pocetw/spec.rb:177 # ObjectStore cannot remove current branch
rspec /tmp/d20160111-5693-1pocetw/spec.rb:182 # ObjectStore cannot remove nonexisting branch
rspec /tmp/d20160111-5693-1pocetw/spec.rb:187 # ObjectStore can be initialized with block
rspec /tmp/d20160111-5693-1pocetw/spec.rb:198 # ObjectStore can return objects
rspec /tmp/d20160111-5693-1pocetw/spec.rb:205 # ObjectStore cannot return not committed objects
rspec /tmp/d20160111-5693-1pocetw/spec.rb:212 # ObjectStore cannot return objects when no commits
rspec /tmp/d20160111-5693-1pocetw/spec.rb:217 # ObjectStore can checkout commits
rspec /tmp/d20160111-5693-1pocetw/spec.rb:239 # ObjectStore can show the objects in a repo after overwriting an object
rspec /tmp/d20160111-5693-1pocetw/spec.rb:253 # ObjectStore can show the objects of a repo after removing an object

История (1 версия и 0 коментара)

Георги обнови решението на 23.11.2015 14:08 (преди над 8 години)

+class OutputMessage
+ attr_reader :message
+ def initialize(message = "Generic command", success = true)
+ @message = message
+ @success = success
+ end
+
+ def success?
+ @success
+ end
+
+ def error?
+ not @success
+ end
+end
+
+class ObjectStore
+ def self.init(&block)
+ object_store = ObjectStore.new
+ object_store.instance_eval(&block) if block_given?
+
+ object_store
+ end
+
+ def initialize
+ @commits = {}
+ @branches = [Branch.new("master")]
+ @current_branch = @branches.last
+ @stored_objects = []
+ end
+
+ def conform_to_result(instance)
+ instance.instance_eval do
+ def result
+ @result
+ end
+
+ def result=(other)
+ @result = other
+ end
+ @result = nil
+ end
+ end
+
+ def add(name, object)
+ message = OutputMessage.new("Added #{name}", true)
+ conform_to_result(message)
+ message.result = object
+ message
+ end
+
+ def commit(message)
+ success = changes > 0
+ error_message = "Nothing to commit, working directory clean."
+ success_message = "#{message}\n\t#{changes} objects changed"
+ object_message = success ? success_message : error_message
+
+ OutputMessage.new(object_message, success)
+ end
+
+ def remove(name)
+ success = object_exists?(name)
+ error_message = "Object #{name} is not committed."
+ success_message = "Added #{name} for removal."
+ object_message = success ? success_message : error_message
+
+ message = OutputMessage.new(object_message, success)
+ conform_to_result(message)
+ message.result = get_object_for_name(name) if success
+ message
+ end
+
+ def checkout(commit_hash)
+ success = commit_exists?(commit_hash)
+ error_message = "Commit #{commit_hash} does not exist."
+ success_message = "HEAD is now at #{commit_hash}."
+ object_message = success ? success_message : error_message
+
+ message = OutputMessage.new(object_message, success)
+ conform_to_result(message)
+ message.result = @commits[commit_hash] if success
+ message
+ end
+
+ def get_object_for_name(name)
+ @stored_objects.select { |object| object.name == name}.first
+ end
+
+ def changes
+ #TODO: changes
+ 1
+ end
+
+ def commit_exists?(hash)
+ @commits.has_key? hash
+ end
+
+ def object_exists?(name)
+ @stored_objects.filter { |object| object.name == name } != []
+ end
+end
+
+class Branch
+
+ def initialize(name = "master", commits = {})
+ @name = name
+ @commits = commits
+ end
+
+ def self.create(branch_name)
+
+ success = branch_exists?(branch_name)
+ error_message = "Branch #{branch_name} already exists."
+ success_message = "Created branch #{branch_name}."
+
+ message = success ? success_message : error_message
+
+ #super.add_branch Branch.new(branch_name, current_commits)
+ OutputMessage.new(message, success)
+ end
+ def branch_exists?
+ #TODO: branch exists
+ true
+ end
+ def current_commits
+ []
+ end
+end