On Fri, Oct 20, 2006 at 06:21:34PM +0200, Jakub Narebski wrote: > Aaron Bentley wrote: > > > === added directory // file-id:TREE_ROOT > > Gaaah, so rename detection in bzr is done using file-ids? > Linus will tell you the inherent problems with that "solution". Ok, I tried to read http://permalink.gmane.org/gmane.comp.version-control.git/217 It's all nice and well, but my question is whether the below cases work in git. Yes, they are particular cases, but they are particularly important. If they don't, I'd rather have file-id scheme, that is limited to just them, but handles them, than something with big plans, but nothing working. Let's consider following scenario: (where A$ means working in branch A, B$ means working in branch B and VCT stands for version control tool of choice) A$ echo Hello Warld! > hello.txt A$ VCT add hello.txt A$ VCT commit -m "Created greeting" $ VCT branch A B A$ VCT mkdir data A$ VCT mv hello.txt data/ A$ VCT commit -m "Moved hello.txt to data dir" B$ ed hello.txt ? 1s/Warld/World/ ? wq B$ VCT commit -m "Fixed typo in greeting" A$ VCT merge B At this point, I expect the tree to look like this: A$ ls -R .: data/ data: hello.txt A$ cat data/hello.txt Hello World! The file-id algorithm is not exceptionaly clever, is a bit of special-case and all that, but it handles the above case right. And while that scenario is just a special case of general moving contents, it is: 1) Very common 2) Possible to handle in an obviously correct way It is very important for me that a version control tool I use handles this case. If it handles the more general cases, that's nice, but this is a must. Oh, and there is one more complicated case, that I also require to work and that works in Bzr, but did not work in Arch: ...let's start with the tree at the end of previous example... A$ VCT mv data greetings A$ VCT commit -m "Renamed the data directory to greetings" B$ echo "Goodbye World!" > data/goodbye.txt B$ VCT add data/goodbye.txt B$ VCT commit -m "Added goodbye message." A$ VCT merge B And now I expect to have tree looking like this: A$ ls -R .: greetings/ greetings: hello.txt goodbye.txt And note, that it is /not/ required to use file-ids to handle this. Darcs handles this just as well with it's patch algebra (http://darcs.net/DarcsWiki/PatchTheory) without need of any IDs. -------------------------------------------------------------------------------- - Jan Hudec `Bulb' <bulb@xxxxxx> - 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