gitdocs 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +6 -14
- data/.codeclimate.yml +26 -0
- data/.rubocop.yml +8 -2
- data/.travis.yml +8 -0
- data/CHANGELOG +13 -0
- data/Gemfile +1 -1
- data/README.md +7 -6
- data/Rakefile +31 -5
- data/bin/gitdocs +1 -0
- data/config.ru +6 -4
- data/gitdocs.gemspec +22 -19
- data/lib/gitdocs.rb +54 -16
- data/lib/gitdocs/browser_app.rb +34 -41
- data/lib/gitdocs/cli.rb +41 -32
- data/lib/gitdocs/configuration.rb +40 -101
- data/lib/gitdocs/git_notifier.rb +111 -0
- data/lib/gitdocs/initializer.rb +83 -0
- data/lib/gitdocs/manager.rb +90 -60
- data/lib/gitdocs/migration/004_add_index_for_path.rb +1 -1
- data/lib/gitdocs/notifier.rb +70 -104
- data/lib/gitdocs/rendering_helper.rb +3 -0
- data/lib/gitdocs/repository.rb +324 -307
- data/lib/gitdocs/repository/committer.rb +77 -0
- data/lib/gitdocs/repository/path.rb +157 -140
- data/lib/gitdocs/search.rb +40 -25
- data/lib/gitdocs/settings_app.rb +5 -3
- data/lib/gitdocs/share.rb +64 -0
- data/lib/gitdocs/synchronizer.rb +40 -0
- data/lib/gitdocs/version.rb +1 -1
- data/lib/gitdocs/views/_header.haml +2 -2
- data/lib/gitdocs/views/dir.haml +3 -3
- data/lib/gitdocs/views/edit.haml +1 -1
- data/lib/gitdocs/views/file.haml +1 -1
- data/lib/gitdocs/views/home.haml +3 -3
- data/lib/gitdocs/views/layout.haml +13 -13
- data/lib/gitdocs/views/revisions.haml +3 -3
- data/lib/gitdocs/views/search.haml +1 -1
- data/lib/gitdocs/views/settings.haml +6 -6
- data/test/integration/cli/full_sync_test.rb +83 -0
- data/test/integration/cli/share_management_test.rb +29 -0
- data/test/integration/cli/status_test.rb +14 -0
- data/test/integration/test_helper.rb +185 -151
- data/test/integration/{browse_test.rb → web/browse_test.rb} +11 -29
- data/test/integration/web/share_management_test.rb +46 -0
- data/test/support/git_factory.rb +276 -0
- data/test/unit/browser_app_test.rb +346 -0
- data/test/unit/configuration_test.rb +8 -70
- data/test/unit/git_notifier_test.rb +116 -0
- data/test/unit/gitdocs_test.rb +90 -0
- data/test/unit/manager_test.rb +36 -0
- data/test/unit/notifier_test.rb +60 -124
- data/test/unit/repository_committer_test.rb +111 -0
- data/test/unit/repository_path_test.rb +92 -76
- data/test/unit/repository_test.rb +243 -356
- data/test/unit/search_test.rb +15 -0
- data/test/unit/settings_app_test.rb +80 -0
- data/test/unit/share_test.rb +97 -0
- data/test/unit/test_helper.rb +17 -3
- metadata +114 -108
- data/lib/gitdocs/runner.rb +0 -108
- data/lib/gitdocs/server.rb +0 -62
- data/test/integration/full_sync_test.rb +0 -66
- data/test/integration/share_management_test.rb +0 -95
- data/test/integration/status_test.rb +0 -21
- data/test/unit/runner_test.rb +0 -122
@@ -0,0 +1,111 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
require File.expand_path('../test_helper', __FILE__)
|
3
|
+
|
4
|
+
describe Gitdocs::Repository::Committer do
|
5
|
+
before do
|
6
|
+
FileUtils.rm_rf('tmp/unit')
|
7
|
+
GitFactory.init(:local)
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:root_dirname) { GitFactory.expand_path(:local) }
|
11
|
+
let(:committer) { Gitdocs::Repository::Committer.new(root_dirname) }
|
12
|
+
|
13
|
+
describe 'initialize' do
|
14
|
+
subject { committer }
|
15
|
+
|
16
|
+
describe 'when directory missing' do
|
17
|
+
let(:root_dirname) { GitFactory.expand_path(:missing) }
|
18
|
+
it { assert_raises(Gitdocs::Repository::InvalidError) { subject } }
|
19
|
+
end
|
20
|
+
|
21
|
+
describe 'when not a repository' do
|
22
|
+
let(:root_dirname) { GitFactory.expand_path(:not_a_repo) }
|
23
|
+
before { FileUtils.mkdir_p(root_dirname) }
|
24
|
+
it { assert_raises(Gitdocs::Repository::InvalidError) { subject } }
|
25
|
+
end
|
26
|
+
|
27
|
+
describe 'when valid repository' do
|
28
|
+
it { subject.must_be_kind_of Gitdocs::Repository::Committer }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#commit' do
|
33
|
+
subject { committer.commit }
|
34
|
+
|
35
|
+
before { Gitdocs.stubs(:log_debug) }
|
36
|
+
|
37
|
+
# TODO: should test the paths which use the message file
|
38
|
+
|
39
|
+
describe 'no previous commits' do
|
40
|
+
describe 'nothing to commit' do
|
41
|
+
it { subject.must_equal false }
|
42
|
+
end
|
43
|
+
|
44
|
+
describe 'changes to commit' do
|
45
|
+
before do
|
46
|
+
GitFactory.write(:local, 'file1', 'foobar')
|
47
|
+
GitFactory.mkdir(:local, 'directory')
|
48
|
+
end
|
49
|
+
it { subject.must_equal true }
|
50
|
+
|
51
|
+
describe 'side effects' do
|
52
|
+
before { subject }
|
53
|
+
it { GitInspector.file_exist?(:local, 'directory/.gitignore').must_equal true }
|
54
|
+
it { GitInspector.commit_count(:local).must_equal 1 }
|
55
|
+
it { GitInspector.last_message(:local).must_equal "Auto-commit from gitdocs\n" }
|
56
|
+
it { GitInspector.clean?(:local).must_equal true }
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe 'previous commits' do
|
62
|
+
before do
|
63
|
+
GitFactory.commit(:local, 'file1', 'foobar')
|
64
|
+
GitFactory.commit(:local, 'file2', 'deadbeef')
|
65
|
+
end
|
66
|
+
|
67
|
+
describe 'nothing to commit' do
|
68
|
+
it { subject.must_equal false }
|
69
|
+
end
|
70
|
+
|
71
|
+
describe 'changes to commit' do
|
72
|
+
before do
|
73
|
+
GitFactory.write(:local, 'file1', 'foobar')
|
74
|
+
GitFactory.rm(:local, 'file2')
|
75
|
+
GitFactory.write(:local, 'file3', 'foobar')
|
76
|
+
GitFactory.mkdir(:local, 'directory')
|
77
|
+
end
|
78
|
+
it { subject.must_equal true }
|
79
|
+
|
80
|
+
describe 'side effects' do
|
81
|
+
before { subject }
|
82
|
+
it { GitInspector.file_exist?(:local, 'directory/.gitignore').must_equal true }
|
83
|
+
it { GitInspector.commit_count(:local).must_equal 3 }
|
84
|
+
it { GitInspector.last_message(:local).must_equal "Auto-commit from gitdocs\n" }
|
85
|
+
it { GitInspector.clean?(:local).must_equal true }
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe '#write_commit_message' do
|
92
|
+
subject { committer.write_commit_message(commit_message) }
|
93
|
+
|
94
|
+
before { subject }
|
95
|
+
|
96
|
+
describe 'with no message' do
|
97
|
+
let(:commit_message) { nil }
|
98
|
+
it { GitInspector.file_exist?(:local, '.gitmessage~').must_equal(false) }
|
99
|
+
end
|
100
|
+
|
101
|
+
describe 'with empty message' do
|
102
|
+
let(:commit_message) { '' }
|
103
|
+
it { GitInspector.file_exist?(:local, '.gitmessage~').must_equal(false) }
|
104
|
+
end
|
105
|
+
|
106
|
+
describe 'with message' do
|
107
|
+
let(:commit_message) { 'foobar' }
|
108
|
+
it { GitInspector.file_content(:local, '.gitmessage~').must_equal('foobar') }
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
@@ -2,46 +2,63 @@
|
|
2
2
|
require File.expand_path('../test_helper', __FILE__)
|
3
3
|
|
4
4
|
describe Gitdocs::Repository::Path do
|
5
|
-
let(:path) { Gitdocs::Repository::Path.new(repository, relative_path) }
|
6
|
-
let(:repository) { stub(root:
|
7
|
-
let(:local_repo_path) { 'tmp/unit/local' }
|
8
|
-
|
5
|
+
let(:path) { Gitdocs::Repository::Path.new(repository, "/#{relative_path}") }
|
6
|
+
let(:repository) { stub(root: GitFactory.expand_path(:local)) }
|
9
7
|
let(:relative_path) { 'directory/file' }
|
10
8
|
|
11
9
|
before do
|
12
10
|
FileUtils.rm_rf('tmp/unit')
|
11
|
+
GitFactory.init(:local)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#relative_dirname' do
|
15
|
+
subject { path.relative_dirname }
|
16
|
+
|
17
|
+
describe 'root' do
|
18
|
+
let(:relative_path) { '' }
|
19
|
+
it { subject.must_equal('') }
|
20
|
+
end
|
21
|
+
|
22
|
+
describe 'root filename' do
|
23
|
+
let(:relative_path) { 'directory' }
|
24
|
+
it { subject.must_equal('') }
|
25
|
+
end
|
26
|
+
|
27
|
+
describe 'non-root filename' do
|
28
|
+
let(:relative_path) { 'directory1/directory2/file' }
|
29
|
+
it { subject.must_equal('directory1/directory2') }
|
30
|
+
end
|
13
31
|
end
|
14
32
|
|
15
33
|
describe '#join' do
|
16
34
|
subject { path.join('new_file') }
|
17
35
|
before { subject }
|
18
|
-
it { path.relative_path.must_equal('
|
19
|
-
it { path.absolute_path.must_equal(
|
36
|
+
it { path.relative_path.must_equal(File.join(relative_path, 'new_file')) }
|
37
|
+
it { path.absolute_path.must_equal(GitFactory.expand_path(:local, relative_path, 'new_file')) }
|
20
38
|
end
|
21
39
|
|
22
40
|
describe '#write' do
|
23
|
-
subject { path.write('foobar'
|
24
|
-
before { repository.expects(:write_commit_message).with(:message) }
|
41
|
+
subject { path.write('foobar') }
|
25
42
|
|
26
43
|
describe 'directory missing' do
|
27
44
|
before { subject }
|
28
|
-
it {
|
45
|
+
it { GitInspector.file_content(:local, relative_path).must_equal "foobar\n" }
|
29
46
|
end
|
30
47
|
|
31
48
|
describe 'directory exists' do
|
32
49
|
before do
|
33
|
-
mkdir(
|
50
|
+
mkdir(File.dirname(relative_path))
|
34
51
|
subject
|
35
52
|
end
|
36
|
-
it {
|
53
|
+
it { GitInspector.file_content(:local, relative_path).must_equal "foobar\n" }
|
37
54
|
end
|
38
55
|
|
39
56
|
describe 'file exists' do
|
40
57
|
before do
|
41
|
-
write(
|
58
|
+
write(relative_path, 'deadbeef')
|
42
59
|
subject
|
43
60
|
end
|
44
|
-
it {
|
61
|
+
it { GitInspector.file_content(:local, relative_path).must_equal "foobar\n" }
|
45
62
|
end
|
46
63
|
end
|
47
64
|
|
@@ -50,23 +67,23 @@ describe Gitdocs::Repository::Path do
|
|
50
67
|
|
51
68
|
describe 'when directory does not exist' do
|
52
69
|
before { subject }
|
53
|
-
it {
|
70
|
+
it { GitInspector.file_content(:local, relative_path).must_equal '' }
|
54
71
|
end
|
55
72
|
|
56
73
|
describe 'when directory already exists' do
|
57
74
|
before do
|
58
|
-
mkdir(
|
75
|
+
mkdir(File.dirname(relative_path))
|
59
76
|
subject
|
60
77
|
end
|
61
|
-
it {
|
78
|
+
it { GitInspector.file_content(:local, relative_path).must_equal '' }
|
62
79
|
end
|
63
80
|
|
64
81
|
describe 'when file already exists' do
|
65
82
|
before do
|
66
|
-
write(
|
83
|
+
write(relative_path, 'test')
|
67
84
|
subject
|
68
85
|
end
|
69
|
-
it {
|
86
|
+
it { GitInspector.file_content(:local, relative_path).must_equal 'test' }
|
70
87
|
end
|
71
88
|
end
|
72
89
|
|
@@ -75,23 +92,35 @@ describe Gitdocs::Repository::Path do
|
|
75
92
|
|
76
93
|
describe 'directory does not exist' do
|
77
94
|
before { subject }
|
78
|
-
it { File.directory?(
|
95
|
+
it { File.directory?(GitFactory.expand_path(:local, relative_path)) }
|
79
96
|
end
|
80
97
|
|
81
98
|
describe 'directory does exist' do
|
82
99
|
before do
|
83
|
-
mkdir(
|
100
|
+
mkdir(relative_path)
|
84
101
|
subject
|
85
102
|
end
|
86
|
-
it { File.directory?(
|
103
|
+
it { File.directory?(GitFactory.expand_path(:local, relative_path)) }
|
87
104
|
end
|
88
105
|
|
89
106
|
describe 'already exists as a file' do
|
90
|
-
before { write(
|
107
|
+
before { write(relative_path, 'foobar') }
|
91
108
|
it { assert_raises(Errno::EEXIST) { subject } }
|
92
109
|
end
|
93
110
|
end
|
94
111
|
|
112
|
+
describe '#mv' do
|
113
|
+
subject { path.mv(source_filename) }
|
114
|
+
let(:source_filename) { File.join(GitFactory.working_directory, 'move_me') }
|
115
|
+
before do
|
116
|
+
FileUtils.mkdir_p(File.dirname(source_filename))
|
117
|
+
File.write(source_filename, 'foobar')
|
118
|
+
|
119
|
+
subject
|
120
|
+
end
|
121
|
+
it { GitInspector.file_content(:local, relative_path).must_equal('foobar') }
|
122
|
+
end
|
123
|
+
|
95
124
|
describe '#remove' do
|
96
125
|
subject { path.remove }
|
97
126
|
|
@@ -100,16 +129,16 @@ describe Gitdocs::Repository::Path do
|
|
100
129
|
end
|
101
130
|
|
102
131
|
describe 'directory' do
|
103
|
-
before { mkdir(
|
132
|
+
before { mkdir(relative_path) }
|
104
133
|
it { subject.must_be_nil }
|
105
134
|
end
|
106
135
|
|
107
136
|
describe 'file' do
|
108
137
|
before do
|
109
|
-
write(
|
138
|
+
write(relative_path, 'foobar')
|
110
139
|
subject
|
111
140
|
end
|
112
|
-
it {
|
141
|
+
it { GitInspector.file_exist?(:local, relative_path).must_equal false }
|
113
142
|
end
|
114
143
|
end
|
115
144
|
|
@@ -121,22 +150,22 @@ describe Gitdocs::Repository::Path do
|
|
121
150
|
end
|
122
151
|
|
123
152
|
describe 'directory' do
|
124
|
-
before { mkdir(
|
153
|
+
before { mkdir(relative_path) }
|
125
154
|
it { subject.must_equal false }
|
126
155
|
end
|
127
156
|
|
128
157
|
describe 'not a text file' do
|
129
|
-
let(:relative_path) { '
|
158
|
+
let(:relative_path) { 'file.png' }
|
130
159
|
it { subject.must_equal false }
|
131
160
|
end
|
132
161
|
|
133
162
|
describe 'empty file' do
|
134
|
-
before { write(
|
163
|
+
before { write(relative_path, '') }
|
135
164
|
it { subject.must_equal true }
|
136
165
|
end
|
137
166
|
|
138
167
|
describe 'text file' do
|
139
|
-
before { write(
|
168
|
+
before { write(relative_path, 'foobar') }
|
140
169
|
it { subject.must_equal true }
|
141
170
|
end
|
142
171
|
end
|
@@ -148,27 +177,27 @@ describe Gitdocs::Repository::Path do
|
|
148
177
|
end
|
149
178
|
|
150
179
|
describe 'when missing' do
|
151
|
-
let(:commit)
|
180
|
+
let(:commit) { nil }
|
152
181
|
it { assert_raises(RuntimeError) { subject } }
|
153
182
|
end
|
154
183
|
|
155
|
-
describe 'on a 'do
|
184
|
+
describe 'on a ' do
|
156
185
|
let(:commit) { stub(author: { name: :name, time: :time }) }
|
157
186
|
before do
|
158
|
-
write(
|
159
|
-
write(
|
160
|
-
write(
|
187
|
+
write(File.join(%w(directory0 file0)), '')
|
188
|
+
write(File.join(%w(directory file1)), 'foo')
|
189
|
+
write(File.join(%w(directory file2)), 'bar')
|
161
190
|
end
|
162
191
|
|
163
192
|
describe 'file size 0' do
|
164
|
-
let(:relative_path) {
|
193
|
+
let(:relative_path) { File.join(%w(directory0 file0)) }
|
165
194
|
it { subject[:author].must_equal :name }
|
166
195
|
it { subject[:size].must_equal(-1) }
|
167
196
|
it { subject[:modified].must_equal :time }
|
168
197
|
end
|
169
198
|
|
170
199
|
describe 'file non-zero size' do
|
171
|
-
let(:relative_path) {
|
200
|
+
let(:relative_path) { File.join(%w(directory file1)) }
|
172
201
|
it { subject[:author].must_equal :name }
|
173
202
|
it { subject[:size].must_equal(3) }
|
174
203
|
it { subject[:modified].must_equal :time }
|
@@ -198,12 +227,12 @@ describe Gitdocs::Repository::Path do
|
|
198
227
|
end
|
199
228
|
|
200
229
|
describe 'directory' do
|
201
|
-
before { mkdir(
|
230
|
+
before { mkdir(relative_path) }
|
202
231
|
it { subject.must_equal true }
|
203
232
|
end
|
204
233
|
|
205
234
|
describe 'file' do
|
206
|
-
before { write(
|
235
|
+
before { write(relative_path, 'foobar') }
|
207
236
|
it { subject.must_equal true }
|
208
237
|
end
|
209
238
|
end
|
@@ -216,12 +245,12 @@ describe Gitdocs::Repository::Path do
|
|
216
245
|
end
|
217
246
|
|
218
247
|
describe 'directory' do
|
219
|
-
before { mkdir(
|
248
|
+
before { mkdir(relative_path) }
|
220
249
|
it { subject.must_equal true }
|
221
250
|
end
|
222
251
|
|
223
252
|
describe 'file' do
|
224
|
-
before { write(
|
253
|
+
before { write(relative_path, 'foobar') }
|
225
254
|
it { subject.must_equal false }
|
226
255
|
end
|
227
256
|
end
|
@@ -231,7 +260,7 @@ describe Gitdocs::Repository::Path do
|
|
231
260
|
|
232
261
|
describe 'no revision' do
|
233
262
|
let(:ref) { nil }
|
234
|
-
it { subject.must_equal
|
263
|
+
it { subject.must_equal GitFactory.expand_path(:local, relative_path) }
|
235
264
|
end
|
236
265
|
|
237
266
|
describe 'with revision' do
|
@@ -258,13 +287,13 @@ describe Gitdocs::Repository::Path do
|
|
258
287
|
end
|
259
288
|
|
260
289
|
describe 'no README' do
|
261
|
-
before { mkdir(
|
290
|
+
before { mkdir(relative_path) }
|
262
291
|
it { subject.must_be_nil }
|
263
292
|
end
|
264
293
|
|
265
294
|
describe 'with README.md' do
|
266
|
-
before { write('
|
267
|
-
it { subject.must_equal
|
295
|
+
before { write(File.join(relative_path, 'README.md'), 'foobar') }
|
296
|
+
it { subject.must_equal GitFactory.expand_path(:local, relative_path, 'README.md') }
|
268
297
|
end
|
269
298
|
end
|
270
299
|
|
@@ -276,21 +305,20 @@ describe Gitdocs::Repository::Path do
|
|
276
305
|
end
|
277
306
|
|
278
307
|
describe 'file' do
|
279
|
-
before { write(
|
308
|
+
before { write(relative_path, 'foobar') }
|
280
309
|
it { subject.must_be_nil }
|
281
310
|
end
|
282
311
|
|
283
312
|
describe 'directory' do
|
284
313
|
before do
|
285
|
-
write('
|
286
|
-
mkdir('
|
287
|
-
write('
|
288
|
-
write('
|
314
|
+
write(File.join(relative_path, '.hidden'), 'beef')
|
315
|
+
mkdir(File.join(relative_path, 'dir1'))
|
316
|
+
write(File.join(relative_path, 'file1'), 'foo')
|
317
|
+
write(File.join(relative_path, 'file2'), 'bar')
|
289
318
|
|
290
319
|
# Paths which should not be included
|
291
|
-
write('
|
292
|
-
write('
|
293
|
-
write('directory/file/.gitmessage~', 'test')
|
320
|
+
write(File.join(relative_path, '.gitignore'), 'test')
|
321
|
+
write(File.join(relative_path, '.gitmessage~'), 'test')
|
294
322
|
end
|
295
323
|
|
296
324
|
it { subject.size.must_equal 4 }
|
@@ -307,12 +335,12 @@ describe Gitdocs::Repository::Path do
|
|
307
335
|
end
|
308
336
|
|
309
337
|
describe 'directory' do
|
310
|
-
before { mkdir(
|
338
|
+
before { mkdir(relative_path) }
|
311
339
|
it { subject.must_be_nil }
|
312
340
|
end
|
313
341
|
|
314
342
|
describe 'file' do
|
315
|
-
before { write(
|
343
|
+
before { write(relative_path, 'foobar') }
|
316
344
|
it { subject.must_equal 'foobar' }
|
317
345
|
end
|
318
346
|
end
|
@@ -321,10 +349,12 @@ describe Gitdocs::Repository::Path do
|
|
321
349
|
subject { path.revisions }
|
322
350
|
|
323
351
|
before do
|
324
|
-
repository.stubs(:commits_for).returns(
|
325
|
-
|
326
|
-
|
327
|
-
|
352
|
+
repository.stubs(:commits_for).returns(
|
353
|
+
[
|
354
|
+
stub(oid: '1234567890', message: "short1\nlong", author: { name: :name1, time: :time1 }),
|
355
|
+
stub(oid: '0987654321', message: "short2\nlong", author: { name: :name2, time: :time2 })
|
356
|
+
]
|
357
|
+
)
|
328
358
|
end
|
329
359
|
it { subject.size.must_equal(2) }
|
330
360
|
it { subject[0].must_equal(commit: '1234567', subject: 'short1', author: :name1, date: :time1) }
|
@@ -342,7 +372,7 @@ describe Gitdocs::Repository::Path do
|
|
342
372
|
|
343
373
|
describe 'blob present' do
|
344
374
|
let(:blob) { stub(text: 'deadbeef') }
|
345
|
-
before { path.expects(:write).with('deadbeef'
|
375
|
+
before { path.expects(:write).with('deadbeef') }
|
346
376
|
it { subject }
|
347
377
|
end
|
348
378
|
end
|
@@ -352,24 +382,10 @@ describe Gitdocs::Repository::Path do
|
|
352
382
|
private
|
353
383
|
|
354
384
|
def write(filename, content)
|
355
|
-
|
356
|
-
File.write(File.join(local_repo_path, filename), content)
|
357
|
-
end
|
358
|
-
|
359
|
-
def mkdir(*path)
|
360
|
-
FileUtils.mkdir_p(File.join(local_repo_path, *path))
|
361
|
-
end
|
362
|
-
|
363
|
-
def local_file_exist?
|
364
|
-
File.exist?(File.join(local_repo_path, relative_path))
|
365
|
-
end
|
366
|
-
|
367
|
-
def local_file_content
|
368
|
-
return nil unless local_file_exist?
|
369
|
-
File.read(File.join(local_repo_path, relative_path))
|
385
|
+
GitFactory.write(:local, filename, content)
|
370
386
|
end
|
371
387
|
|
372
|
-
def
|
373
|
-
|
388
|
+
def mkdir(path)
|
389
|
+
GitFactory.mkdir(:local, path)
|
374
390
|
end
|
375
391
|
end
|