Class RSCM::Perforce
In: lib/rscm/scm/perforce.rb
Parent: Base

Perforce RSCM implementation.

Understands operations against multiple client-workspaces You need the p4/p4d executable on the PATH in order for it to work.

Methods

Attributes

client_name  [RW] 
port  [RW] 
pwd  [RW] 
repository_root_dir  [RW] 
user  [RW] 

Public Class methods

[Source]

    # File lib/rscm/scm/perforce.rb, line 26
26:     def initialize(port = "1666", user = ENV["LOGNAME"], pwd = "", client_name = Perforce.next_client_name)
27:       @port, @user, @pwd, @client_name = port, user, pwd, client_name
28:     end

Public Instance methods

[Source]

    # File lib/rscm/scm/perforce.rb, line 79
79:     def add(relative_filename)
80:       p4client.add(relative_filename)
81:     end

[Source]

    # File lib/rscm/scm/perforce.rb, line 56
56:     def can_create_central?
57:       true
58:     end

[Source]

    # File lib/rscm/scm/perforce.rb, line 38
38:     def can_create_central?
39:       true
40:     end

[Source]

    # File lib/rscm/scm/perforce.rb, line 52
52:     def central_exists?
53:       p4admin.central_exists?
54:     end

[Source]

    # File lib/rscm/scm/perforce.rb, line 75
75:     def checkout(to_identifier = nil, &proc)
76:       p4client.checkout(to_identifier, &proc)
77:     end

[Source]

    # File lib/rscm/scm/perforce.rb, line 87
87:     def commit(message, &proc)
88:       p4client.submit(message, &proc)
89:     end

[Source]

    # File lib/rscm/scm/perforce.rb, line 42
42:     def create_central
43:       raise "perforce depot can be created only from tests" unless @repository_root_dir
44:       @p4d = P4Daemon.new(@repository_root_dir)
45:       @p4d.start
46:     end

[Source]

    # File lib/rscm/scm/perforce.rb, line 48
48:     def destroy_central
49:       @p4d.shutdown
50:     end

[Source]

     # File lib/rscm/scm/perforce.rb, line 119
119:     def diff(revfile, &proc)
120:       p4client.diff(revfile, &proc)
121:     end

[Source]

     # File lib/rscm/scm/perforce.rb, line 99
 99:     def edit(file)
100:       p4client.edit(file)
101:     end

[Source]

    # File lib/rscm/scm/perforce.rb, line 68
68:     def import_central(dir, comment)
69:       with_create_client(dir) do |client|
70:         client.add_all(list_files)
71:         client.submit(comment)
72:       end
73:     end

[Source]

     # File lib/rscm/scm/perforce.rb, line 107
107:     def install_trigger(trigger_command, damagecontrol_install_dir)
108:       p4admin.install_trigger(trigger_command)
109:     end

[Source]

    # File lib/rscm/scm/perforce.rb, line 83
83:     def move(relative_src, relative_dest)
84:       p4client.move(checkout_dir, relative_src, relative_dest)
85:     end

[Source]

    # File lib/rscm/scm/perforce.rb, line 30
30:     def p4admin
31:       @p4admin ||= P4Admin.new(@port, @user, @pwd)
32:     end

[Source]

    # File lib/rscm/scm/perforce.rb, line 34
34:     def p4client
35:       @p4client ||= p4admin.create_client(@checkout_dir, @client_name)
36:     end

[Source]

    # File lib/rscm/scm/perforce.rb, line 91
91:     def revisions(from_identifier, to_identifier=Time.infinity)
92:       p4client.revisions(from_identifier, to_identifier)
93:     end

[Source]

    # File lib/rscm/scm/perforce.rb, line 60
60:     def supports_trigger?
61:       true
62:     end

[Source]

    # File lib/rscm/scm/perforce.rb, line 64
64:     def transactional?
65:       true
66:     end

[Source]

     # File lib/rscm/scm/perforce.rb, line 103
103:     def trigger_installed?(trigger_command, trigger_files_checkout_dir)
104:       p4admin.trigger_installed?(trigger_command)
105:     end

[Source]

     # File lib/rscm/scm/perforce.rb, line 115
115:     def trigger_mechanism
116:       "p4 triggers -i"
117:     end

[Source]

     # File lib/rscm/scm/perforce.rb, line 111
111:     def uninstall_trigger(trigger_command, trigger_files_checkout_dir)
112:       p4admin.uninstall_trigger(trigger_command)
113:     end

[Source]

    # File lib/rscm/scm/perforce.rb, line 95
95:     def uptodate?(from_identifier)
96:       p4client.uptodate?
97:     end

[Validate]