grote update
This commit is contained in:
parent
77a827e618
commit
dd33751ebc
1 changed files with 71 additions and 4 deletions
|
|
@ -105,7 +105,51 @@ class DSParse
|
||||||
end # class DSParse
|
end # class DSParse
|
||||||
|
|
||||||
class GitParse
|
class GitParse
|
||||||
# info over Git index files is te vinden op http://git.rsbx.net/Documents/Git_Data_Formats.txt
|
# info over Git index files is te vinden op http://git.rsbx.net/Documents/Git_Data_Formats.txt
|
||||||
|
|
||||||
|
# voorspelbare bestanden:
|
||||||
|
#
|
||||||
|
# FETCH_HEAD
|
||||||
|
# HEAD
|
||||||
|
# ORIG_HEAD
|
||||||
|
# branches/
|
||||||
|
# config
|
||||||
|
# description
|
||||||
|
# hooks/
|
||||||
|
# hooks/applypatch-msg
|
||||||
|
# hooks/commit-msg
|
||||||
|
# hooks/post-commit
|
||||||
|
# hooks/post-receive
|
||||||
|
# hooks/post-update
|
||||||
|
# hooks/pre-applypatch
|
||||||
|
# hooks/pre-commit
|
||||||
|
# hooks/pre-rebase
|
||||||
|
# hooks/prepare-commit-msg
|
||||||
|
# hooks/update
|
||||||
|
# index
|
||||||
|
# info/
|
||||||
|
# info/exclude
|
||||||
|
# logs/
|
||||||
|
# logs/HEAD
|
||||||
|
# logs/heads/
|
||||||
|
# logs/heads/master
|
||||||
|
# logs/remotes/
|
||||||
|
# logs/remotes/origin/
|
||||||
|
# logs/remotes/origin/master
|
||||||
|
# objects/ # hieronder grotendeels (zoniet helemaal) te halen uit 'index' (zie statinfo() notities)
|
||||||
|
# objects/info/
|
||||||
|
# objects/pack/ # hieronder ook weer te halen uit iets anders
|
||||||
|
# packed-refs
|
||||||
|
# refs/
|
||||||
|
# refs/heads/
|
||||||
|
# refs/heads/master
|
||||||
|
# refs/remotes/
|
||||||
|
# refs/remotes/origin/
|
||||||
|
# refs/remotes/origin/HEAD
|
||||||
|
# refs/remotes/origin/master
|
||||||
|
# refs/tags/ # hieronder ook weer te halen uit iets anders
|
||||||
|
|
||||||
|
|
||||||
def initialize
|
def initialize
|
||||||
@store = Array.new
|
@store = Array.new
|
||||||
end
|
end
|
||||||
|
|
@ -122,6 +166,14 @@ class GitParse
|
||||||
return string
|
return string
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def arr2hexstring(arr)
|
||||||
|
string = ""
|
||||||
|
(0...arr.length).step{|i|
|
||||||
|
string += ("%02x" % arr[i])
|
||||||
|
}
|
||||||
|
return string
|
||||||
|
end
|
||||||
|
|
||||||
def readfile(filename)
|
def readfile(filename)
|
||||||
@store = Array.new
|
@store = Array.new
|
||||||
File.open(filename).each_byte{|byte|
|
File.open(filename).each_byte{|byte|
|
||||||
|
|
@ -175,7 +227,20 @@ class GitParse
|
||||||
#p size
|
#p size
|
||||||
|
|
||||||
# entryid = arr2long(@store[offset+40, 4]) # hoe groot is zo'n object ID?
|
# entryid = arr2long(@store[offset+40, 4]) # hoe groot is zo'n object ID?
|
||||||
# entryflags = arr2long(@store[offset+44, 2])
|
# The object ID, or "name", of an object is
|
||||||
|
# _sha-1_digest_( <OBJECT_HEADER> <object_CONTENTS> ).
|
||||||
|
# random sha1 voorbeeld: "42796666f0c5748b943956f367907ce6d9f42654"
|
||||||
|
# wikipedia zegt 160 bits, ofwel 20 bytes
|
||||||
|
entryid = arr2hexstring(@store[offset+40, 20])
|
||||||
|
p entryid
|
||||||
|
|
||||||
|
# opvallend: bestandsnamen onder .git/objects/??/* zijn 38 tekens lang
|
||||||
|
# de dir lijkt dan inderdaad de eerste 2 tekens van deze entryid te zijn!
|
||||||
|
# de naam de rest. Maar het bestaat niet bij alle entries!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# entryflags = arr2long(@store[offset+60, 2])
|
||||||
i = offset+62
|
i = offset+62
|
||||||
name = ""
|
name = ""
|
||||||
while true
|
while true
|
||||||
|
|
@ -193,7 +258,7 @@ class GitParse
|
||||||
plus += 8 - cl.modulo(8)
|
plus += 8 - cl.modulo(8)
|
||||||
end
|
end
|
||||||
nextoffset = offset + plus
|
nextoffset = offset + plus
|
||||||
|
p name
|
||||||
return name, nextoffset
|
return name, nextoffset
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -352,6 +417,7 @@ def svnparse(url)
|
||||||
if body.nil?
|
if body.nil?
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
dirs = Array.new
|
dirs = Array.new
|
||||||
case body[0].chr
|
case body[0].chr
|
||||||
when '<'
|
when '<'
|
||||||
|
|
@ -372,7 +438,7 @@ def svnparse(url)
|
||||||
puts " Strange kind #{item.attribute("kind")}"
|
puts " Strange kind #{item.attribute("kind")}"
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
when '8', '9'
|
when '8', '9', '1'
|
||||||
lastline = ""
|
lastline = ""
|
||||||
commitdate = ""
|
commitdate = ""
|
||||||
author = ""
|
author = ""
|
||||||
|
|
@ -552,6 +618,7 @@ def checkgit(url)
|
||||||
puts "Git info found:"
|
puts "Git info found:"
|
||||||
gitparse(url)
|
gitparse(url)
|
||||||
rescue
|
rescue
|
||||||
|
puts "#{$!}"
|
||||||
puts "No Git info found"
|
puts "No Git info found"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue