Shawn O. Pearce <spearce <at> spearce.org> writes: > > Sal Mangano <smangano <at> into-technology.com> wrote: > > I am using Git in a non-standard way and need to make a few twaeks in my > > custom build. I have added a --nosort option to git mktree which will suppress > > the qsort of the tree. > > > > Will this break any other git functions? Are there any commands that assume > > trees are always sorted? > > _YES IT BREAKS GIT_. > > You cannot do this. > > A Git repository whose trees are not sorted according to the Git > specific sort ordering is severly broken and most tools will fail > horribly on it. > > Almost all code which reads trees assumes the names are sorted in a > specific order. These tools perform sorted merges against other tree > like structures. If the names are out of order the merge will fail. > `git fsck` will complain that the tree is not sorted properly. > Tools like `git log -- foo.c` will fail randomly because they break > out of the entry lookup as soon as they find a name that is after > foo.c, as they assume the tree is sorted. > > I could go on. But there is no point. > > Oh, and trust me when I say this, the tree sorting matters. Long ago > JGit had a bug where it didn't sort trees correctly all of the time > and we had a devil of a time tracking down that corruption. > Thanks Shawn. I get the picture. Now, let's assume I am stubborn, crazy or both :-) I can modify fsck to ignore unsorted and at the moment I don't care about merging trees. If I hunt down all usage of base_name_compare will that identify all code with the sort assumption or is there other places as well? I can go through the entire source to figure this out myself but I need to get something hacked up very quickly and would appreciate help even if you think I am nuts! -- 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