On 02.09.2010 10:50, Branko Čibej wrote: > On 02.09.2010 10:27, Daniel Shahaf wrote: >> Daniel Näslund wrote on Thu, Sep 02, 2010 at 07:13:00 +0200: >>> On Wed, Sep 01, 2010 at 06:37:08PM +0100, Julian Foad wrote: >>>> This may be off topic, but I'm wondering whether Git has defined such >>>> operations on directories fully or at all, since it doesn't version them >>>> explicitly. I mean, can you tell the difference between "add empty file >>>> A" and "add empty dir A"? I could go and look, but haven't time today. >>>> If yes, great; if it doesn't, we'll have to invent syntax extensions to >>>> do it. (I'm recalling that the goal of this work is we want Subversion >>>> diffs to be able to support all valid Subversion changes, and we chose >>>> Git format as a basis for supporting that. We don't want to constrain >>>> ourselves to only the operations that Git supports.) >>> Not supported at the moment: >>> >>> $ svn mkdir X >>> A X >>> $ svn status >>> A X >>> $ svn diff >>> $ svn diff --git >>> $ >>> >>> Suggestion: >>> >>> $ svn diff --git >>> Index: empty >>> =================================================================== >>> diff --git a/trunk/empty b/trunk/empty >>> new directory mode 10644 >> IIRC trailing slashes on "empty/" were suggested on IRC, what was the >> conclusion about that? >> >>> E.g., just changing the 'new file mode 10644' line to mention directory >>> instead. Haven't investigate what changes would be needed in the diff >>> editor. >> By the way, are we just influenced by Git's format, or are we looking >> for some degree of interoperability? Consider adding a symlink: >> >> [[[ >> ### with git (in $wcroot/trunk/): >> diff --git a/trunk/bar b/trunk/bar >> new file mode 120000 >> index 0000000..1910281 >> --- /dev/null >> +++ b/trunk/bar >> @@ -0,0 +1 @@ >> +foo >> \ No newline at end of file >> >> ### with svn (in $wcroot/trunk/): >> Index: bar >> =================================================================== >> diff --git a/trunk/bar b/trunk/bar >> new file mode 10644 >> --- /dev/null (revision 0) >> +++ b/trunk/bar (working copy) >> @@ -0,0 +1 @@ >> +link foo >> \ No newline at end of file >> >> Property changes on: trunk/bar >> ___________________________________________________________________ >> Added: svn:special >> ## -0,0 +1 ## >> +* >> ]]] > Hmm, this is interesting. :) Git faithfully (blindly?) interprets Unix > permission bits, whiles SVN faithfully (blindly?) interprets the > contents of special files ... I wonder if "svn patch" does the right > thing here? > > Anyway, for the sake of interoperability, we'd have to emit and parse > the git format for symlinks. Not that I'm too amused by the idea that > git probably just does a chmod on the new file without thinking about > it, but hey, All the World is Linux, right? :)
Did some testing ... apparently "git apply" completely ignores the permission bits "new file mode ..." line, at least I haven't been able to force it to do anything with them. -- Brane