You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@subversion.apache.org by "Chris Pickett (Jira)" <ji...@apache.org> on 2021/08/22 10:10:00 UTC

[jira] [Commented] (SVN-525) Allow working copies without .svn/pristine/ cache (a.k.a. "text-base/" files).

    [ https://issues.apache.org/jira/browse/SVN-525?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17402763#comment-17402763 ] 

Chris Pickett commented on SVN-525:
-----------------------------------

The last time I looked at this in 2017, I was able to store binary files as revprops to get around the pristine duplicate issue.  But I didn't get further than my notes below that add a binary file and get it back out.  This is just a simple proof-of-concept in case this idea is helpful.
{code:sh}
# create foo.mp3.md5 file with fields <sum> <bytes>
echo $(md5sum foo.mp3) $(wc -c foo.mp3) | awk '{print $1" "$3}' > foo.mp3.md5 

# store foo.mp3 with bin:<sum> as the property name 
svn propset bin:$(awk '{print $1}' foo.mp3.md5) --revprop -r 1 -F foo.mp3

# get the data back out as bar.mp3, stripping the trailing newline that svn adds
svn propget bin:$(awk '{print $1}' foo.mp3.md5) --revprop -r 1 | head -c $(awk '{print $2}' foo.mp3.md5) > bar.mp3

# create bar.mp3.md5 file with fields <sum> <bytes> 
echo $(md5sum bar.mp3) $(wc -c bar.mp3) | awk '{print $1" "$3}' > bar.mp3.md5 

# the two mp3's are the same
diff foo.mp3 bar.mp3

# the two md5's are the same 
diff foo.mp3.md5 bar.mp3.md5
{code}
So possibly even shell scripts could do everything.  You might need a shadow set of .md5 files that get committed.

> Allow working copies without .svn/pristine/ cache (a.k.a. "text-base/" files).
> ------------------------------------------------------------------------------
>
>                 Key: SVN-525
>                 URL: https://issues.apache.org/jira/browse/SVN-525
>             Project: Subversion
>          Issue Type: New Feature
>    Affects Versions: all
>         Environment: other
>            Reporter: Ben Collins-Sussman
>            Priority: Minor
>             Fix For: unscheduled
>
>
> It's possible to make the cached pristine files in .svn/pristine/ optional.  Doing so would be a huge storage savings on the client side, and would make Subversion even more compelling as a system for managing medium-large binary files.
> A much more technically thorough explanation of this issue and its background is available in [this 2020-12-29 comment|https://issues.apache.org/jira/browse/SVN-525?focusedCommentId=17256056&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17256056] below.
> (Note that the cached pristine base versions used to be stored in .svn/text-base/, so you'll probably see references to that old location throughout this ticket.  Also, there used to be one .svn/ directory per working tree directory; later that was changed to one .svn/ directory at the top of the working tree.  Knowing that might also help clarify some of the older comments in this ticket.)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)