Both of the approached are nearly correct, but instead of specifying path to
"auth" directory
File auth = new File("C:\\...\\auth");
ISVNAuthenticationManager authManager =
SVNWCUtil.createDefaultAuthenticationManager(auth);
one should specify path to config directory
File auth = new File("C:\\...\\Subversion");
ISVNAuthenticationManager authManager =
SVNWCUtil.createDefaultAuthenticationManager(auth);
Could you try with "jsvn" utility that is distributed together with SVNKit?
Does native SVN ask you to enter something from keyboard (passwords, secret
key)? (by default
SVNWCUtil.createDefaultAuthenticationManager() is non-interactive)
And don't forget \\ in paths (should be "C:\\target"):
SvnTarget.fromFile(new File("C:\target"))
--
Dmitry Pavlenko,
TMate Software,
http://subgit.com/ - git-svn bridge
> Hello,
> thank you, but I don't get it to work.
> I've tried to different approaches to successfully connect to the SVN repo:
>
> *** ONE ***
> try {
> String repo = "https://path/path";
> DAVRepositoryFactory.setup();
> SVNURL url = SVNURL.parseURIDecoded(repo);
> final SvnOperationFactory svnOperationFactory = new
> SvnOperationFactory();
> final ISVNAuthenticationManager authenticationManager =
> SVNWCUtil.createDefaultAuthenticationManager();
> svnOperationFactory.setAuthenticationManager(authenticationManager);
> try {
> final SvnCheckout checkout =
> svnOperationFactory.createCheckout();
> checkout.setSource(SvnTarget.fromURL(url));
> checkout.setSingleTarget(SvnTarget.fromFile(new
> File("C:\target")));
> checkout.run();
> } finally {
> svnOperationFactory.dispose();
> }
> } catch (SVNException e) {
> e.printStackTrace();
> }
>
>
> *** TWO ***
> String repo = "https://path/path";
> DAVRepositoryFactory.setup();
> File auth = new File("C:\\...\\auth");
> ISVNAuthenticationManager authManager =
> SVNWCUtil.createDefaultAuthenticationManager(auth);
> SVNURL url = SVNURL.parseURIDecoded(repo);
> SVNRepository repository = SVNRepositoryFactory.create(url,null);
> repository.setAuthenticationManager(authManager);
> System.err.println(repository.getLatestRevision());
>
> Both result in
>
> org.tmatesoft.svn.core.SVNAuthenticationException: svn: E170001:
> Authentication required for '<https://xxx:443> Subversion Server on ABC'
> at
> org.tmatesoft.svn.core.internal.wc.SVNErrorManager.authenticationFailed(SVN
> ErrorManager.java:47) at
> org.tmatesoft.svn.core.internal.wc.SVNErrorManager.authenticationFailed(SVN
> ErrorManager.java:41) at
> org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirst
> Authentication(DefaultSVNAuthenticationManager.java:186) at
> org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConn
> ection.java:654) at
> [...]
>
>
> What's wrong with the snippets? What do I have to change? On the console,
> I can work with the SVN command line interface because the credentials are
> stored in the folder "C:\\...\\auth".
>
>
> Thank you.
>
> Regards
> Michael
>
> > Hello Michael,
> > To create an authentication manager that uses settings from ~/.subversion
> > directory use
> > SVNWCUtil#createDefaultAuthenticationManager.
> >
> > If you want to look at credential that it provides --- usually one
> > haven't to look at those
> > credentials --- use ISVNAuthenticationProvider#getFirstAuthentication
> > ISVNAuthenticationProvider#getNextAuthentication. SVNAuthentication
> > class (and its subclasses) is
> > an abstraction for credentials.
> >
> > The most common code to use :
> >
> > final SvnOperationFactory svnOperationFactory = new
> > SvnOperationFactory(); final ISVNAuthenticationManager
> > authenticationManager =
> > SVNWCUtil.createDefaultAuthenticationManager();
> > svnOperationFactory.setAuthenticationManager(authenticationManager);
> > try {
> >
> > // any operations,
> > final SvnCheckout checkout = svnOperationFactory.createCheckout();
> > checkout.setSource(SvnTarget.fromURL(url));
> > checkout.setSingleTarget(SvnTarget.fromFile(workingCopyDirectory));
> > checkout.run();
> >
> > } finally {
> >
> > svnOperationFactory.dispose();
> >
> > }
> >
> > --
> > Dmitry Pavlenko,
> > TMate Software,
> > http://subgit.com/ - git-svn bridge
> >
> >> Hello,
> >>
> >> having a "ISVNAuthenticationProvider authenticationProvider", how can I
> >> get credentials to be used to access a Subversion repository with a
> >> command like "svn --username YYY --password XXX status". In other words,
> >> I'd like to re-use stored credentials dynamically to access a repo, but
> >> I'm not sure how to do it. Background: I'm inside a build server plugin,
> >> which uses the SVNKit.
> >>
> >>
> >> Thank you.
> >>
> >>
> >> Regards
> >> Michael