source: trunk/Backends/Git/Git.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.2 KB
Line 
1unit Git;
2
3interface
4
5uses
6 Classes, SysUtils, VCS, Backend;
7
8type
9
10 { TBackendGit }
11
12 TBackendGit = class(TBackend)
13 constructor Create;
14 function IsWorkingCopy(Directory: string): Boolean; override;
15 end;
16
17
18 { TGit }
19
20 TGit = 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 GetLog(FileName: string; Log: TLogItems); override;
32 end;
33
34 { TRepositoryGit }
35
36 TRepositoryGit = class(TRepository)
37 protected
38 procedure Execute(Parameters: array of string);
39 public
40 procedure Init; override;
41 end;
42
43
44implementation
45
46{ TRepositoryGit }
47
48procedure TRepositoryGit.Execute(Parameters: array of string);
49begin
50 ExecuteProcess('/usr/bin/git', Parameters);
51end;
52
53procedure TRepositoryGit.Init;
54begin
55 Execute(['init', Path]);
56end;
57
58{ TBackendGit }
59
60constructor TBackendGit.Create;
61begin
62 Name := 'Git';
63 HomePage := 'https://git-scm.com/';
64 WorkingCopyClass := TGit;
65 RepositoryClass := TRepositoryGit;
66end;
67
68function TBackendGit.IsWorkingCopy(Directory: string): Boolean;
69begin
70 Result := DirectoryExists(Directory + DirectorySeparator + '.git');
71end;
72
73{ TGit }
74
75procedure TGit.Execute(Parameters: array of string);
76begin
77 ExecuteProcess('/usr/bin/git', Parameters);
78end;
79
80procedure TGit.Checkout;
81begin
82 Execute(['clone', RepositoryURL, Path]);
83end;
84
85procedure TGit.Update;
86begin
87 Execute(['fetch']);
88end;
89
90procedure TGit.CleanUp;
91begin
92 Execute(['cleanup']);
93end;
94
95procedure TGit.Commit(Message: string);
96begin
97 Execute(['config', 'user.name "' + UserName + '"']);
98 Execute(['config', 'user.email "' + Email + '"']);
99 Execute(['commit', '-m "' + Message + '"']);
100end;
101
102procedure TGit.Move(Source, Dest: string);
103begin
104 Execute(['mv', Source, Dest]);
105end;
106
107procedure TGit.Merge;
108begin
109 Execute(['merge']);
110end;
111
112procedure TGit.Add(FileName: string);
113begin
114 Execute(['add', FileName]);
115end;
116
117procedure TGit.GetLog(FileName: string; Log: TLogItems);
118begin
119end;
120
121end.
122
Note: See TracBrowser for help on using the repository browser.