This page does not refer to the most recent version of the SCM-Manager. Go to the latest documentation.
Java Client API
Maven
To use the SCM-Manager Java Client API you have to configure the SCM-Manager maven repository in your pom.xml:
<repositories>
<repository>
<id>packages.scm-manager.org</id>
<name>scm-manager public repository</name>
<url>https://packages.scm-manager.org/repository/public</url>
</repository>
</repositories>
And you have to define the dependency to the api and one implementation:
<dependencies>
<dependency>
<groupId>sonia.scm.clients</groupId>
<artifactId>scm-client-api</artifactId>
<version>1.60</version>
</dependency>
<dependency>
<groupId>sonia.scm.clients</groupId>
<artifactId>scm-client-impl</artifactId>
<version>1.60</version>
</dependency>
</dependencies>
Usage
First you have to create a session to your SCM-Manager instance:
String url = "http://localhost:8080/scm";
String username = "scmadmin";
String password = "scmadmin";
ScmClientSession session = ScmClient.createSession(url, username, password);
After you have successfully created a client session you can nearly execute every action which is available from the web interface. But do not forget to close the session after you have finished your work:
session.close();
Examples
Create a new repository:
Repository repository = new Repository();
repository.setName("scm-manager");
repository.setType("hg");
repository.setDescription("The easiest way to share and manage your Git, Mercurial and Subversion repositories over http.");
// set permissions for user sdorra to owner
List<Permission> permissions = new ArrayList<Permission>();
permissions.add(new Permission("sdorra", PermissionType.OWNER));
repository.setPermissions(permissions);
session.getRepositoryHandler().create(repository);
Get the last 20 commits of a repository:
RepositoryClientHandler repositoryHandler = session.getRepositoryHandler();
// get the mercurial (hg) repository scm-manager
Repository repository = repositoryHandler.get("hg", "scm-manager");
ClientChangesetHandler changesetHandler = repositoryHandler.getChangesetHandler(repository);
// get 20 changesets started by 0
ChangesetPagingResult changesets = changesetHandler.getChangesets(0, 20);
for ( Changeset c : changesets ){
System.out.println( c.getId() + ": " + c.getDescription() );
Print the content of a file in a repository:
RepositoryClientHandler repositoryHandler = session.getRepositoryHandler();
// get the mercurial (hg) repository scm-manager
Repository repository = repositoryHandler.get("hg", "scm-manager");
ClientRepositoryBrowser browser = repositoryHandler.getRepositoryBrowser(repository);
BufferedReader reader = null;
try {
// get the content of the file pom.xml at revision tip
reader = new BufferedReader(new InputStreamReader(browser.getContent("tip", "pom.xml")));
String line = reader.readLine();
while ( line != null ){
System.out.println( line );
line = reader.readLine();
}
} finally {
if ( reader != null ){
reader.close();
}
}
Create a new user:
User user = new User("tuser", "Test User", "test.user@test.net");
user.setPassword("test123");
session.getUserHandler().create( user );
Add a user to an existing group:
GroupClientHandler groupHandler = session.getGroupHandler();
Group group = groupHandler.get("developers");
group.getMembers().add("tuser");
groupHandler.modify(group);