lib/sdoc/github.rb in sdoc-1.0.0.rc3 vs lib/sdoc/github.rb in sdoc-1.0.0
- old
+ new
@@ -1,18 +1,17 @@
module SDoc::GitHub
def github_url(path)
+ return false unless have_git?
+
unless @github_url_cache.has_key? path
@github_url_cache[path] = false
file = @store.find_file_named(path)
if file
base_url = repository_url(path)
if base_url
- sha1 = commit_sha1(path)
- if sha1
- relative_url = path_relative_to_repository(path)
- @github_url_cache[path] = "#{base_url}#{sha1}#{relative_url}"
- end
+ relative_url = path_relative_to_repository(path)
+ @github_url_cache[path] = "#{base_url}#{last_commit_sha1}#{relative_url}"
end
end
end
@github_url_cache[path]
end
@@ -22,26 +21,26 @@
def have_git?
@have_git = system('git --version > /dev/null 2>&1') if @have_git.nil?
@have_git
end
- def commit_sha1(path)
- return false unless have_git?
- name = File.basename(path)
- s = Dir.chdir(File.join(base_dir, File.dirname(path))) do
- `git log -1 --pretty=format:"commit %H" #{name}`
+ def last_commit_sha1
+ return @sha1 if defined?(@sha1)
+
+ @sha1 = Dir.chdir(base_dir) do
+ `git rev-parse HEAD`.chomp
end
- m = s.match(/commit\s+(\S+)/)
- m ? m[1] : false
end
def repository_url(path)
- return false unless have_git?
+ return @repository_url if defined?(@repository_url)
+
s = Dir.chdir(File.join(base_dir, File.dirname(path))) do
`git config --get remote.origin.url`
end
+
m = s.match(%r{github.com[/:](.*)\.git$})
- m ? "https://github.com/#{m[1]}/blob/" : false
+ @repository_url = m ? "https://github.com/#{m[1]}/blob/" : false
end
def path_relative_to_repository(path)
absolute_path = File.join(base_dir, path)
root = path_to_git_dir(File.dirname(absolute_path))