Class: ProjMgr::Svn

Inherits:
Scm
  • Object
show all
Defined in:
lib/projmgr/svn.rb

Overview

A parent class for interacting with a source code repository

Author:

Instance Attribute Summary

Attributes inherited from Scm

#path, #project, #root, #url

Instance Method Summary collapse

Methods inherited from Scm

#initialize, #inspect, #path_exists?, #project_parent_directory

Constructor Details

This class inherits a constructor from ProjMgr::Scm

Instance Method Details

#checkoutString

Checks out a svn repo and places it, in the path specified by the @path variable

Returns:

  • (String)

    The results from the 'svn checkout' command



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/projmgr/svn.rb', line 15

def checkout
  if path_exists? == true
    return "path exists, cannot checkout onto an existing repo"
  else
    parent = project_parent_directory

    results = `cd #{parent} && svn checkout #{@url} #{@project} && cd #{@root}`

    if results =~ /Could not resolve hostname/
      return "unable to resolve hostname"
    else
      return "project checked out to #{parent}/#{@project}"
    end
  end
end

#has_local_changes?Boolean

Checks for local changes in the target repository

Returns:

  • (Boolean)

    if there is local changes or not



51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/projmgr/svn.rb', line 51

def has_local_changes?
  if path_exists? == false
    return false, "Path does not exists, please check the path or check it out"
  else
    results = `cd #{@path} && svn stat && cd #{@root}`

    if results.length > 0
      return true, "has local changes"
    else
      return false, "has no local changes"
    end
  end
end

#updateString

Checks for updates in the target repo

Returns:

  • (String)

    the results of 'git pull' on the target repository



34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/projmgr/svn.rb', line 34

def update
  if path_exists? == true
    results = `cd #{@path} && svn stat && svn update && cd #{@root}`
  else
    return "path does not exists, cannot update repository"
  end
  
  if results.split("\n").size == 1
    return results.chomp
  else
    return "\n" + results
  end
end