[crossfire] Use of svn:externals in client code on SVN

Kevin Zheng kevinz5000 at gmail.com
Mon Nov 4 18:41:30 CST 2013


Hi there,

Crossfire currently uses svn:externals to sync protocol definition
headers between the server and GTKv2 client. While this has its merits,
overall I believe it is confusing, cumbersome, and harmful.

>From the SVN Book [1]: "An externals definition is a mapping of a local
directory to the URL—and ideally a particular revision—of a versioned
directory. In Subversion, you declare externals definitions in groups
using the svn:externals property."

My guess is that the original intention of using them was to ensure that
the client protocol headers would always remain in sync with those in
the server. However, here are some issues:

 - The svn:externals property must still be modified manually
 - Copy/paste/merge is faster, less confusing, and works outside of SVN
 - Client sources locked to server, JXClient proves unnecessary

Further, there are several disadvantages to using them as well:

 - It only works with SVN - hinders future migration (if ever)
 - Confusing for people not familiar with SVN
 - Slow, try running `svn up` from the root and wait
 - Breaks `git svn`, which pacifies the impatient Git users

I propose that we go back to manually tracking the protocol headers
between the client and server. They are not updated that often, anyways,
and still need updating with the use of svn:externals. We can continue
using svn:externals in /latest, etc.

[1] http://svnbook.red-bean.com/en/1.7/svn.advanced.externals.html

Thanks,
Kevin Zheng


More information about the crossfire mailing list