Class: GitDuplicator::Repository

Inherits:
Object
  • Object
show all
Defined in:
lib/git_duplicator/repository/repository.rb

Overview

Basic Repostiroy

Direct Known Subclasses

ServiceRepository

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, url, working_directory = nil) ⇒ Repository

Initializer

Parameters:

  • name (String)

    name of the repository

  • url (String)

    URL of the repository

  • working_directory (String) (defaults to: nil)

    working directory of the repository



13
14
15
16
17
# File 'lib/git_duplicator/repository/repository.rb', line 13

def initialize(name, url, working_directory = nil)
  self.name = name
  self.url = url
  self.working_directory = working_directory
end

Instance Attribute Details

#nameObject

Returns the value of attribute name.



6
7
8
# File 'lib/git_duplicator/repository/repository.rb', line 6

def name
  @name
end

#urlObject

Returns the value of attribute url.



6
7
8
# File 'lib/git_duplicator/repository/repository.rb', line 6

def url
  @url
end

#working_directoryObject

Returns the value of attribute working_directory.



7
8
9
# File 'lib/git_duplicator/repository/repository.rb', line 7

def working_directory
  @working_directory
end

Instance Method Details

#bare_clone(path_to_repo) ⇒ Object

Bare clone the repository

Parameters:

  • path_to_repo (String)

    path to clone the repository to



26
27
28
29
30
# File 'lib/git_duplicator/repository/repository.rb', line 26

def bare_clone(path_to_repo)
  self.repo = Git.clone(url, name, bare: true, path: path_to_repo)
rescue => exception
  raise RepositoryCloningError, exception.message
end

#mirror(mirrored_url) ⇒ Object

Mirror the repository

Parameters:

  • mirrored_url (String)

    URL of mirrored repository



44
45
46
47
48
49
# File 'lib/git_duplicator/repository/repository.rb', line 44

def mirror(mirrored_url)
  fail('No local repo defined. Set the "repo" attribute') unless repo
  repo.push(mirrored_url, '--mirror')
rescue => exception
  raise RepositoryMirorringError, exception.message
end

#mirror_clone(path_to_repo) ⇒ Object

Mirror clone the repository

Parameters:

  • path_to_repo (String)

    path to clone the repository to



34
35
36
37
38
39
40
# File 'lib/git_duplicator/repository/repository.rb', line 34

def mirror_clone(path_to_repo)
  path = File.join(path_to_repo, name)
  command('clone', '--mirror', url, path)
  self.repo = Git.bare(path)
rescue => exception
  raise RepositoryCloningError, exception.message
end

#set_mirrored_remote(mirrored_url) ⇒ Object

Set the remote URL of the mirrored

Parameters:

  • mirrored_url (String)

    URL of mirrored repository



53
54
55
56
57
58
# File 'lib/git_duplicator/repository/repository.rb', line 53

def set_mirrored_remote(mirrored_url)
  fail('No local repo defined. Set the "repo" attribute') unless repo
  command('remote', 'set-url', '--push', 'origin', mirrored_url)
rescue => exception
  raise RepositorySettingRemoteError, exception.message
end

#update_mirroredObject

Update a mirrored repository



61
62
63
64
65
66
67
# File 'lib/git_duplicator/repository/repository.rb', line 61

def update_mirrored
  fail('No local repo defined. Set the "repo" attribute') unless repo
  command('fetch', '-p', 'origin')
  command('push', '--mirror')
rescue => exception
  raise RepositoryMirorredUpdatingError, exception.message
end