Class: ChurnVsComplexity::Timetravel::Worktree

Inherits:
Object
  • Object
show all
Defined in:
lib/churn_vs_complexity/timetravel/worktree.rb

Defined Under Namespace

Classes: Error

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(root_folder:, git_strategy:, number:) ⇒ Worktree

Returns a new instance of Worktree.



8
9
10
11
12
# File 'lib/churn_vs_complexity/timetravel/worktree.rb', line 8

def initialize(root_folder:, git_strategy:, number:)
  @root_folder = root_folder
  @git_strategy = git_strategy
  @number = number
end

Instance Attribute Details

#folderObject (readonly)

Returns the value of attribute folder.



6
7
8
# File 'lib/churn_vs_complexity/timetravel/worktree.rb', line 6

def folder
  @folder
end

Instance Method Details

#checkout(sha) ⇒ Object

Raises:



20
21
22
23
24
# File 'lib/churn_vs_complexity/timetravel/worktree.rb', line 20

def checkout(sha)
  raise Error, 'Worktree not prepared' if @folder.nil?

  @git_strategy.checkout_in_worktree(@folder, sha)
end

#prepareObject



14
15
16
17
18
# File 'lib/churn_vs_complexity/timetravel/worktree.rb', line 14

def prepare
  @folder = prepare_worktree
rescue StandardError => e
  raise Error, "Failed to prepare worktree: #{e.message}"
end

#removeObject

Raises:



26
27
28
29
30
# File 'lib/churn_vs_complexity/timetravel/worktree.rb', line 26

def remove
  raise Error, 'Worktree not prepared' if @folder.nil?

  @git_strategy.remove_worktree(@folder)
end