Merge branch 'develop' into feature/packaging

# Conflicts:
#	Jenkinsfile
#	pom.xml
This commit is contained in:
Sebastian Sdorra
2020-05-23 15:27:43 +02:00
339 changed files with 3978 additions and 8015 deletions

View File

@@ -4,12 +4,29 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased ##Unreleased
## [2.0.0-rc8] - 2020-05-08
### Added ### Added
- Add iconStyle + onClick option and story shot for icon component ([#1100](https://github.com/scm-manager/scm-manager/pull/1100)) - Add iconStyle + onClick option and story shot for icon component ([#1100](https://github.com/scm-manager/scm-manager/pull/1100))
- Making WebElements (Servlet or Filter) optional by using the `@Requires` annotation ([#1101](https://github.com/scm-manager/scm-manager/pull/1101))
- Add class to manually validate rest data transfer objects with javax validation annotations ([#1114](https://github.com/scm-manager/scm-manager/pull/1114))
- Missing stories for ui-components ([#1140](https://github.com/scm-manager/scm-manager/pull/1140))
### Changed ### Changed
- Removed the `requires` attribute on the `@Extension` annotation and instead create a new `@Requires` annotation ([#1097](https://github.com/scm-manager/scm-manager/pull/1097)) - Removed the `requires` attribute on the `@Extension` annotation and instead create a new `@Requires` annotation ([#1097](https://github.com/scm-manager/scm-manager/pull/1097))
- Update guide to prevent common pitfalls in ui development ([#1107](https://github.com/scm-manager/scm-manager/pull/1107))
- Use os specific locations for scm home directory ([#1109](https://github.com/scm-manager/scm-manager/pull/1109))
- Use Library/Logs/SCM-Manager on OSX for logging ([#1109](https://github.com/scm-manager/scm-manager/pull/1109))
- Cleanup outdated jaxb annotation in scm-core ([#1136](https://github.com/scm-manager/scm-manager/pull/1136))
### Fixed
- Protocol URI for git commands under windows ([#1108](https://github.com/scm-manager/scm-manager/pull/1108))
- Fix usage of invalid cipher algorithm on newer java versions ([#1110](https://github.com/scm-manager/scm-manager/issues/1110),[#1112](https://github.com/scm-manager/scm-manager/pull/1112))
- Handle obscure line breaks in diff viewer ([#1129](https://github.com/scm-manager/scm-manager/pull/1129))
- Validate subversion client checksum ([#1113](https://github.com/scm-manager/scm-manager/issues/1113))
- Fix plugin manage permission ([#1135](https://github.com/scm-manager/scm-manager/pull/1135))
- Missing copy on write in the data store ([#1155](https://github.com/scm-manager/scm-manager/pull/1155))
## [2.0.0-rc7] - 2020-04-09 ## [2.0.0-rc7] - 2020-04-09
### Added ### Added

61
Jenkinsfile vendored
View File

@@ -2,7 +2,7 @@
// switch back to a stable tag, after pr 22 is mreged an the next version is released // switch back to a stable tag, after pr 22 is mreged an the next version is released
// see https://github.com/cloudogu/ces-build-lib/pull/22 // see https://github.com/cloudogu/ces-build-lib/pull/22
@Library('github.com/cloudogu/ces-build-lib@c079662') @Library('github.com/cloudogu/ces-build-lib@7a14da6')
import com.cloudogu.ces.cesbuildlib.* import com.cloudogu.ces.cesbuildlib.*
node('docker') { node('docker') {
@@ -81,28 +81,15 @@ node('docker') {
) )
stage('SonarQube') { stage('SonarQube') {
def sonarQube = new SonarCloud(this, [sonarQubeEnv: 'sonarcloud.io-scm', sonarOrganization: 'scm-manager', integrationBranch: 'develop'])
analyzeWith(mvn) sonarQube.analyzeWith(mvn)
if (!waitForQualityGateWebhookToBeCalled()) { if (!waitForQualityGateWebhookToBeCalled()) {
currentBuild.result = 'UNSTABLE' currentBuild.result = 'UNSTABLE'
} }
} }
if (isMainBranch() || isReleaseBranch()) { if (isBuildSuccessful() && (isMainBranch() || isReleaseBranch())) {
stage('Lifecycle') {
try {
// failBuildOnNetworkError -> so we can catch the exception and neither fail nor make our build unstable
nexusPolicyEvaluation iqApplication: selectedApplication('scm'), iqScanPatterns: [[scanPattern: 'scm-server/target/scm-server-app.zip']], iqStage: 'build', failBuildOnNetworkError: true
} catch (Exception e) {
echo "ERROR: iQ Server policy eval failed. Not marking build unstable for now."
echo "ERROR: iQ Server Exception: ${e.getMessage()}"
}
}
if (isBuildSuccessful()) {
def commitHash = git.getCommitHash() def commitHash = git.getCommitHash()
def imageVersion = mvn.getVersion() def imageVersion = mvn.getVersion()
@@ -117,14 +104,14 @@ node('docker') {
credentialsId: 'hub.docker.com-cesmarvin' credentialsId: 'hub.docker.com-cesmarvin'
]) ])
// configuration for maven deployment // deploy java artifacts
mvn.useDeploymentRepository([ mvn.useDeploymentRepository([
id: 'packages.scm-manager.org', id: 'packages.scm-manager.org',
url: 'https://packages.scm-manager.org', url: 'https://packages.scm-manager.org',
credentialsId: 'packages.scm-manager.org', credentialsId: 'maven.scm-manager.org',
type: 'Configurable', snapshotRepository: '/repository/snapshots/',
snapshotRepository: '/repository/snapshots', releaseRepository: '/repository/releases/',
releaseRepository: '/repository/releases' type: 'Configurable'
]) ])
mvn.deployToNexusRepository() mvn.deployToNexusRepository()
@@ -190,8 +177,6 @@ node('docker') {
} }
} }
} }
}
} }
} }
@@ -219,34 +204,6 @@ Maven setupMavenBuild() {
return mvn return mvn
} }
void analyzeWith(Maven mvn) {
withSonarQubeEnv('sonarcloud.io-scm') {
String mvnArgs = "${env.SONAR_MAVEN_GOAL} " +
"-Dsonar.host.url=${env.SONAR_HOST_URL} " +
"-Dsonar.login=${env.SONAR_AUTH_TOKEN} "
if (isPullRequest()) {
echo "Analysing SQ in PR mode"
mvnArgs += "-Dsonar.pullrequest.base=${env.CHANGE_TARGET} " +
"-Dsonar.pullrequest.branch=${env.CHANGE_BRANCH} " +
"-Dsonar.pullrequest.key=${env.CHANGE_ID} " +
"-Dsonar.pullrequest.provider=bitbucketcloud " +
"-Dsonar.pullrequest.bitbucketcloud.owner=sdorra " +
"-Dsonar.pullrequest.bitbucketcloud.repository=scm-manager " +
"-Dsonar.cpd.exclusions=**/*StoreFactory.java,**/*UserPassword.js "
} else {
mvnArgs += " -Dsonar.branch.name=${env.BRANCH_NAME} "
if (!isMainBranch()) {
// Avoid exception "The main branch must not have a target" on main branch
mvnArgs += " -Dsonar.branch.target=${mainBranch} "
}
}
mvn "${mvnArgs}"
}
}
boolean isReleaseBranch() { boolean isReleaseBranch() {
return env.BRANCH_NAME.startsWith("release/"); return env.BRANCH_NAME.startsWith("release/");
} }

View File

@@ -1,18 +0,0 @@
# Extension Points
- [AuthenticationHandler](http://docs.scm-manager.org/apidocs/latest/sonia/scm/web/security/AuthenticationHandler.html)
- [AuthenticationListener](http://docs.scm-manager.org/apidocs/latest/sonia/scm/web/security/AuthenticationListener.html)
- [ChangesetPreProcessor](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/ChangesetPreProcessor.html)
- [ChangesetPreProcessorFactory](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/ChangesetPreProcessorFactory.html)
- [FileObjectPreProcessor](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/FileObjectPreProcessor.html)
- [FileObjectPreProcessorFactory](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/FileObjectPreProcessorFactory.html)
- [FileSystem](http://docs.scm-manager.org/apidocs/latest/sonia/scm/io/FileSystem.html)
- [GroupListener](http://docs.scm-manager.org/apidocs/latest/sonia/scm/group/GroupListener.html)
- [Module](http://google-guice.googlecode.com/svn/tags/3.0/javadoc/com/google/inject/Module.html)
- [RepositoryHandler](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/RepositoryHandler.html)
- [RepositoryHook](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/RepositoryHook.html)
- [RepositoryListener](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/RepositoryListener.html)
- [RepositoryRequestListener](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/RepositoryRequestListener.html)
- [ResourceHandler](http://docs.scm-manager.org/apidocs/latest/sonia/scm/resources/ResourceHandler.html)
- [ServletModule](http://google-guice.googlecode.com/svn/tags/3.0/javadoc/com/google/inject/servlet/ServletModule.html)
- [UserListener](http://docs.scm-manager.org/apidocs/latest/sonia/scm/user/UserListener.html)

View File

@@ -1,104 +0,0 @@
The easiest way to share and manage your Git, Mercurial and Subversion
repositories over http.
- Very easy installation
- No need to hack configuration files, SCM-Manager is completely
configureable from its Web-Interface
- No Apache and no database installation is required
- Central user, group and permission management
- Out of the box support for Git, Mercurial and Subversion
- Full RESTFul Web Service API (JSON and XML)
- Rich User Interface
- Simple Plugin API
- Useful plugins available ( f.e. Ldap-, ActiveDirectory-,
PAM-Authentication)
- Licensed under the MIT-License
### News
- **2018-09-25** - [SCM-Manager 2 gets a boost by Cloudogu GmbH](https://www.scm-manager.org/scm-manager-2/scm-manager-2-gets-a-boost-by-cloudogu-gmbh/)
- **2018-05-04** - SCM-Manager 1.60 released ([download](http://www.scm-manager.org/download/) \|
[release notes](release-notes.md))
- **2018-04-11** - SCM-Manager 1.59 released
[All news](http://www.scm-manager.org/news/)
### Mailing List
- <scmmanager@googlegroups.com> -
[archive](http://groups.google.com/group/scmmanager) \|
[subscribe](mailto:scmmanager+subscribe@googlegroups.com)
\|
[unsubscribe](mailto:scmmanager+unsubscribe@googlegroups.com)
### Use SCM-Manager
- [Getting started](getting-started.md)
- [Download latest version](http://www.scm-manager.org/download/)
- [Frequently Asked Questions](faq.md)
- [Upgrade SCM-Manager to a newer version](upgrade.md)
- [Download latest snapshot release](download-snapshot-release.md)
- [Download Archive](download-archive.md)
- [Command line client](command-line-client.md)
- [SCM-Server SSL](scm-server-ssl.md)
- [ApplicationServer (Tomcat/Glassfish/Jetty)](applicationserver.md)
- [Using SCM-Manager with Apache mod\_proxy](apache/apache-mod_proxy.md)
- [Using SCM-Manager with Nginx](nginx.md)
- [Using SCM-Manager with IIS (Helicon)](iis-helicon.md)
- [Permissions](Permissions.md)
- [Plugins](http://plugins.scm-manager.org/scm-plugin-backend/page/index.html)
- [Revision Control Plugin Comparison](rv-plugin-comparison.md)
- [Screenshots](http://www.scm-manager.org/screenshots/)
- [Mercurial Subrepositories](subrepositories.md)
- [Unix Daemons and Windows Services](daemons.md)
- [RPM and DEB packages](RPM%20and%20DEB%20packages.md)
- [Build windows mercurial packages for SCM-Manager](https://bitbucket.org/sdorra/build-win-hg-packages)
### Plugin documentation
- [Active Directory Plugin](active-directory-plugin.md)
- [Branch Write Protect Plugin](branchwp-plugin.md)
- [Jenkins Plugin](jenkins-plugin.md)
- [Jira Plugin](jira-plugin.md)
- [Mail Plugin](mail-plugin.md)
- [Path Write Protect Plugin](pathwp-plugin.md)
- [Redmine Plugin](redmine-plugin.md)
- [Scheduler Plugin](scheduler-plugin.md)
- [Trac Plugin](trac-plugin.md)
- [WebHook Plugin](webhook-plugin.md)
### Development
- [Building SCM-Manager from source](build-from-source.md)
- [Java Client API](java-client-api.md)
- [Code Snippets](code-snippets.md)
- [Configuring Eclipse projects for SCM-Manager](configure-eclipse.md)
- [Plugin Descriptor](plugin-descriptor.md)
- [ExtensionPoints](ExtensionPoints.md)
- [How to create your own plugin](howto-create-a-plugin.md)
- [Injection Objects](injectionObjects.md)
- [API documentation](http://docs.scm-manager.org/apidocs/latest/)
- [WebService documentation](http://docs.scm-manager.org/restdocs/current/)
### SCM Manager 2
- [Getting started](v2/getting-started.md)
- [Configuration for Intellij IDEA](v2/intellij-idea-configuration.md)
- [SCM v2 Test Cases](v2/test-cases.md)
- [Table of decisions made during development](v2/decision-table.md)
- [Definition of done](definition-of-done.md)
- [Style Guide](v2/style-guide.md)
- [Error Handling in REST, Java, UI](v2/error-handling.md)
- [Create a new Plugin](v2/create-plugin.md)
- [Migration Wizard](v2/migration-wizard.md)
- [Plugin Development](v2/plugin-development.md)
- [i18n for Plugins](v2/i18n-for-plugins.md)
- [Extension Points](v2/extension-points.md)
- [Migrate Plugin from v1](v2/migrate-plugin-from-v1.md)
- [API changes](v2/api-changes.md)
- [Changes to ui-components/ui-types](v2/changes-to-ui-components-or-ui-types.md)
- [Permission concept](v2/permission-concept.md)
- [Vulnerabilities](v2/vulnerabilities.md)
- [Common pitfall](v2/common-pitfall.md)
- [Release process](v2/release-process.md)
- [Known Issues](v2/known-issues.md)

View File

@@ -1 +0,0 @@
Moved to [State of SCM-Manager 2 development](State of SCM-Manager 2 development.md)

View File

@@ -1,29 +0,0 @@
## Permissions
SCM-Manager knows three different types of repository permissions:
Type | Description
----- | ----------
READ | The user is able to read
WRITE | The user is able to read and write
OWNER | The user is able to read, write and to manager permissions
Repository permissions can be assigned to users and groups. The permissions can be assigned
to only one repository or to each repository. Administrators have owner permissions on every repository.
### Repository permissions
Repository permissions can be managed by administrators and by repository owners.
The permissions can be managed on the permission tab of each repository.
![repository permissions](screenshots/permissions_repository.png "repository permissions")
### Global permissions
Global permissions are only manageable by administrators. They can be managed at *Security -> Users* or *Security -> Groups*.
![global permissions](screenshots/permissions_global.png "global permissions")
### Administrators
Administrators can mark other users as administrators at *Security -> Users*.

View File

@@ -1,71 +0,0 @@
# RPM and DEB packages
Since version 1.39, SCM-Manager is delivered as RPM and DEB package. The package are generated with the [nativepkg-maven-plugin](https://github.com/sdorra/nativepkg-maven-plugin). The following table shows the directory structure which will be created by the packages:
File | Description
--- | ---
/opt/scm-server | Main directory for scm-server installation
/etc/default/scm-server | Default settings for scm-server
/etc/init.d/scm-server | Start script for scm-server
/var/cache/scm/work | Cache directory
/var/log/scm | Logging directory
/var/lib/scm | SCM-Manager home directory
The package will create a user and group which are called scm. The scm user will be the owner of the process. The init script uses jsvc to start the scm-server process, which makes it possible to run scm-server on port 80 without running it as root user. The main settings for the server process are stored at /etc/default/scm-server.
## Installation
### RPM
The RPM package is tested with Fedora and Centos. Create a new files at /etc/yum.repos.d/SCM-Manager.repo with the following content to install the scm-manager repository:
```text
[scm-releases]
name=SCM-Manager Releases
baseurl=http://maven.scm-manager.org/nexus/content/repositories/releases
enabled=1
protect=0
gpgcheck=0
metadata_expire=30s
autorefresh=1
type=rpm-md
```
After file creation execute the following command to install scm-server:
```bash
# install the scm-server package
sudo yum install scm-server
```
### DEB
The DEB package is tested with Debian and Ubuntu. Execute the following commands to install scm-server:
```bash
# add the scm-manager repository
echo "echo 'deb http://maven.scm-manager.org/nexus/content/repositories/releases ./' >> /etc/apt/sources.list" | sudo sh
# install gpg key for the scm-manager repository
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 D742B261
# update
sudo apt-get update
# install scm-server
sudo apt-get install scm-server
```
## Migration from ApplicationServer or Standalone version
To migrate from an existing installation, you have to the following steps:
* Stop the old service
* Move the folder /opt/scm-server, if it exists
* Install the package
* Copy the content of your existing scm home directory to /var/lib/scm
* Change the owner of the directory and all containing files to scm:scm (chown -R scm:scm /var/lib/scm)
* Verify *repositoryDirectory* in /var/lib/scm/config/[git|hg|svn].xml], make sure they point to respective /var/lib/scm/repositories/[git|hg|svn] and not your old location. Otherwise the repository health check will fail.
* Optional: Reapply changes to /opt/scm-server/conf/server-config.xml and /opt/scm-server/conf/logging.xml
* Start scm-server (/etc/init.d/scm-server start)

View File

@@ -1,9 +0,0 @@
### Active Directory Plugin
- Connect your Windows machine to your local Active Directory
- Log in as a user of that directory
- Run the scm-server batch file
- Install the active-directory plugin
- Restart the scm-server
**Note**: Since version 1.7 of the plugin 64bit is supported.

View File

@@ -1,75 +0,0 @@
# Applicationserver
## Tomcat
Mercurial uses very large http headers for branch and head informations.
You have to increase the maxHttpHeaderSize parameter on the connector
configuration. Open the conf/server.xml and add the parameter to your
connector e.g.:
```xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxHttpHeaderSize="16384" />
```
After changing the configuration you have to restart the tomcat.
Source: <http://tomcat.apache.org/tomcat-7.0-doc/config/http.html>
**Note**: If you have problems with big mercurial pushes on instances which are newer than tomcat 7.0.55,
you have to increase/disable the maxSwallowSize (see issue [#691](https://github.com/scm-manager/scm-manager/issues/691)).
#### Access Log
If you wan\'t like to print the current user in tomcats access log you
could use a valve like the following:
```xml
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %{principal}r %t &quot;%r&quot; %s %b" />
```
The pattern **%{principal}r** is responsible for logging the
username to the access log (see issue [#877](https://github.com/scm-manager/scm-manager/issues/877)).
## GlassFish
To use SCM-Manager 1.6 and above with GlassFish 3 you have to add a
JVM-Option to the GlassFish configuration to override the jax-rs
packages. Please execute the following commands.
```bash
# override jax-rs packages
$ bin/asadmin create-jvm-options -Dcom.sun.enterprise.overrideablejavaxpackages=javax.ws.rs,javax.ws.rs.core,javax.ws.rs.ext
# increase http header size
$ bin/asadmin set configs.config.default-config.network-config.protocols.protocol.http-listener-1.http.header-buffer-length-bytes=16384
$ bin/asadmin set configs.config.default-config.network-config.protocols.protocol.http-listener-2.http.header-buffer-length-bytes=16384
```
**Note** Glassfish 3.1.2 and above seems not to work with SCM-Manager.
Please have a look at [QeO-QVX6wmsJ](https://groups.google.com/forum/#!searchin/scmmanager/glassfish/scmmanager/SEbuEU8H-qo/QeO-QVX6wmsJ "Exception deploying to Glassfish 3.1.2").
Restart the GlassFish-Server.
Source: <http://jersey.java.net/nonav/documentation/latest/glassfish.html>
## Jetty
If Jetty returns a HTTP \"413 FULL head\" status, you may want to
further increase the maximum header size. You can configure the limit by
setting the headerBufferSize for the connector you\'re using in the
jetty.xml file:
```xml
<Call name="addConnector">
<Arg>
<New class="org.mortbay.jetty.nio.SelectChannelConnector">
[...]
<Set name='headerBufferSize'>32768</Set>
</New>
</Arg>
</Call>
```

View File

@@ -1,323 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
<!--Created by yFiles for Java 2.10-->
<key for="graphml" id="d0" yfiles.type="resources"/>
<key for="port" id="d1" yfiles.type="portgraphics"/>
<key for="port" id="d2" yfiles.type="portgeometry"/>
<key for="port" id="d3" yfiles.type="portuserdata"/>
<key attr.name="url" attr.type="string" for="node" id="d4"/>
<key attr.name="description" attr.type="string" for="node" id="d5"/>
<key for="node" id="d6" yfiles.type="nodegraphics"/>
<key attr.name="Description" attr.type="string" for="graph" id="d7"/>
<key attr.name="url" attr.type="string" for="edge" id="d8"/>
<key attr.name="description" attr.type="string" for="edge" id="d9"/>
<key for="edge" id="d10" yfiles.type="edgegraphics"/>
<graph edgedefault="directed" id="G">
<data key="d7"/>
<node id="n0">
<data key="d5"/>
<data key="d6">
<y:GenericNode configuration="BevelNode">
<y:Geometry height="48.0" width="718.8125" x="30.6875" y="133.95833333333337"/>
<y:Fill color="#FF9900" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="173.212890625" x="272.7998046875" y="14.93359375">Security Filter / Apache Shiro<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:StyleProperties>
<y:Property class="java.lang.Boolean" name="ModernNodeShadow" value="true"/>
</y:StyleProperties>
</y:GenericNode>
</data>
</node>
<node id="n1">
<data key="d5"/>
<data key="d6">
<y:GenericNode configuration="BevelNode">
<y:Geometry height="100.0" width="175.0" x="31.75" y="29.749999999999943"/>
<y:Fill color="#FFCC00" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="70.826171875" x="52.0869140625" y="40.93359375">Git/Svn/HG<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:StyleProperties>
<y:Property class="java.lang.Boolean" name="ModernNodeShadow" value="true"/>
</y:StyleProperties>
</y:GenericNode>
</data>
</node>
<node id="n2">
<data key="d5"/>
<data key="d6">
<y:GenericNode configuration="BevelNode">
<y:Geometry height="48.0" width="355.0" x="394.125" y="447.0000000000002"/>
<y:Fill color="#339966" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="58.46875" x="148.265625" y="14.93359375">XML JAXB<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:StyleProperties>
<y:Property class="java.lang.Boolean" name="ModernNodeShadow" value="true"/>
</y:StyleProperties>
</y:GenericNode>
</data>
</node>
<node id="n3">
<data key="d5"/>
<data key="d6">
<y:GenericNode configuration="BevelNode">
<y:Geometry height="205.0" width="178.125" x="29.125" y="185.89583333333343"/>
<y:Fill color="#00CCFF" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="46.3984375" modelName="custom" textColor="#000000" visible="true" width="95.517578125" x="41.3037109375" y="79.30078125">Smart Http
WebDAV DeltaV
CGI<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:StyleProperties>
<y:Property class="java.lang.Boolean" name="ModernNodeShadow" value="true"/>
</y:StyleProperties>
</y:GenericNode>
</data>
</node>
<node id="n4">
<data key="d5"/>
<data key="d6">
<y:GenericNode configuration="BevelNode">
<y:Geometry height="48.0" width="265.0" x="212.5" y="29.749999999999943"/>
<y:Fill color="#FFCC00" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="50.142578125" x="107.4287109375" y="14.93359375">Browser<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:StyleProperties>
<y:Property class="java.lang.Boolean" name="ModernNodeShadow" value="true"/>
</y:StyleProperties>
</y:GenericNode>
</data>
</node>
<node id="n5">
<data key="d5"/>
<data key="d6">
<y:GenericNode configuration="BevelNode">
<y:Geometry height="48.0" width="265.0" x="212.5" y="81.87499999999994"/>
<y:Fill color="#FFCC00" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="32.546875" x="116.2265625" y="14.93359375">ExtJS<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:StyleProperties>
<y:Property class="java.lang.Boolean" name="ModernNodeShadow" value="true"/>
</y:StyleProperties>
</y:GenericNode>
</data>
</node>
<node id="n6">
<data key="d5"/>
<data key="d6">
<y:GenericNode configuration="BevelNode">
<y:Geometry height="100.0" width="265.0" x="484.5" y="29.812499999999886"/>
<y:Fill color="#FFCC00" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="84.90625" x="90.046875" y="40.93359375">RestAPI Client<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:StyleProperties>
<y:Property class="java.lang.Boolean" name="ModernNodeShadow" value="true"/>
</y:StyleProperties>
</y:GenericNode>
</data>
</node>
<node id="n7">
<data key="d5"/>
<data key="d6">
<y:GenericNode configuration="BevelNode">
<y:Geometry height="48.0" width="536.0" x="213.25000000000006" y="186.1666666666668"/>
<y:Fill color="#00CCFF" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="93.14453125" x="221.427734375" y="14.93359375">XML/JSON JAXB<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:StyleProperties>
<y:Property class="java.lang.Boolean" name="ModernNodeShadow" value="true"/>
</y:StyleProperties>
</y:GenericNode>
</data>
</node>
<node id="n8">
<data key="d5"/>
<data key="d6">
<y:GenericNode configuration="BevelNode">
<y:Geometry height="48.0" width="536.0" x="213.25" y="238.33333333333337"/>
<y:Fill color="#00CCFF" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="37.57421875" x="249.212890625" y="14.93359375">JAXRS<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:StyleProperties>
<y:Property class="java.lang.Boolean" name="ModernNodeShadow" value="true"/>
</y:StyleProperties>
</y:GenericNode>
</data>
</node>
<node id="n9">
<data key="d5"/>
<data key="d6">
<y:GenericNode configuration="BevelNode">
<y:Geometry height="48.0" width="175.0" x="213.25" y="290.50000000000006"/>
<y:Fill color="#00CCFF" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="106.392578125" x="34.3037109375" y="14.93359375">RepositoryService<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:StyleProperties>
<y:Property class="java.lang.Boolean" name="ModernNodeShadow" value="true"/>
</y:StyleProperties>
</y:GenericNode>
</data>
</node>
<node id="n10">
<data key="d5"/>
<data key="d6">
<y:GenericNode configuration="BevelNode">
<y:Geometry height="48.0" width="175.0" x="393.75" y="290.50000000000006"/>
<y:Fill color="#00CCFF" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="54.115234375" x="60.4423828125" y="14.93359375">Manager<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:StyleProperties>
<y:Property class="java.lang.Boolean" name="ModernNodeShadow" value="true"/>
</y:StyleProperties>
</y:GenericNode>
</data>
</node>
<node id="n11">
<data key="d5"/>
<data key="d6">
<y:GenericNode configuration="BevelNode">
<y:Geometry height="48.0" width="175.0" x="393.75" y="394.8333333333335"/>
<y:Fill color="#00CCFF" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="30.58984375" x="72.205078125" y="14.93359375">DAO<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:StyleProperties>
<y:Property class="java.lang.Boolean" name="ModernNodeShadow" value="true"/>
</y:StyleProperties>
</y:GenericNode>
</data>
</node>
<node id="n12">
<data key="d5"/>
<data key="d6">
<y:GenericNode configuration="BevelNode">
<y:Geometry height="48.0" width="355.0" x="213.375" y="342.66666666666674"/>
<y:Fill color="#FF9900" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="173.212890625" x="90.8935546875" y="14.93359375">Security Filter / Apache Shiro<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:StyleProperties>
<y:Property class="java.lang.Boolean" name="ModernNodeShadow" value="true"/>
</y:StyleProperties>
</y:GenericNode>
</data>
</node>
<node id="n13">
<data key="d5"/>
<data key="d6">
<y:GenericNode configuration="BevelNode">
<y:Geometry height="152.0" width="175.0" x="574.5" y="290.6666666666668"/>
<y:Fill color="#00CCFF" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="56.083984375" x="59.4580078125" y="66.93359375">Store API<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:StyleProperties>
<y:Property class="java.lang.Boolean" name="ModernNodeShadow" value="true"/>
</y:StyleProperties>
</y:GenericNode>
</data>
</node>
<node id="n14">
<data key="d5"/>
<data key="d6">
<y:GenericNode configuration="BevelNode">
<y:Geometry height="100.0" width="358.6875" x="29.125" y="394.91666666666686"/>
<y:Fill color="#339966" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="112.7265625" x="122.98046875" y="40.93359375">JGit/Svnkit/JavaHG<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:StyleProperties>
<y:Property class="java.lang.Boolean" name="ModernNodeShadow" value="true"/>
</y:StyleProperties>
</y:GenericNode>
</data>
</node>
</graph>
<data key="d0">
<y:Resources/>
</data>
</graphml>

Binary file not shown.

View File

@@ -1,40 +0,0 @@
# Branch Write Protect Plugin
### Installation
- Login in as administrator
- Open Plugins
- Install scm-branchwp-plugin
- Restart your applicationserver
### Usage
After the restart you should see a \"Branch write protect\" tab for each
repository. On this tab you are able to set branch write protections for
users and groups. Here are some rules for the usage of the branchwp
plugin:
- Administrators and repository owner have always write access.
- Grant write permissions on the \"Permission\" tab for every user or
group who should write to any branch in the repository.
- If the branchwp plugin is enabled, nobody can write to the
repository expect administrators, repository owners and the
specified rules.
### Notes
The branchwp plugin works only for Git and Mercurial, for Subversion
have a look at the
[pathwp-plugin](http://plugins.scm-manager.org/scm-plugin-backend/page/detail/sonia.scm.plugins/scm-pathwp-plugin.html).
Since version 1.2 of the plugin it is possible to define deny
permissions and placeholders for branch names. Deny permissions are
handled always before allow permissions. At the state of version 1.2 the
following placeholders are available:
- {username} - will be replaced with the username of the current user
- {mail} - will be replaced with the e-mail address of the current
user
### Known issues
- [#235](https://github.com/scm-manager/scm-manager/issues/235 "branchwp plugin can not use on git")

View File

@@ -1,11 +0,0 @@
# Code Snippets
### User Interface
- [extend navigation](snippet-extend-navigation.md)
- [add tab to repository configuration](snippet-repository-tab.md)
- [extend global configuration](snippet-config-group.md)
### Backend
- [Authentication](snippet-authentication.md)

View File

@@ -1,75 +0,0 @@
# Configure Eclipse
There are multiple approaches to using Maven projects within Eclipse. If
you use an approach that isn\'t listed here, feel free to add it.
## Use Maven to generate Eclipse project files
1. First, [build scm-manager from source](build-from-source.md).
2. Open a shell to the root of your scm-manager source.
3. Run the following command:\
`mvn eclipse:configure-workspace -Declipse.workspace=YOUR_WORKSPACE_PATH`
4. Run the following command:\
`mvn eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true`
5. Open Eclipse using the specified workspace.
6. In Eclipse, select the \"File\", \"Import\...\" menu.
7. Select the \"General\", \"Existing Projects into Workspace\" item
and click \"Next\".
8. Click \"Browse\" and select the root of your scm-manager source.
9. All projects will be selected by default. Click \"Finish\".
### Troubleshooting
You may encounter an error during the \"eclipse:eclipse\" step that
looks like this:
```
[INFO] Request to merge when 'filtering' is not identical. Original=resource src
/main/resources: output=target/classes, include=[META-INF/scm/plugin.xml], exclu
de=[**/*.java], test=false, filtering=true, merging with=resource src/main/resou
rces: output=target/classes, include=[], exclude=[META-INF/scm/plugin.xml|**/*.j
ava], test=false, filtering=false
```
This error is caused by a bug in version 2.7 and 2.8 of the Maven
eclipse plugin. See below for one workaround. Other discussion of this
issue can be found
[here](http://forums.atlassian.com/thread.jspa?threadID=34952&tstart=1).
1. Add the following line within the <settings> element of your /.m2/settings.xml file:\
`<usePluginRegistry>true</usePluginRegistry>`
1. Add the file /.m2/plugin-registry.xml with the following contents:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<pluginRegistry
xsi:schemaLocation="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0 http://maven.apache.org/xsd/plugin-registry-1.0.0.xsd"
xmlns="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<useVersion>2.6</useVersion>
<rejectedVersions>
<rejectedVersion>2.7</rejectedVersion>
<rejectedVersion>2.8</rejectedVersion>
</rejectedVersions>
</plugin>
</plugins>
</pluginRegistry>
```
If you have .project files in any parent directory, the Eclipse import
step will not search beneath that parent for any further projects.
Delete the .project file in the parent and try the import again.
If you get errors in Eclipse about not finding M2\_REPO, it means that
the eclipse:configure-workspace step didn't work. One cause for this
could be using \"\~\" or other special characters in your workspace path
that the plugin doesn't resolve properly. Either re-run
eclipse:configure-workspace, or manually create a classpath variable
named M2\_REPO pointing to the root of your local maven repository
directory.
If you get compilation errors on JAXB or ServiceLoader, your Eclipse may
not be configured to use Java 6.

View File

@@ -1,33 +0,0 @@
# Unix Daemons and Windows Services
**Note**: If you are using a 64Bit operating system you should use a 64Bit JavaVirtualMachine as well
([#74](https://github.com/scm-manager/scm-manager/issues/74) or
[rOL1nJ9DnfI](https://groups.google.com/forum/?fromgroups#!topic/scmmanager/rOL1nJ9DnfI "Can't start scm windows service")).
### Unix Daemons
You could run scm-server in background as unix daemon with one simple command:
```bash
scm-server start
```
If you would like to stop the running daemon instance just call:
```bash
scm-server stop
```
### Windows Services
Register scm-server as Windows service open a console (cmd) as Administrator and execute the following command:
```bash
scm-server.bat install
```
The service is no available in the service control center. You could uninstall the service with the command below:
```bash
scm-server.bat uninstall
```

View File

@@ -1,769 +0,0 @@
# Download Archive
### SCM-Server 1.59 (standalone)
- [scm-server-1.59-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.59/scm-server-1.59-app.zip)
- [scm-server-1.59-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.59/scm-server-1.59-app.tar.gz)
### SCM-WebApp 1.59 (Web application archive)
- [scm-webapp-1.59.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.59/scm-webapp-1.59.war)
### SCM-Cli-Client 1.59 (Java application archive)
- [scm-cli-client-1.59-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.59/scm-cli-client-1.59-jar-with-dependencies.jar)
### SCM-Server 1.58 (standalone)
- [scm-server-1.58-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.58/scm-server-1.58-app.zip)
- [scm-server-1.58-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.58/scm-server-1.58-app.tar.gz)
### SCM-WebApp 1.58 (Web application archive)
- [scm-webapp-1.58.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.58/scm-webapp-1.58.war)
### SCM-Cli-Client 1.58 (Java application archive)
- [scm-cli-client-1.58-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.58/scm-cli-client-1.58-jar-with-dependencies.jar)
### SCM-Server 1.57 (standalone)
- [scm-server-1.57-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.57/scm-server-1.57-app.zip)
- [scm-server-1.57-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.57/scm-server-1.57-app.tar.gz)
### SCM-WebApp 1.57 (Web application archive)
- [scm-webapp-1.57.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.57/scm-webapp-1.57.war)
### SCM-Cli-Client 1.57 (Java application archive)
- [scm-cli-client-1.57-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.57/scm-cli-client-1.57-jar-with-dependencies.jar)
### SCM-Server 1.56 (standalone)
- [scm-server-1.56-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.56/scm-server-1.56-app.zip)
- [scm-server-1.56-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.56/scm-server-1.56-app.tar.gz)
### SCM-WebApp 1.56 (Web application archive)
- [scm-webapp-1.56.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.56/scm-webapp-1.56.war)
### SCM-Cli-Client 1.56 (Java application archive)
- [scm-cli-client-1.56-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.56/scm-cli-client-1.56-jar-with-dependencies.jar)
### SCM-Server 1.55 (standalone)
- [scm-server-1.55-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.55/scm-server-1.55-app.zip)
- [scm-server-1.55-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.55/scm-server-1.55-app.tar.gz)
### SCM-WebApp 1.55 (Web application archive)
- [scm-webapp-1.55.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.55/scm-webapp-1.55.war)
### SCM-Cli-Client 1.55 (Java application archive)
- [scm-cli-client-1.55-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.55/scm-cli-client-1.55-jar-with-dependencies.jar)
### SCM-Server 1.54 (standalone)
- [scm-server-1.54-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.54/scm-server-1.54-app.zip)
- [scm-server-1.54-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.54/scm-server-1.54-app.tar.gz)
### SCM-WebApp 1.54 (Web application archive)
- [scm-webapp-1.54.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.54/scm-webapp-1.54.war)
### SCM-Cli-Client 1.54 (Java application archive)
- [scm-cli-client-1.54-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.54/scm-cli-client-1.54-jar-with-dependencies.jar)
### SCM-Server 1.53 (standalone)
- [scm-server-1.53-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.53/scm-server-1.53-app.zip)
- [scm-server-1.53-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.53/scm-server-1.53-app.tar.gz)
### SCM-WebApp 1.53 (Web application archive)
- [scm-webapp-1.53.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.53/scm-webapp-1.53.war)
### SCM-Cli-Client 1.53 (Java application archive)
- [scm-cli-client-1.53-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.53/scm-cli-client-1.53-jar-with-dependencies.jar)
### SCM-Server 1.52 (standalone)
- [scm-server-1.52-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.52/scm-server-1.52-app.zip)
- [scm-server-1.52-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.52/scm-server-1.52-app.tar.gz)
### SCM-WebApp 1.52 (Web application archive)
- [scm-webapp-1.52.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.52/scm-webapp-1.52.war)
### SCM-Cli-Client 1.52 (Java application archive)
- [scm-cli-client-1.52-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.52/scm-cli-client-1.52-jar-with-dependencies.jar)
### SCM-Server 1.51 (standalone)
- [scm-server-1.51-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.51/scm-server-1.51-app.zip)
- [scm-server-1.51-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.51/scm-server-1.51-app.tar.gz)
### SCM-WebApp 1.51 (Web application archive)
- [scm-webapp-1.51.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.51/scm-webapp-1.51.war)
### SCM-Cli-Client 1.51 (Java application archive)
- [scm-cli-client-1.51-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.51/scm-cli-client-1.51-jar-with-dependencies.jar)
### SCM-Server 1.50 (standalone)
- [scm-server-1.50-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.50/scm-server-1.50-app.zip)
- [scm-server-1.50-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.50/scm-server-1.50-app.tar.gz)
### SCM-WebApp 1.50 (Web application archive)
- [scm-webapp-1.50.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.50/scm-webapp-1.50.war)
### SCM-Cli-Client 1.50 (Java application archive)
- [scm-cli-client-1.50-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.50/scm-cli-client-1.50-jar-with-dependencies.jar)
### SCM-Server 1.49 (standalone)
- [scm-server-1.49-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.49/scm-server-1.49-app.zip)
- [scm-server-1.49-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.49/scm-server-1.49-app.tar.gz)
### SCM-WebApp 1.49 (Web application archive)
- [scm-webapp-1.49.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.49/scm-webapp-1.49.war)
### SCM-Cli-Client 1.49 (Java application archive)
- [scm-cli-client-1.49-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.49/scm-cli-client-1.49-jar-with-dependencies.jar)
### SCM-Server 1.48 (standalone)
- [scm-server-1.48-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.48/scm-server-1.48-app.zip)
- [scm-server-1.48-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.48/scm-server-1.48-app.tar.gz)
### SCM-WebApp 1.48 (Web application archive)
- [scm-webapp-1.48.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.48/scm-webapp-1.48.war)
### SCM-Cli-Client 1.48 (Java application archive)
- [scm-cli-client-1.48-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.48/scm-cli-client-1.48-jar-with-dependencies.jar)
### SCM-Server 1.47 (standalone)
- [scm-server-1.47-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.47/scm-server-1.47-app.zip)
- [scm-server-1.47-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.47/scm-server-1.47-app.tar.gz)
### SCM-WebApp 1.47 (Web application archive)
- [scm-webapp-1.47.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.47/scm-webapp-1.47.war)
### SCM-Cli-Client 1.47 (Java application archive)
- [scm-cli-client-1.47-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.47/scm-cli-client-1.47-jar-with-dependencies.jar)
### SCM-Server 1.46 (standalone)
- [scm-server-1.46-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.46/scm-server-1.46-app.zip)
- [scm-server-1.46-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.46/scm-server-1.46-app.tar.gz)
### SCM-WebApp 1.46 (Web application archive)
- [scm-webapp-1.46.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.46/scm-webapp-1.46.war)
### SCM-Cli-Client 1.46 (Java application archive)
- [scm-cli-client-1.46-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.46/scm-cli-client-1.46-jar-with-dependencies.jar)
### SCM-Server 1.45 (standalone)
- [scm-server-1.45-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.45/scm-server-1.45-app.zip)
- [scm-server-1.45-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.45/scm-server-1.45-app.tar.gz)
### SCM-WebApp 1.45 (Web application archive)
- [scm-webapp-1.45.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.45/scm-webapp-1.45.war)
### SCM-Cli-Client 1.45 (Java application archive)
- [scm-cli-client-1.45-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.45/scm-cli-client-1.45-jar-with-dependencies.jar)
### SCM-Server 1.44 (standalone)
- [scm-server-1.44-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.44/scm-server-1.44-app.zip)
- [scm-server-1.44-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.44/scm-server-1.44-app.tar.gz)
### SCM-WebApp 1.44 (Web application archive)
- [scm-webapp-1.44.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.44/scm-webapp-1.44.war)
### SCM-Cli-Client 1.44 (Java application archive)
- [scm-cli-client-1.44-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.44/scm-cli-client-1.44-jar-with-dependencies.jar)
### SCM-Server 1.43 (standalone)
- [scm-server-1.43-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.43/scm-server-1.43-app.zip)
- [scm-server-1.43-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.43/scm-server-1.43-app.tar.gz)
### SCM-WebApp 1.43 (Web application archive)
- [scm-webapp-1.43.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.43/scm-webapp-1.43.war)
### SCM-Cli-Client 1.43 (Java application archive)
- [scm-cli-client-1.43-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.43/scm-cli-client-1.43-jar-with-dependencies.jar)
### SCM-Server 1.42 (standalone)
- [scm-server-1.42-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.42/scm-server-1.42-app.zip)
- [scm-server-1.42-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.42/scm-server-1.42-app.tar.gz)
### SCM-WebApp 1.42 (Web application archive)
- [scm-webapp-1.42.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.42/scm-webapp-1.42.war)
### SCM-Cli-Client 1.42 (Java application archive)
- [scm-cli-client-1.42-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.42/scm-cli-client-1.42-jar-with-dependencies.jar)
### SCM-Server 1.41 (standalone)
- [scm-server-1.41-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.41/scm-server-1.41-app.zip)
- [scm-server-1.41-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.41/scm-server-1.41-app.tar.gz)
### SCM-WebApp 1.41 (Web application archive)
- [scm-webapp-1.41.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.41/scm-webapp-1.41.war)
### SCM-Cli-Client 1.41 (Java application archive)
- [scm-cli-client-1.41-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.41/scm-cli-client-1.41-jar-with-dependencies.jar)
### SCM-Server 1.40 (standalone)
- [scm-server-1.40-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.40/scm-server-1.40-app.zip)
- [scm-server-1.40-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.40/scm-server-1.40-app.tar.gz)
### SCM-WebApp 1.40 (Web application archive)
- [scm-webapp-1.40.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.40/scm-webapp-1.40.war)
### SCM-Cli-Client 1.40 (Java application archive)
- [scm-cli-client-1.40-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.40/scm-cli-client-1.40-jar-with-dependencies.jar)
### SCM-Server 1.39 (standalone)
- [scm-server-1.39-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.39/scm-server-1.39-app.zip)
- [scm-server-1.39-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.39/scm-server-1.39-app.tar.gz)
### SCM-WebApp 1.39 (Web application archive)
- [scm-webapp-1.39.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.39/scm-webapp-1.39.war)
### SCM-Cli-Client 1.39 (Java application archive)
- [scm-cli-client-1.39-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.39/scm-cli-client-1.39-jar-with-dependencies.jar)
### SCM-Server 1.38 (standalone)
- [scm-server-1.38-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.38/scm-server-1.38-app.zip)
- [scm-server-1.38-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.38/scm-server-1.38-app.tar.gz)
### SCM-WebApp 1.38 (Web application archive)
- [scm-webapp-1.38.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.38/scm-webapp-1.38.war)
### SCM-Cli-Client 1.38 (Java application archive)
- [scm-cli-client-1.38-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.38/scm-cli-client-1.38-jar-with-dependencies.jar)
### SCM-Server 1.37 (standalone)
- [scm-server-1.37-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.37/scm-server-1.37-app.zip)
- [scm-server-1.37-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.37/scm-server-1.37-app.tar.gz)
### SCM-WebApp 1.37 (Web application archive)
- [scm-webapp-1.37.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.37/scm-webapp-1.37.war)
### SCM-Cli-Client 1.37 (Java application archive)
- [scm-cli-client-1.37-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.37/scm-cli-client-1.37-jar-with-dependencies.jar)
### SCM-Server 1.36 (standalone)
- [scm-server-1.36-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.36/scm-server-1.36-app.zip)
- [scm-server-1.36-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.36/scm-server-1.36-app.tar.gz)
### SCM-WebApp 1.36 (Web application archive)
- [scm-webapp-1.36.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.36/scm-webapp-1.36.war)
### SCM-Cli-Client 1.36 (Java application archive)
- [scm-cli-client-1.36-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.36/scm-cli-client-1.36-jar-with-dependencies.jar)
### SCM-Server 1.35 (standalone)
- [scm-server-1.35-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.35/scm-server-1.35-app.zip)
- [scm-server-1.35-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.35/scm-server-1.35-app.tar.gz)
### SCM-WebApp 1.35 (Web application archive)
- [scm-webapp-1.35.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.35/scm-webapp-1.35.war)
### SCM-Cli-Client 1.35 (Java application archive)
- [scm-cli-client-1.35-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.35/scm-cli-client-1.35-jar-with-dependencies.jar)
### SCM-Server 1.34 (standalone)
- [scm-server-1.34-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.34/scm-server-1.34-app.zip)
- [scm-server-1.34-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.34/scm-server-1.34-app.tar.gz)
### SCM-WebApp 1.34 (Web application archive)
- [scm-webapp-1.34.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.34/scm-webapp-1.34.war)
### SCM-Cli-Client 1.34 (Java application archive)
- [scm-cli-client-1.34-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.34/scm-cli-client-1.34-jar-with-dependencies.jar)
### SCM-Server 1.33 (standalone)
- [scm-server-1.33-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.33/scm-server-1.33-app.zip)
- [scm-server-1.33-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.33/scm-server-1.33-app.tar.gz)
### SCM-WebApp 1.33 (Web application archive)
- [scm-webapp-1.33.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.33/scm-webapp-1.33.war)
### SCM-Cli-Client 1.33 (Java application archive)
- [scm-cli-client-1.33-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.33/scm-cli-client-1.33-jar-with-dependencies.jar)
### SCM-Server 1.32 (standalone)
- [scm-server-1.32-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.32/scm-server-1.32-app.zip)
- [scm-server-1.32-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.32/scm-server-1.32-app.tar.gz)
### SCM-WebApp 1.32 (Web application archive)
- [scm-webapp-1.32.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.32/scm-webapp-1.32.war)
### SCM-Cli-Client 1.32 (Java application archive)
- [scm-cli-client-1.32-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.32/scm-cli-client-1.32-jar-with-dependencies.jar)
### SCM-Server 1.31 (standalone)
- [scm-server-1.31-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.31/scm-server-1.31-app.zip)
- [scm-server-1.31-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.31/scm-server-1.31-app.tar.gz)
### SCM-WebApp 1.31 (Web application archive)
- [scm-webapp-1.31.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.31/scm-webapp-1.31.war)
### SCM-Cli-Client 1.31 (Java application archive)
- [scm-cli-client-1.31-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.31/scm-cli-client-1.31-jar-with-dependencies.jar)
### SCM-Server 1.30 (standalone)
- [scm-server-1.30-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.30/scm-server-1.30-app.zip)
- [scm-server-1.30-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.30/scm-server-1.30-app.tar.gz)
### SCM-WebApp 1.30 (Web application archive)
- [scm-webapp-1.30.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.30/scm-webapp-1.30.war)
### SCM-Cli-Client 1.30 (Java application archive)
- [scm-cli-client-1.30-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.30/scm-cli-client-1.30-jar-with-dependencies.jar)
### SCM-Server 1.29 (standalone)
- [scm-server-1.29-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.29/scm-server-1.29-app.zip)
- [scm-server-1.29-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.29/scm-server-1.29-app.tar.gz)
### SCM-WebApp 1.29 (Web application archive)
- [scm-webapp-1.29.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.29/scm-webapp-1.29.war)
### SCM-Cli-Client 1.29 (Java application archive)
- [scm-cli-client-1.29-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.29/scm-cli-client-1.29-jar-with-dependencies.jar)
### SCM-Server 1.28 (standalone)
- [scm-server-1.28-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.28/scm-server-1.28-app.zip)
- [scm-server-1.28-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.28/scm-server-1.28-app.tar.gz)
### SCM-WebApp 1.28 (Web application archive)
- [scm-webapp-1.28.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.28/scm-webapp-1.28.war)
### SCM-Cli-Client 1.28 (Java application archive)
- [scm-cli-client-1.28-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.28/scm-cli-client-1.28-jar-with-dependencies.jar)
### SCM-Server 1.27 (standalone)
- [scm-server-1.27-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.27/scm-server-1.27-app.zip)
- [scm-server-1.27-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.27/scm-server-1.27-app.tar.gz)
### SCM-WebApp 1.27 (Web application archive)
- [scm-webapp-1.27.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.27/scm-webapp-1.27.war)
### SCM-Cli-Client 1.27 (Java application archive)
- [scm-cli-client-1.27-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.27/scm-cli-client-1.27-jar-with-dependencies.jar)
### SCM-Server 1.26 (standalone)
- [scm-server-1.26-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.26/scm-server-1.26-app.zip)
- [scm-server-1.26-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.26/scm-server-1.26-app.tar.gz)
### SCM-WebApp 1.26 (Web application archive)
- [scm-webapp-1.26.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.26/scm-webapp-1.26.war)
### SCM-Cli-Client 1.26 (Java application archive)
- [scm-cli-client-1.26-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.26/scm-cli-client-1.26-jar-with-dependencies.jar)
### SCM-Server 1.25 (standalone)
- [scm-server-1.25-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.25/scm-server-1.25-app.zip)
- [scm-server-1.25-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.25/scm-server-1.25-app.tar.gz)
### SCM-WebApp 1.25 (Web application archive)
- [scm-webapp-1.25.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.25/scm-webapp-1.25.war)
### SCM-Cli-Client 1.25 (Java application archive)
- [scm-cli-client-1.25-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.25/scm-cli-client-1.25-jar-with-dependencies.jar)
### SCM-Server 1.24 (standalone)
- [scm-server-1.24-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.24/scm-server-1.24-app.zip)
- [scm-server-1.24-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.24/scm-server-1.24-app.tar.gz)
### SCM-WebApp 1.24 (Web application archive)
- [scm-webapp-1.24.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.24/scm-webapp-1.24.war)
### SCM-Cli-Client 1.24 (Java application archive)
- [scm-cli-client-1.24-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.24/scm-cli-client-1.24-jar-with-dependencies.jar)
### SCM-Server 1.23 (standalone)
- [scm-server-1.23-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.23/scm-server-1.23-app.zip)
- [scm-server-1.23-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.23/scm-server-1.23-app.tar.gz)
### SCM-WebApp 1.23 (Web application archive)
- [scm-webapp-1.23.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.23/scm-webapp-1.23.war)
### SCM-Cli-Client 1.23 (Java application archive)
- [scm-cli-client-1.23-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.23/scm-cli-client-1.23-jar-with-dependencies.jar)
### SCM-Server 1.22 (standalone)
- [scm-server-1.22-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.22/scm-server-1.22-app.zip)
- [scm-server-1.22-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.22/scm-server-1.22-app.tar.gz)
### SCM-WebApp 1.22 (Web application archive)
- [scm-webapp-1.22.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.22/scm-webapp-1.22.war)
### SCM-Cli-Client 1.22 (Java application archive)
- [scm-cli-client-1.22-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.22/scm-cli-client-1.22-jar-with-dependencies.jar)
### SCM-Server 1.21 (standalone)
- [scm-server-1.21-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.21/scm-server-1.21-app.zip)
- [scm-server-1.21-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.21/scm-server-1.21-app.tar.gz)
### SCM-WebApp 1.21 (Web application archive)
- [scm-webapp-1.21.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.21/scm-webapp-1.21.war)
### SCM-Cli-Client 1.21 (Java application archive)
- [scm-cli-client-1.21-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.21/scm-cli-client-1.21-jar-with-dependencies.jar)
### SCM-Server 1.20 (standalone)
- [scm-server-1.20-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.20/scm-server-1.20-app.zip)
- [scm-server-1.20-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.20/scm-server-1.20-app.tar.gz)
### SCM-WebApp 1.20 (Web application archive)
- [scm-webapp-1.20.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.20/scm-webapp-1.20.war)
### SCM-Cli-Client 1.20 (Java application archive)
- [scm-cli-client-1.20-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.20/scm-cli-client-1.20-jar-with-dependencies.jar)
### SCM-Server 1.19 (standalone)
- [scm-server-1.19-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.19/scm-server-1.19-app.zip)
- [scm-server-1.19-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.19/scm-server-1.19-app.tar.gz)
### SCM-WebApp 1.19 (Web application archive)
- [scm-webapp-1.19.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.19/scm-webapp-1.19.war)
### SCM-Cli-Client 1.19 (Java application archive)
- [scm-cli-client-1.19-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.19/scm-cli-client-1.19-jar-with-dependencies.jar)
### SCM-Server 1.18 (standalone)
- [scm-server-1.18-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.18/scm-server-1.18-app.zip)
- [scm-server-1.18-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.18/scm-server-1.18-app.tar.gz)
### SCM-WebApp 1.18 (Web application archive)
- [scm-webapp-1.18.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.18/scm-webapp-1.18.war)
### SCM-Cli-Client 1.18 (Java application archive)
- [scm-cli-client-1.18-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.18/scm-cli-client-1.18-jar-with-dependencies.jar)
### SCM-Server 1.17 (standalone)
- [scm-server-1.17-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.17/scm-server-1.17-app.zip)
- [scm-server-1.17-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.17/scm-server-1.17-app.tar.gz)
### SCM-WebApp 1.17 (Web application archive)
- [scm-webapp-1.17.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.17/scm-webapp-1.17.war)
### SCM-Cli-Client 1.17 (Java application archive)
- [scm-cli-client-1.17-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.17/scm-cli-client-1.17-jar-with-dependencies.jar)
### SCM-Server 1.16 (standalone)
- [scm-server-1.16-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.16/scm-server-1.16-app.zip)
- [scm-server-1.16-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.16/scm-server-1.16-app.tar.gz)
### SCM-WebApp 1.16 (Web application archive)
- [scm-webapp-1.16.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.16/scm-webapp-1.16.war)
### SCM-Cli-Client 1.16 (Java application archive)
- [scm-cli-client-1.16-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.16/scm-cli-client-1.16-jar-with-dependencies.jar)
### SCM-Server 1.15 (standalone)
- [scm-server-1.15-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.15/scm-server-1.15-app.zip)
- [scm-server-1.15-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.15/scm-server-1.15-app.tar.gz)
### SCM-WebApp 1.15 (Web application archive)
- [scm-webapp-1.15.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.15/scm-webapp-1.15.war)
### SCM-Cli-Client 1.15 (Java application archive)
- [scm-cli-client-1.15-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.15/scm-cli-client-1.15-jar-with-dependencies.jar)
### SCM-Server 1.14 (standalone)
- [scm-server-1.14-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.14/scm-server-1.14-app.zip)
- [scm-server-1.14-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.14/scm-server-1.14-app.tar.gz)
### SCM-WebApp 1.14 (Web application archive)
- [scm-webapp-1.14.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.14/scm-webapp-1.14.war)
### SCM-Cli-Client 1.14 (Java application archive)
- [scm-cli-client-1.14-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.14/scm-cli-client-1.14-jar-with-dependencies.jar)
### SCM-Server 1.13 (standalone)
- [scm-server-1.13-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.13/scm-server-1.13-app.zip)
- [scm-server-1.13-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.13/scm-server-1.13-app.tar.gz)
### SCM-WebApp 1.13 (Web application archive)
- [scm-webapp-1.13.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.13/scm-webapp-1.13.war)
### SCM-Cli-Client 1.13 (Java application archive)
- [scm-cli-client-1.13-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.13/scm-cli-client-1.13-jar-with-dependencies.jar)
### SCM-Server 1.12 (standalone)
- [scm-server-1.12-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.12/scm-server-1.12-app.zip)
- [scm-server-1.12-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.12/scm-server-1.12-app.tar.gz)
### SCM-WebApp 1.12 (Web application archive)
- [scm-webapp-1.12.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.12/scm-webapp-1.12.war)
### SCM-Cli-Client 1.12 (Java application archive)
- [scm-cli-client-1.12-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.12/scm-cli-client-1.12-jar-with-dependencies.jar)
### SCM-Server 1.11 (standalone)
- [scm-server-1.11-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.11/scm-server-1.11-app.zip)
- [scm-server-1.11-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.11/scm-server-1.11-app.tar.gz)
### SCM-WebApp 1.11 (Web application archive)
- [scm-webapp-1.11.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.11/scm-webapp-1.11.war)
### SCM-Cli-Client 1.11 (Java application archive)
- [scm-cli-client-1.11-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.11/scm-cli-client-1.11-jar-with-dependencies.jar)
### SCM-Server 1.10 (standalone)
- [scm-server-1.10-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.10/scm-server-1.10-app.zip)
- [scm-server-1.10-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.10/scm-server-1.10-app.tar.gz)
### SCM-WebApp 1.10 (Web application archive)
- [scm-webapp-1.10.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.10/scm-webapp-1.10.war)
### SCM-Cli-Client 1.10 (Java application archive)
- [scm-cli-client-1.10-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.10/scm-cli-client-1.10-jar-with-dependencies.jar)
### SCM-Server 1.9 (standalone)
- [scm-server-1.9-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.9/scm-server-1.9-app.zip)
- [scm-server-1.9-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.9/scm-server-1.9-app.tar.gz)
### SCM-WebApp 1.9 (Web application archive)
- [scm-webapp-1.9.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.9/scm-webapp-1.9.war)
### SCM-Cli-Client 1.9 (Java application archive)
- [scm-cli-client-1.9-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.9/scm-cli-client-1.9-jar-with-dependencies.jar)
### SCM-Server 1.8 (standalone)
- [scm-server-1.8-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.8/scm-server-1.8-app.zip)
- [scm-server-1.8-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.8/scm-server-1.8-app.tar.gz)
### SCM-WebApp 1.8 (Web application archive)
- [scm-webapp-1.8.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.8/scm-webapp-1.8.war)
### SCM-Cli-Client 1.8 (Java application archive)
- [scm-cli-client-1.8-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.8/scm-cli-client-1.8-jar-with-dependencies.jar)
### SCM-Server 1.7 (standalone)
- [scm-server-1.7-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.7/scm-server-1.7-app.zip)
- [scm-server-1.7-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.7/scm-server-1.7-app.tar.gz)
### SCM-WebApp 1.7 (Web application archive)
- [scm-webapp-1.7.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.7/scm-webapp-1.7.war)
### SCM-Cli-Client 1.7 (Java application archive)
- [scm-cli-client-1.7-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.7/scm-cli-client-1.7-jar-with-dependencies.jar)
### SCM-Server 1.6 (standalone)
- [scm-server-1.6-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.6/scm-server-1.6-app.zip)
- [scm-server-1.6-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.6/scm-server-1.6-app.tar.gz)
### SCM-WebApp 1.6 (Web application archive)
- [scm-webapp-1.6.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.6/scm-webapp-1.6.war)
### SCM-Cli-Client 1.6 (Java application archive)
- [scm-cli-client-1.6-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.6/scm-cli-client-1.6-jar-with-dependencies.jar)
### SCM-Server 1.5 (standalone)
- [scm-server-1.5-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.5/scm-server-1.5-app.zip)
- [scm-server-1.5-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.5/scm-server-1.5-app.tar.gz)
### SCM-WebApp 1.5 (Web application archive)
- [scm-webapp-1.5.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.5/scm-webapp-1.5.war)
### SCM-Cli-Client 1.5 (Java application archive)
- [scm-cli-client-1.5-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.5/scm-cli-client-1.5-jar-with-dependencies.jar)
### SCM-Server 1.4 (standalone)
- [scm-server-1.4-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.4/scm-server-1.4-app.zip)
- [scm-server-1.4-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.4/scm-server-1.4-app.tar.gz)
### SCM-WebApp 1.4 (Web application archive)
- [scm-webapp-1.4.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.4/scm-webapp-1.4.war)
### SCM-Cli-Client 1.4 (Java application archive)
- [scm-cli-client-1.4-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.4/scm-cli-client-1.4-jar-with-dependencies.jar)
### SCM-Server 1.3 (standalone)
- [scm-server-1.3-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.3/scm-server-1.3-app.zip)
- [scm-server-1.3-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.3/scm-server-1.3-app.tar.gz)
### SCM-WebApp 1.3 (Web application archive)
- [scm-webapp-1.3.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.3/scm-webapp-1.3.war)
### SCM-Cli-Client 1.3 (Java application archive)
- [scm-cli-client-1.3-jar-with-dependencies.jar](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/clients/scm-cli-client/1.3/scm-cli-client-1.3-jar-with-dependencies.jar)
### SCM-Server 1.2 (standalone)
- [scm-server-1.2-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.2/scm-server-1.2-app.zip)
- [scm-server-1.2-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.2/scm-server-1.2-app.tar.gz)
### SCM-WebApp 1.2 (Web application archive)
- [scm-webapp-1.2.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.2/scm-webapp-1.2.war)
### SCM-Server 1.1 (standalone)
- [scm-server-1.1-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.1/scm-server-1.1-app.zip)
- [scm-server-1.1-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.1/scm-server-1.1-app.tar.gz)
### SCM-WebApp 1.1 (Web application archive)
- [scm-webapp-1.1.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.1/scm-webapp-1.1.war)
### SCM-Server 1.0 (standalone)
- [scm-server-1.0-app.zip](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.0/scm-server-1.0-app.zip)
- [scm-server-1.0-app.tar.gz](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-server/1.0/scm-server-1.0-app.tar.gz)
### SCM-WebApp 1.0 (Web application archive)
- [scm-webapp-1.0.war](http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.0/scm-webapp-1.0.war)

View File

@@ -1,13 +0,0 @@
# Download latest Snapshot release
### SCM-Server 1.61 SNAPSHOT (standalone)
- [scm-server](https://repository-scm-manager.forge.cloudbees.com/snapshot/sonia/scm/scm-server/1.61-SNAPSHOT/)
### SCM-WebApp 1.61 SNAPSHOT (Web application archive)
- [scm-webapp](https://repository-scm-manager.forge.cloudbees.com/snapshot/sonia/scm/scm-webapp/1.61-SNAPSHOT)
### SCM-Cli-Client 1.61 SNAPSHOT (Java application archive)
- [scm-cli-client](https://repository-scm-manager.forge.cloudbees.com/snapshot/sonia/scm/clients/scm-cli-client/1.61-SNAPSHOT/)

View File

@@ -1,3 +0,0 @@
# Download
The download page has moved to <http://www.scm-manager.org/download/>

View File

@@ -1,4 +1,6 @@
# State of SCM-Manager 2 development ---
title: State of SCM-Manager 2 development
---
The development of SCM-Manager 2.0.0 is organised in [Trello Boards](https://trello.com/scmmanager). The development of SCM-Manager 2.0.0 is organised in [Trello Boards](https://trello.com/scmmanager).
## [Milestone 1](https://trello.com/b/oit1MD92/scm-manager-2-0-0-milestone-1) ## [Milestone 1](https://trello.com/b/oit1MD92/scm-manager-2-0-0-milestone-1)

View File

@@ -1,4 +1,6 @@
# Command line client ---
title: Command line client
---
You can download the command line client from You can download the command line client from
[here](http://www.scm-manager.org/download/) (the scm-cli-client). [here](http://www.scm-manager.org/download/) (the scm-cli-client).

View File

@@ -0,0 +1,17 @@
---
title: Logging
---
SCM-Manager logs information which can be useful, if the system does not behave as expected.
The logging behavior depends on your operating system and installation.
| Type of Installation | Logging |
|----------------------|---------|
| Docker | stdout |
| RPM | /var/log/scm |
| DEB | /var/log/scm |
| Unix | $BASEDIR/logs |
| Mac OS X | ~/Library/Logs/SCM-Manager |
| Windows | $BASEDIR\logs |
The location of the **$BASEDIR** can be found [here](basedirectory).

View File

@@ -1,4 +1,6 @@
# Permission Concept ---
title: Permission Concept
---
This documents describes a concept for a fine-grained permission managing via the SCMMv2 UI. This documents describes a concept for a fine-grained permission managing via the SCMMv2 UI.
@@ -119,11 +121,11 @@ In order to fulfill the requirements, this concept describes
The global permission component can be reached from **either user and groups** components navigations. The following mockup The global permission component can be reached from **either user and groups** components navigations. The following mockup
shows this in the user component: shows this in the user component:
![Permissions mockup user](../resources/permissions-mockup-user.jpg) ![Permissions mockup user](docs/en/resources/permissions-mockup-user.jpg)
The layout of the permission component UI could look like this: The layout of the permission component UI could look like this:
![Permissions mockup global permissions](../resources/permissions-mockup-global-permissions.jpg) ![Permissions mockup global permissions](docs/en/resources/permissions-mockup-global-permissions.jpg)
The UI The UI
* queries all available global permissions from the REST API (shiro strings), * queries all available global permissions from the REST API (shiro strings),
@@ -139,7 +141,7 @@ permissions (see `PermissionType`).
The UI is extended like so: The UI is extended like so:
![Permissions mockup repository permissions](../resources/permissions-mockup-repository-permissions.jpg) ![Permissions mockup repository permissions](docs/en/resources/permissions-mockup-repository-permissions.jpg)
#### Existing repository dialog #### Existing repository dialog
@@ -395,7 +397,7 @@ and write. That is,
Internationalization can be handled using the following conventions: Internationalization can be handled using the following conventions:
* All permission i18n are described in `plugins.json` (also for core), see [i18n for Plugins](i18n-for-plugins.md) * All permission i18n are described in `plugins.json` (also for core), see [i18n for Plugins](docs/en/i18n-for-plugins.mdugins.md)
* That way the UI for users and groups can find all the translation in the same file * That way the UI for users and groups can find all the translation in the same file
* Convention for i18n keys: `permissions.<shiro-String>`, containing `displayName` and `description` each. * Convention for i18n keys: `permissions.<shiro-String>`, containing `displayName` and `description` each.

View File

@@ -1,4 +1,6 @@
# SCM-Server SSL ---
title: SCM-Server SSL
---
**Note**: This document describes a ssl configuration with a **Note**: This document describes a ssl configuration with a
self-signed certificate self-signed certificate

View File

@@ -1,4 +1,6 @@
# SCM-Server and Apache mod\_jk ---
title: SCM-Server and Apache mod_jk
---
### Apache Configuration ### Apache Configuration
```apache ```apache

View File

@@ -1,4 +1,6 @@
# SCM-Server and Apache mod\_proxy ---
title: SCM-Server and Apache mod_proxy
---
### Apache configuration ### Apache configuration

View File

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 89 KiB

View File

@@ -0,0 +1,47 @@
---
title: Base Directory
---
The SCM-Manager base directory aka. home directory,
contains all data which is created by SCM-Manager such as repositories and configurations.
The location of the base directory depends on your operating system and type of installation.
| Type of Installation | Base directory |
|----------------------|----------------|
| Docker | /var/lib/scm |
| RPM | /var/lib/scm |
| DEB | /var/lib/scm |
| Unix | ~/.scm |
| Mac OS X | ~/Library/Application Support/SCM-Manager |
| Windows | %APPDATA%\SCM-Manager |
## Change base directory location
The location of the base directory can be changed by using one of the following ways.
The preferences are the following: Properties file over system property over environment variable.
### Environment variable
By setting the environment variable **SCM_HOME** e.g.:
```bash
export SCM_HOME=/home/scm
/opt/scm-server/bin/scm-server
```
For rpm and deb installations the variable can be changed via the file `/etc/default/scm-server`.
## System property
The path can be changed by setting the system property **scm.home** e.g.:
```bash
-Dscm.home=/home/scm
```
## Properties file
If SCM-Manager finds a file called `scm.properties` on the class path it reads the property `scm.home` e.g.:
```properties
scm.home=/home/scm
```

View File

@@ -0,0 +1,9 @@
---
title: Configuration
partiallyActive: true
---
* [Base Directory](basedirectory/)
* [Logging](logging/)
* [SCM-Server and Apache mod\_proxy](apache/apache-mod_proxy/)
* [SCM-Server and Apache mod\_jk](apache/apache-mod_jk/)

View File

@@ -0,0 +1,14 @@
The logging behaviour of SCM-Manager can be configured via an xml file.
The syntax and properties can be found [here](http://logback.qos.ch/manual/configuration.html).
The location of the file depends also on the type of installation.
| Type of Installation | Path |
|----------------------|---------|
| Docker | /opt/scm-server/conf/logging.xml |
| RPM | /etc/scm/logging.xml |
| DEB | /etc/scm/logging.xml |
| Unix | $EXTRACT_PATH/scm-server/conf/logging.xml |
| Mac OS X | $EXTRACT_PATH/scm-server/conf/logging.xml |
| Windows | $EXTRACT_PATH/scm-server/conf/logging.xml |
**$EXTRACT_PATH** is the path were you etract the content of the package.

View File

@@ -1,4 +1,6 @@
# Decision Table ---
title: Decision Table
---
### Lombok ### Lombok

View File

@@ -1,18 +1,20 @@
# Building SCM-Manager from source ---
title: Building SCM-Manager from source
---
### Software Requirements ### Software Requirements
- JDK 1.7 or higher - JDK 1.8 or higher
([download](http://www.oracle.com/technetwork/java/index.html)) ([download](https://openjdk.java.net/install/))
- Maven 3 or higher ([download](http://maven.apache.org/)) - Maven 3 or higher ([download](http://maven.apache.org/))
- Mercurial ([download](https://www.mercurial-scm.org/)) - Mercurial ([download](https://www.mercurial-scm.org/))
### Build SCM-Manager 1.x from source ### Build SCM-Manager 2.x from source
```bash ```bash
hg clone https://bitbucket.org/sdorra/scm-manager hg clone https://github.com/scm-manager/scm-manager.git
cd scm-manager cd scm-manager
hg update 1.x git checkout develop
mvn clean install mvn clean install
``` ```
@@ -26,15 +28,3 @@ located at **scm-server/target/scm-server-app**.
You can also start a dev server using `mvn jetty:run-war -f You can also start a dev server using `mvn jetty:run-war -f
scm-webapp`. SCM-Manager is served at <http://localhost:8081/scm>. scm-webapp`. SCM-Manager is served at <http://localhost:8081/scm>.
### REST
Docs:
- Create the documentation: `mvn -f scm-webapp compile -P doc`
- The documentation can be found at scm-webapp/target/restdocs
Note that if using jetty (see above) you have to access
<http://localhost:8081/scm> once, to trigger creation of the
`scmadmin` user. Then you can access the REST api directly
<http://localhost:8081/scm/api/rest>

View File

@@ -1,4 +1,6 @@
# Definition of Done ---
title: Definition of Done
---
* Acceptance criteria are checked manually (from the user's perspective) * Acceptance criteria are checked manually (from the user's perspective)
* Code coverage is checked manually (>= 80% on new code) ([sonarcloud](https://sonarcloud.io/dashboard?id=sonia.scm%3Ascm)) * Code coverage is checked manually (>= 80% on new code) ([sonarcloud](https://sonarcloud.io/dashboard?id=sonia.scm%3Ascm))

View File

@@ -1,4 +1,6 @@
# Error Handling ---
title: Error Handling
---
As a highly extensible product, SCM-Manager offers at least three ways to interact with: As a highly extensible product, SCM-Manager offers at least three ways to interact with:

121
docs/en/development/i18n.md Normal file
View File

@@ -0,0 +1,121 @@
---
title: I18n
subtitle: Howto do internationalization
displayToc: false
---
SCM-Manager uses [react-i18next](https://react.i18next.com) for internationalization.
The keys for the translation are stored in json files called `plugins.json` at `src/main/resources/locales/`,
followed by a folder for each language (e.g.: en for English, de for German).
The keys should be prefixed with the name of the plugin to avoid collisions e.g.:
`.../locales/en/plugins.json`:
```json
{
"scm-sample-plugin": {
"title": "Sample Title"
}
}
```
`.../locales/de/plugins.json`:
```json
{
"scm-sample-plugin": {
"title": "Beispiel Titel"
}
}
```
The translations keys can now be used with in the frontend.
**Function Component**:
```tsx
import React from "react";
// import hook from react-i18next library
import { useTranslation } from "react-i18next";
const Title = () => {
// use hook to obtain translate function for the namespace plugins
const { t } = useTranslation("plugins");
// use translate function to translate key scm-sample-plugin.title
return <p>{t("scm-sample-plugin.title")}</p>;
};
export default Title;
```
**Class Component**:
```tsx
import React from "react";
// import higher order component and types for out Props
import { WithTranslation, withTranslation } from "react-i18next";
// extend our props with WithTranslation
type Props = WithTranslation & {};
class Title extends React.Component<Props> {
render() {
// get translate function from props
const { t } = this.props;
// use translate function to translate key scm-sample-plugin.title
return <p>{t("scm-sample-plugin.title")}</p>;
}
};
// wrap our component with withTranslation for the namespace plugins
export default withTranslation("plugins")(Title);
```
If it is required to replace values in the content the `Trans` component can be used.
To achieve this goal we have to add placeholders to our translations e.g.:
`.../locales/en/plugins.json`:
```json
{
"scm-sample-plugin": {
"title": "Sample Title",
"greetings": "<0/> at <1/>"
}
}
```
`.../locales/de/plugins.json`:
```json
{
"scm-sample-plugin": {
"title": "Beispiel Titel",
"greetings": "<0/> um <1/>"
}
}
```
Now we can use the `Trans` component, not we have to specified the namespace with in the key:
```tsx
<Trans
i18nKey="plugins:scm-sample-plugin.greetings"
values={["Bob", new Date().toString()]}
/>
```
We can also replace the placeholders with react components:
```tsx
import {DateFromNow} from "@scm-manager/ui-components";
...
<Trans
i18nKey="plugins:scm-sample-plugin.greetings"
components={[
<p>"Bob"</p>,
<DateFromNow date={new Date()} />
]}
/>
```

View File

@@ -1,4 +1,6 @@
# Intellij IDEA Configuration ---
title: Intellij IDEA Configuration
---
## Backend ## Backend
@@ -13,7 +15,7 @@
* Add Maven * Add Maven
* Name: run-backend * Name: run-backend
* Working directory: ../scm-webapp * Working directory: ../scm-webapp
* Command line: -DskipTests package jetty:run-war * Command line: -DskipTests -Dlivereload package jetty:run-war
* Editor / Code Style / Java * Editor / Code Style / Java
* Tab Imports * Tab Imports
* Class count to use import with '*': <MAX_INT> * Class count to use import with '*': <MAX_INT>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

View File

@@ -0,0 +1,22 @@
---
title: Create a plugin
subtitle: Create a plugin from Maven Archetype
displayToc: true
---
# Requirements
Be sure you have installed the following software:
* [Java 8](https://java.com/de/download/)
* [Apache Maven](http://maven.apache.org/)
# Create the plugin structure
There is a service which is able to create a skeleton for a new plugin:
https://create-plugin.scm-manager.org/
# Implement your plugin
... draw the rest of the owl

View File

@@ -1,4 +1,6 @@
# Extension Points ---
title: Extension Points
---
The following extension points are provided for the frontend: The following extension points are provided for the frontend:

View File

@@ -1,4 +1,6 @@
# i18n for Plugins ---
title: i18n for Plugins
---
How to internationalize your own plugin How to internationalize your own plugin
### Create the plugins.json file ### Create the plugins.json file
@@ -31,8 +33,27 @@ locales/en/plugins.json
SCM-Manager use react-i18next to render translations. SCM-Manager use react-i18next to render translations.
#### Functional components
The following steps are needed to use react-i18next in the own The following steps are needed to use react-i18next in the own
components functional components:
- import react-i18next
```javascript
import { useTranslation } from "react-i18next";
```
- use the translation keys like this:
```javascript
const [t] = useTranslation("plugins");
...
<h3>{t("scm-svn-plugin.information.checkout")}</h3>
```
#### Class components
The following steps are needed to use react-i18next in the own
class components:
- import react-i18next - import react-i18next
```javascript ```javascript

View File

@@ -1,15 +1,8 @@
# Migrate an v1 plugin ---
title: Migrate a v1 plugin
---
Before starting, make sure to read the [Plugin Development](plugin-development.md) Before starting, make sure to read the [Plugin Development](docs/en/plugin-development.mdpment.md).
**NOTE**: until there is no release the current version of scm-manager has to be cloned and build on the machine
of the plugin developer.
```bash
git clone git@github.com:scm-manager/scm-manager.git
cd scm-manager
./mvnw clean install
```
To migrate an existing SCM-Manager 1.x Plugin, you have to do the following steps: To migrate an existing SCM-Manager 1.x Plugin, you have to do the following steps:
@@ -17,7 +10,7 @@ To migrate an existing SCM-Manager 1.x Plugin, you have to do the following step
* create a separate branch for the new version * create a separate branch for the new version
* It might be helpful to start and review the old version of the plugin via `mvn scmp:run` for later reference. * It might be helpful to start and review the old version of the plugin via `mvn scmp:run` for later reference.
* Import .hgignore & .editorconfig from SCMM * Import .gitignore & .editorconfig from SCMM
* You might run the build once and review and fix SCMMv1 deprecation warnings. SCMMv2 gets rids of all deprecated classes. * You might run the build once and review and fix SCMMv1 deprecation warnings. SCMMv2 gets rids of all deprecated classes.
* update the version of the parent artifact (sonia.scm.plugins:scm-plugins) to the minimum version of SCM-Manager 2 you are planning for your plugin * update the version of the parent artifact (sonia.scm.plugins:scm-plugins) to the minimum version of SCM-Manager 2 you are planning for your plugin
* change the packaging type of your plugin to smp * change the packaging type of your plugin to smp
@@ -33,7 +26,7 @@ diff -r a988f4cfb7ab pom.xml
<artifactId>scm-plugins</artifactId> <artifactId>scm-plugins</artifactId>
<groupId>sonia.scm.plugins</groupId> <groupId>sonia.scm.plugins</groupId>
- <version>1.15</version> - <version>1.15</version>
+ <version>2.0.0-SNAPSHOT</version> + <version>2.0.0-rc7</version>
</parent> </parent>
<groupId>sonia.scm.plugins</groupId> <groupId>sonia.scm.plugins</groupId>
@@ -115,7 +108,11 @@ diff -r a988f4cfb7ab src/main/resources/META-INF/scm/plugin.xml
- <resources> - <resources>
- <script>/sonia/scm/mail/sonia.mail.js</script> - <script>/sonia/scm/mail/sonia.mail.js</script>
- </resources> - </resources>
-
+ <resources>
+ <script>assets/scm-mail-plugin.bundle.js</script>
+ </resources>
</plugin> </plugin>
``` ```
@@ -124,49 +121,53 @@ diff -r a988f4cfb7ab src/main/resources/META-INF/scm/plugin.xml
* try to compile the sources: `mvn compile` * try to compile the sources: `mvn compile`
* fix problems (See [API changes](api-changes.md)) * fix problems (See [API changes](api-changes.md))
* Remove XML accept headers from REST Resource classes -> SCMMv2 supports JSON only * Remove XML accept headers from REST Resource classes -> SCMMv2 supports JSON only
* Migrate REST Resources (e.g. `v2`, add to Index Resource, Update Links) - See core plugins Git, Hg, Svn, e.g. [`GitConfigResource`](https://bitbucket.org/sdorra/scm-manager/src/3d5a24c177f33c14a7c08f19e124be03b1a877ba/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/api/v2/resources/GitConfigResource.java) * Migrate REST Resources (e.g. `v2`, add to Index Resource, Update Links) - See core plugins Git, Hg, Svn, e.g. [`GitConfigResource`](https://github.com/scm-manager/scm-manager/blob/develop/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/api/v2/resources/GitConfigResource.java)
### UI (src/main/js, src/main/webapp) ### UI (src/main/js, src/main/webapp)
* remove all SCM-Manager 1.x ui code from resource directory (src/main/resources) * remove all SCM-Manager 1.x ui code from resource directory (src/main/resources)
* create package.json with the following content (replace name-of-plugin with the name of your plugin): * create `package.json` with the following content (replace name-of-plugin with the name of your plugin):
```json ```json
{ {
"name": "@scm-manager/name-of-plugin", "name": "@scm-manager/name-of-plugin",
"license" : "MIT", "license" : "MIT",
"main": "src/main/js/index.js", "main": "src/main/js/index.tsx",
"scripts": { "scripts": {
"build": "ui-bundler plugin", "build" : "ui-scripts plugin",
"watch": "ui-bundler plugin -w", "watch" : "ui-scripts plugin-watch",
"lint": "ui-bundler lint", "postinstall" : "ui-plugins postinstall"
"flow": "flow check"
}, },
"dependencies": { "dependencies": {
"@scm-manager/ui-extensions": "^0.0.7" "@scm-manager/ui-plugins" : "2.0.0-rc7"
},
"devDependencies": {
"@scm-manager/ui-bundler": "^0.0.19"
} }
} }
``` ```
* create a `tsconfig.json` with the following content:
```json
{
"extends": "@scm-manager/tsconfig",
"include": [
"./src/main/js"
]
}
```
* run `mvn process-resources` to install the required JavaScript libraries * run `mvn process-resources` to install the required JavaScript libraries
* run `yarn run ui-bundler init` to create frontend configuration files (TODO add maven goal/phase)
* create new ui at `src/main/js` (for JavaScript code) and `src/main/webapp` (for static files) (TODO more help) * create new ui at `src/main/js` (for JavaScript code) and `src/main/webapp` (for static files) (TODO more help)
* Start SCM-Manager with the plugin using `mvn run` - features hot reloading of UI & Java Code. * Start SCM-Manager with the plugin using `mvn run` - features hot reloading of UI & Java Code.
In order for Java classpath resources to be reloaded in IntelliJ, pressing compile is necessary. In order for Java classpath resources to be reloaded in IntelliJ, pressing compile is necessary.
Some more hints: Some more hints:
* For Configuration UIs use [`ConfigurationBinder`](https://bitbucket.org/sdorra/scm-manager/src/c888128358712ab1f5f34ff593e1cf6854b06c08/scm-ui-components/packages/ui-components/src/config/ConfigurationBinder.js) - See core plugins Git, Hg, Svn, e.g. [scm-git-plugin/index.js](https://bitbucket.org/sdorra/scm-manager/src/6d64a380a37db63c95eccbfbf18e4500c9224d32/scm-plugins/scm-git-plugin/src/main/js/index.js). * For Configuration UIs use [`ConfigurationBinder`](https://github.com/scm-manager/scm-manager/blob/develop/scm-ui/ui-components/src/config/ConfigurationBinder.tsx) - See core plugins Git, Hg, Svn, e.g. [scm-git-plugin/index.ts](https://github.com/scm-manager/scm-manager/blob/develop/scm-plugins/scm-git-plugin/src/main/js/index.ts).
Note that `readOnly` property checks if update link is returned by REST resource Note that `readOnly` property checks if update link is returned by REST resource
* Don't forget [i18n for Plugins](i18n-for-plugins.md) * Don't forget [i18n for Plugins](docs/en/i18n-for-plugins.mdugins.md)
* If you need to add extension points to core SCMM, you can link your local development instance into smp-maven-plugin, see [scm-review-plugin/pom.xml](https://github.com/scm-manager/scm-review-plugin/commit/0ea74634830ef4865afacf714de009302e26353d#diff-600376dffeb79835ede4a0b285078036R72)
# Further reading # Further reading
* [scm-manager/ui-extensions README](../../scm-ui/ui-extensions/README.md) - Extension Points within SCM-Manager * [scm-manager/ui-extensions README](scm-ui/ui-extensions/README.md) - Extension Points within SCM-Manager
* [scm-manager/ui-components](https://bitbucket.org/sdorra/scm-manager/src/6d64a380a37db63c95eccbfbf18e4500c9224d32/scm-ui-components/) - Reusable UI components within SCM-Manager * [scm-manager/ui-components](https://github.com/scm-manager/scm-manager/tree/develop/scm-ui/ui-components) - Reusable UI components within SCM-Manager
* [smp-maven-plugin](https://bitbucket.org/scm-manager/smp-maven-plugin/src/default/) - Plugin that facilitates efficient plugin development for SCMM * [smp-maven-plugin](https://github.com/scm-manager/smp-maven-plugin) - Plugin that facilitates efficient plugin development for SCMM
* [ui-bundler](https://bitbucket.org/scm-manager/ui-bundler/src/master/) - Bundles the UI Resources for plugins

View File

@@ -1,4 +1,6 @@
# Plugin Descriptor ---
title: Plugin Descriptor
---
The plugin descriptor contains informations and instructions for the The plugin descriptor contains informations and instructions for the
scm-manager to integrate the plugin. The descriptor is located at scm-manager to integrate the plugin. The descriptor is located at

View File

@@ -1,4 +1,6 @@
# SCM-Manager v2 Plugin Development ---
title: SCM-Manager v2 Plugin Development
---
## Build and testing ## Build and testing
@@ -52,7 +54,7 @@ A quick look at the files and directories you'll see in a SCM-Manager project.
2. **`src/`**: This directory will contain all of the code related to what you see or not. `src` is a convention for “source code”. 2. **`src/`**: This directory will contain all of the code related to what you see or not. `src` is a convention for “source code”.
1. **`main/`** 1. **`main/`**
1. **`java/`**: This directory contain the Java code. 1. **`java/`**: This directory contain the Java code.
2. **`js/`**: This directory contains the JavaScript code for the web ui, inclusive unit tests: suffixed with `.test.ts` 2. **`js/`**: This directory contains the TypeScript code for the web ui, inclusive unit tests: suffixed with `.test.ts` or `.test.tsx`
3. **`resources/`**: This directory contains the the classpath resources. 3. **`resources/`**: This directory contains the the classpath resources.
2. **`test/`** 2. **`test/`**
1. **`java/`**: This directory contains the Java unit tests. 1. **`java/`**: This directory contains the Java unit tests.
@@ -85,15 +87,15 @@ In order to extend the ui the plugin requires a `package.json` in the project ro
```json ```json
{ {
"name": "@scm-manager/scm-readme-plugin", "name": "@scm-manager/scm-readme-plugin",
"main": "src/main/js/index.js", "main": "src/main/js/index.tsx",
"scripts": { "scripts": {
"build": "ui-bundler plugin" "build" : "ui-scripts plugin",
"watch" : "ui-scripts plugin-watch",
"test" : "jest",
"postinstall" : "ui-plugins postinstall"
}, },
"dependencies": { "dependencies": {
"@scm-manager/ui-extensions": "^0.0.6" "@scm-manager/ui-plugins" : "2.0.0-rc7"
},
"devDependencies": {
"@scm-manager/ui-bundler": "^0.0.3"
} }
} }
@@ -104,14 +106,13 @@ The file specified at `main` should use the `binder` from the [@scm-manager/ui-e
For more information of extensions, binder and extension points, please have a look at the [README.md](../../scm-ui/ui-extensions/README.md) of @scm-manager/ui-extensions. For more information of extensions, binder and extension points, please have a look at the [README.md](../../scm-ui/ui-extensions/README.md) of @scm-manager/ui-extensions.
If the plugins gets build (`mvn package` or `mvn install`), the [buildfrontend-maven-plugin](https://github.com/sdorra/buildfrontend-maven-plugin), will call the `build` script of `package.json`. If the plugins gets build (`mvn package` or `mvn install`), the [buildfrontend-maven-plugin](https://github.com/sdorra/buildfrontend-maven-plugin), will call the `build` script of `package.json`.
The build script triggers the `plugin` command of the [@scm-manager/ui-bundler](https://bitbucket.org/scm-manager/ui-bundler). The build script triggers the `plugin` command of [@scm-manager/ui-scripts](../../scm-ui/ui-scripts).
The `ui-bundler` will do the following steps: The `ui-scripts` will do the following steps:
* traverses the import statements of the script specified at `main` * traverses the import statements of the script specified at `main`
* transpiles flow/es@next to es5 * transpiles TypeScript to es5
* creates a single bundle * creates a single bundle
* registers the bundle in the plugin.xml * stores the bundle in the final smp package
* stores the bundle in the final scmp package
At runtime the plugins are loaded by PluginLoader. The PluginLoader is a React component, which does the following steps: At runtime the plugins are loaded by PluginLoader. The PluginLoader is a React component, which does the following steps:

View File

@@ -0,0 +1,42 @@
---
title: Publish
subtitle: Publish your Plugin
---
If you want to share your plugin with SCM-Manager users, you can publish it to the SCM-Manager Plugin Center by following the steps below.
* Create a or Git repository for your plugin
* Develop your plugin as described in [Create a plugin](../create/)
* Fork the [Plugin Center Repository](https://github.com/scm-manager/plugin-center)
* Create a folder with the name of your plugin under the `src/plugins` directory
* Put a `index.md` which starts with frontmatter metadata, which describes your plugin e.g.:
```yaml
---
name: scm-cas-plugin
displayName: CAS
description: CAS Authentication plugin for version 2.x of SCM-Manager
category: authentication
author: Cloudogu GmbH
---
```
* Document your plugin with [markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) below the frontmatter header
* Commit your work and open a pull request. Put the url to your plugin repository into the description of the pull request.
After you have opened the pull request.
We will do a few steps to integrate your plugin into the plugin center:
* We will create a fork of your plugin under the [SCM-Manager Team](https://github.com/scm-manager/) and give your account write permissions
* After that we will create a Jenkins job for your plugin on [oss.cloudogu.com](https://oss.cloudogu.com/jenkins/job/scm-manager/job/scm-manager-bitbucket/)
* At the end we will accept your pull request
From now on you can work with the repository in the [SCM-Manager Team](https://github.com/scm-manager/).
Every time you release your plugin (push a tag to the repository) the Jenkins job will build your plugin and release it to the plugin center.
# Architecture
The following picture shows the architecture of the involved systems.
![Architecture](architecture.jpg "Plugin Center Architecture")

View File

@@ -1,4 +1,6 @@
# Style Guide ---
title: Style Guide
---
Starting with version 2 of SCM-Manager we have decided to change the code style and conform to more common rules. Furthermore we abandon the rule, that everything needs to have a javadoc description. Nonetheless we have decided against a "big bang" adaption of the new rule, because this would have lead to enourmous problems for merges from 1.x to 2.x. Starting with version 2 of SCM-Manager we have decided to change the code style and conform to more common rules. Furthermore we abandon the rule, that everything needs to have a javadoc description. Nonetheless we have decided against a "big bang" adaption of the new rule, because this would have lead to enourmous problems for merges from 1.x to 2.x.
@@ -8,7 +10,7 @@ Also it is a good guide line to adapt Postel's law: *Be conservative in what you
## Java ## Java
Please mind the [EditorConfig](https://editorconfig.org/) file `.editorconf` in the root of the SCM-Manager and the [configuration guide](intellij-idea-configuration.md) for IntelliJ IDEA. There are plugins for a lot of IDEs and text editors. Please mind the [EditorConfig](https://editorconfig.org/) file `.editorconfig` in the root of the SCM-Manager and the [configuration guide](docs/en/intellij-idea-configuration.mdation.md) for IntelliJ IDEA. There are plugins for a lot of IDEs and text editors.
- Indentation with 2 spaces and no tabs (we have kept this rule from 1.x) - Indentation with 2 spaces and no tabs (we have kept this rule from 1.x)
- Order of members: - Order of members:

View File

@@ -0,0 +1,113 @@
---
title: Common pitfall occurred while developing the SCM V2
---
## Introduction
There are quite some common pitfalls which can cause an inconsistent or broken ui.
You can avoid most ugly ui glitches and broken surfaces or just improve your frontend code
by asking yourself some questions while building the components.
## Design
There exists a scm styleguide which can support you build fitting and beautiful ui components.
Find the styleguide in "scm-ui/ui-styles".
- Have I used the colors from the scm styleguide?
- Have I used familiar fonts which are already in use on this surface?
- Is my component scalable / resizeable?
- What happens if I insert very long / short content?
- Is my component mobile friendly (tablet / smartphone)?
- Does my component fit into the existing surface?
- Does the ui become confusing / overcrowded / ugly because of my component?
- Can I reduce the shown texts and use icons (tooltips) instead?
- Are there enough whitespaces in my component / around my component?
- Have I used translation keys and translated my content at least in german and english?
## Small, reuseable components
The SCM-Manager provides a storybook which tests many reuseable components with usage examples.
You can also find some more ui components which doesn't have stories yet in "scm-ui/ui-components".
If a component which can be reused is missing, feel free to add it to ui-components.
- Have I checked ui-components before creating an entirely new component?
- If creating a new component should it be added to ui-components?
- Have I written one or more stories which tests my new component in the storybook?
- Does my component have too much code / logic? Can it be cut down in some smaller components?
- Have I created the new component as a react functional component?
## Other common errors
### React Component is loaded unexpectedly
#### Bug
A react component is updated without any changes in the props or states.
#### Fix
Use the [why-did-you-update](https://github.com/maicki/why-did-you-update) library to analyze the causes of the updates.
A common cause is the definition of [new functions in render()](https://github.com/maicki/why-did-you-update#changes-are-in-functions-only).
#### Example
```javascript
class Main extends React.Component<Props> {
render() {
const { authenticated, links } = this.props;
const redirectUrlFactory = binder.getExtension("main.redirect", this.props);
...
const ActivityRoute = ({ authenticated, links }: RouteProps) => {
return (
<ProtectedRoute
path="/activity"
component={() => <Activity activityUrl={links.activity.href} />}
authenticated={authenticated && links.activity.href}
/>
);
};
}
}
binder.bind("main.route", ActivityRoute);
```
the definition of the Component like this:
```javascript
component={() => <Activity activityUrl={links.activity.href} />}
```
triggers a re-render because:
```javascript
() => <Activity activityUrl={links.activity.href} /> !== () => <Activity activityUrl={links.activity.href} />
```
You can avoid it by binding this function in advance and then reusing it on all renders
```javascript
class ActivityRoute extends React.Component<Props> {
constructor(props: Props) {
super(props);
}
renderActivity = () => {
const { links } = this.props;
return <Activity activityUrl={links.activity.href} />;
};
render() {
const { authenticated, links } = this.props;
return (
<ProtectedRoute
path="/activity"
component={this.renderActivity}
authenticated={authenticated && links.activity.href}
/>
);
}
}
binder.bind("main.route", ActivityRoute);
```

View File

@@ -1,4 +1,6 @@
# DOD for UI development ---
title: DOD for UI development
---
Use this as a kind of a checklist whenever you develop something in the UI of SCM-Manager 2.x., regardless whether you are developing core features or plugins. Use this as a kind of a checklist whenever you develop something in the UI of SCM-Manager 2.x., regardless whether you are developing core features or plugins.
@@ -10,4 +12,4 @@ Use this as a kind of a checklist whenever you develop something in the UI of SC
| ☐ | add help icons to input components | | ☐ | add help icons to input components |
| ☐ | not use colors directly, but refer to `is-primary` or `is-warning` | | ☐ | not use colors directly, but refer to `is-primary` or `is-warning` |
| ☐ | make sure your view works on mobile devices | | ☐ | make sure your view works on mobile devices |
| ☐ | document [extension points in wiki](extension-points.md) | | ☐ | document [extension points in wiki](docs/en/extension-points.mdoints.md) |

View File

@@ -1,4 +1,6 @@
# Frequently Asked Questions ---
title: Frequently Asked Questions
---
### What are the username and the password in the default installation? ### What are the username and the password in the default installation?

11
docs/en/index.md Normal file
View File

@@ -0,0 +1,11 @@
---
title: Documentation
subtitle: SCM-Managert Documentation
---
This documentation describes the administration and usage of SCM-Manager.
## Version and language
The documentation belongs to a specific language and version of SCM-Manager.
You can choose your version and language on the menu to the right.

View File

@@ -0,0 +1,35 @@
---
title: Docker
subtitle: Install scm-manager with docker
displayToc: true
---
## Quickstart
```text
docker run --name scm -p 8080:8080 -v scm-home:/var/lib/scm scmmanager/scm-manager:2.0.0-rc5
```
## Persistence
It is recommended to create a persistent volume for the scm-manager home directory.
This allows scm-manager updates and recreation of the container without lose of data.
The home directory is located at `/var/lib/scm`.
It is recommended to use a volume managed by docker.
If it is required to use a host directory, keep in mind that the scm-manager process is executed with a user which has the id 1000.
So ensure that the user with the uid 1000 can write to the directory e.g.:
```text
mkdir /scm_home
chown 1000:1000 /scm_home
docker run --name scm -p 8080:8080 -v /scm_home:/var/lib/scm scmmanager/scm-manager:2.0.0-rc5
```
## Exposed Ports
SCM-Manager exposes its http port on port 8080.
If you want to use the ssh plugin, keep in mind that this plugin requires an extra port (default is 2222).
```text
docker run --name scm -p 2222:2222 -p 8080:8080 -v scm-home:/var/lib/scm scmmanager/scm-manager:2.0.0-rc5
```

View File

@@ -0,0 +1,13 @@
---
title: Installation
subtitle: Installation of scm-manager
partiallyActive: true
---
* [Docker](docker/)
* Kubernetes
* Debian based
* Red Hat based
* [Linux General](linux/)
* Mac OS X
* Windows

View File

@@ -0,0 +1,43 @@
---
title: Linux
subtitle: General linux installation
displayToc: true
---
## Requirements
Ensure that Java JRE is installed at least in version 8.
Recommended is Java 11.
If you want to use [Mercurial](https://www.mercurial-scm.org/), ensure it is installed on your machine.
## Installation
Download [scm-server-2.0.0-rc8-app.tar.gz](https://packages.scm-manager.org/repository/releases/content/sonia/scm/scm-server/2.0.0-rc8/scm-server-2.0.0-rc8-app.tar.gz)
and verify the checksum (sha1: 8bf465525d5a8c5907d1f74096af1783bc0b2fa7).
```bash
wget https://packages.scm-manager.org/repository/releases/content/sonia/scm/scm-server/2.0.0-rc8/scm-server-2.0.0-rc8-app.tar.gz
echo "8bf465525d5a8c5907d1f74096af1783bc0b2fa7 *scm-server-2.0.0-rc8-app.tar.gz" | sha1sum -c -
```
Extract the archive:
```bash
tar xvfz scm-server-2.0.0-rc8-app.tar.gz -C /opt
```
## Start
The application can be started by using the scm-server script.
```bash
/opt/scm-server/bin/scm-server
```
## Daemonize
To start the application in background, we can use the `start` parameter.
```bash
/opt/scm-server/bin/scm-server start
```

View File

@@ -1,4 +1,6 @@
# SCM-Server and Nginx ---
title: SCM-Server and Nginx
---
## Nginx configuration ## Nginx configuration

View File

@@ -1,4 +1,6 @@
# Known Issues ---
title: Known Issues
---
## Asnychronous PreReceiveRepositoryHooks do not work with subversion ## Asnychronous PreReceiveRepositoryHooks do not work with subversion

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View File

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -1,4 +1,6 @@
# Clone empty repository ---
title: Clone empty repository
---
```http ```http
GET /scm/hg/hgtest?cmd=capabilities HTTP/1.1. GET /scm/hg/hgtest?cmd=capabilities HTTP/1.1.

View File

@@ -1,4 +1,6 @@
# Push bookmark ---
title: Push bookmark
---
```http ```http
GET /scm/hg/hgtest?cmd=capabilities HTTP/1.1. GET /scm/hg/hgtest?cmd=capabilities HTTP/1.1.

View File

@@ -1,4 +1,6 @@
# Push multiple branches to new repository ---
title: Push multiple branches to new repository
---
```http ```http
GET /scm/hg/hgtest?cmd=capabilities HTTP/1.1. GET /scm/hg/hgtest?cmd=capabilities HTTP/1.1.

View File

@@ -1,4 +1,6 @@
# Push multiple branches ---
title: Push multiple branches
---
```http ```http
GET /scm/hg/hgtest?cmd=capabilities HTTP/1.1. GET /scm/hg/hgtest?cmd=capabilities HTTP/1.1.

View File

@@ -1,4 +1,6 @@
# Push single changeset ---
title: Push single changeset
---
```http ```http
GET /scm/hg/hgtest?cmd=capabilities HTTP/1.1. GET /scm/hg/hgtest?cmd=capabilities HTTP/1.1.

View File

@@ -1,4 +1,7 @@
# Migration-Wizard ---
title: Migrate from v1 to v2
subtitle: How to use the Migration-Wizard
---
To upgrade an SCM-Manager from version 1 to version 2, some changes have to be made according the home directory of the SCM-Manager. So before you start, **make sure that you have an up to date backup of your SCM home folder!** To upgrade an SCM-Manager from version 1 to version 2, some changes have to be made according the home directory of the SCM-Manager. So before you start, **make sure that you have an up to date backup of your SCM home folder!**
@@ -20,7 +23,7 @@ To specify the new names (and namespaces), the SCM-Manager version 2 starts a mi
You can open this wizard in an internet browser using the URL of your installation (eg. http://localhost:8080/scm/). You can open this wizard in an internet browser using the URL of your installation (eg. http://localhost:8080/scm/).
![Migration Wizard](../screenshots/migration-wizard.png) ![Migration Wizard](screenshots/migration-wizard.png)
In the figure you can see an example of the page. We tried to guess meaningful names, but for sure you want to make some changes here. Beside choosing new namespaces and names you have to select a migration strategy for each repository. The strategies are described on the page as follows: In the figure you can see an example of the page. We tried to guess meaningful names, but for sure you want to make some changes here. Beside choosing new namespaces and names you have to select a migration strategy for each repository. The strategies are described on the page as follows:

34
docs/en/navigation.yml Normal file
View File

@@ -0,0 +1,34 @@
- section: Getting started
entries:
- /installation/
- /configuration/
- /migrate-scm-manager-from-v1/
- /faq/
- /known-issues/
- section: Administration
entries:
- /administration/scm-server-ssl/
- /administration/logging/
- /administration/command-line-client/
- section: Development
entries:
- /development/intellij-idea-configuration/
- /development/build-from-source/
- /development/ui-common-pitfall/
- /administration/permission-concept/
- /development/error-handling/
- /development/i18n/
- /development/definition-of-done/
- /development/ui-dod/
- section: Plugin Development
entries:
- /development/plugins/create/
- /development/plugins/migrate-plugin-from-v1/
- /development/plugins/extension-points/
- /development/plugins/i18n-for-plugins/
- /development/plugins/plugin-descriptor/
- /development/plugins/plugin-development/
- /development/plugins/publish/

View File

@@ -1,5 +1,6 @@
# How to release SCM-Manager v2 core # How to release SCM-Manager v2 core
To release a new version of SCM-Manager v2 you have to do the following steps (replace placeholders `<version>` accordingly, eg. with `2.1.0`): To release a new version of SCM-Manager v2 you have to do the following steps (replace placeholders `<version>` accordingly, eg. with `2.1.0`):
## Check out default branch ## Check out default branch
@@ -68,6 +69,10 @@ git commit -m "Update to new version of SCM-Manager"
git push git push
``` ```
## Plugin dependencies
Check if all plugin dependencies are proper versions and not SNAPSHOT!
Wait for Jenkins to be green. Wait for Jenkins to be green.
## Create release branch ## Create release branch

View File

Before

Width:  |  Height:  |  Size: 217 KiB

After

Width:  |  Height:  |  Size: 217 KiB

View File

Before

Width:  |  Height:  |  Size: 338 KiB

After

Width:  |  Height:  |  Size: 338 KiB

View File

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -1,4 +1,6 @@
# Revision Control Plugin Comparison ---
title: Revision Control Plugin Comparison
---
| Plugin Name | Name | Core-Plugin | Requirements | Url | | Plugin Name | Name | Core-Plugin | Requirements | Url |
| --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- |

View File

Before

Width:  |  Height:  |  Size: 313 KiB

After

Width:  |  Height:  |  Size: 313 KiB

View File

@@ -1,4 +1,6 @@
# State of SCM-Manager 2 development ---
title: State of SCM-Manager 2 development
---
The development of SCM-Manager 2.0.0 is organised in [Trello Boards](https://trello.com/scmmanager). The development of SCM-Manager 2.0.0 is organised in [Trello Boards](https://trello.com/scmmanager).

View File

@@ -1,4 +1,6 @@
# SCM-Manager v2 Test Cases ---
title: SCM-Manager v2 Test Cases
---
Describes the expected behaviour for SCMM v2 REST Resources using manual tests. Describes the expected behaviour for SCMM v2 REST Resources using manual tests.

View File

@@ -1,4 +1,6 @@
# Vulnerabilities ---
title: Vulnerabilities
---
## Not applicable ## Not applicable

View File

@@ -1,63 +0,0 @@
# Getting started
### Install Java
SCM-Manager needs an installed Java 1.7 or newer. It is recommended to use the [oracle jre](http://java.oracle.com/).
How to check which version of Java is installed:
```bash
java -version
```
Download java from [here](http://java.oracle.com/) and follow the install instructions.
### Install SCM-Manager
Download the latest version of SCM-Manager from
[here](http://www.scm-manager.org/download/), unpack the .zip
or .tar.gz package and start SCM-Manager with
```bash
scm-server/bin/scm-server
```
### First access
| | |
| ------------ | ----------------------- |
| **URL** | <http://localhost:8080> |
| **Username** | scmadmin |
| **Password** | scmadmin |
### Mercurial
Subversion and Git will work out of the box, but if you want to use
mercurial with SCM-Manager you have to install mercurial version
**1.9** or newer.
#### Mercurial on Windows
The installation of mercurial for SCM-Manager is very complicated on
windows, have a look at:
- [#1](https://bitbucket.org/sdorra/scm-manager/issues/1/no-ability-to-rename-repository)
- [xeFcruG70s8J](https://groups.google.com/d/msg/scmmanager/zOigMIn2RiE/xeFcruG70s8J "Python/Hg Package Build Process")
- [build-win-hg-packages](https://bitbucket.org/sdorra/build-win-hg-packages)
SCM-Manager comes with the option to install packages for windows to
simplify this setup. To use such a package just login as Administrator,
goto \"Repository Types\", click the \"Start Configuration Wizard\" and
Choose \"Download and install\".
If you see an error like the following:
```text
sonia.scm.repository.RepositoryException: command exit with error 14001 and message: 'The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail.'
```
Then you have to install [Microsoft Visual C++ 2008 SP1 Redistributable Package
(x86)](http://www.microsoft.com/en-us/download/details.aspx?id=5582).
Note you have to use the x86 package and not the x64 package, because we
use 32bit python in SCM-Manager on Windows. For more informations have a
look at
[#522](https://bitbucket.org/sdorra/scm-manager/issue/552/hg-repo-creation-failed).

View File

@@ -1,18 +0,0 @@
# SCM-Manager with GlassFish
To use SCM-Manager 1.6 and above with GlassFish 3.x you have to add a
JVM-Option to the GlassFish configuration. Please follow the steps
below.
Open the GlassFish Admin-Console (http://yourserver:4848), login as
admin user, goto Configuration-\>JVM Settings, switch to the JVM Options
tab and add the following JVM-Option:
```bash
-Dcom.sun.enterprise.overrideablejavaxpackages=javax.ws.rs,javax.ws.rs.core,javax.ws.rs.ext
```
Restart the GlassFish-Server.
Source:
<http://jersey.java.net/nonav/documentation/latest/glassfish.html>

View File

@@ -1,21 +0,0 @@
# Incompatible subversion db format
SCM-Manager versions prior to 1.36 are creating incompatible subversion repositories, if the subversion option "with 1.7 Compatible" is enabled. This subversion repositories are neither compatible with svn 1.7 nor svn 1.8. These repositories are marked as unhealthy by SCM-Manager version 1.36 and above.
This incompatible repositories must be converted, before they can be used with SCM-Manager 1.36 and above. Note the convert process can take some time and need some space, because it creates a backup for each converted repository. Follow the steps below to convert all incompatible subversion repositories of one SCM-Manager instance.
* stop SCM-Manager
* create a full backup of your scm home directory
* download the convert util from [here](https://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-fixsvndb5-cli/1.0.1/scm-fixsvndb5-cli-1.0.1-jar-with-dependencies.jar)
* execute the convert util with your scm home directory as parameter e.g.:
```bash
java -jar scm-fixsvndb5-cli-1.0.1-jar-with-dependencies.jar /path/to/.scm
```
* start SCM-Manager
For more informations have a look at:
* [Issue #519](https://github.com/scm-manager/scm-manager/issues/519)
* [Subversion release notes](https://subversion.apache.org/docs/release-notes/1.7.html#revprop-packing)

View File

@@ -1,39 +0,0 @@
# How to create your own plugin
### Software Requirements
- JDK 1.7 or higher
([download](http://www.oracle.com/technetwork/java/index.html))
- Maven 3 or higher ([download](http://maven.apache.org/))
### Create plugin
```bash
mvn archetype:generate\
-DarchetypeGroupId=sonia.scm.maven\
-DarchetypeArtifactId=scm-plugin-archetype\
-DarchetypeVersion=1.60\
-DarchetypeRepository=http://maven.scm-manager.org/nexus/content/groups/public/
```
### Test the plugin
```bash
mvn scmp:run
```
### Samples
- [Hello World](https://bitbucket.org/sdorra/scm-manager/src/1.x/scm-samples/scm-sample-hello/)
- [Authentication Plugin](https://bitbucket.org/sdorra/scm-manager/src/1.x/scm-samples/scm-sample-auth/)
### Further reading
- [Injection framework - Google Guice](http://code.google.com/p/google-guice/)
- [Restful WebService - Jersey](http://jersey.java.net/nonav/documentation/latest/user-guide.html)
- [ XML transformation - JAXB](http://jaxb.java.net/guide/)
- [User interface - Ext JS](http://www.sencha.com/products/extjs3/)
### Questions/Help
If you have questions or you need help, please write to the mailing
list: <https://groups.google.com/forum/#!forum/scmmanager>

View File

@@ -1,53 +0,0 @@
# SCM-Manager on IIS Helicon
First of all this setup is not recommended, because there were a lot of problems with it and it was never tested by the development team of SCM-Manager. However there are several working installation out there. But there some pitfalls:
**Problem description:**
When moving of copying files in SVN, the commit fails with the following message:
```bash
MyWorkstation:MyRepo user$ svn mv A.cs B.cs
A B.cs
D A.cs
MyWorkstation:MyRepo user$ svn commit -m "Renamed A.cs to B.cs"
Deleting A.cs
Adding B.cs
svn: E175002: Commit failed (details follow):
svn: E175002: The COPY request returned invalid XML in the response: XML parse error at line 1: no element found (/svn/MyRepo/!svn/bc/4/A.cs)
MyWorkstation:MyRepo user$
```
This problem only occurs when accessing the repository via https, not http.
**Solution:**
1. Add the following rewrite rule to the web.config of the SCM application:
```xml
<system.webServer>
<!-- <heliconZoo /> -->
<!-- <handlers /> -->
<rewrite>
<rules>
<rule name="Rewrite Destination Header" stopProcessing="true">
<match url=".+" />
<conditions>
<add input="{REQUEST_METHOD}" pattern="MOVE|COPY" />
<add input="{HTTP_Destination}" pattern="^https://(.+)$" />
</conditions>
<serverVariables>
<set name="HTTP_Destination" value="http://{C:1}" />
</serverVariables>
<action />
</rule>
</rules>
</rewrite>
</system.webServer>
```
2. Add HTTP_Destination to the Allowed Server Variables using IIS:
![Helicon: Allowed Server Variables](screenshots/helicon-server-vars.png)
For more information, see issue [#624](https://bitbucket.org/sdorra/scm-manager/issue/624/svn-400-bad-request-on-copy-or-move-when).

View File

@@ -1,23 +0,0 @@
# Injection Objects
- [AdministrationContext](http://docs.scm-manager.org/apidocs/latest/sonia/scm/web/security/AdministrationContext.html)
- [AuthenticationManager](http://docs.scm-manager.org/apidocs/latest/sonia/scm/web/security/AuthenticationManager.html)
- [CGIExecutorFactory](http://docs.scm-manager.org/apidocs/latest/sonia/scm/web/cgi/CGIExecutorFactory.html)
- [CacheManager](http://docs.scm-manager.org/apidocs/latest/sonia/scm/cache/CacheManager.html)
- [ChangesetViewerUtil](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/ChangesetViewerUtil.html)
- [CipherHandler](http://docs.scm-manager.org/apidocs/latest/sonia/scm/security/CipherHandler.html)
- [EncryptionHandler](http://docs.scm-manager.org/apidocs/latest/sonia/scm/security/EncryptionHandler.html)
- [FileSystem](http://docs.scm-manager.org/apidocs/latest/sonia/scm/io/FileSystem.html)
- [GroupManager](http://docs.scm-manager.org/apidocs/latest/sonia/scm/group/GroupManager.html)
- [HttpClient](http://docs.scm-manager.org/apidocs/latest/sonia/scm/net/HttpClient.html)
- [HttpServletRequest](http://java.sun.com/javaee/5/docs/api/javax/servlet/http/HttpServletRequest.html)
- [HttpServletResponse](http://java.sun.com/javaee/5/docs/api/javax/servlet/http/HttpServletResponse.html)
- [HttpSession](http://java.sun.com/javaee/5/docs/api/javax/servlet/http/HttpSession.html)
- [KeyGenerator](http://docs.scm-manager.org/apidocs/latest/sonia/scm/security/KeyGenerator.html)
- [RepositoryBrowserUtil](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/RepositoryBrowserUtil.html)
- [RepositoryManager](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/RepositoryManager.html)
- [RepositoryRequestListenerUtil](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/RepositoryRequestListenerUtil.html)
- [ScmConfiguration](http://docs.scm-manager.org/apidocs/latest/sonia/scm/config/ScmConfiguration.html)
- [StoreFactory](http://docs.scm-manager.org/apidocs/latest/sonia/scm/store/StoreFactory.html)
- [UserManager](http://docs.scm-manager.org/apidocs/latest/sonia/scm/user/UserManager.html)
- [WebSecurityContext](http://docs.scm-manager.org/apidocs/latest/sonia/scm/web/security/WebSecurityContext.html)

View File

@@ -1,129 +0,0 @@
# 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:
```xml
<repositories>
<repository>
<id>maven.scm-manager.org</id>
<name>scm-manager release repository</name>
<url>http://maven.scm-manager.org/nexus/content/groups/public</url>
</repository>
</repositories>
```
And you have to define the dependency to the api and one implementation:
```xml
<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:
```java
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:
```java
session.close();
```
### Examples
Create a new repository:
```java
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:
```java
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:
```java
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:
```java
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:
```java
GroupClientHandler groupHandler = session.getGroupHandler();
Group group = groupHandler.get("developers");
group.getMembers().add("tuser");
groupHandler.modify(group);
```

View File

@@ -1,56 +0,0 @@
# scm-jenkins-plugin
The jenkins plugin will ping your Jenkins CI server when a new commit is
pushed to SCM-Manager. In SCM-Manager exists two differnt methods to
trigger jenkins builds.
### Per repository configuration
The \"per repository configuration\" method requires a configuration for
each repository. The following parameters must be configured:
- The url of the jenkins server inclusive the context path e.g.:
<http://ci.scm-manager.org:8080/jenkins>
- The name of the jenkins job
- Jenkins trigger authentication token
- Username of the jenkins user. This option is only required if your
jenkins job does not allow anonymous access
- API Token of the jenkins user. This token is used for
authentication. You could get your API Token from your jenkins
server at
<http://yourjenkinsserver/contextpath/user/username/configure>
Note for this setup the jenkins job have to be configured for remote
trigger (Trigger builds remotely).
### Global configuration
The global configuration has only support for git and mercurial. If you
want to use the jenkins plugin with subversion repositories, you have to
use the \"per repository configuration\". The global configuration
method uses push notifications from the git-plugin and mercurial-plugin
for jenkins. SCM-Manager will send the url of the changed repository
after each successful push, jenkins will build each repository which
this scm url and enabled polling.
To use the \"global configuration\" method, you have to note a few
things:
- You have to insert the url to your jenkins server
(Config-\>General-\>Jenkins Configuration-\>Url) the url must
conatin the context path of jenkins e.g.:
<http://ci.scm-manager.org:8080/jenkins>.
- Be sure the base url contains the full qualified hostname to your
scm-manager server (Config-\>General-\>General Settings-\>Base Url).
- All jenkins repositories have to be configured for polling (the
interval does not matter, a good value would be once a day).
- If you are using \"Matrix based security\" on jenkins, be sure you
use at least version 1.43 of the mercurial-plugin for jenkins.
#### Links
- <http://kohsuke.org/2011/12/01/polling-must-die-triggering-jenkins-builds-from-a-git-hook/>
- <https://wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin>
- <https://wiki.jenkins-ci.org/display/JENKINS/Mercurial+Plugin>
- <https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin>
- <https://github.com/jenkinsci/mercurial-plugin/pull/32>

View File

@@ -1,47 +0,0 @@
# scm-jira-plugin
The plugin enables the following features to integrate Atlassian JIRA to
SCM-Manager:
- Turn issue keys in changeset descriptions to links for jira
- Updates a Jira issue if the issue key is found in a changeset
description
- Close a Jira issue if the issue key and a auto close (close, fix,
resolve, \...) word is found in the changeset description
### Installation and configuration
1. Enable remote api calls in jira
(https://developer.atlassian.com/display/JIRADEV/JIRA+XML-RPC+Overview)
2. Install scm-jira-plugin over the plugin center in scm-manager
3. Be sure that your jira installation accepts remote calls
([Screenshot](screenshots/scm-jira-plugin/jira-plugin-01.png))
4. Configure the plugin, select a repository to enable the
scm-jira-plugin for this repository
([Screenshot](screenshots/scm-jira-plugin/jira-plugin-02.png))
5. **Note**: For the auto close and update feature it is necessary
that users have the same names and passwords in SCM-Manager and Jira
### Auto Close Words (Since v. 1.17)
From version 1.17 the plugin offers the possibility of mapping auto
close words with transition that are configured in JIRA.
- Auto Close Words are a comma separated list
- Auto Close Words are not case sensitive
- Auto Close Words can contain spaces
- If the Auto Close Word is identical to the transition name, just add
the transition name to the list (e.g. transition name = start
progress \--\> Auto Close Word = start progress)
- If the Auto Close Word is different from the transition name you
have to use the mapping function (e.g. transition name = start
progress, Auto Close Word = begin \--\> you have to add \'begin =
start progress\' to the configuration of the plugin.
### Screenshots
![](screenshots/scm-jira-plugin/jira-plugin-01.png)
![](screenshots/scm-jira-plugin/jira-plugin-02.png)
![](screenshots/scm-jira-plugin/jira-plugin-03.png)
![](screenshots/scm-jira-plugin/jira-plugin-04.png)
![](screenshots/scm-jira-plugin/jira-plugin-05.png)

View File

@@ -1,83 +0,0 @@
# scm-mail-plugin
The mail plugin provides an central api for sending e-mails. This api
can be used by other plugins.
## Configuration
The scm-mail-plugin provides a single place for the mail server
configurations at Config-\>General-\>Mail Settings.
## API Usage
First you have to add the dependency to your pom.xml e.g.:
```xml
<dependency>
<groupId>sonia.scm.plugins</groupId>
<artifactId>scm-mail-plugin</artifactId>
<version>1.4</version>
</dependency>
```
But note you should use at least version 1.15 of scm-plugins as parent.
Now you can use the MailService class via injection e.g.:
```java
import com.google.inject.Inject;
import javax.mail.Message.RecipientType;
import org.codemonkey.simplejavamail.Email;
import sonia.scm.mail.api.MailService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Service for e-mail notifications.
* @author Sebastian Sdorra
*/
public class NotificationService
{
/** logger for NotificationService */
private static final Logger logger = LoggerFactory.getLogger(
NotificationService.class);
private MailService mailService;
/**
* Constructs a new NotificationService.
*
* @param mailService injected mail service
*/
@Inject
public NotificationService(MailService mailService)
{
this.mailService = mailService;
}
/**
* Sends a mail from admin@scm-manager.org to test.user@scm-manager.org,
* if the mail service is configured.
*
* @throws MailSendBatchException
*/
public void sendNotification() throws MailSendBatchException {
// check if the mail service is configured
if ( mailService.isConfigured() ){
// create a new e-mail
Email mail = new Email();
mail.setFromAddress("SCM-Administrator", "admin@scm-manager.org");
mail.addRecipient("Test User", "test.user@scm-manager.org", RecipientType.TO);
mail.setSubject("SCM-Manager notification");
mail.setText("Notification from SCM-Manager");
// send the e-mail
mailService.send(mail);
} else {
// log that the mail service is not configured
logger.warn("mail service is not configured");
}
}
}
```

View File

@@ -1,9 +0,0 @@
# scm-mantisbt-plugin
The plugin enables the following features to integrate [MantisBT](https://www.mantisbt.org/) to SCM-Manager:
* Turn issue keys in changeset descriptions to links for MantisBT
* Updates a MantisBT issue if the issue key is found in a changeset description
* Change status of a MantisBT issue if the issue key and a status (e.g. resolved) word is found in the changeset description
**Note**: The issue keys must be defined with a 7 digit number (e.g. 0000001)

Some files were not shown because too many files have changed in this diff Show More