source: trunk/Backends/CVS/CVS.pas

Last change on this file was 24, checked in by chronos, 2 weeks ago
  • Fixed: Test cases executed with FormTests form from Common package.
File size: 2.5 KB
Line 
1unit CVS;
2
3interface
4
5uses
6 Classes, SysUtils, VCS, Backend;
7
8type
9
10 { TBackendSubversion }
11
12 TBackendCVS = class(TBackend)
13 constructor Create;
14 function IsWorkingCopy(Directory: string): Boolean; override;
15 end;
16
17
18 { TCVS }
19
20 TCVS = class(TWorkingCopy)
21 protected
22 procedure Execute(Parameters: array of string);
23 public
24 procedure Checkout; override;
25 procedure Update; override;
26 procedure CleanUp; override;
27 procedure Commit(Message: string); override;
28 procedure Move(Source, Dest: string); override;
29 procedure Merge; override;
30 procedure Add(FileName: string); override;
31 procedure Remove(FileName: string); override;
32 procedure GetStatus(FileName: string; Status: TFileStatuses); override;
33 end;
34
35 { TRepositoryCVS }
36
37 TRepositoryCVS = class(TRepository)
38 protected
39 procedure Execute(Parameters: array of string);
40 public
41 procedure Init; override;
42 end;
43
44
45implementation
46
47{ TRepositoryCVS }
48
49procedure TRepositoryCVS.Execute(Parameters: array of string);
50begin
51 ExecuteProcess('/usr/bin/cvs', Parameters);
52end;
53
54procedure TRepositoryCVS.Init;
55begin
56 Execute(['-d ' + GetCurrentDir + DirectorySeparator + Path, 'init']);
57end;
58
59{ TBackendCVS }
60
61constructor TBackendCVS.Create;
62begin
63 Name := 'CVS';
64 HomePage := 'http://www.nongnu.org/cvs/';
65 WorkingCopyClass := TCVS;
66 RepositoryClass := TRepositoryCVS;
67end;
68
69function TBackendCVS.IsWorkingCopy(Directory: string): Boolean;
70begin
71 Result := DirectoryExists(Directory + DirectorySeparator + 'CVS');
72end;
73
74{ TCVS }
75
76procedure TCVS.Execute(Parameters: array of string);
77begin
78 EnvVars.Values['CVSROOT'] := GetCurrentDir + DirectorySeparator + Path;
79 ExecuteProcess('/usr/bin/cvs', Parameters);
80end;
81
82procedure TCVS.Checkout;
83begin
84 Execute(['checkout', RepositoryURL, Path]);
85end;
86
87procedure TCVS.Update;
88begin
89 Execute(['update']);
90end;
91
92procedure TCVS.CleanUp;
93begin
94 Execute(['cleanup']);
95end;
96
97procedure TCVS.Commit(Message: string);
98begin
99 Execute(['commit', '-m "' + Message + '"']);
100end;
101
102procedure TCVS.Move(Source, Dest: string);
103begin
104 // CVS doesn't support moving files and directories
105 RenameFile(Source, Dest);
106 Execute(['rm', Source]);
107 Execute(['add', Dest]);
108end;
109
110procedure TCVS.Merge;
111begin
112 Execute(['merge']);
113end;
114
115procedure TCVS.Add(FileName: string);
116begin
117 Execute(['add', FileName]);
118end;
119
120procedure TCVS.Remove(FileName: string);
121begin
122 DeleteFile(FileName);
123 Execute(['rm', FileName]);
124end;
125
126procedure TCVS.GetStatus(FileName: string; Status: TFileStatuses);
127begin
128 Status.Clear;
129 Execute(['status']);
130
131end;
132
133end.
134
Note: See TracBrowser for help on using the repository browser.