Re: In tree object, Must the

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



You are right. I tried to clone a repository which has a unordered
tree object and all you said happened, as below.

$ git ls-tree HEAD
100644 blob a6ccb8dec6b21e9d3e0b716d3a0915262a8c4474	b
100644 blob a3df8f3749f855a2d905d92f11590a9c18a1bcbb	a
100644 blob 424907d3fe9f1fa4b2e3a0bb65ab99780d9acfba	c
$ git show -- b
$ git show -- a
$ git fsck
error in tree 3f5a56e992a01f2e500bed57360f3961323b9d6e: not properly sorted
error in tree a94e7dc2820eb4d0ef308fac1a32b3715e82dc76: not properly sorted

I want to allow users to clone the git repository created by my implementation,
but before I have to sort tree objects. Thanks to you, I know that now.

And your suggestion to use node-gitteh is also thankful,
but I want pure js implementation without libgit2.

2012년 4월 8일 오후 10:20, Carlos Martín Nieto <cmn@xxxxxxxx>님의 말:
> 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
>
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]