summaryrefslogtreecommitdiffstats
path: root/lib/git/raw
diff options
context:
space:
mode:
authorscott Chacon <schacon@agadorsparticus.(none)>2007-11-27 08:06:51 -0800
committerscott Chacon <schacon@agadorsparticus.(none)>2007-11-27 08:06:51 -0800
commit07ebb951368ed31bdaebc2e820c62ced22c8bbe4 (patch)
tree729d483ad8f66cf7907bedbb2d01dec6d2856654 /lib/git/raw
parent3fddf300bd33b356540bee50ae17590ea9b61341 (diff)
downloadthird_party-ruby-git-07ebb951368ed31bdaebc2e820c62ced22c8bbe4.tar.gz
third_party-ruby-git-07ebb951368ed31bdaebc2e820c62ced22c8bbe4.tar.xz
third_party-ruby-git-07ebb951368ed31bdaebc2e820c62ced22c8bbe4.zip
added Matthias and Simon to credits for the gitrb code
fixed an issue with raw object tree formatting added ls_tree implementation in raw git
Diffstat (limited to 'lib/git/raw')
-rw-r--r--lib/git/raw/internal/loose.rb10
-rw-r--r--lib/git/raw/internal/mmap.rb10
-rw-r--r--lib/git/raw/internal/object.rb10
-rw-r--r--lib/git/raw/internal/pack.rb10
-rw-r--r--lib/git/raw/object.rb28
-rw-r--r--lib/git/raw/repository.rb19
6 files changed, 83 insertions, 4 deletions
diff --git a/lib/git/raw/internal/loose.rb b/lib/git/raw/internal/loose.rb
index d8ec6fb..53d4334 100644
--- a/lib/git/raw/internal/loose.rb
+++ b/lib/git/raw/internal/loose.rb
@@ -1,3 +1,13 @@
+#
+# converted from the gitrb project
+#
+# authors:
+# Matthias Lederhofer <matled@gmx.net>
+# Simon 'corecode' Schubert <corecode@fs.ei.tum.de>
+#
+# provides native ruby access to git objects and pack files
+#
+
require 'zlib'
require 'digest/sha1'
diff --git a/lib/git/raw/internal/mmap.rb b/lib/git/raw/internal/mmap.rb
index 15b5628..78de164 100644
--- a/lib/git/raw/internal/mmap.rb
+++ b/lib/git/raw/internal/mmap.rb
@@ -1,3 +1,13 @@
+#
+# converted from the gitrb project
+#
+# authors:
+# Matthias Lederhofer <matled@gmx.net>
+# Simon 'corecode' Schubert <corecode@fs.ei.tum.de>
+#
+# provides native ruby access to git objects and pack files
+#
+
begin
require 'mmap'
rescue LoadError
diff --git a/lib/git/raw/internal/object.rb b/lib/git/raw/internal/object.rb
index 7f95685..172b917 100644
--- a/lib/git/raw/internal/object.rb
+++ b/lib/git/raw/internal/object.rb
@@ -1,3 +1,13 @@
+#
+# converted from the gitrb project
+#
+# authors:
+# Matthias Lederhofer <matled@gmx.net>
+# Simon 'corecode' Schubert <corecode@fs.ei.tum.de>
+#
+# provides native ruby access to git objects and pack files
+#
+
require 'digest/sha1'
module Git
diff --git a/lib/git/raw/internal/pack.rb b/lib/git/raw/internal/pack.rb
index 6980a98..8d5141e 100644
--- a/lib/git/raw/internal/pack.rb
+++ b/lib/git/raw/internal/pack.rb
@@ -1,3 +1,13 @@
+#
+# converted from the gitrb project
+#
+# authors:
+# Matthias Lederhofer <matled@gmx.net>
+# Simon 'corecode' Schubert <corecode@fs.ei.tum.de>
+#
+# provides native ruby access to git objects and pack files
+#
+
require 'zlib'
require 'git/raw/internal/object'
require 'git/raw/internal/mmap'
diff --git a/lib/git/raw/object.rb b/lib/git/raw/object.rb
index f10d853..5c3969d 100644
--- a/lib/git/raw/object.rb
+++ b/lib/git/raw/object.rb
@@ -1,3 +1,13 @@
+#
+# converted from the gitrb project
+#
+# authors:
+# Matthias Lederhofer <matled@gmx.net>
+# Simon 'corecode' Schubert <corecode@fs.ei.tum.de>
+#
+# provides native ruby access to git objects and pack files
+#
+
require 'digest/sha1'
module Git
@@ -132,6 +142,21 @@ module Git
end
end
+ def format_type
+ case type
+ when :link
+ 'link'
+ when :directory
+ 'tree'
+ when :file
+ 'blob'
+ end
+ end
+
+ def format_mode
+ "%06o" % @mode
+ end
+
def raw
"%o %s\0%s" % [@mode, @name, [@sha1].pack("H*")]
end
@@ -160,8 +185,7 @@ module Git
def raw_content
# TODO: sort correctly
#@entry.sort { |a,b| a.name <=> b.name }.
- @entry.
- collect { |e| e.raw }.join
+ @entry.collect { |e| [[e.format_mode, e.format_type, e.sha1].join(' '), e.name].join("\t") }.join("\n")
end
end
diff --git a/lib/git/raw/repository.rb b/lib/git/raw/repository.rb
index 4a1c897..bd5e971 100644
--- a/lib/git/raw/repository.rb
+++ b/lib/git/raw/repository.rb
@@ -1,3 +1,13 @@
+#
+# converted from the gitrb project
+#
+# authors:
+# Matthias Lederhofer <matled@gmx.net>
+# Simon 'corecode' Schubert <corecode@fs.ei.tum.de>
+#
+# provides native ruby access to git objects and pack files
+#
+
require 'git/raw/internal/object'
require 'git/raw/internal/pack'
require 'git/raw/internal/loose'
@@ -28,9 +38,14 @@ module Git
puts
end
end
-
+
+ def object(sha)
+ o = get_raw_object_by_sha1(sha)
+ c = Git::Raw::Object.from_raw(o)
+ end
+
def cat_file(sha)
- get_raw_object_by_sha1(sha).content rescue nil
+ object(sha).raw_content
end
def log(sha, count = 30)