Thread (3 messages) flat view 3 messages, 2 authors, 2016-06-15

Re: In tree object, Must the

From: Carlos Martín Nieto <hidden>
Date: 2016-06-15 22:53:29

On Sun, 2012-04-08 at 12:43 +0900, Yi, EungJun wrote:
Hello,

I'm implementing Git using node.js, and I have a question while I
write some code to store tree object.

Tree object looks a table consists of three fields: blob's mode, name
and id, as below.

e.g.)
$ git cat-file -p 45799547
100644 blob cd242b1e5bb403500feb49a1aa656c21c6c0be69	Makefile
100644 blob bf382321749577d52bd2fbf2281df0510b4bad31	README.md
100644 blob 5441bb48428611a3cb140d8192d39484fcf3b742	fsutil.js
100644 blob 0af680a5c0dd4482b09aa7f8e837234bed0b7cfa	package.json
040000 tree 39a4d45669addfb1e8f0a499deebc5b97b4edfa0	test

It seems that the table is stored in order by blob's name.
Yes, the entries in the tree are alpha-sorted. The exception are trees,
where you have to pretend that there is a trailing slash. In other
words, the order is the same as you'd see in the index (as there, the
test/ directory in your example would be stored with a slash and the
name of the subdirs and files in it.
If it is true, what happens if it is not ordered?
fsck complains for one.
Does that cause any troubles to users to use a git repository created
and managed by my Git implementation?
How does your implementation store things? You haven't said (maybe
hinted that you may be writing trees with the wrong order). Depending on
the particular implementation of whatever is reading the git repository,
it might not be able to find an entry in your tree, as it's wrongly
sorted, but that depends on the exact implementation and possibly luck.

Do you need to write this in pure js? There are some bindings for
node.js[0] already for libgit2 so you don't need to redo the low-level
work.

Cheers,
   cmn

[0] https://github.com/libgit2/node-gitteh

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help