I have started to work on a native Mac OS X Cocoa client the last
couple of days. I am getting along with it reasonably well considering
that I am not a die hard C programmer. So the svn API seems to be
pretty well architectured ;-). So far most of the stuff just worked.
Still I have some questions about it.
1) The main entry point for a GUI client is svn_client.h? Is this
correct? I am already starting to use svn_wc.h. Is this ok? Or do I use
stuff which is not intended to be used for a client?
2) I am trying to wrap the C API into an Objective-C API. This is
working pretty well so far. I have created domain classes for stuff
like client or working copy, which essentially mirror the functionality
provided by svn_client.h or svn_wc.h. The various svn structures I have
wrapped into simple data objects. Right now each domain object has its
own apr_pool, which gets created when the object is instantiated and
gets destroyed when the object instance is deallocated. Now such a
domain object can create quite some data objects, which use the domain
object's apr pool right now. This probably is a memory leak ;-)
Now if I like to have a more fine grained memory management I was
thinking that each data object could have it's own pool, which is
essentially a sub pool of the domain object's pool, which created the
data object. I don't know the apr pool's internals. So my question is,
if this might be too much overhead or if this sounds ok?
3) If I use svn_wc_status_t status->entry on a file or directory which
is under version control I get the following error:
svn_io_file_open: can't open `.svn/entries'
If I use the API in svn_wc.h it works. Any ideas why this does not work
for me? (current working directory maybe?)
4) svn_client_status has essentially two modes to get the status. A
cheap mode which checks against the local shadow files and a more
expensive one which checks against the actual repository. Currently the
GUI client will use the first mode transparently to show the user the
changes in their repository. The user can use the second mode manually.
Unfortunately subversion seems to not cache this information somewhere
in its working copy admin area. So once I have used the second mode I
can't use the first mode anymore without loosing the information I just
received from the repository. What I am trying to do right now is to
merge the two svn_wc_status_t structures and cache the result myself.
It works so far but I think this is kind of awkward. Do I miss
something here? Is there a better solution?
5) Could I use the subversion logo for the application's icon?
That's all for now. Thanks
PS: You can have a look at my sources (ugh ;-) at
PS2: If somebody wants to join the dev team you are welcome. I hope I
can spend about a day per week working on it.
To unsubscribe, e-mail: firstname.lastname@example.org
For additional commands, e-mail: email@example.com
Received on Mon Jan 6 01:51:12 2003