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

Re: AW: AW: svn_dirent_t::size: often not the "real" file size

From: Branko Čibej <brane_at_apache.org>
Date: Thu, 2 Feb 2017 17:28:30 +0100

On 02.02.2017 15:52, Bijewitz, Volker wrote:
> Hi Brane,
>
>>> Unfortunately I do not know if the user has got an working copy and
>>> where it can be found . So the only way to solve this is creating once
>>> a local copy of each file and store the real size in a DB referenced
>>> by the file URL and revision number L.
>> Why would you do that? You'd effectively have to check out the file in a
>> Subversion working copy to get the correct size (or reimplement
>> Subversion's end-of-line conversion and keyword expansion logic, which I'd
>> not recommend).
>>
>> The size of the file in the repository is as real as any other size. As are
> the
>> contents. Does your plugin show file contents? If yes, does it perform
>> keyword expansion and newline substitution, like the Subversion client
>> would? If no, don't bother about tweaking the reported size.
> Ok, the situation is the following. The left widow of my TC file manager is
> feed by my plugin with the contents of a folder coming from SVN. The right
> window points to a location on the harddisk - maybe the working copy, but
> maybe not. Now I choose the fuction to compare/synchronize these "folders".
> On the synchronize pane I want so see the files correctly marked as new,
> identical or different. And in the plugin I have no access to the file list
> on the other side. Now three situations can happen based on the settings:
>
> * Standard compare: does not work, date and time is generally different
> * Ignore date/time: problem caused by incorrect size (comparing just file
> sizes)
> * Compare by contend: not supported for plugins :-(.
>
> So there is not any way to compare the content of a SVN repo with a folder on
> disk that is not a working copy - it is not even possible as plugin to get
> any info about the other side file/folder list.
>
> Yes, I show the contents of a file on demand, using a temporary file. I hope
> I do it correctly. I do the following:
>
> - apr_open_file
> - svn_stream_from_aprfile2
> - svn_client_cat2
> - svn_stream_close
>
> I hope the file I created this way is identically to the file of a SVN
> working copy. Do you now, are they?

They are not. 'svn cat', or in your case calling svn_client_cat2(), will
return the contents of the file in the repository. It will not perform
keyword expansion or newline normalization. You need a working copy for
that; svn_client_cat2() does not use a working copy.

If you _do_ have a working copy, you'd compare the local file in the
working copy with the repository version with svn_client_status6(), or
svn_client_diff6(), both of which take irrelevant differences (i.e.,
keyword expansion and newline normalization) into account.

-- Brane
Received on 2017-02-02 17:28:36 CET

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.