threads / discuss / 46626

git svn show-externals output format

Subject: git svn show-externals output format

## tl;dr

3 messages between Aug 19, 2017 and Aug 19, 2017.

replies: 2people: 2as markdown or json

Alexander Groß· Aug 19, 2017, 08:24 UTC · lore
Hi all,

I am playing with svn-to-git conversion and wanted to have a look at the svn:externals of a test SVN repository.

$ git svn clone svn://svn.code.sf.net/p/svn-to-git/code/ svn-to-git-code
The SVN repo in HEAD revision contains three externals:

$ cd svn-to-git-code $ git svn show-externals

# /trunk/ /trunk/https://svn.code.sf.net/p/gc-webdav/svn webdav /trunk/https://svn.code.sf.net/p/gc-webdav/svn@1 webdav-at-revision

# /trunk/sub directory/ /trunk/sub directory/https://svn.code.sf.net/p/gc-webdav/svn 'webdav in subdir'

An earlier version contains just one external:
$ git svn show-externals --revision 8

# /trunk/ /trunk/webdav https://svn.code.sf.net/p/gc-webdav/svn/

It seems like the output is inconsistent. In SVN revision 8 the output looks like it's formatted like <path> <URL>

In the HEAD revision it looks mangled <path prefix><URL> <path suffix>

This makes consuming the output of git svn show-externals in HEAD difficult because the parts are not clearly separated by space and sometimes the path is the first element, sometimes it's a combination of first and last elements.

I am able to checkout both revisions including externals using native svn.
Am I doing something wrong?
Thanks!
Alex
-- 
Alexander Groß
http://therightstuff.de/
Andreas Heiduk· Aug 19, 2017, 10:14 UTC · re: Alexander Groß · lore

Re: git svn show-externals output format

Am 19.08.2017 um 10:24 schrieb Alexander Groß:
Show 5 quoted lines
> $ git svn show-externals
> 
> # /trunk/
> /trunk/https://svn.code.sf.net/p/gc-webdav/svn webdav
> /trunk/https://svn.code.sf.net/p/gc-webdav/svn@1 webdav-at-revision

This is the (bugged) output of `git svn show-externals` for "new style" svn:externals.

Show 10 quoted lines
> 
> # /trunk/sub directory/
> /trunk/sub directory/https://svn.code.sf.net/p/gc-webdav/svn 'webdav in subdir'
> 
> An earlier version contains just one external:
> 
> $ git svn show-externals --revision 8
> 
> # /trunk/
> /trunk/webdav https://svn.code.sf.net/p/gc-webdav/svn/
And that the proper output for "old style" svn:externals.
> It seems like the output is inconsistent. [...]

SVN changed/extended the svn:externals format in version 1.5. (See [1] for details). One thing is - they switched the order of the arguments. `git svn` dit not pick up these changes and hence interprets the new format incorrectly. See [2] for a similar discussion - it is from 2012!

> This makes consuming the output of git svn show-externals in HEAD
> difficult because the parts are not clearly separated by space and
> sometimes the path is the first element, sometimes it's a combination
> of first and last elements.

My practical solution was to skip the man in the middle and ask the SVN server directly for the property values with something like that:

    svn propget svn:externals -r 42 http://my-repo-url/path/to/ext/dir
I used the output to hardcode the values during the conversion.

[1] http://svnbook.red-bean.com/en/1.8/svn.advanced.externals.html [2] https://public-inbox.org/git/E59CCE45-6F92-4748-9B6E-2A562647904B@nikolaus-demmel.de/

Alexander Groß· Aug 19, 2017, 12:59 UTC · re: Andreas Heiduk · lore

Re: git svn show-externals output format

> My practical solution was to skip the man in the middle and ask the SVN
> server directly for the property values
Thanks, that helped a lot!

Alex Beste Grüße,

Alex
-- 
Alexander Groß
http://therightstuff.de/


On Sat, Aug 19, 2017 at 12:14 PM, Andreas Heiduk <asheiduk@gmail.com> wrote:
> Am 19.08.2017 um 10:24 schrieb Alexander Groß:
>
>> $ git svn show-externals
>>
>> # /trunk/
>> /trunk/https://svn.code.sf.net/p/gc-webdav/svn webdav
>> /trunk/https://svn.code.sf.net/p/gc-webdav/svn@1 webdav-at-revision
>
> This is the (bugged) output of `git svn show-externals` for "new
> style" svn:externals.
>
>>
>> # /trunk/sub directory/
>> /trunk/sub directory/https://svn.code.sf.net/p/gc-webdav/svn 'webdav in subdir'
>>
>> An earlier version contains just one external:
>>
>> $ git svn show-externals --revision 8
>>
>> # /trunk/
>> /trunk/webdav https://svn.code.sf.net/p/gc-webdav/svn/
>
> And that the proper output for "old style" svn:externals.
>
>> It seems like the output is inconsistent. [...]
>
> SVN changed/extended the svn:externals format in version 1.5.
> (See [1] for details). One thing is - they switched the
> order of the arguments. `git svn` dit not pick up these changes
> and hence interprets the new format incorrectly. See [2] for
> a similar discussion - it is from 2012!
>
>> This makes consuming the output of git svn show-externals in HEAD
>> difficult because the parts are not clearly separated by space and
>> sometimes the path is the first element, sometimes it's a combination
>> of first and last elements.
>
> My practical solution was to skip the man in the middle and ask the SVN
> server directly for the property values with something like that:
>
>     svn propget svn:externals -r 42 http://my-repo-url/path/to/ext/dir
>
> I used the output to hardcode the values during the conversion.
>
>
>
> [1] http://svnbook.red-bean.com/en/1.8/svn.advanced.externals.html
> [2] https://public-inbox.org/git/E59CCE45-6F92-4748-9B6E-2A562647904B@nikolaus-demmel.de/

← back to recent threads