help with generating a diff with svn for libcxx

Ryan Schmidt ryandesign at macports.org
Mon Dec 4 14:04:58 UTC 2017


On Dec 3, 2017, at 14:28, Ken Cunningham wrote:

> I'm getting stuck generating a diff file for the changes made in revison 307461 of libcxx, so I can backport that into llvm-4.0 to fix the build of libcxx for PowerPC.
> 
> <http://llvm.org/viewvc/llvm-project?view=revision&revision=307461>
> 
> I have checked out the llvm, libcxx, and libcxxabi sources using svn.
> In the projects/libcxx directory, I tried
> 
> svn diff -r 307460:307461
> but that gives me "svn: E175013: Access to '/svn/llvm-project/!svn/vcc/default' forbidden"
> 
> so I've tried
> 
> svn diff -r 307460:307461 http://llvm.org/svn/llvm-project/libcxx/trunk
> svn diff -r 307460:307461 http://llvm.org/svn/llvm-project/libcxx/trunk .
> svn diff -r http://llvm.org/svn/llvm-project/libcxx/trunk@307460 http://llvm.org/svn/llvm-project/libcxx/trunk@307461
> 
> but that all gives a similar error.
> 
> I know this must be easy, otherwise nobody would be using svn.

I see that error too.

$ svn di -c 307461 http://llvm.org/svn/llvm-project/libcxx/trunk
svn: E175013: Access to '/svn/llvm-project/!svn/vcc/default' forbidden

The server-side configuration of the repository must be preventing this type of access. It is possible for the server administrator to restrict access to certain subdirectories, and this error message makes it seem like that has been done. You'd have to ask the llvm people if they can reconfigure their server to allow this type of access.

Looking at the list of files modified by this commit...

$ svn log -qvr 307461 http://llvm.org/svn/llvm-project/libcxx/trunk
------------------------------------------------------------------------
r307461 | ericwf | 2017-07-07 23:18:41 -0500 (Fri, 07 Jul 2017)
Changed paths:
   A /libcxx/trunk/src/experimental/filesystem/filesystem_time_helper.h
   M /libcxx/trunk/src/experimental/filesystem/operations.cpp
   A /libcxx/trunk/test/libcxx/experimental/filesystem/convert_file_time.sh.cpp
   M /libcxx/trunk/utils/libcxx/test/config.py
------------------------------------------------------------------------

...I thought to try diffs of each of those subdirectories of trunk, to see which of them were restricting access. Surprisingly, none of them were, so this is a way to obtain the diff:

$ svn di -c 307461 http://llvm.org/svn/llvm-project/libcxx/trunk/src > r307461.diff
$ svn di -c 307461 http://llvm.org/svn/llvm-project/libcxx/trunk/test >> r307461.diff
$ svn di -c 307461 http://llvm.org/svn/llvm-project/libcxx/trunk/utils >> r307461.diff

Or it could be that r307461 also modified more files than those listed, and that I would see the full list if I were authenticated with the repository as a user permitted to see those files; I'm not sure because I haven't worked with a Subversion repository with path-based access restrictions before.

According to llvm's viewvc installation, only the four files shown above were modified:

http://llvm.org/viewvc/llvm-project?view=revision&revision=307461

Viewvc is another way to download diffs and added files, though I don't see a way to download a revision's entire diff; viewvc/viewcvs has always seemed very confusing and unhelpful to me, compared with the Trac repository browser.




More information about the macports-dev mailing list