[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Do we want 'svn patch' to be able to add empty files?

From: Branko Čibej <brane_at_xbc.nu>
Date: Fri, 03 Sep 2010 12:18:37 +0200

 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
Received on 2010-09-03 12:19:22 CEST

This is an archived mail posted to the Subversion Dev mailing list.