git_fame 2.2.0 → 2.3.1
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 +4 -4
- data/bin/git-fame +1 -1
- data/lib/git_fame/base.rb +28 -27
- data/lib/git_fame/version.rb +1 -1
- data/spec/bin_spec.rb +3 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f60cc8e1ebb619b563a10256cd86549fdd59a901
|
4
|
+
data.tar.gz: 93a5887855e265c463bd3c8ab1a48c24a107cfa1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20cbb0c37d9d3637c0b9c3e73241c4a10e73ffa877e76e97014e7ddcfab064d03c1f2932b3d1b6e441ce298bdb8b7d96dffb9530f570a1ac19c75f844cb63673
|
7
|
+
data.tar.gz: 86e2e53e6f36480ec4bb3b9f99925a77429c4c9d5af99809558ff65b49fab52f82b523a7aea5219f7ae5e8f72ae4169d7f431f8e87c7887d52fb7ab56cea9569
|
data/bin/git-fame
CHANGED
@@ -28,7 +28,7 @@ unless GitFame::SORT.include?(opts[:sort])
|
|
28
28
|
Trollop::die :sort, "must be one of the following; #{GitFame::SORT.join(", ")}"
|
29
29
|
end
|
30
30
|
|
31
|
-
if opts[:timeout] <= 0
|
31
|
+
if opts[:timeout] != -1 and opts[:timeout] <= 0
|
32
32
|
Trollop::die :timeout, "must be positive"
|
33
33
|
end
|
34
34
|
|
data/lib/git_fame/base.rb
CHANGED
@@ -52,11 +52,12 @@ module GitFame
|
|
52
52
|
# Default sorting option is by loc
|
53
53
|
@include = args.fetch(:include, "").split(",")
|
54
54
|
@sort = args.fetch(:sort, @default_settings.fetch(:sorting))
|
55
|
-
@repository = args.fetch(:repository)
|
55
|
+
@repository = File.expand_path(args.fetch(:repository))
|
56
56
|
@by_type = args.fetch(:by_type, false)
|
57
57
|
@branch = args.fetch(:branch, nil)
|
58
58
|
@everything = args.fetch(:everything, false)
|
59
59
|
@timeout = args.fetch(:timeout, CMD_TIMEOUT)
|
60
|
+
@git_dir = File.join(@repository, ".git")
|
60
61
|
|
61
62
|
# Figure out what branch the caller is using
|
62
63
|
if present?(@branch = args[:branch])
|
@@ -89,7 +90,6 @@ module GitFame
|
|
89
90
|
@authors = {}
|
90
91
|
@cache = {}
|
91
92
|
@verbose = args.fetch(:verbose, false)
|
92
|
-
|
93
93
|
populate
|
94
94
|
end
|
95
95
|
|
@@ -186,7 +186,7 @@ module GitFame
|
|
186
186
|
# -w ignore whitespaces (defined in @wopt)
|
187
187
|
# -M detect moved or copied lines.
|
188
188
|
# -p procelain mode (parsed by BlameParser)
|
189
|
-
execute("git blame #{encoding_opt} -p -M #{default_params} #{commit_range.to_s} #{@wopt} -- '#{file}'") do |result|
|
189
|
+
execute("git #{git_directory_params} blame #{encoding_opt} -p -M #{default_params} #{commit_range.to_s} #{@wopt} -- '#{file}'") do |result|
|
190
190
|
BlameParser.new(result.to_s).parse.each do |row|
|
191
191
|
next if row[:boundary]
|
192
192
|
|
@@ -206,7 +206,7 @@ module GitFame
|
|
206
206
|
end
|
207
207
|
|
208
208
|
# Get repository summery and update each author accordingly
|
209
|
-
execute("git shortlog #{encoding_opt} #{default_params} -se #{commit_range.to_s}") do |result|
|
209
|
+
execute("git #{git_directory_params} shortlog #{encoding_opt} #{default_params} -se #{commit_range.to_s}") do |result|
|
210
210
|
result.to_s.split("\n").map do |line|
|
211
211
|
_, commits, name, email = line.match(/(\d+)\s+(.+)\s+<(.+?)>/).to_a
|
212
212
|
author = author_by_email(email)
|
@@ -233,7 +233,7 @@ module GitFame
|
|
233
233
|
|
234
234
|
# Return mime type for file (form: x/y)
|
235
235
|
def mime_type_for_file(file)
|
236
|
-
execute("git show #{commit_range.range.last}:'#{file}' | LC_ALL=C file --mime-type -").to_s.
|
236
|
+
execute("git #{git_directory_params} show #{commit_range.range.last}:'#{file}' | LC_ALL=C file --mime-type -").to_s.
|
237
237
|
match(/.+: (.+?)$/).to_a[1]
|
238
238
|
end
|
239
239
|
|
@@ -312,8 +312,7 @@ module GitFame
|
|
312
312
|
# Command to be executed at @repository
|
313
313
|
# @silent = true wont raise an error on exit code =! 0
|
314
314
|
def execute(command, silent = false, &block)
|
315
|
-
result =
|
316
|
-
|
315
|
+
result = run_with_timeout(command)
|
317
316
|
if result.success? or silent
|
318
317
|
warn command if @verbose
|
319
318
|
return result unless block
|
@@ -324,21 +323,19 @@ module GitFame
|
|
324
323
|
raise Error, cmd_error_message(command, $!.message)
|
325
324
|
end
|
326
325
|
|
327
|
-
def
|
326
|
+
def run_with_timeout(command)
|
328
327
|
if @timeout != -1
|
329
|
-
Timeout.timeout(CMD_TIMEOUT) {
|
328
|
+
Timeout.timeout(CMD_TIMEOUT) { run_no_timeout(command) }
|
330
329
|
else
|
331
|
-
|
330
|
+
run_no_timeout(command)
|
332
331
|
end
|
333
332
|
end
|
334
333
|
|
335
|
-
def
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
Result.new(output.scrub.strip, thread.value.success?)
|
341
|
-
end
|
334
|
+
def run_no_timeout(command)
|
335
|
+
out, err, status = Open3.capture3(command)
|
336
|
+
ok = status.success?
|
337
|
+
output = ok ? out : err
|
338
|
+
Result.new(output.scrub.strip, ok)
|
342
339
|
end
|
343
340
|
|
344
341
|
def cmd_error_message(command, message)
|
@@ -347,7 +344,7 @@ module GitFame
|
|
347
344
|
|
348
345
|
# Does @branch exist in the current git repo?
|
349
346
|
def branch_exists?(branch)
|
350
|
-
execute("git show-ref '#{branch}'", true) do |result|
|
347
|
+
execute("git #{git_directory_params} show-ref '#{branch}'", true) do |result|
|
351
348
|
result.success?
|
352
349
|
end
|
353
350
|
end
|
@@ -361,7 +358,7 @@ module GitFame
|
|
361
358
|
return @default_settings.fetch(:branch)
|
362
359
|
end
|
363
360
|
|
364
|
-
execute("git rev-parse HEAD | head -1") do |result|
|
361
|
+
execute("git #{git_directory_params} rev-parse HEAD | head -1") do |result|
|
365
362
|
return result.data.split(" ")[0] if result.success?
|
366
363
|
end
|
367
364
|
raise Error, "No branch found. Define one using --branch=<branch>"
|
@@ -375,11 +372,11 @@ module GitFame
|
|
375
372
|
# extensions in @extensions defined by the user
|
376
373
|
def current_files
|
377
374
|
if commit_range.is_range?
|
378
|
-
execute("git diff -
|
375
|
+
execute("git #{git_directory_params} -c diff.renames=0 -c diff.renameLimit=1000 diff -M -C -c --name-only --diff-filter=AM #{encoding_opt} #{default_params} #{commit_range.to_s}") do |result|
|
379
376
|
filter_files(result)
|
380
377
|
end
|
381
378
|
else
|
382
|
-
execute("git ls-tree -r #{commit_range.to_s}
|
379
|
+
execute("git #{git_directory_params} ls-tree --name-only -r #{commit_range.to_s}") do |result|
|
383
380
|
filter_files(result)
|
384
381
|
end
|
385
382
|
end
|
@@ -389,6 +386,10 @@ module GitFame
|
|
389
386
|
"--date=local"
|
390
387
|
end
|
391
388
|
|
389
|
+
def git_directory_params
|
390
|
+
"--git-dir='#{@git_dir}' --work-tree='#{@repository}'"
|
391
|
+
end
|
392
|
+
|
392
393
|
def encoding_opt
|
393
394
|
"--encoding=UTF-8"
|
394
395
|
end
|
@@ -436,11 +437,11 @@ module GitFame
|
|
436
437
|
commit2 = @branch
|
437
438
|
else
|
438
439
|
# Try finding a commit that day
|
439
|
-
commit2 = execute("git rev-list --before='#{@before} 23:59:59' --after='#{@before} 00:00:01' #{default_params} '#{@branch}' | head -1").to_s
|
440
|
+
commit2 = execute("git #{git_directory_params} rev-list --before='#{@before} 23:59:59' --after='#{@before} 00:00:01' #{default_params} '#{@branch}' | head -1").to_s
|
440
441
|
|
441
442
|
# Otherwise, look for the closest commit
|
442
443
|
if blank?(commit2)
|
443
|
-
commit2 = execute("git rev-list --before='#{@before}' #{default_params} '#{@branch}' | head -1").to_s
|
444
|
+
commit2 = execute("git #{git_directory_params} rev-list --before='#{@before}' #{default_params} '#{@branch}' | head -1").to_s
|
444
445
|
end
|
445
446
|
end
|
446
447
|
end
|
@@ -450,7 +451,7 @@ module GitFame
|
|
450
451
|
return present?(commit2) ? commit2 : @branch
|
451
452
|
end
|
452
453
|
|
453
|
-
commit1 = execute("git rev-list --before='#{end_of_yesterday(@after)}' #{default_params} '#{@branch}' | head -1").to_s
|
454
|
+
commit1 = execute("git #{git_directory_params} rev-list --before='#{end_of_yesterday(@after)}' #{default_params} '#{@branch}' | head -1").to_s
|
454
455
|
|
455
456
|
# No commit found this early
|
456
457
|
# If NO end date is choosen, just use current branch
|
@@ -478,11 +479,11 @@ module GitFame
|
|
478
479
|
end
|
479
480
|
|
480
481
|
def start_commit_date
|
481
|
-
Time.parse(execute("git log #{encoding_opt} --pretty=format:'%cd' #{default_params} #{@branch} | tail -1").to_s)
|
482
|
+
Time.parse(execute("git #{git_directory_params} log #{encoding_opt} --pretty=format:'%cd' #{default_params} #{@branch} | tail -1").to_s)
|
482
483
|
end
|
483
484
|
|
484
485
|
def end_commit_date
|
485
|
-
Time.parse(execute("git log #{encoding_opt} --pretty=format:'%cd' #{default_params} #{@branch} | head -1").to_s)
|
486
|
+
Time.parse(execute("git #{git_directory_params} log #{encoding_opt} --pretty=format:'%cd' #{default_params} #{@branch} | head -1").to_s)
|
486
487
|
end
|
487
488
|
|
488
489
|
def end_date
|
@@ -514,7 +515,7 @@ module GitFame
|
|
514
515
|
end
|
515
516
|
|
516
517
|
# TODO: Are all these needed?
|
517
|
-
memoize :populate, :
|
518
|
+
memoize :populate, :run_with_timeout
|
518
519
|
memoize :current_range, :current_files
|
519
520
|
memoize :printable_fields, :files_from_author
|
520
521
|
memoize :raw_fields, :fields, :file_list
|
data/lib/git_fame/version.rb
CHANGED
data/spec/bin_spec.rb
CHANGED
@@ -34,7 +34,8 @@ describe "bin/git-fame" do
|
|
34
34
|
"--help",
|
35
35
|
"--verbose",
|
36
36
|
"--everything",
|
37
|
-
"--timeout=10"
|
37
|
+
"--timeout=10",
|
38
|
+
"--timeout=-1"
|
38
39
|
].each do |option|
|
39
40
|
it "should support #{option}" do
|
40
41
|
run(option).should be_a_succees
|
@@ -67,8 +68,8 @@ describe "bin/git-fame" do
|
|
67
68
|
it "should fail on invalid timeout" do
|
68
69
|
run("--timeout=hello").should_not be_a_succees
|
69
70
|
run("--timeout=").should_not be_a_succees
|
70
|
-
run("--timeout=-1").should_not be_a_succees
|
71
71
|
run("--timeout=0").should_not be_a_succees
|
72
|
+
run("--timeout=-2").should_not be_a_succees
|
72
73
|
end
|
73
74
|
|
74
75
|
it "should not print stack trace on invalid dates (--before)" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git_fame
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Linus Oleander
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ruby-progressbar
|