Merge remote-tracking branch 'origin/develop' into feature/add_events_for_landingpage

This commit is contained in:
René Pfeuffer
2020-04-03 16:49:19 +02:00
88 changed files with 4177 additions and 3640 deletions

View File

@@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased ## Unreleased
### Added ### Added
- Fire various plugin events ([#1088](https://github.com/scm-manager/scm-manager/pull/1088)) - Fire various plugin events ([#1088](https://github.com/scm-manager/scm-manager/pull/1088))
- Display version for plugins ([#1089](https://github.com/scm-manager/scm-manager/pull/1089)
### Changed ### Changed
- Simplified collapse state management of the secondary navigation ([#1086](https://github.com/scm-manager/scm-manager/pull/1086) - Simplified collapse state management of the secondary navigation ([#1086](https://github.com/scm-manager/scm-manager/pull/1086)
@@ -14,7 +15,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed ### Fixed
- Authentication for write requests for repositories with anonymous read access ([#108](https://github.com/scm-manager/scm-manager/pull/1081)) - Authentication for write requests for repositories with anonymous read access ([#108](https://github.com/scm-manager/scm-manager/pull/1081))
## 2.0.0-rc6 - 2020-03-26 ## 2.0.0-rc6 - 2020-03-26
### Added ### Added
- Extension point to add links to the repository cards from plug ins ([#1041](https://github.com/scm-manager/scm-manager/pull/1041)) - Extension point to add links to the repository cards from plug ins ([#1041](https://github.com/scm-manager/scm-manager/pull/1041))

View File

@@ -23,22 +23,22 @@ This branch (default) is for the development of SCM-Manager 2.x. If you are inte
## News ## News
- \*\*2018-09-25\*\* - [SCM-Manager 2 gets a boost by Cloudogu - **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/ "wikilink") 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 - **2018-05-04** - SCM-Manager 1.60 released
([download](http://www.scm-manager.org/download/ "wikilink") \| ([download](http://www.scm-manager.org/download/) \|
[release notes](release-notes.md "wikilink")) [release notes](release-notes.md))
- \*\*2018-04-11\*\* - SCM-Manager 1.59 released - **2018-04-11** - SCM-Manager 1.59 released
[All news](http://www.scm-manager.org/news/ "wikilink") [All news](http://www.scm-manager.org/news/)
## Mailing List ## Mailing List
- <scmmanager@googlegroups.com> - - <scmmanager@googlegroups.com> -
[archive](http://groups.google.com/group/scmmanager "wikilink") \| [archive](http://groups.google.com/group/scmmanager) \|
[subscribe](mailto:scmmanager+subscribe@googlegroups.com "wikilink") [subscribe](mailto:scmmanager+subscribe@googlegroups.com)
\| \|
[unsubscribe](mailto:scmmanager+unsubscribe@googlegroups.com "wikilink") [unsubscribe](mailto:scmmanager+unsubscribe@googlegroups.com)
## Documentation ## Documentation
You can find the complete documentation in the [docs/](docs/Home.md) directory. You can find the complete documentation in the [docs/](docs/Home.md) directory.

View File

@@ -1,21 +1,18 @@
ExtensionPoints # Extension Points
---------------
- [AuthenticationHandler](http://docs.scm-manager.org/apidocs/latest/sonia/scm/web/security/AuthenticationHandler.html "wikilink") - [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 "wikilink") - [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 "wikilink") - [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 "wikilink") - [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)
FileObjectPreProcessor](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/FileObjectPreProcessor.html "wikilink") - [FileObjectPreProcessorFactory](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/FileObjectPreProcessorFactory.html)
- [FileObjectPreProcessorFactory](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/FileObjectPreProcessorFactory.html "wikilink") - [FileSystem](http://docs.scm-manager.org/apidocs/latest/sonia/scm/io/FileSystem.html)
- [FileSystem](http://docs.scm-manager.org/apidocs/latest/sonia/scm/io/FileSystem.html "wikilink") - [GroupListener](http://docs.scm-manager.org/apidocs/latest/sonia/scm/group/GroupListener.html)
- [GroupListener](http://docs.scm-manager.org/apidocs/latest/sonia/scm/group/GroupListener.html "wikilink") - [Module](http://google-guice.googlecode.com/svn/tags/3.0/javadoc/com/google/inject/Module.html)
- [Module](http://google-guice.googlecode.com/svn/tags/3.0/javadoc/com/google/inject/Module.html "wikilink") - [RepositoryHandler](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/RepositoryHandler.html)
- [RepositoryHandler](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/RepositoryHandler.html "wikilink") - [RepositoryHook](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/RepositoryHook.html)
- [RepositoryHook](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/RepositoryHook.html "wikilink") - [RepositoryListener](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/RepositoryListener.html)
- [RepositoryListener](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/RepositoryListener.html "wikilink") - [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)
RepositoryRequestListener](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/RepositoryRequestListener.html "wikilink") - [ServletModule](http://google-guice.googlecode.com/svn/tags/3.0/javadoc/com/google/inject/servlet/ServletModule.html)
- [ResourceHandler](http://docs.scm-manager.org/apidocs/latest/sonia/scm/resources/ResourceHandler.html "wikilink") - [UserListener](http://docs.scm-manager.org/apidocs/latest/sonia/scm/user/UserListener.html)
- [ServletModule](http://google-guice.googlecode.com/svn/tags/3.0/javadoc/com/google/inject/servlet/ServletModule.html "wikilink")
- [UserListener](http://docs.scm-manager.org/apidocs/latest/sonia/scm/user/UserListener.html "wikilink")

View File

@@ -16,104 +16,89 @@ repositories over http.
### News ### News
- \*\*2018-09-25\*\* - [SCM-Manager 2 gets a boost by Cloudogu - **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/)
GmbH](https://www.scm-manager.org/scm-manager-2/scm-manager-2-gets-a-boost-by-cloudogu-gmbh/ "wikilink") - **2018-05-04** - SCM-Manager 1.60 released ([download](http://www.scm-manager.org/download/) \|
- \*\*2018-05-04\*\* - SCM-Manager 1.60 released [release notes](release-notes.md))
([download](http://www.scm-manager.org/download/ "wikilink") \| - **2018-04-11** - SCM-Manager 1.59 released
[release notes](release-notes.md "wikilink"))
- \*\*2018-04-11\*\* - SCM-Manager 1.59 released
[All news](http://www.scm-manager.org/news/ "wikilink") [All news](http://www.scm-manager.org/news/)
### Mailing List ### Mailing List
- <scmmanager@googlegroups.com> - - <scmmanager@googlegroups.com> -
[archive](http://groups.google.com/group/scmmanager "wikilink") \| [archive](http://groups.google.com/group/scmmanager) \|
[subscribe](mailto:scmmanager+subscribe@googlegroups.com "wikilink") [subscribe](mailto:scmmanager+subscribe@googlegroups.com)
\| \|
[unsubscribe](mailto:scmmanager+unsubscribe@googlegroups.com "wikilink") [unsubscribe](mailto:scmmanager+unsubscribe@googlegroups.com)
### Use SCM-Manager ### Use SCM-Manager
- [Getting started](getting-started.md "wikilink") - [Getting started](getting-started.md)
- [Download latest - [Download latest version](http://www.scm-manager.org/download/)
version](http://www.scm-manager.org/download/ "wikilink") - [Frequently Asked Questions](faq.md)
- [FAQ](faq.md "wikilink") - [Upgrade SCM-Manager to a newer version](upgrade.md)
- [Upgrade SCM-Manager to a newer version](upgrade.md "wikilink") - [Download latest snapshot release](download-snapshot-release.md)
- [Download latest snapshot - [Download Archive](download-archive.md)
release](download-snapshot-release.md "wikilink") - [Command line client](command-line-client.md)
- [Download Archive](download-archive.md "wikilink") - [SCM-Server SSL](scm-server-ssl.md)
- [Command line client](command-line-client.md "wikilink") - [ApplicationServer (Tomcat/Glassfish/Jetty)](applicationserver.md)
- [SCM-Server SSL](scm-server-ssl.md "wikilink") - [Using SCM-Manager with Apache mod\_proxy](apache/apache-mod_proxy.md)
- [ApplicationServer - [Using SCM-Manager with Nginx](nginx.md)
(Tomcat/Glassfish/Jetty)](applicationserver.md "wikilink") - [Using SCM-Manager with IIS (Helicon)](iis-helicon.md)
- [Using SCM-Manager with Apache - [Permissions](Permissions.md)
mod\_proxy](apache/apache-mod_proxy.md "wikilink") - [Plugins](http://plugins.scm-manager.org/scm-plugin-backend/page/index.html)
- [Using SCM-Manager with Nginx](nginx.md "wikilink") - [Revision Control Plugin Comparison](rv-plugin-comparison.md)
- [Using SCM-Manager with ISS - [Screenshots](http://www.scm-manager.org/screenshots/)
(Helicon)](SCM-Manager%20on%20ISS%20Helicon.md "wikilink") - [Mercurial Subrepositories](subrepositories.md)
- [Permissions](Permissions.md "wikilink") - [Unix Daemons and Windows Services](daemons.md)
- [Plugins](http://plugins.scm-manager.org/scm-plugin-backend/page/index.html "wikilink") - [RPM and DEB packages](RPM%20and%20DEB%20packages.md)
- [Revision Control Plugin - [Build windows mercurial packages for SCM-Manager](https://bitbucket.org/sdorra/build-win-hg-packages)
Comparison](rv-plugin-comparison.md "wikilink")
- [Screenshots](http://www.scm-manager.org/screenshots/ "wikilink")
- [Mercurial Subrepositories](subrepositories.md "wikilink")
- [Unix Daemons and Windows Services](daemons.md "wikilink")
- [RPM and DEB packages](RPM%20and%20DEB%20packages.md "wikilink")
- [Build windows mercurial packages for
SCM-Manager](https://bitbucket.org/sdorra/build-win-hg-packages "wikilink")
### Plugin documentation ### Plugin documentation
- [Active Directory Plugin](active-directory-plugin.md "wikilink") - [Active Directory Plugin](active-directory-plugin.md)
- [Branch Write Protect Plugin](branchwp-plugin.md "wikilink") - [Branch Write Protect Plugin](branchwp-plugin.md)
- [Jenkins Plugin](jenkins-plugin.md "wikilink") - [Jenkins Plugin](jenkins-plugin.md)
- [Jira Plugin](jira-plugin.md "wikilink") - [Jira Plugin](jira-plugin.md)
- [Mail Plugin](mail-plugin.md "wikilink") - [Mail Plugin](mail-plugin.md)
- [Path Write Protect Plugin](pathwp-plugin.md "wikilink") - [Path Write Protect Plugin](pathwp-plugin.md)
- [Redmine Plugin](redmine-plugin.md "wikilink") - [Redmine Plugin](redmine-plugin.md)
- [Scheduler Plugin](scheduler-plugin.md "wikilink") - [Scheduler Plugin](scheduler-plugin.md)
- [Trac Plugin](trac-plugin.md "wikilink") - [Trac Plugin](trac-plugin.md)
- [WebHook Plugin](webhook-plugin.md "wikilink") - [WebHook Plugin](webhook-plugin.md)
### Development ### Development
- [Building SCM-Manager from source](build-from-source.md "wikilink") - [Building SCM-Manager from source](build-from-source.md)
- [Java Client API](java-client-api.md "wikilink") - [Java Client API](java-client-api.md)
- [Code - [Code Snippets](code-snippets.md)
Snippets](https://bitbucket.org/sdorra/scm-manager/wiki/code-snippets "wikilink") - [Configuring Eclipse projects for SCM-Manager](configure-eclipse.md)
- [Configuring Eclipse projects for - [Plugin Descriptor](plugin-descriptor.md)
SCM-Manager](configure-eclipse.md "wikilink") - [ExtensionPoints](ExtensionPoints.md)
- [Plugin Descriptor](plugin-descriptor.md "wikilink") - [How to create your own plugin](howto-create-a-plugin.md)
- [ExtensionPoints](ExtensionPoints.md "wikilink") - [Injection Objects](injectionObjects.md)
- [How to create your own plugin](howto-create-a-plugin.md "wikilink") - [API documentation](http://docs.scm-manager.org/apidocs/latest/)
- [Injection Objects](injectionObjects.md "wikilink") - [WebService documentation](http://docs.scm-manager.org/restdocs/current/)
- [API
documentation](http://docs.scm-manager.org/apidocs/latest/ "wikilink")
- [WebService
documentation](http://docs.scm-manager.org/restdocs/current/ "wikilink")
### SCM Manager 2 ### SCM Manager 2
- [Configuration for Intellij - [Getting started](v2/getting-started.md)
IDEA](v2/intellij-idea-configuration.md "wikilink") - [Configuration for Intellij IDEA](v2/intellij-idea-configuration.md)
- [State of SCM-Manager 2 - [SCM v2 Test Cases](v2/test-cases.md)
development](v2/State%20of%20SCM-Manager%202%20development.md "wikilink") - [Table of decisions made during development](v2/decision-table.md)
- [SCM v2 Test Cases](v2/SCMM-v2-Test-Cases.md "wikilink") - [Definition of done](definition-of-done.md)
- [Table of decisions made during - [Style Guide](v2/style-guide.md)
development](v2/Decision-Table.md "wikilink") - [Error Handling in REST, Java, UI](v2/error-handling.md)
- [Definition of done](Definition%20of%20done.md "wikilink") - [Create a new Plugin](v2/create-plugin.md)
- [Style Guide](v2/style-guide.md "wikilink") - [Migration Wizard](v2/migration-wizard.md)
- [Error Handling in REST, Java, UI](v2/error-handling.md "wikilink") - [Plugin Development](v2/plugin-development.md)
- [Create a new Plugin](v2/Create%20a%20new%20Plugin.md "wikilink") - [i18n for Plugins](v2/i18n-for-plugins.md)
- [Migrate Plugin from v1](v2/Migrate%20Plugin%20from%20v1.md "wikilink") - [Extension Points](v2/extension-points.md)
- [Plugin Development](v2/Plugin%20Development.md "wikilink") - [Migrate Plugin from v1](v2/migrate-plugin-from-v1.md)
- [i18n for Plugins](v2/i18n%20for%20Plugins.md "wikilink") - [API changes](v2/api-changes.md)
- [Extension Points](v2/Extension-Points.md "wikilink") - [Changes to ui-components/ui-types](v2/changes-to-ui-components-or-ui-types.md)
- [API changes](v2/API%20changes.md "wikilink") - [Permission concept](v2/permission-concept.md)
- [ui-components/ui-types](v2/UI%20Additions%20or%20Changes%20to%20ui-components%20or%20ui-types.md "wikilink") - [Vulnerabilities](v2/vulnerabilities.md)
- [Vulnerabilities](v2/vulnerabilities.md "wikilink") - [Common pitfall](v2/common-pitfall.md)
- [Common pitfall](v2/Common%20pitfall.md "wikilink") - [Release process](v2/release-process.md)
- [Release process](v2/Release%20process.md "wikilink") - [Known Issues](v2/known-issues.md)
- [Migration Wizard](v2/Migration-Wizard.md "wikilink")
- [Known Issues](v2/Known%20Issues.md "wikilink")

View File

@@ -1 +1 @@
Moved to [State of SCM-Manager 2 development](https://bitbucket.org/sdorra/scm-manager/wiki/State%20of%20SCM-Manager%202%20development) Moved to [State of SCM-Manager 2 development](State of SCM-Manager 2 development.md)

View File

@@ -1,4 +1,4 @@
## Permissions ## ## Permissions
SCM-Manager knows three different types of repository permissions: SCM-Manager knows three different types of repository permissions:
@@ -11,19 +11,19 @@ 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 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. to only one repository or to each repository. Administrators have owner permissions on every repository.
### Repository permissions ### ### Repository permissions
Repository permissions can be managed by administrators and by repository owners. Repository permissions can be managed by administrators and by repository owners.
The permissions can be managed on the permission tab of each repository. The permissions can be managed on the permission tab of each repository.
![repository permissions](https://bytebucket.org/sdorra/scm-manager/wiki/screenshots/permissions_repository.png "repository permissions") ![repository permissions](screenshots/permissions_repository.png "repository permissions")
### Global permissions ### ### Global permissions
Global permissions are only manageable by administrators. They can be managed at *Security -> Users* or *Security -> Groups*. Global permissions are only manageable by administrators. They can be managed at *Security -> Users* or *Security -> Groups*.
![global permissions](https://bytebucket.org/sdorra/scm-manager/wiki/screenshots/permissions_global.png "global permissions") ![global permissions](screenshots/permissions_global.png "global permissions")
### Administrators ### ### Administrators
Administrators can mark other users as administrators at *Security -> Users*. Administrators can mark other users as administrators at *Security -> Users*.

View File

@@ -1,3 +1,5 @@
# 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: 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 File | Description
@@ -17,8 +19,7 @@ The package will create a user and group which are called scm. The scm user will
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: 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
#!text
[scm-releases] [scm-releases]
name=SCM-Manager Releases name=SCM-Manager Releases
baseurl=http://maven.scm-manager.org/nexus/content/repositories/releases baseurl=http://maven.scm-manager.org/nexus/content/repositories/releases
@@ -33,9 +34,7 @@ type=rpm-md
After file creation execute the following command to install scm-server: After file creation execute the following command to install scm-server:
``` ```bash
#!bash
# install the scm-server package # install the scm-server package
sudo yum install scm-server sudo yum install scm-server
``` ```
@@ -44,9 +43,7 @@ sudo yum install scm-server
The DEB package is tested with Debian and Ubuntu. Execute the following commands to install scm-server: The DEB package is tested with Debian and Ubuntu. Execute the following commands to install scm-server:
``` ```bash
#!bash
# add the scm-manager repository # add the scm-manager repository
echo "echo 'deb http://maven.scm-manager.org/nexus/content/repositories/releases ./' >> /etc/apt/sources.list" | sudo sh echo "echo 'deb http://maven.scm-manager.org/nexus/content/repositories/releases ./' >> /etc/apt/sources.list" | sudo sh
@@ -58,7 +55,6 @@ sudo apt-get update
# install scm-server # install scm-server
sudo apt-get install scm-server sudo apt-get install scm-server
``` ```
## Migration from ApplicationServer or Standalone version ## Migration from ApplicationServer or Standalone version

View File

@@ -1,8 +1,9 @@
# 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)
### Main goals ### ### Main goals
* remove deprecated and unused stuff * remove deprecated and unused stuff
* remove old style listeners * remove old style listeners
* replace [guava eventbus](https://code.google.com/p/guava-libraries/wiki/EventBusExplained) with [legman](https://github.com/sdorra/legman) * replace [guava eventbus](https://code.google.com/p/guava-libraries/wiki/EventBusExplained) with [legman](https://github.com/sdorra/legman)
@@ -12,25 +13,25 @@ The development of SCM-Manager 2.0.0 is organised in [Trello Boards](https://tre
* use of [annotation processors](http://docs.oracle.com/javase/7/docs/api/javax/annotation/processing/Processor.html) instead of classpath scanning * use of [annotation processors](http://docs.oracle.com/javase/7/docs/api/javax/annotation/processing/Processor.html) instead of classpath scanning
* move non core modules (plugin-backend, maven plugins, etc.) to separate repositories * move non core modules (plugin-backend, maven plugins, etc.) to separate repositories
## [Milestone 2](https://trello.com/b/Afb3hoJ9/scm-manager-2-0-0-milestone-2) ## ## [Milestone 2](https://trello.com/b/Afb3hoJ9/scm-manager-2-0-0-milestone-2)
### Main goals ### ### Main goals
* use [apache shiro](http://shiro.apache.org/) everywhere * use [apache shiro](http://shiro.apache.org/) everywhere
* improve authentication * improve authentication
* improve user and group management * improve user and group management
* use permission instead of roles * use permission instead of roles
## [Milestone 3](https://trello.com/b/eLvqTGGe/scm-manager-2-0-0-milestone-3) ## ## [Milestone 3](https://trello.com/b/eLvqTGGe/scm-manager-2-0-0-milestone-3)
### Main goals ### ### Main goals
* completely new designed rest api * completely new designed rest api
## Milestone 4 ## ## Milestone 4
### Main goals ### ### Main goals
* completely new user interface * completely new user interface
## Milestone 5 ## ## Milestone 5
### Main goals ### ### Main goals
* improve repository api * improve repository api

View File

@@ -4,8 +4,6 @@
- Log in as a user of that directory - Log in as a user of that directory
- Run the scm-server batch file - Run the scm-server batch file
- Install the active-directory plugin - Install the active-directory plugin
- restart the scm-server - Restart the scm-server
<!-- --> **Note**: Since version 1.7 of the plugin 64bit is supported.
- - Note:\*\* Since version 1.7 of the plugin 64bit is supported.

View File

@@ -1,10 +1,34 @@
SCM-Server and Apache mod\_jk # SCM-Server and Apache mod\_jk
-----------------------------
### Apache Configuration ### Apache Configuration
```apache
JkWorkersFile /etc/apache2/jkworkers.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel info
JkMount /scm* worker1
```
### JK Workers File (jkworkers.properties) ### JK Workers File (jkworkers.properties)
```ini
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
```
### SCM-Server conf/server-config.xml ### SCM-Server conf/server-config.xml
Uncomment the following lines: Uncomment the following lines:
```xml
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.ajp.Ajp13SocketConnector">
<Set name="port">8009</Set>
</New>
</Arg>
</Call>
```

View File

@@ -1,27 +1,51 @@
SCM-Server and Apache mod\_proxy # SCM-Server and Apache mod\_proxy
--------------------------------
### Apache configuration ### Apache configuration
- - Warning\*\*: Setting ProxyPassReverseCookiePath would most ```apache
likely cause problems with session handling! ProxyPass /scm http://localhost:8080/scm
ProxyPassReverse /scm http://localhost:8080/scm
<!-- --> ProxyPassReverse /scm http://servername:8080/scm
<Location /scm>
- - Note\*\*: If you encounter timeout problems, please have a look Order allow,deny
[here](http://httpd.apache.org/docs/current/mod/mod_proxy.html#workers "wikilink"). Allow from all
</Location>
```
- **Warning**: Setting ProxyPassReverseCookiePath would most likely cause problems with session handling!
- **Note**: If you encounter timeout problems, please have a look at [Apache Module mod_proxy#Workers](http://httpd.apache.org/docs/current/mod/mod_proxy.html#workers).
### SCM-Server conf/server-config.xml ### SCM-Server conf/server-config.xml
NOTE: This file is found in the installation directory, not the user\'s NOTE: This file is found in the installation directory, not the user\'s
home directory. home directory.
Uncomment following line: Example: === SCM-Manager Configuration version Uncomment following line:
1.5 and above == ```xml
<Set name="forwarded">true</Set>
```
Example:
```xml
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<Set name="host">
<SystemProperty name="jetty.host" />
</Set>
<Set name="port">
<SystemProperty name="jetty.port" default="8080"/>
</Set>
<!-- for mod_proxy -->
<Set name="forwarded">true</Set>
</New>
</Arg>
</Call>
```
### SCM-Manager Configuration version 1.5 and above
1. Login as an admin user and select \"General\" 1. Login as an admin user and select \"General\"
2. Set the \"Base Url\" to the URL of the Apache (\*\*warning:\*\* 2. Set the \"Base Url\" to the URL of the Apache (**warning:** don\'t check \"Force Base Url\")
don\'t check \"Force Base Url\")
3. Save the new new settings 3. Save the new new settings
### SCM-Manager Configuration before version 1.5 ### SCM-Manager Configuration before version 1.5

View File

@@ -1,47 +1,75 @@
Tomcat # Applicationserver
------
## Tomcat
Mercurial uses very large http headers for branch and head informations. Mercurial uses very large http headers for branch and head informations.
You have to increase the maxHttpHeaderSize parameter on the connector You have to increase the maxHttpHeaderSize parameter on the connector
configuration. Open the conf/server.xml and add the parameter to your configuration. Open the conf/server.xml and add the parameter to your
connector e.g.: 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. After changing the configuration you have to restart the tomcat.
Source: <http://tomcat.apache.org/tomcat-7.0-doc/config/http.html> Source: <http://tomcat.apache.org/tomcat-7.0-doc/config/http.html>
- - Note\*\*: If you have problems with big mercurial pushes on **Note**: If you have problems with big mercurial pushes on instances which are newer than tomcat 7.0.55,
instances which are newer than tomcat 7.0.55, you have to you have to increase/disable the maxSwallowSize (see issue [#691](https://github.com/scm-manager/scm-manager/issues/691)).
increase/disable the maxSwallowSize (see issue \#691).
#### Access Log #### Access Log
If you wan\'t like to print the current user in tomcats access log you If you wan\'t like to print the current user in tomcats access log you
could use a valve like the following: could use a valve like the following:
The pattern \*\*%{principal}r\*\* is responsible for logging the ```xml
username to the access log (see issue \#877). <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" />
```
GlassFish 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 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 JVM-Option to the GlassFish configuration to override the jax-rs
packages. Please execute the following commands. packages. Please execute the following commands.
- - Note\*\* Glassfish 3.1.2 and above seems not to work with ```bash
SCM-Manager. Please have a look at # override jax-rs packages
[QeO-QVX6wmsJ](https://groups.google.com/forum/#!searchin/scmmanager/glassfish/scmmanager/SEbuEU8H-qo/QeO-QVX6wmsJ "wikilink"). $ 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. Restart the GlassFish-Server.
Source: Source: <http://jersey.java.net/nonav/documentation/latest/glassfish.html>
<http://jersey.java.net/nonav/documentation/latest/glassfish.html>
Jetty ## Jetty
-----
If Jetty returns a HTTP \"413 FULL head\" status, you may want to 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 further increase the maximum header size. You can configure the limit by
setting the headerBufferSize for the connector you\'re using in the setting the headerBufferSize for the connector you\'re using in the
jetty.xml file: 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,5 +1,4 @@
Branch Write Protect Plugin # Branch Write Protect Plugin
---------------------------
### Installation ### Installation
@@ -26,7 +25,7 @@ plugin:
The branchwp plugin works only for Git and Mercurial, for Subversion The branchwp plugin works only for Git and Mercurial, for Subversion
have a look at the have a look at the
[pathwp-plugin](http://plugins.scm-manager.org/scm-plugin-backend/page/detail/sonia.scm.plugins/scm-pathwp-plugin.html "wikilink"). [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 Since version 1.2 of the plugin it is possible to define deny
permissions and placeholders for branch names. Deny permissions are permissions and placeholders for branch names. Deny permissions are
@@ -38,5 +37,4 @@ following placeholders are available:
user user
### Known issues ### Known issues
- [#235](https://github.com/scm-manager/scm-manager/issues/235 "branchwp plugin can not use on git")
- <https://bitbucket.org/sdorra/scm-manager/issue/235/branchwp-plugin-can-not-use-on-git>

View File

@@ -1,35 +1,40 @@
Building SCM-Manager from source # Building SCM-Manager from source
--------------------------------
### Software Requirements ### Software Requirements
- JDK 1.7 or higher - JDK 1.7 or higher
([download](http://www.oracle.com/technetwork/java/index.html "wikilink")) ([download](http://www.oracle.com/technetwork/java/index.html))
- Maven 3 or higher ([download](http://maven.apache.org/ "wikilink")) - Maven 3 or higher ([download](http://maven.apache.org/))
- Mercurial ([download](https://www.mercurial-scm.org/ "wikilink")) - Mercurial ([download](https://www.mercurial-scm.org/))
### Build SCM-Manager 1.x from source ### Build SCM-Manager 1.x from source
- - Note:\*\* if you use the \"package\" phase rather than the ```bash
\"install\" phase, the standalone version may include an old hg clone https://bitbucket.org/sdorra/scm-manager
version of the WAR file in the distribution bundle, rather than cd scm-manager
the version you just built. hg update 1.x
mvn clean install
```
**Note**: if you use the \"package\" phase rather than the \"install\" phase,
the standalone version may include an old version of the WAR file in the distribution bundle,
rather than the version you just built.
After mvn finished, the war bundle is located at After mvn finished, the war bundle is located at
\*\*scm-webapp/target/scm-webapp.war\*\* and the standalone version is **scm-webapp/target/scm-webapp.war** and the standalone version is
located at \*\*scm-server/target/scm-server-app\*\*. 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\`. SCMM is served at <http://localhost:8081/scm>. scm-webapp`. SCM-Manager is served at <http://localhost:8081/scm>.
### REST ### REST
Docs: Docs:
- Create the documentation: \`mvn -f scm-webapp compile -P doc\` - Create the documentation: `mvn -f scm-webapp compile -P doc`
- The documentation can be found at scm-webapp/target/restdocs - The documentation can be found at scm-webapp/target/restdocs
Note that if using jetty (see above) you have to access Note that if using jetty (see above) you have to access
<http://localhost:8081/scm> once, to trigger creation of the <http://localhost:8081/scm> once, to trigger creation of the
\`scmadmin\` user. Then you can access the REST api directly `scmadmin` user. Then you can access the REST api directly
<http://localhost:8081/scm/api/rest> <http://localhost:8081/scm/api/rest>

View File

@@ -1,15 +1,11 @@
Code Snippets # Code Snippets
-------------
### User Interface ### User Interface
- [extend - [extend navigation](snippet-extend-navigation.md)
navigation](https://bitbucket.org/sdorra/scm-manager/wiki/snippet-extend-navigation "wikilink") - [add tab to repository configuration](snippet-repository-tab.md)
- [add tab to repository - [extend global configuration](snippet-config-group.md)
configuration](https://bitbucket.org/sdorra/scm-manager/wiki/snippet-repository-tab "wikilink")
- [extend global
configuration](https://bitbucket.org/sdorra/scm-manager/wiki/snippet-config-group "wikilink")
=== Backend == ### Backend
- [Authentication](https://bitbucket.org/sdorra/scm-manager/wiki/snippet-authentication "wikilink") - [Authentication](snippet-authentication.md)

View File

@@ -1,16 +1,65 @@
Command line client # 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/ "wikilink") (the [here](http://www.scm-manager.org/download/) (the scm-cli-client).
scm-cli-client).
### Examples ### Examples
- - 1\. Store username, password and server url\*\* **1\. Store username, password and server url**
- - 2\. List all repositories\*\* ```bash
$ java -jar scm-cli-client-1.47-jar-with-dependencies.jar --user scmadmin --password madmin --server http://localhost:8080/scm store-config
- - 3\. Create a new user\*\* store config
```
- - 4\. Add write permission for user test to repository scm\*\* **2\. List all repositories**
```bash
$ java -jar scm-cli-client-1.47-jar-with-dependencies.jar list-repositories
ID: fbb64701-6dd3-4847-8588-26f693736961
Name: scm
Type: hg
E-Mail: s.sdorra@gmail.com
Description: SCM-Manager
Public: false
Creation-Date: 2011-06-03 16:13:19
Last-Modified: 2011-06-03 16:15:38
URL: http://localhost:8080/scm/hg/scm
Permissions:
WRITE - sdorra (Group: false)
```
**3\. Create a new user**
```bash
$ java -jar scm-cli-client-1.47-jar-with-dependencies.jar create-user --name test --display-name "Test User" --mail "test@scm-manager.org" --password secret
Name: test
Display Name: Test User
Type: xml
E-Mail: test@scm-manager.org
Administrator: false
Creation-Date:
Last-Modified:
```
**4\. Add write permission for user test to repository scm**
```bash
$ java -jar scm-cli-client-1.47-jar-with-dependencies.jar add-permission fbb64701-6dd3-4847-8588-26f693736961 --name test -t WRITE
ID: fbb64701-6dd3-4847-8588-26f693736961
Name: scm
Type: hg
E-Mail: s.sdorra@gmail.com
Description: SCM-Manager
Public: false
Creation-Date: 2011-06-03 16:13:19
Last-Modified: 2011-06-03 16:15:38
URL: http://localhost:8080/scm/hg/scm
Permissions:
WRITE - sdorra (Group: false)
WRITE - test (Group: false)
```

View File

@@ -1,14 +1,16 @@
# Configure Eclipse
There are multiple approaches to using Maven projects within Eclipse. If 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. you use an approach that isn\'t listed here, feel free to add it.
Use Maven to generate Eclipse project files ## Use Maven to generate Eclipse project files
-------------------------------------------
1. First, [build scm-manager from 1. First, [build scm-manager from source](build-from-source.md).
source](build-from-source "wikilink").
2. Open a shell to the root of your scm-manager source. 2. Open a shell to the root of your scm-manager source.
3. Run the following command:\\\\ 3. Run the following command:\
4. 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. 5. Open Eclipse using the specified workspace.
6. In Eclipse, select the \"File\", \"Import\...\" menu. 6. In Eclipse, select the \"File\", \"Import\...\" menu.
7. Select the \"General\", \"Existing Projects into Workspace\" item 7. Select the \"General\", \"Existing Projects into Workspace\" item
@@ -20,27 +22,51 @@ Use Maven to generate Eclipse project files
You may encounter an error during the \"eclipse:eclipse\" step that You may encounter an error during the \"eclipse:eclipse\" step that
looks like this: 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 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 eclipse plugin. See below for one workaround. Other discussion of this
issue can be found issue can be found
[here](http://forums.atlassian.com/thread.jspa?threadID=34952&tstart=1 "wikilink"). [here](http://forums.atlassian.com/thread.jspa?threadID=34952&tstart=1).
1. Add the following line within the <settings> element of your 1. Add the following line within the <settings> element of your /.m2/settings.xml file:\
\~/.m2/settings.xml [file:\\\\](file:\\){{{ `<usePluginRegistry>true</usePluginRegistry>`
<usePluginRegistry>true</usePluginRegistry> }}} 1. Add the file /.m2/plugin-registry.xml with the following contents:
```xml
1. Add the file \~/.m2/plugin-registry.xml with the following contents: <?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 If you have .project files in any parent directory, the Eclipse import
step will not search beneath that parent for any further projects. step will not search beneath that parent for any further projects.
Delete the .project file in the parent and try the import again. 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 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 the eclipse:configure-workspace step didn't work. One cause for this
could be using \"\~\" or other special characters in your workspace path could be using \"\~\" or other special characters in your workspace path
that the plugin doesn\'t resolve properly. Either re-run that the plugin doesn't resolve properly. Either re-run
eclipse:configure-workspace, or manually create a classpath variable eclipse:configure-workspace, or manually create a classpath variable
named M2\_REPO pointing to the root of your local maven repository named M2\_REPO pointing to the root of your local maven repository
directory. directory.

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +1,13 @@
Download latest Snapshot release # Download latest Snapshot release
--------------------------------
### SCM-Server 1.61 SNAPSHOT (standalone) ### SCM-Server 1.61 SNAPSHOT (standalone)
- [scm-server](https://repository-scm-manager.forge.cloudbees.com/snapshot/sonia/scm/scm-server/1.61-SNAPSHOT/ "wikilink") - [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 1.61 SNAPSHOT (Web application archive)
- [scm-webapp](https://repository-scm-manager.forge.cloudbees.com/snapshot/sonia/scm/scm-webapp/1.61-SNAPSHOT "wikilink") - [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 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/ "wikilink") - [scm-cli-client](https://repository-scm-manager.forge.cloudbees.com/snapshot/sonia/scm/clients/scm-cli-client/1.61-SNAPSHOT/)

View File

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

View File

@@ -1,31 +1,29 @@
FAQ # 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?
Username: scmadmin Username: `scmadmin`\
Password: `scmadmin`
Password: scmadmin
### Where does SCM-Manager store its configuration, log files and the repositories? ### Where does SCM-Manager store its configuration, log files and the repositories?
SCM-Manager stores the complete data in a directory called .scm (the SCM-Manager stores the complete data in a directory called .scm (the
SCM-Manager home directory). This directory is located in the home SCM-Manager home directory). This directory is located in the home
directory of the user which is the owner of the process. Except for [rpm directory of the user which is the owner of the process. Except for [rpm
and and deb](RPM%20and%20DEB%20packages.md)
deb](https://bitbucket.org/sdorra/scm-manager/wiki/RPM%20and%20DEB%20packages "wikilink")
installations, for those installations the home directory is located at installations, for those installations the home directory is located at
/var/lib/scm. /var/lib/scm.
=== How can I change the SCM-Manager home directory? You could change ### How can I change the SCM-Manager home directory?
the SCM-Manager home directory in a few ways:
You could change the SCM-Manager home directory in a few ways:
- Edit the scm.properties (WEB-INF/classes) file and add the path to - Edit the scm.properties (WEB-INF/classes) file and add the path to
your folder f.e. scm.home=/var/scm your folder f.e. `scm.home=/var/scm`
- Set an environment variable SCM\_HOME with the path of your - Set an environment variable SCM\_HOME with the path of your
directory directory
- Start your application server with a java property called scm.home - Start your application server with a java property called `scm.home`
f.e. -Dscm.home=/var/scm f.e. `-Dscm.home=/var/scm`
### Can I create a directory structure for scm-manager repositories? ### Can I create a directory structure for scm-manager repositories?
@@ -34,12 +32,19 @@ use a \"/\" in the name of the repository to create the structure. For
example the repositories Project/module-1, Project/module-2 and example the repositories Project/module-1, Project/module-2 and
OtherProject/module-1 will result in the following structure. OtherProject/module-1 will result in the following structure.
For more information have a look at ```text
<https://bitbucket.org/sdorra/scm-manager/issue/47/support-for-directory-structure>. + Project
| - module-1
| - module-2
+ OtherProject
| - module-1
```
For more information have a look at [#47](https://github.com/scm-manager/scm-manager/issues/47 "Support for directory structure").
### After creation of a new public repository I am trying to clone it anonymously, but I got request of user and password. What am I doing wrong? ### After creation of a new public repository I am trying to clone it anonymously, but I got request of user and password. What am I doing wrong?
You have to enabled \"Allow Anonymous Access\" at Config-\>General. You have to enable \"Allow Anonymous Access\" at Config-\>General.
### Where does SCM-Manager stores it log files? ### Where does SCM-Manager stores it log files?
@@ -51,8 +56,15 @@ store its configuration, log files and the repositories?\").
Edit scm-server/conf/logging.xml change the line from: Edit scm-server/conf/logging.xml change the line from:
```xml
<logger name="sonia.scm" level="INFO" />
```
to: to:
```xml
<logger name="sonia.scm" level="TRACE" />
```
If you are using the war version with an application server such as If you are using the war version with an application server such as
tomcat, you have to edit the logback.xml in WEB-INF/classes. tomcat, you have to edit the logback.xml in WEB-INF/classes.

View File

@@ -1,42 +1,48 @@
Getting started # Getting started
---------------
### Install Java ### Install Java
SCM-Manager needs an installed Java 1.7 or newer. It is recommended to SCM-Manager needs an installed Java 1.7 or newer. It is recommended to use the [oracle jre](http://java.oracle.com/).
use the [oracle jre](http://java.oracle.com/ "wikilink"). How to check How to check which version of Java is installed:
which version of Java is installed:
### Install the latest version of Java ```bash
java -version
```
Download java from [here](http://java.oracle.com/ "wikilink") and follow Download java from [here](http://java.oracle.com/) and follow the install instructions.
the install instructions.
### Install SCM-Manager ### Install SCM-Manager
Download the latest version of SCM-Manager from Download the latest version of SCM-Manager from
[here](http://www.scm-manager.org/download/ "wikilink"), unpack the .zip [here](http://www.scm-manager.org/download/), unpack the .zip
or .tar.gz package and start SCM-Manager with or .tar.gz package and start SCM-Manager with
```bash
scm-server/bin/scm-server
```
### First access ### First access
\|=URL\|<http://localhost:8080>\| \|=Username\|scmadmin\| | | |
\|=Password\|scmadmin\| | ------------ | ----------------------- |
| **URL** | <http://localhost:8080> |
| **Username** | scmadmin |
| **Password** | scmadmin |
### Mercurial ### Mercurial
Subversion and Git will work out of the box, but if you want to use 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 mercurial with SCM-Manager you have to install mercurial version
\*\*1.9\*\* or newer. **1.9** or newer.
#### Mercurial on Windows #### Mercurial on Windows
The installation of mercurial for SCM-Manager is very complicated on The installation of mercurial for SCM-Manager is very complicated on
windows, have a look at: windows, have a look at:
- <https://bitbucket.org/sdorra/scm-manager/issue/1/no-ability-to-rename-repository> - [#1](https://bitbucket.org/sdorra/scm-manager/issues/1/no-ability-to-rename-repository)
- <https://groups.google.com/d/msg/scmmanager/zOigMIn2RiE/xeFcruG70s8J> - [xeFcruG70s8J](https://groups.google.com/d/msg/scmmanager/zOigMIn2RiE/xeFcruG70s8J "Python/Hg Package Build Process")
- <https://bitbucket.org/sdorra/build-win-hg-packages> - [build-win-hg-packages](https://bitbucket.org/sdorra/build-win-hg-packages)
SCM-Manager comes with the option to install packages for windows to SCM-Manager comes with the option to install packages for windows to
simplify this setup. To use such a package just login as Administrator, simplify this setup. To use such a package just login as Administrator,
@@ -45,10 +51,13 @@ Choose \"Download and install\".
If you see an error like the following: If you see an error like the following:
Then you have to install [Microsoft Visual C++ 2008 SP1 Redistributable ```text
Package 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.'
(x86)](http://www.microsoft.com/en-us/download/details.aspx?id=5582 "wikilink"). ```
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 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 use 32bit python in SCM-Manager on Windows. For more informations have a
look at look at
[\#522](https://bitbucket.org/sdorra/scm-manager/issue/552/hg-repo-creation-failed "wikilink"). [#522](https://bitbucket.org/sdorra/scm-manager/issue/552/hg-repo-creation-failed).

View File

@@ -1,5 +1,4 @@
SCM-Manager with GlassFish # SCM-Manager with GlassFish
--------------------------
To use SCM-Manager 1.6 and above with GlassFish 3.x you have to add a 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 JVM-Option to the GlassFish configuration. Please follow the steps
@@ -9,6 +8,10 @@ Open the GlassFish Admin-Console (http://yourserver:4848), login as
admin user, goto Configuration-\>JVM Settings, switch to the JVM Options admin user, goto Configuration-\>JVM Settings, switch to the JVM Options
tab and add the following JVM-Option: 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. Restart the GlassFish-Server.
Source: Source:

View File

@@ -1,4 +1,4 @@
# Incompatible subversion db format # # 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. 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.
@@ -9,9 +9,7 @@ This incompatible repositories must be converted, before they can be used with S
* 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) * 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.: * execute the convert util with your scm home directory as parameter e.g.:
``` ```bash
#!bash
java -jar scm-fixsvndb5-cli-1.0.1-jar-with-dependencies.jar /path/to/.scm java -jar scm-fixsvndb5-cli-1.0.1-jar-with-dependencies.jar /path/to/.scm
``` ```
@@ -19,5 +17,5 @@ java -jar scm-fixsvndb5-cli-1.0.1-jar-with-dependencies.jar /path/to/.scm
For more informations have a look at: For more informations have a look at:
* [Issue #519](https://bitbucket.org/sdorra/scm-manager/issue/519/default-svn-repository-format-setting) * [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) * [Subversion release notes](https://subversion.apache.org/docs/release-notes/1.7.html#revprop-packing)

View File

@@ -1,32 +1,37 @@
How to create your own plugin # How to create your own plugin
-----------------------------
### Software Requirements ### Software Requirements
- JDK 1.7 or higher - JDK 1.7 or higher
([download](http://www.oracle.com/technetwork/java/index.html "wikilink")) ([download](http://www.oracle.com/technetwork/java/index.html))
- Maven 3 or higher ([download](http://maven.apache.org/ "wikilink")) - Maven 3 or higher ([download](http://maven.apache.org/))
### Create plugin ### 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 ### Test the plugin
```bash
mvn scmp:run
```
### Samples ### Samples
- [Hello - [Hello World](https://bitbucket.org/sdorra/scm-manager/src/1.x/scm-samples/scm-sample-hello/)
World](https://bitbucket.org/sdorra/scm-manager/src/1.x/scm-samples/scm-sample-hello/ "wikilink") - [Authentication Plugin](https://bitbucket.org/sdorra/scm-manager/src/1.x/scm-samples/scm-sample-auth/)
- [Authentication
Plugin](https://bitbucket.org/sdorra/scm-manager/src/1.x/scm-samples/scm-sample-auth/ "wikilink")
### Further reading ### Further reading
- [Injection framework - Google - [Injection framework - Google Guice](http://code.google.com/p/google-guice/)
Guice](http://code.google.com/p/google-guice/ "wikilink") - [Restful WebService - Jersey](http://jersey.java.net/nonav/documentation/latest/user-guide.html)
- [Restful WebService - - [ XML transformation - JAXB](http://jaxb.java.net/guide/)
Jersey](http://jersey.java.net/nonav/documentation/latest/user-guide.html "wikilink") - [User interface - Ext JS](http://www.sencha.com/products/extjs3/)
- [ XML transformation - JAXB](http://jaxb.java.net/guide/ "wikilink")
- [User interface - Ext
JS](http://www.sencha.com/products/extjs3/ "wikilink")
### Questions/Help ### Questions/Help

View File

@@ -1,12 +1,11 @@
# 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: 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:** **Problem description:**
When moving of copying files in SVN, the commit fails with the following message: When moving of copying files in SVN, the commit fails with the following message:
``` ```bash
#!cmd
MyWorkstation:MyRepo user$ svn mv A.cs B.cs MyWorkstation:MyRepo user$ svn mv A.cs B.cs
A B.cs A B.cs
D A.cs D A.cs
@@ -25,10 +24,8 @@ This problem only occurs when accessing the repository via https, not http.
1. Add the following rewrite rule to the web.config of the SCM application: 1. Add the following rewrite rule to the web.config of the SCM application:
``` ```xml
#!xml <system.webServer>
<system.webServer>
<!-- <heliconZoo /> --> <!-- <heliconZoo /> -->
<!-- <handlers /> --> <!-- <handlers /> -->
<rewrite> <rewrite>
@@ -46,12 +43,11 @@ This problem only occurs when accessing the repository via https, not http.
</rule> </rule>
</rules> </rules>
</rewrite> </rewrite>
</system.webServer> </system.webServer>
``` ```
2. Add HTTP_Destination to the Allowed Server Variables using IIS: 2. Add HTTP_Destination to the Allowed Server Variables using IIS:
![2014-10-16_01-40-50.png](https://bitbucket.org/repo/65dEj/images/3287552754-2014-10-16_01-40-50.png) ![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). 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,25 +1,23 @@
Injection Objects # Injection Objects
-----------------
- [AdministrationContext](http://docs.scm-manager.org/apidocs/latest/sonia/scm/web/security/AdministrationContext.html "wikilink") - [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 "wikilink") - [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 "wikilink") - [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 "wikilink") - [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 "wikilink") - [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 "wikilink") - [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 "wikilink") - [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 "wikilink") - [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 "wikilink") - [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 "wikilink") - [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 "wikilink") - [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 "wikilink") - [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 "wikilink") - [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 "wikilink") - [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 "wikilink") - [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 "wikilink") - [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)
RepositoryRequestListenerUtil](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/RepositoryRequestListenerUtil.html "wikilink") - [ScmConfiguration](http://docs.scm-manager.org/apidocs/latest/sonia/scm/config/ScmConfiguration.html)
- [ScmConfiguration](http://docs.scm-manager.org/apidocs/latest/sonia/scm/config/ScmConfiguration.html "wikilink") - [StoreFactory](http://docs.scm-manager.org/apidocs/latest/sonia/scm/store/StoreFactory.html)
- [StoreFactory](http://docs.scm-manager.org/apidocs/latest/sonia/scm/store/StoreFactory.html "wikilink") - [UserManager](http://docs.scm-manager.org/apidocs/latest/sonia/scm/user/UserManager.html)
- [UserManager](http://docs.scm-manager.org/apidocs/latest/sonia/scm/user/UserManager.html "wikilink") - [WebSecurityContext](http://docs.scm-manager.org/apidocs/latest/sonia/scm/web/security/WebSecurityContext.html)
- [WebSecurityContext](http://docs.scm-manager.org/apidocs/latest/sonia/scm/web/security/WebSecurityContext.html "wikilink")

View File

@@ -1,29 +1,129 @@
Java Client API # Java Client API
---------------
### Maven ### Maven
To use the SCM-Manager Java Client API you have to configure the To use the SCM-Manager Java Client API you have to configure the
SCM-Manager maven repository in your pom.xml: 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: 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 ### Usage
First you have to create a session to your SCM-Manager instance: 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 After you have successfully created a client session you can nearly
execute every action which is available from the web interface. But do execute every action which is available from the web interface. But do
not forget to close the session after you have finished your work: not forget to close the session after you have finished your work:
```java
session.close();
```
### Examples ### Examples
Create a new repository: 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: 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: 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: 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: 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,5 +1,4 @@
scm-jenkins-plugin # scm-jenkins-plugin
------------------
The jenkins plugin will ping your Jenkins CI server when a new commit is 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 pushed to SCM-Manager. In SCM-Manager exists two differnt methods to

View File

@@ -1,5 +1,4 @@
scm-jira-plugin # scm-jira-plugin
---------------
The plugin enables the following features to integrate Atlassian JIRA to The plugin enables the following features to integrate Atlassian JIRA to
SCM-Manager: SCM-Manager:
@@ -16,11 +15,11 @@ SCM-Manager:
(https://developer.atlassian.com/display/JIRADEV/JIRA+XML-RPC+Overview) (https://developer.atlassian.com/display/JIRADEV/JIRA+XML-RPC+Overview)
2. Install scm-jira-plugin over the plugin center in scm-manager 2. Install scm-jira-plugin over the plugin center in scm-manager
3. Be sure that your jira installation accepts remote calls 3. Be sure that your jira installation accepts remote calls
([Screenshot](screenshots/scm-jira-plugin/jira-plugin-01.png "wikilink")) ([Screenshot](screenshots/scm-jira-plugin/jira-plugin-01.png))
4. Configure the plugin, select a repository to enable the 4. Configure the plugin, select a repository to enable the
scm-jira-plugin for this repository scm-jira-plugin for this repository
([Screenshot](screenshots/scm-jira-plugin/jira-plugin-02.png "wikilink")) ([Screenshot](screenshots/scm-jira-plugin/jira-plugin-02.png))
5. \*\*Note: \*\* For the auto close and update feature it is necessary 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 that users have the same names and passwords in SCM-Manager and Jira
### Auto Close Words (Since v. 1.17) ### Auto Close Words (Since v. 1.17)
@@ -41,8 +40,8 @@ close words with transition that are configured in JIRA.
### Screenshots ### Screenshots
[](screenshots/scm-jira-plugin/jira-plugin-01.png "wikilink") ![](screenshots/scm-jira-plugin/jira-plugin-01.png)
[](screenshots/scm-jira-plugin/jira-plugin-02.png "wikilink") ![](screenshots/scm-jira-plugin/jira-plugin-02.png)
[](screenshots/scm-jira-plugin/jira-plugin-03.png "wikilink") ![](screenshots/scm-jira-plugin/jira-plugin-03.png)
[](screenshots/scm-jira-plugin/jira-plugin-04.png "wikilink") ![](screenshots/scm-jira-plugin/jira-plugin-04.png)
[](screenshots/scm-jira-plugin/jira-plugin-05.png "wikilink") ![](screenshots/scm-jira-plugin/jira-plugin-05.png)

View File

@@ -1,20 +1,83 @@
scm-mail-plugin # scm-mail-plugin
===============
The mail plugin provides an central api for sending e-mails. This api The mail plugin provides an central api for sending e-mails. This api
can be used by other plugins. can be used by other plugins.
Configuration ## Configuration
-------------
The scm-mail-plugin provides a single place for the mail server The scm-mail-plugin provides a single place for the mail server
configurations at Config-\>General-\>Mail Settings. configurations at Config-\>General-\>Mail Settings.
API Usage ## API Usage
---------
First you have to add the dependency to your pom.xml e.g.: 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. 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.: 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,4 +1,4 @@
== scm-mantisbt-plugin == # scm-mantisbt-plugin
The plugin enables the following features to integrate [MantisBT](https://www.mantisbt.org/) to SCM-Manager: The plugin enables the following features to integrate [MantisBT](https://www.mantisbt.org/) to SCM-Manager:

View File

@@ -1,10 +1,8 @@
# SCM-Server and Nginx # # SCM-Server and Nginx
## Nginx configuration ## ## Nginx configuration
```
#!text
```text
location /scm { location /scm {
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -14,19 +12,17 @@ location /scm {
} }
``` ```
## SCM-Server conf/server-config.xml ## ## SCM-Server conf/server-config.xml
Uncomment following line: Uncomment following line:
``` ```xml
#!xml
<Set name="forwarded">true</Set> <Set name="forwarded">true</Set>
``` ```
Example: Example:
``` ```xml
#!xml
<Call name="addConnector"> <Call name="addConnector">
<Arg> <Arg>
<New class="org.eclipse.jetty.server.nio.SelectChannelConnector"> <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
@@ -43,7 +39,7 @@ Example:
</Call> </Call>
``` ```
## SCM-Manager Configuration version 1.5 and above ## ## SCM-Manager Configuration version 1.5 and above
* Login as an admin user and select "General" * Login as an admin user and select "General"
* Set the "Base Url" to the URL of Nginx (**warning:** don't check "Force Base Url") * Set the "Base Url" to the URL of Nginx (**warning:** don't check "Force Base Url")
* Save the new new settings * Save the new new settings

View File

@@ -1,5 +1,4 @@
Path Write Protect Plugin # Path Write Protect Plugin
-------------------------
### Installation ### Installation
@@ -20,14 +19,12 @@ plugin:
group who should write to any file or folder in the repository. group who should write to any file or folder in the repository.
- If the pathwp plugin is enabled, nobody can write to the repository - If the pathwp plugin is enabled, nobody can write to the repository
expect administrators, repository owners and the specified rules. expect administrators, repository owners and the specified rules.
- To protect a complete folder use a star at the end of the path - To protect a complete folder use a star at the end of the path (e.g.: trunk/\*)
(e.g.: trunk/\*)
Examples ### Examples
--------
\|=Path \|=Name \|=Group Permission \|=Description \| \| \* \| scmadmin | Path | Name | Group Permission | Description |
\| false \| user scmadmin has write access to the whole repository \| \| | ------------- | ----------- | ---------------- | ---------------------- |
trunk/\* \| development \| true \| group development has write access to | * | scmadmin | false | user scmadmin has write access to the whole repository |
the trunk directory \| \| trunk/joe.txt \| joe \| false \| user joe has | trunk/\* | development | true | group development has write access to the trunk directory |
write access to the file trunk/joe.txt \| | trunk/joe.txt | joe | false | user joe has write access to the file trunk/joe.txt |

View File

@@ -1,34 +1,70 @@
Plugin Descriptor # 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
META-INF/scm/plugin.xml in the package of a plugin. META-INF/scm/plugin.xml in the package of a plugin.
\|=Element \|=Description \|=Multiple \| \| plugin \| Root element of | Element | Description | Multiple |
the plugin descriptor \| \| \| plugin/condition \| Plugin condifitions | --- | --- | --- |
\| \| \| plugin/condition/arch \| Processor architecture (x86/amd64) \| | plugin | Root element of the plugin descriptor | |
\| \| plugin/condition/min-version \| Minimum version of SCM-Manager \| | plugin/condition | Plugin condifitions | |
\| \| plugin/condition/os \| Operation System \| \| \| | plugin/condition/arch | Processor architecture (x86/amd64) | |
plugin/condition/os/name \| Name of the Operating System \| X \| \| | plugin/condition/min-version | Minimum version of SCM-Manager | |
plugin/information \| Contains informations of the plugin for the plugin | plugin/condition/os | Operation System | |
backend \| \| \| plugin/information/artifactId \| Maven artifact id \| | plugin/condition/os/name | Name of the Operating System | X |
\| \| plugin/information/author \| The Author of the plugin \| \| \| | plugin/information | Contains informations of the plugin for the plugin backend | |
plugin/information/category \| Category of the plugin \| \| \| | plugin/information/artifactId | Maven artifact id | |
plugin/information/description \| Description of the plugin \| \| \| | plugin/information/author | The Author of the plugin | |
plugin/information/groupId \| Maven group id \| \| \| | plugin/information/category | Category of the plugin | |
plugin/information/name \| Name of the plugin \| \| \| | plugin/information/description | Description of the plugin | |
plugin/information/screenshots \| Contains screenshots of the plugin \| | plugin/information/groupId | Maven group id | |
\| \| plugin/information/screenshots/screenshot \| Single screenshot of | plugin/information/name | Name of the plugin | |
the plugin \| X \| \| plugin/information/url \| The url of the plugin | plugin/information/screenshots | Contains screenshots of the plugin | |
homepage \| \| \| plugin/information/version \| The current version of | plugin/information/screenshots/screenshot | Single screenshot of the plugin | X |
the plugin \| \| \| plugin/information/wiki \| The url of a wiki page \| | plugin/information/url | The url of the plugin homepage | |
\| \| plugin/packages \| Java packages which are being searched for | plugin/information/version | The current version of the plugin | |
extensions \| \| \| plugin/packages/package \| Single Java packages | plugin/information/wiki | The url of a wiki page | |
which is being searched for extensions \| X \| \| plugin/resources \| | plugin/packages | Java packages which are being searched for extensions | |
Contains resources for the web interface (stylesheets and JavaScript | plugin/packages/package | Single Java packages which is being searched for extensions | X |
files) \| \| \| plugin/resources/script \| JavaScript file for the web | plugin/resources | Contains resources for the web interface (stylesheets and JavaScript files) | |
interface \| X \| \| plugin/resources/stylesheet \| Stylesheet for the | plugin/resources/script | JavaScript file for the web interface | X |
web interface \| X \| | plugin/resources/stylesheet | Stylesheet for the web interface | X |
Example of the plugin descriptor: Example of the plugin descriptor:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<!--
Informations for the plugin backend.
The elements groupId, artifactId, name, version and url
are automatically added from the pom.xml by a maven plugin (since 1.5).
-->
<information>
<author>Sebastian Sdorra</author>
</information>
<!--
pluigin requires SCM-Manager version 1.7
-->
<conditions>
<min-version>1.7</min-version>
</conditions>
<!--
register package for plugin extension finder
-->
<packages>
<package>sonia.scm.jenkins</package>
</packages>
<!--
register javascript file
-->
<resources>
<script>/sonia/scm/sonia.jenkins.js</script>
</resources>
</plugin>
```

View File

@@ -1,29 +1,25 @@
Redmine Plugin # Redmine Plugin
--------------
Is based on Is based on [scm-jira-plugin](jira-plugin.md).
[scm-jira-plugin](https://bitbucket.org/sdorra/scm-manager/wiki/jira-plugin "wikilink")
The plugin enables the following features to integrate SCM-Manager to The plugin enables the following features to integrate SCM-Manager to
[Redmine](http://www.redmine.org/ "wikilink"): [Redmine](http://www.redmine.org/):
- Turn issue keys in changeset descriptions to links for redmine - Turn issue keys in changeset descriptions to links for redmine
- Updates a redmine issue if the issue key is found in a changeset - Updates a redmine issue if the issue key is found in a changeset description
description - Close a Redmine issue if the issue key and a auto close (close, fix, resolve, \...)
- Close a Redmine issue if the issue key and a auto close (close, fix, word is found in the changeset description
resolve, \...) word is found in the changeset description
### Installation and configuration ### Installation and configuration
1. Enable redmine rest authentication 1. Enable [Redmine rest authentication](https://www.redmine.org/projects/redmine/wiki/Rest_api#Authentication), basically
(http://www.redmine.org/projects/redmine/wiki/Rest\_api, basically
\'you have to check Enable REST API in Administration -\> Settings \'you have to check Enable REST API in Administration -\> Settings
-\> Authentication\' ) -\> Authentication\'
2. Install redmine-plugin over the plugin center in scm-manager 2. Install redmine-plugin over the plugin center in scm-manager
3. Configure the plugin, select a repository to enable the 3. Configure the plugin, select a repository to enable the
redmine-plugin for this repository redmine-plugin for this repository
4. To link issues commit must be match the following: \'(\#issue\_id) 4. To link issues commit must be match the following: \'(\#issue\_id)
your commit message\' your commit message\'
5. \*\*Note: \*\* For the auto close and update feature it is necessary 5. **Note**: For the auto close and update feature it is necessary
that users have the same names and passwords in SCM-Manager and that users have the same names and passwords in SCM-Manager and
Redmine Redmine

View File

@@ -1,7 +1,8 @@
SCM-Manager 1.19 # Release Notes 1.19 - 1.0
----------------
- - improvements\*\* ## SCM-Manager 1.19
**improvements**
- implement new template api which uses mustache as default engine - implement new template api which uses mustache as default engine
- display error on startup if home directory is not writable - display error on startup if home directory is not writable
@@ -9,23 +10,18 @@ SCM-Manager 1.19
- added support for jersey viewables - added support for jersey viewables
- do not show browser basic authentication dialog on session timeout - do not show browser basic authentication dialog on session timeout
<!-- --> **fixed bugs**
- - fixed bugs\*\*
- fix npe on windows startup, see \<\<issue 226\>\> - fix npe on windows startup, see \<\<issue 226\>\>
<!-- --> **library updates**
- - library updates\*\*
- update javahg to version 0.4 - update javahg to version 0.4
- update enunciate to version 1.26 - update enunciate to version 1.26
SCM-Manager 1.18 ## SCM-Manager 1.18
----------------
- - improvements\*\* **improvements**
- use javahg for mercurial commit, source, blame, content and diff - use javahg for mercurial commit, source, blame, content and diff
views views
@@ -36,9 +32,7 @@ SCM-Manager 1.18
- allow configuration of mercurial repository encoding - allow configuration of mercurial repository encoding
- warn if plugin artifact checksum not match - warn if plugin artifact checksum not match
<!-- --> **fixed bugs**
- - fixed bugs\*\*
- fix wrong cache result in blame command - fix wrong cache result in blame command
- fix wrong escaped subversion commit messages, see \<\<issue 199\>\> - fix wrong escaped subversion commit messages, see \<\<issue 199\>\>
@@ -48,19 +42,16 @@ SCM-Manager 1.18
- fix wrong unarchive message - fix wrong unarchive message
- added missing dtd to server-config.xml - added missing dtd to server-config.xml
<!-- --> **library updates**
- - library updates\*\*
- update ehcache to version 2.6.0 - update ehcache to version 2.6.0
- update jetty to version 7.6.5.v20120716 - update jetty to version 7.6.5.v20120716
- update google guava to version 13.0 - update google guava to version 13.0
- update jersey to version 1.13 - update jersey to version 1.13
SCM-Manager 1.17 ## SCM-Manager 1.17
----------------
- - improvements\*\* **improvements**
- new repository api - new repository api
- log scm-manager version on boot - log scm-manager version on boot
@@ -74,9 +65,7 @@ SCM-Manager 1.17
- Repository links should use relative paths, see \<\<issue 156\>\> - Repository links should use relative paths, see \<\<issue 156\>\>
- Added locale and timezone to support informations - Added locale and timezone to support informations
<!-- --> **fixed bugs**
- - fixed bugs\*\*
- fix detection of scm-server servlet container - fix detection of scm-server servlet container
- fix svn version informations - fix svn version informations
@@ -88,19 +77,16 @@ SCM-Manager 1.17
- fix basic authentication for systems with turkish locale, see - fix basic authentication for systems with turkish locale, see
\<\<issue 195\>\> \<\<issue 195\>\>
<!-- --> **library updates**
- - library updates\*\*
- update jgit to version 2.0.0.201206130900-r - update jgit to version 2.0.0.201206130900-r
- update svnkit to version 1.7.5-1 - update svnkit to version 1.7.5-1
- update logback to version 1.0.6 - update logback to version 1.0.6
- update slf4j to version 1.6.6 - update slf4j to version 1.6.6
SCM-Manager 1.16 ## SCM-Manager 1.16
----------------
- - improvements\*\* **improvements**
- improve mercurial hook error handling - improve mercurial hook error handling
- mercurial hook url auto detection - mercurial hook url auto detection
@@ -118,9 +104,7 @@ SCM-Manager 1.16
- added api for store listeners - added api for store listeners
- added option to encode svn responses with gzip - added option to encode svn responses with gzip
<!-- --> **fixed bugs**
- - fixed bugs\*\*
- do not encode changeset author name, see \<\<issue 160\>\> - do not encode changeset author name, see \<\<issue 160\>\>
- pass shell environment to mercurial cgi process, see \<\<issue - pass shell environment to mercurial cgi process, see \<\<issue
@@ -129,9 +113,7 @@ SCM-Manager 1.16
- fix changing resource order for plugins - fix changing resource order for plugins
- fix repository name validation, see \<\<issue 148\>\> - fix repository name validation, see \<\<issue 148\>\>
<!-- --> **library updates**
- - library updates\*\*
- update jetty to version 7.6.4.v20120524 - update jetty to version 7.6.4.v20120524
- update logback to version 1.0.4 - update logback to version 1.0.4
@@ -139,10 +121,9 @@ SCM-Manager 1.16
- update args4j to version 2.0.21 - update args4j to version 2.0.21
- update svnkit to version 1.7.4-1.v1 - update svnkit to version 1.7.4-1.v1
SCM-Manager 1.15 ## SCM-Manager 1.15
----------------
- - improvements\*\* **improvements**
- added information page for service requests - added information page for service requests
- templates can be loaded from webapp context or classpath - templates can be loaded from webapp context or classpath
@@ -155,9 +136,7 @@ SCM-Manager 1.15
- added public and archived option to modify-repository sub command of - added public and archived option to modify-repository sub command of
scm-cli-client scm-cli-client
<!-- --> **fixed bugs**
- - fixed bugs\*\*
- disable jsvc arch call to fix wrong cpu problem on darwin i386 - disable jsvc arch call to fix wrong cpu problem on darwin i386
daemon daemon
@@ -174,17 +153,14 @@ SCM-Manager 1.15
\<\<issue 124\>\> \<\<issue 124\>\>
- fix wrong changeset url in ui url provider - fix wrong changeset url in ui url provider
<!-- --> **library updates**
- - library updates\*\*
- update google guava to version 12.0 - update google guava to version 12.0
- update logback to version 1.0.3 - update logback to version 1.0.3
SCM-Manager 1.14 ## SCM-Manager 1.14
----------------
- - improvements\*\* **improvements**
- archive for repositories, see \<\<issue 42\>\> - archive for repositories, see \<\<issue 42\>\>
- simpler api to create other backend as the default xml version - simpler api to create other backend as the default xml version
@@ -193,9 +169,7 @@ SCM-Manager 1.14
- improved error dialog in user interface, see \<\<issue 107\>\> - improved error dialog in user interface, see \<\<issue 107\>\>
- improve german locale - improve german locale
<!-- --> **fixed bugs**
- - fixed bugs\*\*
- fix wrong log messages - fix wrong log messages
- fix repository creation failure leaves empty directory, see - fix repository creation failure leaves empty directory, see
@@ -204,26 +178,21 @@ SCM-Manager 1.14
subrepositories, see \<\<issue 104\>\> subrepositories, see \<\<issue 104\>\>
- fix history repository selection - fix history repository selection
<!-- --> **library updates**
- - library updates\*\*
- update jetty to version 7.6.3.v20120416 - update jetty to version 7.6.3.v20120416
- update logback to version 1.0.1 - update logback to version 1.0.1
- update ehcache to version 2.5.2 - update ehcache to version 2.5.2
- update commons-daemon to version 1.0.10, see \<\<issue 103\>\> - update commons-daemon to version 1.0.10, see \<\<issue 103\>\>
SCM-Manager 1.13 ## SCM-Manager 1.13
----------------
- - improvements\*\* **improvements**
- more robust python modules to access mercurial resources - more robust python modules to access mercurial resources
- added disable option to each core plugin - added disable option to each core plugin
<!-- --> **fixed bugs**
- - fixed bugs\*\*
- fix changing etags for collections - fix changing etags for collections
- fix missing hooks of mercurial repository import, see \<\<issue - fix missing hooks of mercurial repository import, see \<\<issue
@@ -238,19 +207,16 @@ SCM-Manager 1.13
- fix mercurial encoding problem, see \<\<issue 95\>\> - fix mercurial encoding problem, see \<\<issue 95\>\>
- fix issue-94 can\'t edit users, see \<\<issue 94\>\> - fix issue-94 can\'t edit users, see \<\<issue 94\>\>
<!-- --> **library updates**
- - library updates\*\*
- update freemarker to version 2.3.19 - update freemarker to version 2.3.19
- update jetty to version 7.6.1.v20120215 - update jetty to version 7.6.1.v20120215
- update jgit to version 1.3.0.201202151440-r - update jgit to version 1.3.0.201202151440-r
- update jersey to version 1.12 - update jersey to version 1.12
SCM-Manager 1.12 ## SCM-Manager 1.12
----------------
- - improvements\*\* **improvements**
- new theme - new theme
- support for mercurial 2.1 - support for mercurial 2.1
@@ -260,9 +226,7 @@ SCM-Manager 1.12
- added api for project stages - added api for project stages
- added api to fetch a single changeset - added api to fetch a single changeset
<!-- --> **fixed bugs**
- - fixed bugs\*\*
- allow usernames \< 3 chars, see pull request 2 - allow usernames \< 3 chars, see pull request 2
- git: use author ident instead of commit ident - git: use author ident instead of commit ident
@@ -270,27 +234,22 @@ SCM-Manager 1.12
- mercurial: fix getChangesets of post receive hooks - mercurial: fix getChangesets of post receive hooks
- fix history bug during repository selection - fix history bug during repository selection
<!-- --> **library updates**
- - library updates\*\*
- update jetty to version 7.6.0.v20120127 - update jetty to version 7.6.0.v20120127
- update maven for aether to version 3.0.4 - update maven for aether to version 3.0.4
- update ehcache to version 2.5.1 - update ehcache to version 2.5.1
SCM-Manager 1.11 ##SCM-Manager 1.11
----------------
- - improvements\*\* **improvements**
- allow to fetch repositories by type and name - allow to fetch repositories by type and name
- added icon for tags - added icon for tags
- show parent revision in changeset viewer - show parent revision in changeset viewer
- added repository browser support for external git submodules - added repository browser support for external git submodules
<!-- --> **fixed bugs**
- - fixed bugs\*\*
- fix wrong svn diff - fix wrong svn diff
- fix wrong revision for sub module repository browser - fix wrong revision for sub module repository browser
@@ -304,19 +263,16 @@ SCM-Manager 1.11
- fix bug in appendParameter method of UrlBuilder - fix bug in appendParameter method of UrlBuilder
- truncate long svn status lines, see \<\<issue 83\>\> - truncate long svn status lines, see \<\<issue 83\>\>
SCM-Manager 1.10 ## SCM-Manager 1.10
----------------
- - improvements\*\* **improvements**
- small performance improvements - small performance improvements
- added basic support for external mercurial subrepositories - added basic support for external mercurial subrepositories
- added repository request listener api - added repository request listener api
- added file object pre processor api - added file object pre processor api
<!-- --> **fixed bugs**
- - fixed bugs\*\*
- fix vertical scrollbar in webkit based browsers - fix vertical scrollbar in webkit based browsers
- fix mercurial push with symbolic links, see \<\<issue 82\>\> - fix mercurial push with symbolic links, see \<\<issue 82\>\>
@@ -325,9 +281,7 @@ SCM-Manager 1.10
- fix \"Allow anonymous access\" breaks access to private - fix \"Allow anonymous access\" breaks access to private
repositories, see \<\<issue 77\>\> repositories, see \<\<issue 77\>\>
<!-- --> **library updates**
- - library updates\*\*
- update args4j to version 2.0.19 - update args4j to version 2.0.19
- update aether to version 1.13.1 - update aether to version 1.13.1
@@ -335,10 +289,9 @@ SCM-Manager 1.10
- update jgit to version 1.2.0.201112221803-r - update jgit to version 1.2.0.201112221803-r
- update svnkit to version 1.3.7.1 - update svnkit to version 1.3.7.1
SCM-Manager 1.9 ## SCM-Manager 1.9
---------------
- - improvements\*\* **improvements**
- Support for directory structure, see \<\<issue 47\>\> - Support for directory structure, see \<\<issue 47\>\>
- Added webservice method to fetch repository by its type and name - Added webservice method to fetch repository by its type and name
@@ -353,9 +306,7 @@ SCM-Manager 1.9
- Added version and server-version to scm-cli-client - Added version and server-version to scm-cli-client
- Improve performance by better repository caching - Improve performance by better repository caching
<!-- --> **fixed bugs**
- - fixed bugs\*\*
- fix bug in get method of repository resource - fix bug in get method of repository resource
- fix issue \"Administrator flag is disabled after login\", see - fix issue \"Administrator flag is disabled after login\", see
@@ -365,19 +316,16 @@ SCM-Manager 1.9
- fix mercurial hooks with configured force base url - fix mercurial hooks with configured force base url
- fix mercurial hooks with apache mod\_proxy, see \<\<issue 71\>\> - fix mercurial hooks with apache mod\_proxy, see \<\<issue 71\>\>
<!-- --> **library updates**
- - library updates\*\*
- update jersey to version 1.10 - update jersey to version 1.10
- update slf4j to verion 1.6.4 - update slf4j to verion 1.6.4
- update logback to version 1.0.0 - update logback to version 1.0.0
- update jetty to version 7.5.4.v20111024 - update jetty to version 7.5.4.v20111024
SCM-Manager 1.8 ## SCM-Manager 1.8
---------------
- - improvements\*\* **improvements**
- support for pre receive hooks, see \<\<issue 62\>\> - support for pre receive hooks, see \<\<issue 62\>\>
- scm-maven-plugin are now useable for integration tests - scm-maven-plugin are now useable for integration tests
@@ -391,15 +339,11 @@ SCM-Manager 1.8
- improve javadoc - improve javadoc
- download for single files from repository - download for single files from repository
<!-- --> **fixed bugs**
- - fixed bugs\*\*
- Fixed bug in git repositories without head - Fixed bug in git repositories without head
<!-- --> **library updates**
- - library updates\*\*
- update jetty to version 7.5.1.v20110908 - update jetty to version 7.5.1.v20110908
- update aether to version 1.13 - update aether to version 1.13
@@ -408,12 +352,9 @@ SCM-Manager 1.8
- update jgit to version 1.1.0.201109151100-r - update jgit to version 1.1.0.201109151100-r
- update jersey to version 1.9 - update jersey to version 1.9
SCM-Manager 1.7 ## SCM-Manager 1.7
---------------
- - improvements\*\* **improvements**
<!-- -->
- added repository search and repository type filter to user - added repository search and repository type filter to user
interface, see \<\<issue 48\>\> interface, see \<\<issue 48\>\>
@@ -426,15 +367,11 @@ SCM-Manager 1.7
- added option to configure the scm home directory with a classpath - added option to configure the scm home directory with a classpath
resource, see \<\<issue 53\>\> resource, see \<\<issue 53\>\>
- support for proxyservers with authentication, see - support for proxyservers with authentication, see
[ko7eGU88rB4](https://groups.google.com/forum/#!topic/scmmanager/ko7eGU88rB4 "wikilink") [ko7eGU88rB4](https://groups.google.com/forum/#!topic/scmmanager/ko7eGU88rB4 "Plugins through http auth proxy?")
- improve changeset pre processor api - improve changeset pre processor api
- improve support for repository, group and user properties - improve support for repository, group and user properties
<!-- --> **fixed bugs**
- - fixed bugs\*\*
<!-- -->
- show installed plugins without internet connection, see \<\<issue - show installed plugins without internet connection, see \<\<issue
44\>\> 44\>\>
@@ -444,27 +381,20 @@ SCM-Manager 1.7
- fix a classloading problem in scmp:run maven goal - fix a classloading problem in scmp:run maven goal
- fix bug in property xml serialization - fix bug in property xml serialization
<!-- --> **library updates**
- - library updates\*\*
<!-- -->
- update ehcache to version 2.4.4 - update ehcache to version 2.4.4
- update slf4j to version 1.6.2 - update slf4j to version 1.6.2
- update junit to version 4.9 - update junit to version 4.9
SCM-Manager 1.6 ## SCM-Manager 1.6
---------------
- - note\*\* **note**
- GlassFish 3.x users have to change their GlassFish configuration, - GlassFish 3.x users have to change their GlassFish configuration,
see [SCM-Manager with GlassFish](glassfish "wikilink") see [SCM-Manager with GlassFish](glassfish.md)
<!-- --> **improvements**
- - improvements\*\*
- added an api for repository hooks - added an api for repository hooks
- support for git post-receive hook - support for git post-receive hook
@@ -476,9 +406,7 @@ SCM-Manager 1.6
- added icons to member and permission grid - added icons to member and permission grid
- added properties to repositories, users and groups - added properties to repositories, users and groups
<!-- --> **fixed bugs**
- - fixed bugs\*\*
- fixed deployment bug on some tomcat configurations, \<\<issue 38\>\> - fixed deployment bug on some tomcat configurations, \<\<issue 38\>\>
- fixed NullPointerException with empty git repositories, \<\<issue - fixed NullPointerException with empty git repositories, \<\<issue
@@ -491,75 +419,59 @@ SCM-Manager 1.6
- fixed error 500 in mercurial repository browser with configured - fixed error 500 in mercurial repository browser with configured
python path python path
<!-- --> **library updates**
- - library updates\*\*
- upgraded jetty to version 7.4.5.v20110725 - upgraded jetty to version 7.4.5.v20110725
- upgraded wagon to version 1.0 - upgraded wagon to version 1.0
- upgraded ehcache to version 2.4.3 - upgraded ehcache to version 2.4.3
- upgraded aether to version 1.12 - upgraded aether to version 1.12
SCM-Manager 1.5 ## SCM-Manager 1.5
---------------
- - note\*\* **note**
- mod\_proxy users have to change their configuration, see [mod\_proxy - mod\_proxy users have to change their configuration, see [mod\_proxy configuration](apache/apache-mod_proxy.md)
configuration](https://bitbucket.org/sdorra/scm-manager/wiki/apache/apache-mod_proxy "wikilink")
<!-- --> **improvements**
- - improvements\*\*
- added a \"repositorybrowser\" - added a \"repositorybrowser\"
- added missing error messages on session timeout - added missing error messages on session timeout
- support for mod\_proxy forward with ssl, see \<\<issue 32\>\> - support for mod\_proxy forward with ssl, see \<\<issue 32\>\>
- added toolbar icons for add, remove and refresh action - added toolbar icons for add, remove and refresh action
<!-- --> **fixed bugs**
- - fixed bugs\*\*
- fixed javascript error on loginwindow cancelbutton click - fixed javascript error on loginwindow cancelbutton click
- fixed bug with non default git repository directory, see \<\<issue - fixed bug with non default git repository directory, see \<\<issue
29\>\> 29\>\>
<!-- --> **library updates**
- - library updates\*\*
- upgraded jersey to version 1.8 - upgraded jersey to version 1.8
- upgraded jgit to version 1.0.0.201106090707-r - upgraded jgit to version 1.0.0.201106090707-r
SCM-Manager 1.4 ## SCM-Manager 1.4
---------------
- - improvements\*\* **improvements**
- support for IE 9 - support for IE 9
- using tabs for group details - using tabs for group details
<!-- --> **fixed bugs**
- - fixed bugs\*\*
- fixed svn move command, see \<\<issue 25\>\> - fixed svn move command, see \<\<issue 25\>\>
- fixed svn log command, see \<\<issue 25\>\> - fixed svn log command, see \<\<issue 25\>\>
<!-- --> **library updates**
- - library updates\*\*
- upgraded jersey-ahc-client to version 1.0.2 - upgraded jersey-ahc-client to version 1.0.2
- upgraded jersey-client to version 1.7 - upgraded jersey-client to version 1.7
- upgraded logback to version 0.9.29 - upgraded logback to version 0.9.29
- upgraded extjs to version 3.4.0 - upgraded extjs to version 3.4.0
SCM-Manager 1.3 ## SCM-Manager 1.3
---------------
- - improvements\*\* **improvements**
- added a client api - added a client api
- added a commandline client - added a commandline client
@@ -568,16 +480,12 @@ SCM-Manager 1.3
- improved session timeout handling, see \<\<issue 23\>\> - improved session timeout handling, see \<\<issue 23\>\>
- move logging configuration to \"conf\" folder of scm-server - move logging configuration to \"conf\" folder of scm-server
<!-- --> **fixed bugs**
- - fixed bugs\*\*
- svn: fixed wrong content-length in DAVServlet, see \<\<issue 24\>\> - svn: fixed wrong content-length in DAVServlet, see \<\<issue 24\>\>
- svn: fixed wrong encoding, see \<\<issue 22\>\> - svn: fixed wrong encoding, see \<\<issue 22\>\>
<!-- --> **library updates**
- - library updates\*\*
- upgraded jetty to version 7.4.2.v20110526 - upgraded jetty to version 7.4.2.v20110526
- upgraded google guice to version 3.0 - upgraded google guice to version 3.0
@@ -585,10 +493,9 @@ SCM-Manager 1.3
- upgraded freemarker to version 2.3.18 - upgraded freemarker to version 2.3.18
- upgraded jersey to version 1.7 - upgraded jersey to version 1.7
SCM-Manager 1.2 ## SCM-Manager 1.2
---------------
- - improvements\*\* **improvements**
- added a \"changesetviewer\" - added a \"changesetviewer\"
- using tabs for repository configuration - using tabs for repository configuration
@@ -598,26 +505,21 @@ SCM-Manager 1.2
- new cgi api - new cgi api
- added subversion compatibility switches, see \<\<issue 13\>\> - added subversion compatibility switches, see \<\<issue 13\>\>
<!-- --> **fixed bugs**
- - fixed bugs\*\*
- fixed ssl support in scm-server, see \<\<issue 9\>\> - fixed ssl support in scm-server, see \<\<issue 9\>\>
- fixed ssl support in mercurial cgi servlet, see \<\<issue 9\>\> - fixed ssl support in mercurial cgi servlet, see \<\<issue 9\>\>
- fixed a browser window resize bug, see \<\<issue 10\>\> - fixed a browser window resize bug, see \<\<issue 10\>\>
- fixed bug with spaces in the scm home path, see \<\<issue 11\>\> - fixed bug with spaces in the scm home path, see \<\<issue 11\>\>
<!-- --> **library updates**
- - library updates\*\*
- upgrade freemarker to version 2.3.16 - upgrade freemarker to version 2.3.16
- upgrade jersey to version 1.6 - upgrade jersey to version 1.6
- upgrade ehcache to version 2.4.1 - upgrade ehcache to version 2.4.1
- upgrade jgit to version 0.12.1 - upgrade jgit to version 0.12.1
SCM-Manager 1.1 ## SCM-Manager 1.1
---------------
- Support for Unix-Daemons and Windows-Services - Support for Unix-Daemons and Windows-Services
- Support for localization - Support for localization

View File

@@ -1,7 +1,9 @@
# Release Notes 1.39 - 1.20
SCM-Manager 1.39 SCM-Manager 1.39
---------------- ----------------
- - improvements\*\* **improvements**
- created rpm and deb packages for scm-server - created rpm and deb packages for scm-server
- improve error handling of permission system - improve error handling of permission system
@@ -11,9 +13,9 @@ SCM-Manager 1.39
- implemented marker interface for plugin class loaders to make it - implemented marker interface for plugin class loaders to make it
easier to find class loader leaks easier to find class loader leaks
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- fix mailto links - fix mailto links
- fix automatic start as service on windows server 2012, see \<\<issue - fix automatic start as service on windows server 2012, see \<\<issue
@@ -29,9 +31,9 @@ SCM-Manager 1.39
- fix marshalling exception on plugin installation with rest api, see - fix marshalling exception on plugin installation with rest api, see
\<\<issue \#578\>\> \<\<issue \#578\>\>
<!-- -->
- - library updates\*\*
**library updates**
- update mustache to version 0.8.15 - update mustache to version 0.8.15
- update jgit to version 3.4.0.201406110918-r - update jgit to version 3.4.0.201406110918-r
@@ -41,7 +43,7 @@ SCM-Manager 1.39
SCM-Manager 1.38 SCM-Manager 1.38
---------------- ----------------
- - fixed bugs\*\* **fixed bugs**
- fix NoClassDefFoundError in scm-cli-client, see issue \<\<issue - fix NoClassDefFoundError in scm-cli-client, see issue \<\<issue
\#576\>\> \#576\>\>
@@ -55,7 +57,7 @@ SCM-Manager 1.38
SCM-Manager 1.37 SCM-Manager 1.37
---------------- ----------------
- - improvements\*\* **improvements**
- improved git error messages for failed authentication and not enough - improved git error messages for failed authentication and not enough
permissions permissions
@@ -65,9 +67,9 @@ SCM-Manager 1.37
- update last modified date of a repository after each push - update last modified date of a repository after each push
- added hidden last modified column to repository grid - added hidden last modified column to repository grid
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- resolve dependency resolution conflicts, see \<\<issue 541\>\>, - resolve dependency resolution conflicts, see \<\<issue 541\>\>,
\<\<issue 549\>\> and \<\<issue 558\>\> \<\<issue 549\>\> and \<\<issue 558\>\>
@@ -79,9 +81,9 @@ SCM-Manager 1.37
\<\<issue 548\>\> \<\<issue 548\>\>
- subversion cannot delete properties, see \<\<issue 547\>\> - subversion cannot delete properties, see \<\<issue 547\>\>
<!-- -->
- - library updates\*\*
**library updates**
- update jetty to version 7.6.15.v20140411 - update jetty to version 7.6.15.v20140411
- update svnkit to version 1.8.5-scm1 - update svnkit to version 1.8.5-scm1
@@ -93,18 +95,18 @@ SCM-Manager 1.37
SCM-Manager 1.36 SCM-Manager 1.36
---------------- ----------------
- - improvements\*\* **improvements**
- added feature to set custom realm description, see [PR - added feature to set custom realm description, see [PR
16](https://bitbucket.org/sdorra/scm-manager/pull-request/16/add-feature-to-set-custom-realm "wikilink") 16](https://bitbucket.org/sdorra/scm-manager/pull-request/16/add-feature-to-set-custom-realm)
- added option to skip failed authenticators - added option to skip failed authenticators
- cli-client: allow retrieving repositories by using type/name instead - cli-client: allow retrieving repositories by using type/name instead
of repository id of repository id
- implemented repository health checks - implemented repository health checks
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- solve classloading issues for plugin classes - solve classloading issues for plugin classes
- fix changing passwords which a shorter than 5 chars, see issue - fix changing passwords which a shorter than 5 chars, see issue
@@ -119,9 +121,9 @@ SCM-Manager 1.36
- fix bug with some special chars in SearchUtil - fix bug with some special chars in SearchUtil
- fix mercurial out of scope exception on startup - fix mercurial out of scope exception on startup
<!-- -->
- - library updates\*\*
**library updates**
- update args4j 2.0.26 - update args4j 2.0.26
- update svnkit to version 1.8.4-scm1 - update svnkit to version 1.8.4-scm1
@@ -135,35 +137,35 @@ SCM-Manager 1.36
SCM-Manager 1.35 SCM-Manager 1.35
---------------- ----------------
- - improvements\*\* **improvements**
- Spanish translation, see [PR - Spanish translation, see [PR
9](https://bitbucket.org/sdorra/scm-manager/pull-request/9/spanish-translation "wikilink") 9](https://bitbucket.org/sdorra/scm-manager/pull-request/9/spanish-translation)
thanks to [Ángel L. thanks to [Ángel L.
García](https://bitbucket.org/algarcia "wikilink") García](https://bitbucket.org/algarcia)
- added auto-login filter system, see [PR - added auto-login filter system, see [PR
4](https://bitbucket.org/sdorra/scm-manager/pull-request/4/modifications-for-auto-login "wikilink") 4](https://bitbucket.org/sdorra/scm-manager/pull-request/4/modifications-for-auto-login)
thanks to [Clemens Rabe](https://bitbucket.org/seeraven "wikilink") thanks to [Clemens Rabe](https://bitbucket.org/seeraven)
- added property to disable escaping for blame, browse, log command - added property to disable escaping for blame, browse, log command
and hooks, see \<\<issue 505\>\> and hooks, see \<\<issue 505\>\>
- remove cancel button on login window if anonymous access is - remove cancel button on login window if anonymous access is
disabled, see \<\<issue 396\>\> disabled, see \<\<issue 396\>\>
- syntax highlighting for c, h, hh and cc files, see [PR - syntax highlighting for c, h, hh and cc files, see [PR
11](https://bitbucket.org/sdorra/scm-manager/pull-request/11/c-java-extensions-added-to "wikilink") 11](https://bitbucket.org/sdorra/scm-manager/pull-request/11/c-java-extensions-added-to)
thanks to [pankaj azad](https://bitbucket.org/pankajazad "wikilink") thanks to [pankaj azad](https://bitbucket.org/pankajazad)
- custom subversion collection renderer - custom subversion collection renderer
- use full message instead of short message for git commits, see - use full message instead of short message for git commits, see
\<\<issue 474\>\> \<\<issue 474\>\>
- improved german translation, see [PR - improved german translation, see [PR
5](https://bitbucket.org/sdorra/scm-manager/pull-request/5/german-translation-adjusted/diff "wikilink") 5](https://bitbucket.org/sdorra/scm-manager/pull-request/5/german-translation-adjusted/diff)
thanks to [Ahmed Saad](https://bitbucket.org/saadous "wikilink") thanks to [Ahmed Saad](https://bitbucket.org/saadous)
- use same validation rules for user and group names, see \<\<issue - use same validation rules for user and group names, see \<\<issue
470\>\> 470\>\>
- added brushes for applescript and sass - added brushes for applescript and sass
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- fixed file leak, see \<\<issue 500\>\> - fixed file leak, see \<\<issue 500\>\>
- fixed double escaping, see \<\<issue 505\>\> - fixed double escaping, see \<\<issue 505\>\>
@@ -178,9 +180,9 @@ SCM-Manager 1.35
see \<\<issue 464\>\> see \<\<issue 464\>\>
- fix wrong sql brush filename, see \<\<issue 461\>\> - fix wrong sql brush filename, see \<\<issue 461\>\>
<!-- -->
- - library updates\*\*
**library updates**
- update jetty to 7.6.14.v20131031 - update jetty to 7.6.14.v20131031
- update jersey to 1.18 - update jersey to 1.18
@@ -193,7 +195,7 @@ SCM-Manager 1.35
SCM-Manager 1.34 SCM-Manager 1.34
---------------- ----------------
- - improvements\*\* **improvements**
- allow multi line mercurial messages - allow multi line mercurial messages
- change order of permission column and use a more robust cell editor - change order of permission column and use a more robust cell editor
@@ -203,9 +205,9 @@ SCM-Manager 1.34
- added configuration changed event - added configuration changed event
- implement login attempt handler to handle failed authentications - implement login attempt handler to handle failed authentications
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- fix bug with user events and decorated user managers - fix bug with user events and decorated user managers
- fix hg push fails with \'URLError\' object has no attribute - fix hg push fails with \'URLError\' object has no attribute
@@ -222,9 +224,9 @@ SCM-Manager 1.34
- fix out of scope exception on access hgcontext, see \<\<issue - fix out of scope exception on access hgcontext, see \<\<issue
451\>\> 451\>\>
<!-- -->
- - library updates\*\*
**library updates**
- update jetty to 7.6.13.v20130916 - update jetty to 7.6.13.v20130916
- update guava to version 15.0 - update guava to version 15.0
@@ -232,7 +234,7 @@ SCM-Manager 1.34
SCM-Manager 1.33 SCM-Manager 1.33
---------------- ----------------
- - improvements\*\* **improvements**
- added api to bypass changeset pre processors during hook - added api to bypass changeset pre processors during hook
- added api to send messages back to scm client during hook - added api to send messages back to scm client during hook
@@ -240,9 +242,9 @@ SCM-Manager 1.33
- introduce Event annotation to mark event classes which are - introduce Event annotation to mark event classes which are
receiveable over the event system receiveable over the event system
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- fix login window scrollbars on linux with firefox 21, see \<\<issue - fix login window scrollbars on linux with firefox 21, see \<\<issue
411\>\> 411\>\>
@@ -259,9 +261,9 @@ SCM-Manager 1.33
- fix handling of pending changesets during pre receive repository - fix handling of pending changesets during pre receive repository
hooks hooks
<!-- -->
- - library updates\*\*
**library updates**
- update jgit to 3.0.0.201306101825-r - update jgit to 3.0.0.201306101825-r
- update args4j to version 2.0.25 - update args4j to version 2.0.25
@@ -274,16 +276,16 @@ SCM-Manager 1.33
SCM-Manager 1.32 SCM-Manager 1.32
---------------- ----------------
- - improvements\*\* **improvements**
- added support for subversion 1.8 and ra\_serf (\<\<issue 222\>\>, - added support for subversion 1.8 and ra\_serf (\<\<issue 222\>\>,
\<\<issue 406\>\>) \<\<issue 406\>\>)
- added detection eclipse jetty (standalone) to - added detection eclipse jetty (standalone) to
ServletContainerDetector (pull request 3) ServletContainerDetector (pull request 3)
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- fix loading of cache configurations from plugins - fix loading of cache configurations from plugins
- resolve conflicts for plugins and plugin dependencies - resolve conflicts for plugins and plugin dependencies
@@ -295,7 +297,7 @@ SCM-Manager 1.32
SCM-Manager 1.31 SCM-Manager 1.31
---------------- ----------------
- - improvements\*\* **improvements**
- added first access url and credentials to readme - added first access url and credentials to readme
- option to assign global access permissions to users and groups - option to assign global access permissions to users and groups
@@ -311,9 +313,9 @@ SCM-Manager 1.31
parent parent
- create and deploy package for rest documentation - create and deploy package for rest documentation
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- fix wrong message for deleting repositories (\<\<issue 370\>\>) - fix wrong message for deleting repositories (\<\<issue 370\>\>)
- fix button handling on repository grid with enabled archive mode - fix button handling on repository grid with enabled archive mode
@@ -326,9 +328,9 @@ SCM-Manager 1.31
395\>\>) 395\>\>)
- fix daemon mode on some operating systems (\<\<issue 397\>\>) - fix daemon mode on some operating systems (\<\<issue 397\>\>)
<!-- -->
- - library updates\*\*
**library updates**
- update logback to version 1.0.13 - update logback to version 1.0.13
- update svnkit to version 1.7.9-scm1 - update svnkit to version 1.7.9-scm1
@@ -341,14 +343,14 @@ SCM-Manager 1.31
SCM-Manager 1.30 SCM-Manager 1.30
---------------- ----------------
- - fixed bugs\*\* **fixed bugs**
- fix missing copy strategy in guava cache configuration - fix missing copy strategy in guava cache configuration
SCM-Manager 1.29 SCM-Manager 1.29
---------------- ----------------
- - improvements\*\* **improvements**
- use guava as default cache implementation (\<\<issue 345\>\>) - use guava as default cache implementation (\<\<issue 345\>\>)
- merge cache configuration from default location, config directory - merge cache configuration from default location, config directory
@@ -363,9 +365,9 @@ SCM-Manager 1.29
- use template engine and repository service for git repository page - use template engine and repository service for git repository page
(\<\<issue 341\>\>) (\<\<issue 341\>\>)
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- synchronize getCache method of cache manager implementations - synchronize getCache method of cache manager implementations
(\<\<issue 345\>\>) (\<\<issue 345\>\>)
@@ -381,9 +383,9 @@ SCM-Manager 1.29
- sonia.scm.net.HttpRequest.appendValues() adds parameter values twice - sonia.scm.net.HttpRequest.appendValues() adds parameter values twice
(\<\<issue 342\>\>) (\<\<issue 342\>\>)
<!-- -->
- - library updates\*\*
**library updates**
- update ehcache to version 2.6.5 - update ehcache to version 2.6.5
- update jersey to version 1.17.1 - update jersey to version 1.17.1
@@ -397,7 +399,7 @@ SCM-Manager 1.29
SCM-Manager 1.28 SCM-Manager 1.28
---------------- ----------------
- - improvements\*\* **improvements**
- added scm.home example for windows, see \<\<issue 328\>\> - added scm.home example for windows, see \<\<issue 328\>\>
- disable directory listings on default scm-server configuration - disable directory listings on default scm-server configuration
@@ -407,9 +409,9 @@ SCM-Manager 1.28
- use async cache for scm realm - use async cache for scm realm
- improve manager exception handling - improve manager exception handling
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- fix path traversal vulnerability in git changelog api, see \<\<issue - fix path traversal vulnerability in git changelog api, see \<\<issue
319\>\> 319\>\>
@@ -423,15 +425,15 @@ SCM-Manager 1.28
SCM-Manager 1.27 SCM-Manager 1.27
---------------- ----------------
- - improvements\*\* **improvements**
- exclude commons-logging and use jcl-over-slf4j instead - exclude commons-logging and use jcl-over-slf4j instead
- icons of repository browser should be clickable - icons of repository browser should be clickable
- post authentication events to the new event system - post authentication events to the new event system
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- fix binding of extensions with eager singleton scope - fix binding of extensions with eager singleton scope
- fix bug with registration of multiple authentication listeners - fix bug with registration of multiple authentication listeners
@@ -441,7 +443,7 @@ SCM-Manager 1.27
SCM-Manager 1.26 SCM-Manager 1.26
---------------- ----------------
- - improvements\*\* **improvements**
- use localStorage to store state of the user interface - use localStorage to store state of the user interface
- improve logging of plugin installer - improve logging of plugin installer
@@ -450,9 +452,9 @@ SCM-Manager 1.26
- added recursive option to browse command - added recursive option to browse command
- added option to disable sub repository detection of browse command - added option to disable sub repository detection of browse command
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- normalize urls for BaseUrlFilter to prevent redirect loops, see - normalize urls for BaseUrlFilter to prevent redirect loops, see
\<\<issue 311\>\> \<\<issue 311\>\>
@@ -462,23 +464,23 @@ SCM-Manager 1.26
- synchronize getChangeset method of hook events and call registered - synchronize getChangeset method of hook events and call registered
pre processors before the changesets are returned to hook pre processors before the changesets are returned to hook
<!-- -->
- - library updates\*\*
**library updates**
- update jersey to version 1.17 - update jersey to version 1.17
SCM-Manager 1.25 SCM-Manager 1.25
---------------- ----------------
- - improvements\*\* **improvements**
- added feature api for specific repository types - added feature api for specific repository types
- improve logging of plugin installer - improve logging of plugin installer
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- fix svn make and put with Polish characters in path, see \<\<issue - fix svn make and put with Polish characters in path, see \<\<issue
298\>\> 298\>\>
@@ -489,9 +491,9 @@ SCM-Manager 1.25
- fix installing plugin package breaks classpath.xml, see \<\<issue - fix installing plugin package breaks classpath.xml, see \<\<issue
306\>\> 306\>\>
<!-- -->
- - library updates\*\*
**library updates**
- update svnkit to version 1.7.8-scm1 - update svnkit to version 1.7.8-scm1
- update ehcache to version 2.6.3 - update ehcache to version 2.6.3
@@ -502,14 +504,14 @@ SCM-Manager 1.25
SCM-Manager 1.24 SCM-Manager 1.24
---------------- ----------------
- - fixed bugs\*\* **fixed bugs**
- fix wrong default date format - fix wrong default date format
SCM-Manager 1.23 SCM-Manager 1.23
---------------- ----------------
- - improvements\*\* **improvements**
- new event api based on guavas EventBus - new event api based on guavas EventBus
- added option to exclude hosts from proxy, see \<\<issue 281\>\> - added option to exclude hosts from proxy, see \<\<issue 281\>\>
@@ -523,9 +525,9 @@ SCM-Manager 1.23
- prepare server-config.xml for request logging - prepare server-config.xml for request logging
- improve javadoc - improve javadoc
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- use system environment when executing \"hg create\" - use system environment when executing \"hg create\"
- fix build from source, see \<\<issue 289\>\> - fix build from source, see \<\<issue 289\>\>
@@ -538,9 +540,9 @@ SCM-Manager 1.23
- fix mercurial sub repository detection in source browser - fix mercurial sub repository detection in source browser
- fix non closing client response - fix non closing client response
<!-- -->
- - library updates\*\*
**library updates**
- update selenium to version 2.28.0 - update selenium to version 2.28.0
- update svnkit to version 1.7.6-scm3 - update svnkit to version 1.7.6-scm3
@@ -554,7 +556,7 @@ SCM-Manager 1.23
SCM-Manager 1.22 SCM-Manager 1.22
---------------- ----------------
- - improvements\*\* **improvements**
- store expanded/collapsed state of groupingviews across sessions, see - store expanded/collapsed state of groupingviews across sessions, see
\<\<issue 268\>\> \<\<issue 268\>\>
@@ -562,15 +564,15 @@ SCM-Manager 1.22
- added method to read templates from a reader - added method to read templates from a reader
- added repository type icons to grid - added repository type icons to grid
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- fix permission autocomplete, see \<\<issue 267\>\> - fix permission autocomplete, see \<\<issue 267\>\>
<!-- -->
- - library updates\*\*
**library updates**
- update mustache.java to version 0.8.8 - update mustache.java to version 0.8.8
- update mockito to version 1.9.5 - update mockito to version 1.9.5
@@ -578,7 +580,7 @@ SCM-Manager 1.22
SCM-Manager 1.21 SCM-Manager 1.21
---------------- ----------------
- - improvements\*\* **improvements**
- reimplment the complete security model on top of apache shiro - reimplment the complete security model on top of apache shiro
- allow execution of administration tasks without an active http - allow execution of administration tasks without an active http
@@ -590,9 +592,9 @@ SCM-Manager 1.21
- improve performance and memory consumption of svn log command - improve performance and memory consumption of svn log command
- do not log sensitive cgi env variables - do not log sensitive cgi env variables
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- fix freezing configuration form on ie, see \<\<issue 236\>\> - fix freezing configuration form on ie, see \<\<issue 236\>\>
- fix wrong branch informations of git repository hooks, \<\<issue - fix wrong branch informations of git repository hooks, \<\<issue
@@ -600,9 +602,9 @@ SCM-Manager 1.21
- fix bug in history of subversion repositories - fix bug in history of subversion repositories
- fix wrong mercurial changeset ids during hooks - fix wrong mercurial changeset ids during hooks
<!-- -->
- - library updates\*\*
**library updates**
- update google guava to version 13.0.1 - update google guava to version 13.0.1
- update jetty to version 7.6.7.v20120910 - update jetty to version 7.6.7.v20120910
@@ -616,26 +618,25 @@ SCM-Manager 1.21
SCM-Manager 1.20 SCM-Manager 1.20
---------------- ----------------
- - improvements\*\* **improvements**
- added java.awt.headless system property to server startup scripts - added java.awt.headless system property to server startup scripts
- strip changeset ids to 12 chars - strip changeset ids to 12 chars
- use eternal caches for new repository api - use eternal caches for new repository api
- added placeholder to commit view - added placeholder to commit view
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- fix non closing \"hg serve\" processes - fix non closing \"hg serve\" processes
- fix error on changing branches in commit viewer - fix error on changing branches in commit viewer
- fix wrong file modifications on git changeset overview - fix wrong file modifications on git changeset overview
<!-- -->
- - library updates\*\*
**library updates**
- update logback to version 1.0.7 - update logback to version 1.0.7
[Release 1.19 - [Release 1.19 - 1.0](release%20notes%201.19%20-%201.0.md)
1.0](https://bitbucket.org/sdorra/scm-manager/wiki/release%20notes%201.19%20-%201.0 "wikilink")

View File

@@ -1,9 +1,8 @@
- - note\*\* **note**
- Versions prior to 1.36 are creating incompatible subversion - Versions prior to 1.36 are creating incompatible subversion
repositories, if the subversion option \"with 1.7 Compatible\" is repositories, if the subversion option \"with 1.7 Compatible\" is
enabled. [read enabled. [read more](healthchecks/svn-incompatible-dbformat.md)
more](https://bitbucket.org/sdorra/scm-manager/wiki/healthchecks/svn-incompatible-dbformat "wikilink")
- since version 1.18 scm-manager requires mercurial 1.9 or newer - since version 1.18 scm-manager requires mercurial 1.9 or newer
- since version 1.49 Java 7 or newer is required - since version 1.49 Java 7 or newer is required
- version 1.58 and 1.59 are not working on java 7, but version 1.60 - version 1.58 and 1.59 are not working on java 7, but version 1.60
@@ -13,54 +12,54 @@
SCM-Manager 1.60 SCM-Manager 1.60
---------------- ----------------
- - fixed bugs\*\* **fixed bugs**
- restored java 7 compatibility (broken since 1.58), see \<\<issue - restored java 7 compatibility (broken since 1.58), see \<\<issue
972\>\> and \<\<issue 982\>\> 972\>\> and \<\<issue 982\>\>
- fixed build on java 9 - fixed build on java 9
- fixed execution on java 9 and 10 - fixed execution on java 9 and 10
<!-- -->
- - improvements\*\*
**improvements**
- encrypt cli configuration with aes instead of pbe, see \<\<issue - encrypt cli configuration with aes instead of pbe, see \<\<issue
979\>\> and \<\<issue 978\>\> 979\>\> and \<\<issue 978\>\>
<!-- -->
- - library updates\*\*
**library updates**
- update commons-daemon to version 1.1.0 - update commons-daemon to version 1.1.0
SCM-Manager 1.59 SCM-Manager 1.59
---------------- ----------------
- - fixed bugs\*\* **fixed bugs**
- mercurial: fix hgweb execution for mercurial versions prior 4.1, see - mercurial: fix hgweb execution for mercurial versions prior 4.1, see
[\#976](https://bitbucket.org/sdorra/scm-manager/issues/976/issue-with-158-and-mercurial "wikilink") [\#976](https://bitbucket.org/sdorra/scm-manager/issues/976/issue-with-158-and-mercurial)
- mercurial: make {extras} work on old versions of Hg, see [PR - mercurial: make {extras} work on old versions of Hg, see [PR
\#41](https://bitbucket.org/sdorra/scm-manager/pull-requests/41/make-extras-work-on-old-versions-of-hg/diff "wikilink") \#41](https://bitbucket.org/sdorra/scm-manager/pull-requests/41/make-extras-work-on-old-versions-of-hg/diff)
and and
[\#971](https://bitbucket.org/sdorra/scm-manager/issues/971/commit-listening-requires-at-least "wikilink") [\#971](https://bitbucket.org/sdorra/scm-manager/issues/971/commit-listening-requires-at-least)
SCM-Manager 1.58 SCM-Manager 1.58
---------------- ----------------
- - improvements\*\* **improvements**
- mercurial: support for httppostargs protocol, see \<\<issue 970\>\> - mercurial: support for httppostargs protocol, see \<\<issue 970\>\>
- mercurial: prevent - mercurial: prevent
[CVE-2018-1000132](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2018-1000132 "wikilink"), [CVE-2018-1000132](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2018-1000132),
see \<\<issue 970\>\> see \<\<issue 970\>\>
- mercurial: dded option to disable ssl validation for scm hooks, see - mercurial: dded option to disable ssl validation for scm hooks, see
\<\<issue 959\>\> \<\<issue 959\>\>
- removed never released scm-dao-orientdb module - removed never released scm-dao-orientdb module
<!-- -->
- - library updates\*\*
**library updates**
- update javahg to 0.13 - update javahg to 0.13
- update commons-beanutils to 1.9.3 - update commons-beanutils to 1.9.3
@@ -75,27 +74,27 @@ SCM-Manager 1.58
SCM-Manager 1.57 SCM-Manager 1.57
---------------- ----------------
- - improvements\*\* **improvements**
- treat update of a git tag as delete and create for hooks - treat update of a git tag as delete and create for hooks
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- fixed handling of resources with spaces in its id, see \<\<issue - fixed handling of resources with spaces in its id, see \<\<issue
965\>\> 965\>\>
<!-- -->
- - library updates\*\*
**library updates**
- update svnkit to version 1.9.0-scm3 - update svnkit to version 1.9.0-scm3
SCM-Manager 1.56 SCM-Manager 1.56
---------------- ----------------
- - fixed bugs\*\* **fixed bugs**
- fixed high cpu load after subversion client connection abort, see - fixed high cpu load after subversion client connection abort, see
\<\<issue 939\>\> \<\<issue 939\>\>
@@ -105,13 +104,13 @@ SCM-Manager 1.56
SCM-Manager 1.55 SCM-Manager 1.55
---------------- ----------------
- - improvements\*\* **improvements**
- added option to disallow non fast-forward git pushes - added option to disallow non fast-forward git pushes
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- fixes usage of named cache configurations, see \<\<issue 943\>\> - fixes usage of named cache configurations, see \<\<issue 943\>\>
- fixed update of git repositories with empty git default branch, see - fixed update of git repositories with empty git default branch, see
@@ -119,11 +118,11 @@ SCM-Manager 1.55
- remove work directory after package upgrade, see \<\<issue 923\>\> - remove work directory after package upgrade, see \<\<issue 923\>\>
- prevent binary data in mercurial {extras} from interfering with - prevent binary data in mercurial {extras} from interfering with
UTF-8 decoding, see UTF-8 decoding, see
[\#PR-39](https://bitbucket.org/sdorra/scm-manager/pull-requests/39 "wikilink") [\#PR-39](https://bitbucket.org/sdorra/scm-manager/pull-requests/39)
<!-- -->
- - library updates\*\*
**library updates**
- update jgit to version v4.5.3.201708160445-r-scm1 - update jgit to version v4.5.3.201708160445-r-scm1
- update svnkit to version 1.9.0-scm1 - update svnkit to version 1.9.0-scm1
@@ -131,23 +130,23 @@ SCM-Manager 1.55
SCM-Manager 1.54 SCM-Manager 1.54
---------------- ----------------
- - improvements\*\* **improvements**
- added experimetal support for git-lfs, - added experimetal support for git-lfs,
[\#PR-27](https://bitbucket.org/sdorra/scm-manager/pull-requests/27 "wikilink") [\#PR-27](https://bitbucket.org/sdorra/scm-manager/pull-requests/27)
- improve git client detection to include jgit - improve git client detection to include jgit
- git repositories are now accessible with the \".git\" suffix - git repositories are now accessible with the \".git\" suffix
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- fix repository browsing with mercurial 4.x - fix repository browsing with mercurial 4.x
- fixing test execution on german / windows machines - fixing test execution on german / windows machines
<!-- -->
- - library updates\*\*
**library updates**
- update jgit to v4.5.2.201704071617-r-scm1 - update jgit to v4.5.2.201704071617-r-scm1
- update javahg to 0.8-scm1 - update javahg to 0.8-scm1
@@ -157,20 +156,20 @@ SCM-Manager 1.54
SCM-Manager 1.53 SCM-Manager 1.53
---------------- ----------------
- - fixed bugs\*\* **fixed bugs**
- fix jax-rs classpath conflict, see \<\<issue 916\>\> - fix jax-rs classpath conflict, see \<\<issue 916\>\>
<!-- -->
- - library updates\*\*
**library updates**
- update nativepkg-maven-plugin to version 1.1.4 - update nativepkg-maven-plugin to version 1.1.4
SCM-Manager 1.52 SCM-Manager 1.52
---------------- ----------------
- - improvements\*\* **improvements**
- added support for gtld email domains, see \<\<issue 909\>\> - added support for gtld email domains, see \<\<issue 909\>\>
- improved performance by creating an adapter between scm and shiro - improved performance by creating an adapter between scm and shiro
@@ -178,9 +177,9 @@ SCM-Manager 1.52
- improved rest api documentation, see - improved rest api documentation, see
<https://docs.scm-manager.org/restdocs/1.52/> <https://docs.scm-manager.org/restdocs/1.52/>
<!-- -->
- - library updates\*\*
**library updates**
- update svnkit to version 1.8.15-scm1 - update svnkit to version 1.8.15-scm1
- update enunciate to version 2.9.1 - update enunciate to version 2.9.1
@@ -188,14 +187,14 @@ SCM-Manager 1.52
SCM-Manager 1.51 SCM-Manager 1.51
---------------- ----------------
- - improvements\*\* **improvements**
- update svnkit to version 1.8.14-scm1 in order to support subversion - update svnkit to version 1.8.14-scm1 in order to support subversion
1.9 new fsfs repository format, see \<\<issue 858\>\> 1.9 new fsfs repository format, see \<\<issue 858\>\>
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- fix wrong subversion urls behind a reverse proxy, see \<\<issue - fix wrong subversion urls behind a reverse proxy, see \<\<issue
889\>\> 889\>\>
@@ -204,9 +203,9 @@ SCM-Manager 1.51
- fix wrong key usage during encoding in DefaultCipherHandler, see - fix wrong key usage during encoding in DefaultCipherHandler, see
\<\<issue 887\>\> \<\<issue 887\>\>
<!-- -->
- - library updates\*\*
**library updates**
- update jersey to version 1.19.3 - update jersey to version 1.19.3
- update slf4j to version 1.7.22 - update slf4j to version 1.7.22
@@ -218,7 +217,7 @@ SCM-Manager 1.51
SCM-Manager 1.50 SCM-Manager 1.50
---------------- ----------------
- - improvements\*\* **improvements**
- added reusable components for branch and tag combo boxes - added reusable components for branch and tag combo boxes
- option to define default branch for git repositories \<\<issue - option to define default branch for git repositories \<\<issue
@@ -229,9 +228,9 @@ SCM-Manager 1.50
GET, see issue \<\<issue 859\>\> GET, see issue \<\<issue 859\>\>
- added new hook context api for tags - added new hook context api for tags
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- send http status code 401 unauthorized on failed git authentication, - send http status code 401 unauthorized on failed git authentication,
see issue \<\<issue 870\>\> see issue \<\<issue 870\>\>
@@ -241,14 +240,14 @@ SCM-Manager 1.50
SCM-Manager 1.49 SCM-Manager 1.49
---------------- ----------------
- - improvements\*\* **improvements**
- reduce event bus logging - reduce event bus logging
- added RepositoryHookITCase to test repository post receive hooks - added RepositoryHookITCase to test repository post receive hooks
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- escape url parameters ub UrlBuilder in order to fix \<\<issue - escape url parameters ub UrlBuilder in order to fix \<\<issue
847\>\> 847\>\>
@@ -258,23 +257,23 @@ SCM-Manager 1.49
\<\<issue 844\>\> \<\<issue 844\>\>
- fix guice javadoc link - fix guice javadoc link
<!-- -->
- - library updates\*\*
**library updates**
- update apache shiro to version 1.3.0 - update apache shiro to version 1.3.0
- updated jgit 4.4.0.201606070830-r-scm1, see \<\<issue 848\>\> - updated jgit 4.4.0.201606070830-r-scm1, see \<\<issue 848\>\>
<!-- -->
- - breaking changes\*\*
**breaking changes**
- SCM-Manager 1.49 requires at least Java 7 - SCM-Manager 1.49 requires at least Java 7
SCM-Manager 1.48 SCM-Manager 1.48
---------------- ----------------
- - improvements\*\* **improvements**
- added request uri to mdc logging context - added request uri to mdc logging context
- added request method to mdc filter - added request method to mdc filter
@@ -284,24 +283,24 @@ SCM-Manager 1.48
- improve modification events to pass the item before it was modified - improve modification events to pass the item before it was modified
to the subscriber to the subscriber
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- fixed bug in equals method of Permission object - fixed bug in equals method of Permission object
- fixed syntax highlight for bash/sh, see issue \<\<issue 843\>\> - fixed syntax highlight for bash/sh, see issue \<\<issue 843\>\>
- added missing name of repository to access denied exceptions - added missing name of repository to access denied exceptions
<!-- -->
- - library updates\*\*
**library updates**
- update apache shiro to version 1.2.5 - update apache shiro to version 1.2.5
SCM-Manager 1.47 SCM-Manager 1.47
---------------- ----------------
- - improvements\*\* **improvements**
- added implmentation for running git gc in an configurable interval, - added implmentation for running git gc in an configurable interval,
see \<\<issue 801\>\> see \<\<issue 801\>\>
@@ -313,11 +312,11 @@ SCM-Manager 1.47
interface or locahost instead of just all interfaces. interface or locahost instead of just all interfaces.
- added option for plugins to change ssl context - added option for plugins to change ssl context
- case insensitive sorting the of name column, see - case insensitive sorting the of name column, see
[\#PR-25](https://bitbucket.org/sdorra/scm-manager/pull-requests/25/case-insensitive-sorting-of-the-name "wikilink") [\#PR-25](https://bitbucket.org/sdorra/scm-manager/pull-requests/25/case-insensitive-sorting-of-the-name)
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- removed broken maven repositories - removed broken maven repositories
- do not swallow the ScmSecurityException in PermissionFilter - do not swallow the ScmSecurityException in PermissionFilter
@@ -330,9 +329,9 @@ SCM-Manager 1.47
- update commons-daemon-native to version 1.0.15.1 to fix scm-server - update commons-daemon-native to version 1.0.15.1 to fix scm-server
start on macos start on macos
<!-- -->
- - library updates\*\*
**library updates**
- update enunciate to version 1.31 - update enunciate to version 1.31
- update jetty to version 7.6.19.v20160209 - update jetty to version 7.6.19.v20160209
@@ -344,7 +343,7 @@ SCM-Manager 1.47
SCM-Manager 1.46 SCM-Manager 1.46
---------------- ----------------
- - improvements\*\* **improvements**
- link modification to files on commit panel, see \<\<issue 356\>\> - link modification to files on commit panel, see \<\<issue 356\>\>
- added to branch switcher to repository browser, see \<\<issue - added to branch switcher to repository browser, see \<\<issue
@@ -353,9 +352,9 @@ SCM-Manager 1.46
- use cached thread pool to process mercurial process error streams - use cached thread pool to process mercurial process error streams
- new advanced http client, see \<\<issue 709\>\> - new advanced http client, see \<\<issue 709\>\>
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- fix rendering of bottom toolbar in repository browser, if path is - fix rendering of bottom toolbar in repository browser, if path is
null null
@@ -367,9 +366,9 @@ SCM-Manager 1.46
client api client api
- set content-length header on post requests, see \<\<issue 701\>\> - set content-length header on post requests, see \<\<issue 701\>\>
<!-- -->
- - library updates\*\*
**library updates**
- update enunciate to version 1.30.1 - update enunciate to version 1.30.1
- update jgit to version 3.7.1.201504261725-r-scm1 - update jgit to version 3.7.1.201504261725-r-scm1
@@ -379,7 +378,7 @@ SCM-Manager 1.46
SCM-Manager 1.45 SCM-Manager 1.45
---------------- ----------------
- - improvements\*\* **improvements**
- improve remove repository confirmation dialog - improve remove repository confirmation dialog
- introducing HookBranchProvider to get informations about changed - introducing HookBranchProvider to get informations about changed
@@ -391,9 +390,9 @@ SCM-Manager 1.45
branches, see \<\<issue \#663\>\> branches, see \<\<issue \#663\>\>
- usability of init script improved. - usability of init script improved.
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- added missing shebang statement in create user script, see \<\<issue - added missing shebang statement in create user script, see \<\<issue
665\>\> 665\>\>
@@ -402,9 +401,9 @@ SCM-Manager 1.45
- fixed basic authentication with non ascii passwords, see \<\<issue - fixed basic authentication with non ascii passwords, see \<\<issue
627\>\> 627\>\>
<!-- -->
- - library updates\*\*
**library updates**
- update jersey to version 1.19 - update jersey to version 1.19
- update slf4j to version 1.7.10 - update slf4j to version 1.7.10
@@ -412,17 +411,17 @@ SCM-Manager 1.45
SCM-Manager 1.44 SCM-Manager 1.44
---------------- ----------------
- - library updates\*\* **library updates**
- update jgit to version 3.5.3.201412180710-r in order to fix - update jgit to version 3.5.3.201412180710-r in order to fix
[CVE-2014-9390](http://article.gmane.org/gmane.linux.kernel/1853266 "wikilink") [CVE-2014-9390](http://article.gmane.org/gmane.linux.kernel/1853266)
- update jersey to version 1.18.3 - update jersey to version 1.18.3
- update slf4j to version 1.7.9 - update slf4j to version 1.7.9
SCM-Manager 1.43 SCM-Manager 1.43
---------------- ----------------
- - improvements\*\* **improvements**
- new repository import wizard - new repository import wizard
- added support for remote urls to push and pull apis (implemented by - added support for remote urls to push and pull apis (implemented by
@@ -432,45 +431,45 @@ SCM-Manager 1.43
- implemented AdvancedImportHandler which gives more control over the - implemented AdvancedImportHandler which gives more control over the
import result than ImportHandler import result than ImportHandler
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- create default accounts only, if no other user exists in the dao - create default accounts only, if no other user exists in the dao
- do not try to convert git changesets from a receive command of type - do not try to convert git changesets from a receive command of type
delete, see \<\<issue 634\>\> delete, see \<\<issue 634\>\>
- added utf-8 response encoding for git quick commit view, - added utf-8 response encoding for git quick commit view,
[\#PR-17](https://bitbucket.org/sdorra/scm-manager/pull-request/17/utf-8-response-encoding-for-git-quick "wikilink") [\#PR-17](https://bitbucket.org/sdorra/scm-manager/pull-request/17/utf-8-response-encoding-for-git-quick)
- load advanced plugin configuration from plugin directory and from - load advanced plugin configuration from plugin directory and from
root of scm home root of scm home
- fix wrong changeset count for git push and pull commands - fix wrong changeset count for git push and pull commands
<!-- -->
- - library updates\*\*
**library updates**
- update jersey to version 1.18.2 - update jersey to version 1.18.2
SCM-Manager 1.42 SCM-Manager 1.42
---------------- ----------------
- - improvements\*\* **improvements**
- added comment about POODLE vulnerability to https configuration - added comment about POODLE vulnerability to https configuration
- added extension point for HttpSessionListener - added extension point for HttpSessionListener
- implement util class for AutoLoginModules to mark request as - implement util class for AutoLoginModules to mark request as
completed or send redirects from an AutoLoginModule completed or send redirects from an AutoLoginModule
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- use base uri from request for git quick repository view, see - use base uri from request for git quick repository view, see
\<\<issue 631\>\> \<\<issue 631\>\>
<!-- -->
- - library updates\*\*
**library updates**
- update mustache to version 0.8.17 - update mustache to version 0.8.17
- update mockito to version 1.10.8 - update mockito to version 1.10.8
@@ -478,7 +477,7 @@ SCM-Manager 1.42
SCM-Manager 1.41 SCM-Manager 1.41
---------------- ----------------
- - improvements\*\* **improvements**
- improve performance for simple subversion changeset paging, see - improve performance for simple subversion changeset paging, see
\<\<issue 610\>\> \<\<issue 610\>\>
@@ -487,18 +486,18 @@ SCM-Manager 1.41
- added mdc logging variables username, client\_ip and client\_host - added mdc logging variables username, client\_ip and client\_host
- use default jersey client implementation instead of ahc - use default jersey client implementation instead of ahc
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- subversion fails to commit filenames containing url-encoded - subversion fails to commit filenames containing url-encoded
character \"/\", see \<\<issue 606\>\> character \"/\", see \<\<issue 606\>\>
- fix some missing file extensions for syntax highlighter - fix some missing file extensions for syntax highlighter
- fix scm-server stop method on windows, see \<\<issue 623\>\> - fix scm-server stop method on windows, see \<\<issue 623\>\>
<!-- -->
- - library updates\*\*
**library updates**
- update jetty to version 7.6.16.v20140903 - update jetty to version 7.6.16.v20140903
- update jgit to version 3.4.1.201406201815-r - update jgit to version 3.4.1.201406201815-r
@@ -508,23 +507,22 @@ SCM-Manager 1.41
SCM-Manager 1.40 SCM-Manager 1.40
---------------- ----------------
- - improvements\*\* **improvements**
- added display name to web.xml - added display name to web.xml
<!-- -->
- - fixed bugs\*\*
**fixed bugs**
- remove url parameters before building base url - remove url parameters before building base url
- fixed wrong directory permissions on rpm installations - fixed wrong directory permissions on rpm installations
- fixed missing preinstall scripts in rpm and deb packages - fixed missing preinstall scripts in rpm and deb packages
<!-- -->
- - library updates\*\*
**library updates**
- update args4j to version 2.0.28 - update args4j to version 2.0.28
[Release 1.39 - [Release 1.39 - 1.20](release%20notes%201.39%20-%201.20.md)
1.20](https://bitbucket.org/sdorra/scm-manager/wiki/release%20notes%201.39%20-%201.20 "wikilink")

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

@@ -1,10 +1,8 @@
Revision Control Plugin Comparison # Revision Control Plugin Comparison
----------------------------------
\|=Plugin Name \|=Name \|=Core-Plugin \|=Requirements \|=Url \| \| | Plugin Name | Name | Core-Plugin | Requirements | Url |
scm-svn-plugin \| Subversion \| X \| \| <http://subversion.apache.org> | --- | --- | --- | --- | --- |
\| \| scm-git-plugin \| Git \| X \| \| <http://git-scm.com> \| \| | scm-svn-plugin | Subversion | X | | <http://subversion.apache.org> |
scm-hg-plugin \| Mercurial \| X \| [Python (v. | scm-git-plugin | Git | X | | <http://git-scm.com> |
2.6)](http://www.python.org/getit/releases/2.6 "wikilink"), Mercurial \| | scm-hg-plugin | Mercurial | X | [Python (v.2.6)](http://www.python.org/getit/releases/2.6), Mercurial | <https://www.mercurial-scm.org/> |
<https://www.mercurial-scm.org/> \| \| scm-bzr-plugin \| Bazaar \| \| | scm-bzr-plugin | Bazaar | | Python, Bazaar | <http://bazaar.canonical.com> |
Python, Bazaar \| <http://bazaar.canonical.com> \|

View File

@@ -1,17 +1,16 @@
# scm-scheduler-plugin # # scm-scheduler-plugin
The scheduler plugin provides an api for other plugins to execute scheduled jobs. The plugin is based on the [quartz project](http://quartz-scheduler.org/). The scheduler plugin provides an api for other plugins to execute scheduled jobs. The plugin is based on the [quartz project](http://quartz-scheduler.org/).
## Configuration ## ## Configuration
The plugin needs no further configuration. The plugin needs no further configuration.
## API Usage ## ## API Usage
First you have to add the dependency to your pom.xml e.g.: First you have to add the dependency to your pom.xml e.g.:
``` ```xml
#!xml
<dependency> <dependency>
<groupId>sonia.scm.plugins</groupId> <groupId>sonia.scm.plugins</groupId>
<artifactId>scm-scheduler-plugin</artifactId> <artifactId>scm-scheduler-plugin</artifactId>
@@ -25,10 +24,7 @@ Now you can get a [SchedulerFactory](http://www.quartz-scheduler.org/api/2.0.0/o
For Example: For Example:
```java
```
#!java
public class ReportHandler { public class ReportHandler {
private final SchedulerFactory schedulerFactory; private final SchedulerFactory schedulerFactory;
@@ -43,25 +39,22 @@ public class ReportHandler {
With the SchedulerFactory [SchedulerFactory](http://www.quartz-scheduler.org/api/2.0.0/org/quartz/SchedulerFactory.html) you can schedule [Jobs](http://www.quartz-scheduler.org/api/2.0.0/org/quartz/Job.html). To simplify the steps to schedule a job, the scm-scheduler-plugin comes with a helper class called Schedulers. With the SchedulerFactory [SchedulerFactory](http://www.quartz-scheduler.org/api/2.0.0/org/quartz/SchedulerFactory.html) you can schedule [Jobs](http://www.quartz-scheduler.org/api/2.0.0/org/quartz/Job.html). To simplify the steps to schedule a job, the scm-scheduler-plugin comes with a helper class called Schedulers.
### Notes ### ### Notes
* Schedulers must always be executed by an administrator or in an administrative context. Jobs which are executed by a scheduler are executed with administrator privileges. * Schedulers must always be executed by an administrator or in an administrative context. Jobs which are executed by a scheduler are executed with administrator privileges.
* Each job is able to get dependencies via injection. * Each job is able to get dependencies via injection.
### Further reading ### ### Further reading
* [Quartz Overview](http://www.quartz-scheduler.org/overview) * [Quartz Overview](http://www.quartz-scheduler.org/overview)
* [Quartz Cron Trigger](http://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/crontrigger) * [Quartz Cron Trigger](http://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/crontrigger)
* [Quartz Examples](http://www.quartz-scheduler.org/documentation/quartz-2.1.x/examples) * [Quartz Examples](http://www.quartz-scheduler.org/documentation/quartz-2.1.x/examples)
### Complete Example ### ### Complete Example
In the following example a ReportJob is executed every minute since the start of scm-manager. In the following example a ReportJob is executed every minute since the start of scm-manager.
```java
```
#!java
@Extension @Extension
public class ReportContextListener implements ServletContextListener { public class ReportContextListener implements ServletContextListener {

View File

@@ -1,62 +1,47 @@
Plugins # Plugins
-------
### Authentication ### Authentication
\|=Plugin Name \|=Description \|=Core-Plugin \|=Repository \| \| | Plugin Name | Description | Core-Plugin | Repository |
scm-activedirectory-auth-plugin \| Plugin for using Active Directory as | --- | --- | --- | --- |
an authentication handler. Currently only supports running on Windows in | scm-activedirectory-auth-plugin | Plugin for using Active Directory as an authentication handler. Currently only supports running on Windows in a 32-bit JVM. | | <https://bitbucket.org/davidmc24/scm-activedirectory-auth-plugin> |
a 32-bit JVM. \| \| | scm-auth-ldap-plugin | Plugin for using LDAP as an authentication handler. | | <https://bitbucket.org/tludewig/scm-auth-ldap-plugin> |
<https://bitbucket.org/davidmc24/scm-activedirectory-auth-plugin> \| \| | scm-pam-plugin | This plugin enables PAM-Authentication for SCM-Manager. | | <https://bitbucket.org/sdorra/scm-pam-plugin> |
scm-auth-ldap-plugin \| Plugin for using LDAP as an authentication | scm-crowd-plugin | Plugin for using Atlassian Crowd as an authentication handler. | | <https://github.com/soudmaijer/scm-crowd-plugin> |
handler. \| \| <https://bitbucket.org/tludewig/scm-auth-ldap-plugin> \|
\| scm-pam-plugin \| This plugin enables PAM-Authentication for
SCM-Manager. \| \| <https://bitbucket.org/sdorra/scm-pam-plugin> \| \|
scm-crowd-plugin \| Plugin for using Atlassian Crowd as an
authentication handler. \| \|
<https://github.com/soudmaijer/scm-crowd-plugin> \|
### Continuous Integration ### Continuous Integration
\|=Plugin Name \|=Description \|=Core-Plugin \|=Repository \| \| | Plugin Name | Description | Core-Plugin | Repository |
scm-bamboo-plugin \| Post receive hook for Atlassian Bamboo. \| \| | --- | --- | --- | --- |
<https://github.com/soudmaijer/scm-bamboo-plugin> \| \| | scm-bamboo-plugin | Post receive hook for Atlassian Bamboo. | | <https://github.com/soudmaijer/scm-bamboo-plugin> |
scm-jenkins-plugin \| This plugin will ping your Jenkins CI server when | scm-jenkins-plugin | This plugin will ping your Jenkins CI server when a new commit is pushed to SCM-Manager. | | <https://bitbucket.org/sdorra/scm-jenkins-plugin> |
a new commit is pushed to SCM-Manager. \| \|
<https://bitbucket.org/sdorra/scm-jenkins-plugin> \|
### Development ### Development
\|=Plugin Name \|=Description \|=Core-Plugin \|=Repository \| \| | Plugin Name | Description | Core-Plugin | Repository |
scm-graph-plugin \| Creates a Google Guice injection graph. \| \| | --- | --- | --- | --- |
<https://bitbucket.org/sdorra/scm-graph-plugin> \| | scm-graph-plugin | Creates a Google Guice injection graph. | | <https://bitbucket.org/sdorra/scm-graph-plugin> |
### Issue-Tracking ### Issue-Tracking
\|=Plugin Name \|=Description \|=Core-Plugin \|=Repository \| \| | Plugin Name | Description | Core-Plugin | Repository |
scm-jira-plugin \| This plugin integrates Atlassian JIRA to SCM-Manager. | --- | --- | --- | --- |
\| \| <https://bitbucket.org/sdorra/scm-jira-plugin> \| | scm-jira-plugin | This plugin integrates Atlassian JIRA to SCM-Manager. | | <https://bitbucket.org/sdorra/scm-jira-plugin> |
### Miscellaneous ### Miscellaneous
\|=Plugin Name \|=Description \|=Core-Plugin \|=Repository \| \| | Plugin Name | Description | Core-Plugin | Repository |
scm-activity-plugin \| Shows the latest activity from your repositories. | --- | --- | --- | --- |
\|\| <https://bitbucket.org/sdorra/scm-activity-plugin> \| \| | scm-activity-plugin | Shows the latest activity from your repositories. || <https://bitbucket.org/sdorra/scm-activity-plugin> |
scm-gravatar-plugin \| Gravatar icons for the changesetviewer. \| \| | scm-gravatar-plugin | Gravatar icons for the changesetviewer. | | <https://bitbucket.org/sdorra/scm-gravatar-plugin> |
<https://bitbucket.org/sdorra/scm-gravatar-plugin> \| \| | scm-pathwp-plugin | This plugin adds path write protection for repositories. || <https://bitbucket.org/sdorra/scm-pathwp-plugin> |
scm-pathwp-plugin \| This plugin adds path write protection for | scm-userrepo-plugin | This plugin allows regular users to create repositories. || <https://bitbucket.org/sdorra/scm-userrepo-plugin> |
repositories. \|\| <https://bitbucket.org/sdorra/scm-pathwp-plugin> \|
\| scm-userrepo-plugin \| This plugin allows regular users to create
repositories. \|\| <https://bitbucket.org/sdorra/scm-userrepo-plugin> \|
### Version Control Systems ### Version Control Systems
\|=Plugin Name \|=Description \|=Core-Plugin \|=Repository \| \| | Plugin Name | Description | Core-Plugin | Repository |
scm-hg-plugin \| Support for the version control system Mercurial. \| X | --- | --- | --- | --- |
\| <https://bitbucket.org/sdorra/scm-manager> \| \| scm-git-plugin \| | scm-hg-plugin | Support for the version control system Mercurial. | X | <https://bitbucket.org/sdorra/scm-manager> |
Support for the version control system Git. \| X \| | scm-git-plugin | Support for the version control system Git. | X | <https://bitbucket.org/sdorra/scm-manager> |
<https://bitbucket.org/sdorra/scm-manager> \| \| scm-svn-plugin \| | scm-svn-plugin | Support for the version control system Subversion. | X | <https://bitbucket.org/sdorra/scm-manager> |
Support for the version control system Subversion. \| X \| | scm-bzr-plugin | Support for the version control system Bazaar. | | <https://bitbucket.org/sdorra/scm-bzr-plugin> |
<https://bitbucket.org/sdorra/scm-manager> \| \| scm-bzr-plugin \|
Support for the version control system Bazaar. \| \|
<https://bitbucket.org/sdorra/scm-bzr-plugin> \|

View File

@@ -1,22 +1,76 @@
SCM-Server SSL # 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
1\. Open a shell and go to the conf directory of the scm-server 1\. Open a shell and go to the conf directory of the scm-server
2\. Create a certificate request. Replace all variables (\*varname\*) 2\. Create a certificate request. Replace all variables (\*varname\*)
- - Note:\*\* You have to enter the full qualified hostname of your ```bash
$ keytool -genkey -alias scm -keyalg RSA -keystore keystore.jks
Enter keystore password: your password
Re-enter new password: your password
What is your first and last name?
[Unknown]: *your servername*
What is the name of your organizational unit?
[Unknown]: *organisation unit*
What is the name of your organization?
[Unknown]: *organisation*
What is the name of your City or Locality?
[Unknown]: *city*
What is the name of your State or Province?
[Unknown]: *state*
What is the two-letter country code for this unit?
[Unknown]: *country code*
Is CN=your servername, OU=your organisation unit, O=your organisation, L=your city, ST=your state, C=cc correct?
[no]: yes
Enter key password for <scm>
(RETURN if same as keystore password): *password*
Re-enter new password: *password*
```
**Note**: You have to enter the full qualified hostname of your
server for the cn (cn = What is your first and last name?) server for the cn (cn = What is your first and last name?)
3\. Edit the server-config.xml, uncomment the SSL-Connector and set your 3\. Edit the server-config.xml, uncomment the SSL-Connector and set your
password. For example: password. For example:
```xml
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
<Arg>
<!--
Exclude SSLv3 to avoid POODLE vulnerability.
See https://groups.google.com/d/msg/scmmanager/sX_Ydy-wAPA/-Dvs5i7RHtQJ
-->
<New class="org.eclipse.jetty.http.ssl.SslContextFactory">
<Set name="excludeProtocols">
<Array type="java.lang.String">
<Item>SSLv2Hello</Item>
<Item>SSLv3</Item>
</Array>
</Set>
</New>
</Arg>
<Set name="Port">8181</Set>
<Set name="maxIdleTime">30000</Set>
<Set name="keystore"><SystemProperty name="basedir" default="." />/conf/keystore.jks</Set>
<Set name="password">*password*</Set>
<Set name="keyPassword">*password*</Set>
<Set name="truststore"><SystemProperty name="basedir" default="." />/conf/keystore.jks</Set>
<Set name="trustPassword">*password*</Set>
</New>
</Arg>
</Call>
```
4\. Start or restart the scm-server 4\. Start or restart the scm-server
- - Note\*\*: It looks like there is a error in some version of **Note**: It looks like there is a error in some version of
OpenJDK (issues \#84 and \#151). If you have such a problem, OpenJDK (issues \#84 and \#151). If you have such a problem,
please try to use the Oracle JDK. please try to use the Oracle JDK.
@@ -24,17 +78,33 @@ password. For example:
1\. Export the certificate from keystore: 1\. Export the certificate from keystore:
```bash
$ keytool -exportcert -keystore keystore.jks -alias scm -rfc -file cert.pem
```
2\. Copy the certificate to your client and add it to your git config: 2\. Copy the certificate to your client and add it to your git config:
```bash
$ git config http.sslCAInfo /complete/path/to/cert.pem
```
### Configure Mercurial ### Configure Mercurial
1\. Export the certificate from keystore: 1\. Export the certificate from keystore:
```bash
$ keytool -exportcert -keystore keystore.jks -alias scm -rfc -file cert.pem
```
2\. Copy the certificate to your client and add it to your .hgrc config 2\. Copy the certificate to your client and add it to your .hgrc config
file: file:
```bash
[web]
cacerts = /complete/path/to/cert.pem
```
### Sources ### Sources
- [Keytool](http://download.oracle.com/javase/1.4.2/docs/tooldocs/windows/keytool.html "wikilink") - [Keytool](http://download.oracle.com/javase/1.4.2/docs/tooldocs/windows/keytool.html)
- [Jetty - [Jetty SSL-Connectors](http://wiki.eclipse.org/Jetty/Reference/SSL_Connectors)
SSL-Connectors](http://wiki.eclipse.org/Jetty/Reference/SSL_Connectors "wikilink")

View File

@@ -1,43 +1,32 @@
Screenshots # Screenshots
-----------
<http://www.scm-manager.org/screenshots/> <http://www.scm-manager.org/screenshots/>
Screenshots pre 1.12 ## Screenshots pre 1.12
--------------------
\|{{/sdorra/scm-manager/wiki/screenshots/login.thumb.png\|Login}}\| [![Login](screenshots/login.thumb.png)\
{{/sdorra/scm-manager/wiki/screenshots/change-password.thumb.png\|Change *Login*](screenshots/login.png "Login")
Password}} \|
{{/sdorra/scm-manager/wiki/screenshots/repository-config.thumb.png\|Repository [![Change Password](screenshots/change-password.thumb.png)\
Config}} \| *Change Password*](screenshots/change-password.png "Change Password")
\|[Login](/sdorra/scm-manager/wiki/screenshots/login.png "wikilink") \|
[Change [![Repository Configuration](screenshots/repository-config.thumb.png)\
Password](/sdorra/scm-manager/wiki/screenshots/change-password.png "wikilink") *Repository Configuration*](screenshots/repository-config.png "Repository Configuration")
\| [Repository
Configuration](/sdorra/scm-manager/wiki/screenshots/repository-config.png "wikilink") [![Repository Details](screenshots/repository-details.thumb.png)\
\| *Repository Details*](screenshots/repository-details.png "Repository Details")
\|{{/sdorra/scm-manager/wiki/screenshots/repository-details.thumb.png\|Repository
details}}\| [![Repository Overview](screenshots/repository-overview.thumb.png)\
{{/sdorra/scm-manager/wiki/screenshots/repository-overview.thumb.png\|Repository *Repository Overview*](screenshots/repository-overview.png "Repository Overview")
Overview}} \|
{{/sdorra/scm-manager/wiki/screenshots/user-overview.thumb.png\|User [![User Overview](screenshots/user-overview.thumb.png)\
Overview}} \| \|[Repository *User Overview*](screenshots/user-overview.png "User Overview")
details](/sdorra/scm-manager/wiki/screenshots/repository-details.png "wikilink")
\| [Repository [![Plugin Overview](screenshots/plugin-overview.thumb.png)\
Overview](/sdorra/scm-manager/wiki/screenshots/repository-overview.png "wikilink") *Plugin Overview*](screenshots/plugin-overview.png "Plugin Overview")
\| [User
Overview](/sdorra/scm-manager/wiki/screenshots/user-overview.png "wikilink") [![Mercurial Configuration Wizard](screenshots/mercurial-wizard.thumb.png)\
\| *Mercurial Configuration Wizard*](screenshots/mercurial-wizard.thumb.png "Mercurial Configuration Wizard")
\|{{/sdorra/scm-manager/wiki/screenshots/plugin-overview.thumb.png\|Plugin
Overview}}\| [![Changesetviewer (with Gravatar Plugin)](screenshots/changesetviewer-gravatar-plugin.thumb.png)\
{{/sdorra/scm-manager/wiki/screenshots/mercurial-wizard.thumb.png\|Mercurial *Changesetviewer (with Gravatar Plugin)*](screenshots/changesetviewer-gravatar-plugin.png "Changesetviewer (with Gravatar Plugin)")
Configuration Wizard}} \|
{{/sdorra/scm-manager/wiki/screenshots/changesetviewer-gravatar-plugin.thumb.png\|Changesetviewer
(with Gravatar Plugin)}} \| \|[Plugin
Overview](/sdorra/scm-manager/wiki/screenshots/plugin-overview.png "wikilink")\|
[Mercurial Configuration
Wizard](/sdorra/scm-manager/wiki/screenshots/mercurial-wizard.png "wikilink")
\| [Changesetviewer (with Gravatar
Plugin)](/sdorra/scm-manager/wiki/screenshots/changesetviewer-gravatar-plugin.png "wikilink")
\|

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 KiB

View File

@@ -1,5 +1,117 @@
Authentication # Snippet: Authentication
--------------
[Complete ```java
source](https://bitbucket.org/sdorra/scm-code-snippets/src/tip/004-authentication "wikilink") package sonia.scm.snippets;
//~--- non-JDK imports --------------------------------------------------------
import sonia.scm.SCMContextProvider;
import sonia.scm.plugin.ext.Extension;
import sonia.scm.user.User;
import sonia.scm.web.security.AuthenticationHandler;
import sonia.scm.web.security.AuthenticationResult;
import sonia.scm.web.security.AuthenticationState;
//~--- JDK imports ------------------------------------------------------------
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Simple {@link AuthenticationHandler} example.
*
* @author Sebastian Sdorra
*/
@Extension
public class SnippetAuthentication implements AuthenticationHandler
{
/** Type of the {@link AuthenticationHandler} */
public static final String TYPE = "snippet";
//~--- methods --------------------------------------------------------------
/**
* Authenticate the user by username and password.
*
*
* @param request current http request
* @param response current http response
* @param username username of the user
* @param password password of the password
*
* @return
*/
@Override
public AuthenticationResult authenticate(HttpServletRequest request,
HttpServletResponse response, String username, String password)
{
AuthenticationResult result = AuthenticationResult.NOT_FOUND;
if ("scm".equals(username))
{
// user found
if ("scmpwd".equals(password))
{
// authentication success
// create a user object
User user = new User(username);
// create the authentication result
result = new AuthenticationResult(user, AuthenticationState.SUCCESS);
}
else
{
// user found but authentication failed
result = AuthenticationResult.FAILED;
}
}
return result;
}
/**
* Close database connections or something else.
*
*
* @throws IOException
*/
@Override
public void close() throws IOException
{
// do nothing
}
/**
* Init database connections or something else.
*
*
* @param context the context of the current SCM-Manager instance.
*/
@Override
public void init(SCMContextProvider context)
{
// do nothing
}
//~--- get methods ----------------------------------------------------------
/**
* Returns the type of the {@link AuthenticationHandler}
*
*
* @return type of the {@link AuthenticationHandler}
*/
@Override
public String getType()
{
return TYPE;
}
}
```
[Complete source](https://bitbucket.org/sdorra/scm-code-snippets/src/tip/004-authentication)

View File

@@ -1,5 +1,46 @@
Extend global configuration # Snippet: Extend global configuration
---------------------------
[Complete ```javascript
source](https://bitbucket.org/sdorra/scm-code-snippets/src/tip/003-extend-global-config "wikilink") // register the new configuration form
registerGeneralConfigPanel({
// the xtype of the form should be configForm
xtype : 'configForm',
// title of the form
title : 'My Configuration',
// array of formular fields
items : [{
/**
* xtype of the formular field. For a
* list of the xtype's have a look at
* http://docs.sencha.com/ext-js/3-4/#!/api/Ext.Component
**/
xtype : 'textfield',
// label of the field
fieldLabel : 'Config name',
// name of the field
name : 'fomular-field-name',
// help for this field
helpText: 'Help for this field.',
// allow blank values
allowBlank : true
}],
/**
* this method is called when the form is submitted.
* values - the values of the formular
**/
onSubmit: function(values){
// do something
},
/**
* this method is called when the form is load
* el - the element of the formular
**/
onLoad: function(el){
// do something
}
});
```
[Complete source](https://bitbucket.org/sdorra/scm-code-snippets/src/tip/003-extend-global-config)

View File

@@ -1,4 +1,27 @@
### Extend Navigation ### Snippet: Extend Navigation
[Complete ```javascript
source](https://bitbucket.org/sdorra/scm-code-snippets/src/tip/001-extend-navigation "wikilink") // add login callback
loginCallbacks.push(function(){
// get the main navigation
var navPanel = Ext.getCmp('navigationPanel');
// insert the new navigation section at the
// second position
navPanel.insertSection(1, {
title: 'My Links',
links: [{
label: 'Link 1',
fn: function(){
alert('Link 1');
}
},{
label: 'Link 2',
fn: function(){
alert('Link 2');
}
}]
});
});
```
[Complete source](https://bitbucket.org/sdorra/scm-code-snippets/src/tip/001-extend-navigation)

View File

@@ -1,5 +1,53 @@
Add tab to repository configuration # Snippet: Add tab to repository configuration
-----------------------------------
[Complete ```javascript
source](https://bitbucket.org/sdorra/scm-code-snippets/src/tip/002-repository-tab "wikilink") /**
* Register extjs namespace for the plugin.
* http://docs.sencha.com/ext-js/3-4/#!/api/Ext-method-ns
*/
Ext.ns('Sonia.snippets');
Sonia.snippets.MyPanel = Ext.extend(Ext.Panel, {
initComponent: function(){
var config = {
// Title of the panel
title: 'My Panel'
}
/**
* The apply method merges the initialConfig object with the config object.
* The initialConfig object is the config object from the parent panel
* (in this case Ext.Panel).
* http://docs.sencha.com/ext-js/3-4/#!/api/Ext-method-apply
*/
Ext.apply(this, Ext.apply(this.initialConfig, config));
Sonia.snippets.MyPanel.superclass.initComponent.apply(this, arguments);
}
});
/**
* Register xtype of the panel for later use and lazy initialization.
* http://docs.sencha.com/ext-js/3-4/#!/api/Ext-method-reg
*/
Ext.reg("myPanel", Sonia.snippets.MyPanel);
/**
* Register a listener which is called, after repository is selected in the
* web interface. The listener passes the selected repository and an array
* of panels as argument.
*/
Sonia.repository.openListeners.push(function(repository, panels){
/**
* Append the new panel to the panels array
*/
panels.push({
// registerd xtype for the panel
xtype: 'myPanel'
});
});
```
[Complete source](https://bitbucket.org/sdorra/scm-code-snippets/src/tip/002-repository-tab)

View File

@@ -1,8 +1,6 @@
Mercurial Subrepositories # Mercurial Subrepositories
-------------------------
In the following examples i will use the In the following examples i will use the [scm-cli-client](command-line-client.md)
[scm-cli-client](https://bitbucket.org/sdorra/scm-manager/wiki/command-line-client "wikilink")
to create the repositories, but you can also use the web interface to to create the repositories, but you can also use the web interface to
create the repositories. create the repositories.
@@ -11,19 +9,31 @@ Create a main repository and for each subrepository a mercurial
repository in scm-manager. Than add the subrepositories with the repository in scm-manager. Than add the subrepositories with the
complete url to the .hgsub file. complete url to the .hgsub file.
```bash
java -jar scm-cli-client.jar create-repository -t hg -n main
java -jar scm-cli-client.jar create-repository -t hg -n module-1
java -jar scm-cli-client.jar create-repository -t hg -n module-2
hg clone http://localhost:8081/scm/hg/main
cd main
echo 'module-1 = http://localhost:8081/scm/hg/module-1' > .hgsub
echo 'module-2 = http://localhost:8081/scm/hg/module-2' >> .hgsub
hg add .hgsub
hg commit -m 'added module-1 and module-2 as subrepositories'
hg push
```
### Mercurial nested repositories ### Mercurial nested repositories
If you already have nested repositories, you have to redirect the nested If you already have nested repositories, you have to redirect the nested
repository to a real scm-manager repository. This work is done by the repository to a real scm-manager repository. This work is done by the
[scm-hgnested-plugin](https://bitbucket.org/sdorra/scm-hgnested-plugin "wikilink"). [scm-hgnested-plugin](https://bitbucket.org/sdorra/scm-hgnested-plugin).
Install the Install the
[scm-hgnested-plugin](https://bitbucket.org/sdorra/scm-hgnested-plugin "wikilink") [scm-hgnested-plugin](https://bitbucket.org/sdorra/scm-hgnested-plugin)
from the plugin-center (requires scm-manager version 1.10 or higher). from the plugin-center (requires scm-manager version 1.10 or higher).
Create a repository for the main repository and for each nested Create a repository for the main repository and for each nested
repository. Configure the repository. Configure the
[scm-hgnested-plugin](https://bitbucket.org/sdorra/scm-hgnested-plugin "wikilink") [scm-hgnested-plugin](https://bitbucket.org/sdorra/scm-hgnested-plugin)
like like [this](screenshots/scm-hgnested-plugin.png).
[this](https://bitbucket.org/sdorra/scm-manager/wiki/screenshots/scm-hgnested-plugin.png "wikilink").
### Further reading ### Further reading

View File

@@ -1,4 +1,4 @@
# Trac Plugin # # Trac Plugin
The plugin enables the following features to integrate SCM-Manager to [Trac](http://trac.edgewall.org/): The plugin enables the following features to integrate SCM-Manager to [Trac](http://trac.edgewall.org/):

View File

@@ -1,16 +1,13 @@
Upgrade to a new Version # Upgrade to a new Version
========================
If you would like to update SCM-Manager, you have to do the following If you would like to update SCM-Manager, you have to do the following
steps. steps.
- Update all plugins: Goto the plugins panel and click every update - Update all plugins: Goto the plugins panel and click every update link
link
The next steps depends on the version you use. The next steps depends on the version you use.
Upgrade the Standalone version ## Upgrade the Standalone version
------------------------------
- Stop the old instance - Stop the old instance
- Rename your old version - Rename your old version
@@ -21,8 +18,7 @@ Upgrade the Standalone version
- If you use a windows service you have to reinstall the service - If you use a windows service you have to reinstall the service
(uninstallService and installService) (uninstallService and installService)
Upgrade the WebArchive (war) version ## Upgrade the WebArchive (war) version
------------------------------------
- Download the latest version of the war bundle - Download the latest version of the war bundle
- Deploy the new version - Deploy the new version

View File

@@ -1,3 +0,0 @@
# API and concepts changes from SCM-Manger v1 to v2
TODO document api and concept changes while we're migrating plugins

3
docs/v2/api-changes.md Normal file
View File

@@ -0,0 +1,3 @@
# API and concepts changes from SCM-Manger v1 to v2
*TODO:* document api and concept changes while we're migrating plugins

View File

@@ -1,10 +1,11 @@
# Changes to `ui-components`/`ui-types` # # Changes to `ui-components`/`ui-types`
## Dev ##
## Dev
If you want (or need) to add components to the `ui-components`-Packages (or types to the `ui-types`-Package) and use them in `scm-ui`; you have to link the packages using yarn link (since your changes will not have been pushed to npm.js). To do so, cd to the `scm-ui` directory and type If you want (or need) to add components to the `ui-components`-Packages (or types to the `ui-types`-Package) and use them in `scm-ui`; you have to link the packages using yarn link (since your changes will not have been pushed to npm.js). To do so, cd to the `scm-ui` directory and type
```yarn link @scm-manager/ui-components``` ```yarn link @scm-manager/ui-components```
resp. resp.
```yarn linl @scm-manager/ui-types```. ```yarn linl @scm-manager/ui-types```.
## Releasing changes to npm.js ## ## Releasing changes to npm.js
**TODO** **TODO**

View File

@@ -8,25 +8,21 @@ A react component is updated without any changes in the props or states.
### Fix ### Fix
Use the [why-did-you-update](Link https://github.com/maicki/why-did-you-update) library to analyze the causes of the updates. 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()](Link https://github.com/maicki/why-did-you-update#changes-are-in-functions-only). 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 ### Example
```javascript
```
#!javascript
class Main extends React.Component<Props> { class Main extends React.Component<Props> {
render() { render() {
const { authenticated, links } = this.props; const { authenticated, links } = this.props;
const redirectUrlFactory = binder.getExtension("main.redirect", this.props); const redirectUrlFactory = binder.getExtension("main.redirect", this.props);
.... ...
const ActivityRoute = ({ authenticated, links }: RouteProps) => {
const ActivityRoute = ({ authenticated, links }: RouteProps) => {
return ( return (
<ProtectedRoute <ProtectedRoute
path="/activity" path="/activity"
@@ -34,33 +30,28 @@ const ActivityRoute = ({ authenticated, links }: RouteProps) => {
authenticated={authenticated && links.activity.href} authenticated={authenticated && links.activity.href}
/> />
); );
}; };
}
}
binder.bind("main.route", ActivityRoute); binder.bind("main.route", ActivityRoute);
``` ```
the definition of the Component like this: the definition of the Component like this:
```javascript
component={() => <Activity activityUrl={links.activity.href} />}
``` ```
#!javascript
component={() => <Activity activityUrl=links.activity.href} />}
```
triggers a re-render because: triggers a re-render because:
``` ```javascript
#!javascript () => <Activity activityUrl={links.activity.href} /> !== () => <Activity activityUrl={links.activity.href} />
() => <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 You can avoid it by binding this function in advance and then reusing it on all renders
```javascript
```
#!javascript
class ActivityRoute extends React.Component<Props> { class ActivityRoute extends React.Component<Props> {
constructor(props: Props) { constructor(props: Props) {
super(props); super(props);

View File

@@ -1,6 +1,6 @@
[TOC] # Decision Table
# Lombok # ### Lombok
[Project Lombok](https://projectlombok.org/) provides an easy way to generate java beans with [Project Lombok](https://projectlombok.org/) provides an easy way to generate java beans with
@@ -26,11 +26,11 @@ The following lombok annotations will be used for DTOs:
will be present. Because this one is necessary for deserialization, this one has to be created will be present. Because this one is necessary for deserialization, this one has to be created
explicitly when the all-args constructor is declared) explicitly when the all-args constructor is declared)
# /repo/ & /repos/ as URI prefixes # ### /repo/ & /repos/ as URI prefixes
The URI-format for accessing a repository, be it with a browser, or cloning/pulling via git/hg/svn, is defined to be `/repo/:namespace/:name`. The decision was made to allow users to choose namespaces as they please. If there would not be a prefix, some namespaces (e.g. `user`, `users`) would have to be reserved, since the names are already in use by SCM Manager itself. The `/repos` URI linked to a list of repositories, as well as operations such as creating a repositoriy (`/repos/create`). The URI-format for accessing a repository, be it with a browser, or cloning/pulling via git/hg/svn, is defined to be `/repo/:namespace/:name`. The decision was made to allow users to choose namespaces as they please. If there would not be a prefix, some namespaces (e.g. `user`, `users`) would have to be reserved, since the names are already in use by SCM Manager itself. The `/repos` URI linked to a list of repositories, as well as operations such as creating a repositoriy (`/repos/create`).
# Error handling ### Error handling
In v1 error handling was somewhat diverse. Some checks were made explicitly in the web resource classes leading In v1 error handling was somewhat diverse. Some checks were made explicitly in the web resource classes leading
to direct responses, some were made using exceptions and matching exception mappers. to direct responses, some were made using exceptions and matching exception mappers.
@@ -53,7 +53,7 @@ in runtime exceptions like `RepositoryException` and will lead to internal serve
For simple objects like users and groups we don't think that we will need more exceptions. For simple objects like users and groups we don't think that we will need more exceptions.
# Logging ### Logging
Logging can be cucial when it comes to identify bugs in test or production environments. At implementation time one cannot foresee all possible error cases and therefore cannot determine with full certanty what informations will be needed and what can be neglected. Logging only crucial errors leaves the developer with no idea what events might have lead to the error. On the other hand logging too much will overburden the log, making it harder to handle and maybe hiding interesting steps. Logging can be cucial when it comes to identify bugs in test or production environments. At implementation time one cannot foresee all possible error cases and therefore cannot determine with full certanty what informations will be needed and what can be neglected. Logging only crucial errors leaves the developer with no idea what events might have lead to the error. On the other hand logging too much will overburden the log, making it harder to handle and maybe hiding interesting steps.
@@ -67,7 +67,7 @@ Therefore it is best practice to be able to select the detail level of informati
As a default the log level for SCM-Manager is INFO, so that by default all logs with the levels ERROR, WARN and INFO are stored. Finer levels can be enabled manually. As a default the log level for SCM-Manager is INFO, so that by default all logs with the levels ERROR, WARN and INFO are stored. Finer levels can be enabled manually.
## Log levels to use ### Log levels to use
We have agreed to apply to the following guidelines regarding log levels: We have agreed to apply to the following guidelines regarding log levels:

View File

@@ -46,7 +46,7 @@ Here are some example error cases:
In SCM-Manager we make heavy use of Java `Exception`s, not only for technical exceptions in the program flow like reading corrupt file systems, but also for "user errors" like illegal values or requests for missing data. In SCM-Manager we make heavy use of Java `Exception`s, not only for technical exceptions in the program flow like reading corrupt file systems, but also for "user errors" like illegal values or requests for missing data.
These exceptions are handled by JEE [`ExceptionMapper`](https://docs.oracle.com/javaee/7/api/javax/ws/rs/ext/ExceptionMapper.html)s. Doing so, it is possible to concentrate on implementing the "happy path" without the need to explicitly handle error cases everywhere (for example you do not have to check whether got `null` as a result). Nonetheless we still had to decide whether to use checked or unchecked exceptions. We have chosen to use unchecked exceptions due to the following reasons: These exceptions are handled by JEE [`ExceptionMapper`](https://docs.oracle.com/javaee/7/api/javax/ws/rs/ext/ExceptionMapper.html) s. Doing so, it is possible to concentrate on implementing the "happy path" without the need to explicitly handle error cases everywhere (for example you do not have to check whether got `null` as a result). Nonetheless we still had to decide whether to use checked or unchecked exceptions. We have chosen to use unchecked exceptions due to the following reasons:
- Checked exceptions would have had to be declared everywhere. - Checked exceptions would have had to be declared everywhere.
- A checked exception can somehow trigger a "I have to handle this though I don't know how" feeling that would be wrong, because we do have mappers for these exceptions. - A checked exception can somehow trigger a "I have to handle this though I don't know how" feeling that would be wrong, because we do have mappers for these exceptions.
@@ -117,7 +117,7 @@ To be able to retrace errors a proper logging is indispensible. So we decided to
SCM-Manager uses [http status codes](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) to identify types of errors (and successes, that is) and doing so provides a first hint, what may have gone wrong: SCM-Manager uses [http status codes](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) to identify types of errors (and successes, that is) and doing so provides a first hint, what may have gone wrong:
| Status code | Principal error cause | | Status code | Principal error cause |
|-|-| |-------------|-----------------------|
| 200 | No error, everything is fine | | 200 | No error, everything is fine |
| 201 | The item has been created without an error | | 201 | The item has been created without an error |
| 204 | The request has been processed without an error | | 204 | The request has been processed without an error |
@@ -133,7 +133,7 @@ SCM-Manager uses [http status codes](https://en.wikipedia.org/wiki/List_of_HTTP_
Whenever possible, an error response contains useful details about the error in a simple json format. These information are _not_ translated, so this is the responsibility of the frontend. Whenever possible, an error response contains useful details about the error in a simple json format. These information are _not_ translated, so this is the responsibility of the frontend.
| key | content | availability | | key | content | availability |
|-|-|-| |-----|---------|--------------|
| transactionId | A unique id to link your request to log messages | always | | transactionId | A unique id to link your request to log messages | always |
| errorCode | A code that can be used for translated error messages. To prevent the usage of the same codes in different exceptions we decided to use generated ids. | always | | errorCode | A code that can be used for translated error messages. To prevent the usage of the same codes in different exceptions we decided to use generated ids. | always |
| context | (repo/key, branch/key, ...) | optional | | context | (repo/key, branch/key, ...) | optional |
@@ -184,5 +184,5 @@ Basically we have to differentiate between errors the user can handle ("user err
While creating this concepts we tried to adhere to best practices considering APIs of Twitter, Facebook, Bing, Spotify and others, as summarized in the following articles: While creating this concepts we tried to adhere to best practices considering APIs of Twitter, Facebook, Bing, Spotify and others, as summarized in the following articles:
* https://apigee.com/about/blog/technology/restful-api-design-what-about-errors * [RESTful API Design: What About Errors? (Apigee)](https://apigee.com/about/blog/technology/restful-api-design-what-about-errors)
* https://nordicapis.com/best-practices-api-error-handling/ * [Best Practices for API Error Handling (Nordic APIS)](https://nordicapis.com/best-practices-api-error-handling/)

View File

@@ -74,11 +74,7 @@ The following extension points are provided for the frontend:
**example:** **example:**
``` ```javascript
#!javascript
let MarkdownFactory = (renderContext) => { let MarkdownFactory = (renderContext) => {
let Heading= (props) => { let Heading= (props) => {
@@ -89,20 +85,13 @@ let MarkdownFactory = (renderContext) => {
return {heading : Heading}; return {heading : Heading};
}; };
binder.bind("markdown-renderer-factory", MarkdownFactory); binder.bind("markdown-renderer-factory", MarkdownFactory);
``` ```
```javascript
```
#!javascript
<MarkdownView <MarkdownView
renderContext={{pullRequest, repository}} renderContext={{pullRequest, repository}}
className="content" className="content"
content={pullRequest.description} content={pullRequest.description}
/> />
``` ```

View File

@@ -0,0 +1,47 @@
# Getting started
### Install Java
SCM-Manager needs an installed Java 1.8 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
#### Standalone Server
Download the latest version of SCM-Manager from
[Nexus](https://maven.scm-manager.org/nexus/#nexus-search;gav~sonia.scm~scm-server~2.*~~),
extract the downloaded .zip or .tar.gz archive and start SCM-Manager 2 with
```bash
scm-server/bin/scm-server
```
or
```bash
scm-server\bin\scm-server.bat
```
#### Docker
To start SCM-Manager with a persistent volume on port 8080 run the following command:
```bash
docker run -p 8080:8080 -v scm-home:/var/lib/scm --name scm scmmanager/scm-manager:2.0.0-rc6
```
### First access
Your SCM-Manager should be running on port 8080. You can access it locally via <http://localhost:8080>.
| | |
| ------------ | ----------------------- |
| **Username** | scmadmin |
| **Password** | scmadmin |

View File

@@ -1,35 +0,0 @@
How to internationalize your own plugin
---------------------------------------
### Create the plugins.json file
The translation file for plugins should be stored in the resources path
locales/{lang}/plugins.json
All translation keys are parts of a \*\*unique root key\*\*. It is
recommended to \*\*use the maven artifactId of the plugin as root
key\*\* to avoid conflicts with other plugin. All translation files
would be collected and merged to a single file containing all
translations. Therefore it is \*\*necessary to use a unique root key\*\*
for the translations.
//\*\*example:\*\*//
the translation file of the svn plugin is stored in
locales/en/plugins.json
### Usage in the own React components
SCM-Manager use react-i18next to render translations.
The following steps are needed to use react-i18next in the own
components
- import react-i18next
- declare the translation method as property
- wrap the react component with the translate method and give the json
translation file name \"plugins\"
- use the translation keys like this:

View File

@@ -0,0 +1,59 @@
# i18n for Plugins
How to internationalize your own plugin
### Create the plugins.json file
The translation file for plugins should be stored in the resources path
locales/*{lang}*/plugins.json
All translation keys are parts of a **unique root key**. It is
recommended to **use the maven artifactId of the plugin as root
key** to avoid conflicts with other plugin. All translation files
would be collected and merged to a single file containing all
translations. Therefore it is **necessary to use a unique root key**
for the translations.
***Example:***
the translation file of the svn plugin is stored in
locales/en/plugins.json
```json
{
"scm-svn-plugin": {
"information": {
"checkout" : "Checkout repository"
}
}
}
```
### Usage in the own React components
SCM-Manager use react-i18next to render translations.
The following steps are needed to use react-i18next in the own
components
- import react-i18next
```javascript
import { WithTranslation, withTranslation } from "react-i18next";
```
- declare the translation method `t: string => string` as property
```javascript
type Props = WithTranslation & {
***your props***
}
```
- wrap the react component with the translate method and give the json
translation file name \"plugins\"
```javascript
export default withTranslation("plugins")(MyPluginComponent);
```
- use the translation keys like this:
```javascript
const { t } = this.props;
<h3>{t("scm-svn-plugin.information.checkout")}</h3>
```

View File

@@ -33,39 +33,43 @@
* Languages & Frameworks / Javascript * Languages & Frameworks / Javascript
* JavaScript language version: Flow * JavaScript language version: Flow
* Flow package or executable: .../scm-ui/node_modules/flow-bin * Flow package or executable: .../node_modules/flow-bin
* Languages & Frameworks / Javascript / Code Quality Tools / ESLint * Languages & Frameworks / Javascript / Code Quality Tools / ESLint
* Enable * Enable
* ESLint package: .../scm-ui/node_modules/eslint * ESLint package: .../node_modules/eslint
* -OR- Automatic ESLint configuration * -OR- Automatic ESLint configuration
* Languages & Frameworks / Javascript / Prettier * Languages & Frameworks / Javascript / Prettier
* Prettier package: .../scm-ui/node_modules/prettier * Prettier package: .../node_modules/prettier
* Tools / File Watchers * Tools / File Watchers
* Add Prettier * Add Prettier
* Deselect: Track only root files * Deselect: Track only root files
* Scope: Current File * Scope: Current File
* Program: $ProjectFileDir$/scm-ui/node_modules/.bin/prettier * Program: $ProjectFileDir$/node_modules/.bin/prettier
* Working Directory: $ProjectFileDir$/scm-ui * Working Directory: $ProjectFileDir$
* Run Configurations / Edit Configuration * Run Configurations / Edit Configuration
* Templates / Jest * Templates / Jest
* Jest package: .../scm-ui/node_modules/jest * Jest package: .../node_modules/jest
* Jest options: --config node_modules/@scm-manager/ui-bundler/src/jest.ide.config.js * Jest options: --config node_modules/@scm-manager/ui-bundler/src/jest.ide.config.js
* Run Configurations / Edit Configuration * Run Configurations / Edit Configuration
* Add npm * Add npm
* Name: run-frontend * Name: run-frontend
* package-json: .../scm-ui/package.json * package-json: .../package.json
* Command: run * Command: run
* Scripts: start * Scripts: serve
## Both ## Both
### Plugins
* EditorConfig * EditorConfig
### Settings
* Editor / Copyright / Copyright Profiles * Editor / Copyright / Copyright Profiles
* Add Profile * Add Profile
* Name: SCM-MIT * Name: SCM-MIT

View File

@@ -1,3 +1,5 @@
# Known Issues
## Asnychronous PreReceiveRepositoryHooks do not work with subversion ## Asnychronous PreReceiveRepositoryHooks do not work with subversion
The following example will fail to log the changesets. The following example will fail to log the changesets.
@@ -26,7 +28,6 @@ public class DemoHook {
} }
} }
``` ```
This is because of the transaction management of subversion. The scm-manager subversion provider becomes a transaction id for the changes of the current push, but the transaction has finished before scm-manager can resolve the incoming commit. To solve the issue, we could use a synchronous subscription instead e.g.: This is because of the transaction management of subversion. The scm-manager subversion provider becomes a transaction id for the changes of the current push, but the transaction has finished before scm-manager can resolve the incoming commit. To solve the issue, we could use a synchronous subscription instead e.g.:
@@ -55,5 +56,4 @@ public class DemoHook {
} }
} }
``` ```

View File

@@ -1,20 +1,19 @@
# Migrate an v1 plugin # Migrate an v1 plugin
Before starting, make sure to read the [[v2/Plugin Development|Plugin Development]] Before starting, make sure to read the [Plugin Development](plugin-development.md)
**NOTE**: until there is no release the current version of scm-manager has to be cloned and build on the machine **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. of the plugin developer.
```bash ```bash
hg clone https://bitnucket.org/sdorra/scm-manager git clone git@github.com:scm-manager/scm-manager.git
cd scm-manager cd scm-manager
hg update 2.0.0-m3
./mvnw clean install ./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:
### Maven (pom.xml): ### Maven (pom.xml)
* 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.
@@ -25,7 +24,6 @@ To migrate an existing SCM-Manager 1.x Plugin, you have to do the following step
* remove the sonia.scm.maven:scm-maven-plugin from the pom * remove the sonia.scm.maven:scm-maven-plugin from the pom
* remove servlet-api from the list of dependencies (not always the case) * remove servlet-api from the list of dependencies (not always the case)
```diff ```diff
diff -r a988f4cfb7ab pom.xml diff -r a988f4cfb7ab pom.xml
--- a/pom.xml Thu Dec 10 20:32:26 2015 +0100 --- a/pom.xml Thu Dec 10 20:32:26 2015 +0100
@@ -81,7 +79,7 @@ diff -r a988f4cfb7ab pom.xml
<repository> <repository>
``` ```
### Plugin Descriptor (src/main/resources/META-INF/scm/plugin.xml): ### Plugin Descriptor (src/main/resources/META-INF/scm/plugin.xml)
* add the following dtd to the top of the plugin.xml: `<!DOCTYPE plugin SYSTEM "https://download.scm-manager.org/dtd/plugin/2.0.0-01.dtd">` * add the following dtd to the top of the plugin.xml: `<!DOCTYPE plugin SYSTEM "https://download.scm-manager.org/dtd/plugin/2.0.0-01.dtd">`
* add an scm-version element with the value 2 to the plugin.xml * add an scm-version element with the value 2 to the plugin.xml
@@ -124,7 +122,7 @@ diff -r a988f4cfb7ab src/main/resources/META-INF/scm/plugin.xml
### Java sources (src/main/java) ### Java sources (src/main/java)
* try to compile the sources: `mvn compile` * try to compile the sources: `mvn compile`
* fix problems (See [[v2/API changes|API changes]]) * 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://bitbucket.org/sdorra/scm-manager/src/3d5a24c177f33c14a7c08f19e124be03b1a877ba/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/api/v2/resources/GitConfigResource.java)
@@ -132,6 +130,7 @@ diff -r a988f4cfb7ab src/main/resources/META-INF/scm/plugin.xml
* 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",
@@ -151,6 +150,7 @@ diff -r a988f4cfb7ab src/main/resources/META-INF/scm/plugin.xml
} }
} }
``` ```
* 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) * 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)
@@ -161,12 +161,12 @@ 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://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).
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](https://bitbucket.org/sdorra/scm-manager/wiki/v2/i18n%20for%20Plugins) * Don't forget [i18n for Plugins](i18n-for-plugins.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://bitbucket.org/scm-manager/scm-review-plugin/src/0ea74634830ef4865afacf714de009302e26353d/pom.xml#lines-72) * 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](https://bitbucket.org/scm-manager/ui-extensions/src/master/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-extensions README](../../scm-ui/ui-extensions/README.md) - Extension Points within SCM-Manager
* [smp-maven-plugin](https://bitbucket.org/scm-manager/smp-maven-plugin/src/default/) - Plugin that facilitates efficient plugin development for SCMM * [scm-manager/ui-components](https://bitbucket.org/sdorra/scm-manager/src/6d64a380a37db63c95eccbfbf18e4500c9224d32/scm-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
* [ui-bundler](https://bitbucket.org/scm-manager/ui-bundler/src/master/) - Bundles the UI Resources for plugins * [ui-bundler](https://bitbucket.org/scm-manager/ui-bundler/src/master/) - Bundles the UI Resources for plugins

View File

@@ -18,7 +18,11 @@ To specify the new names (and namespaces), the SCM-Manager version 2 starts a mi
2019-12-05 14:01:35.110 [main] [ ] INFO sonia.scm.update.MigrationWizardModule - ========================================================== 2019-12-05 14:01:35.110 [main] [ ] INFO sonia.scm.update.MigrationWizardModule - ==========================================================
``` ```
You can open this wizard in an internet browser using the URL of your installation (eg. http://localhost:8080/scm/). 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: 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)
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:
|Strategy|Action| |Strategy|Action|
|---|---| |---|---|

View File

@@ -1,8 +1,8 @@
# 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.
[TOC] ## Requirements
# Requirements
* Provide at least the features of SCMMv1 including the scm-groupmanager and scm-userrepo plugins. * Provide at least the features of SCMMv1 including the scm-groupmanager and scm-userrepo plugins.
* In addition, the permissions on repositories should be more fine-grained, for example a user that does not have the * In addition, the permissions on repositories should be more fine-grained, for example a user that does not have the
@@ -10,11 +10,11 @@ This documents describes a concept for a fine-grained permission managing via th
* An ideal solution would be generic. That is, not implementing explicit features such as the groupmanager or userrepo. * An ideal solution would be generic. That is, not implementing explicit features such as the groupmanager or userrepo.
SCMMv2 already evaluates fine-grained permissions, so why not allow our users to assign them? SCMMv2 already evaluates fine-grained permissions, so why not allow our users to assign them?
# Technical Foundations ## Technical Foundations
## Status Quo SCMv1 ### Status Quo SCMv1
[SCMMv1 's permissions](../Permissions) are only related to Repositories: [SCMMv1 's permissions](../Permissions.md) are only related to Repositories:
* Users can either have the Permission READ, WRITER or OWNER * Users can either have the Permission READ, WRITER or OWNER
* globally (for all repositories) or * globally (for all repositories) or
@@ -28,7 +28,7 @@ Some more permission-related features are added by plugins:
* [scm-groupmanager-plugin](https://bitbucket.org/triologygmbh/scm-groupmanager-plugin/): Allows users to administer groups * [scm-groupmanager-plugin](https://bitbucket.org/triologygmbh/scm-groupmanager-plugin/): Allows users to administer groups
* [scm-userrepo-plugin](https://bitbucket.org/sdorra/scm-userrepo-plugin/): Allows users to create repositories * [scm-userrepo-plugin](https://bitbucket.org/sdorra/scm-userrepo-plugin/): Allows users to create repositories
## SCMMv2 Permission fundamentals ### SCMMv2 Permission fundamentals
SCMMv2 introduces much more fine-grained permission checks under the hood. SCMMv2 introduces much more fine-grained permission checks under the hood.
In the code permissions for all kinds of operations are designed as follows: In the code permissions for all kinds of operations are designed as follows:
@@ -44,7 +44,7 @@ In addition, there are permissions that do not relate to an item, which are call
The challenge solved by this document is to provide a concept that allows SCMMv2 users to manage these permissions. The challenge solved by this document is to provide a concept that allows SCMMv2 users to manage these permissions.
That is, to assign those permissions to users and groups via the UI or REST API. That is, to assign those permissions to users and groups via the UI or REST API.
## SCMMv2 implementation details ### SCMMv2 implementation details
This is not a core part of the concept but might be interesting when implementing it. This is not a core part of the concept but might be interesting when implementing it.
@@ -82,7 +82,7 @@ When a user logs in, all different kinds of permissions (`*` if admin, permissio
from groups, some additional technical permissions such as `autocomplete`, etc.) are collected and added to the Shiro from groups, some additional technical permissions such as `autocomplete`, etc.) are collected and added to the Shiro
subject in the `DefaultAuthorizationCollector` class. subject in the `DefaultAuthorizationCollector` class.
## SCMMv2 Core permissions ### SCMMv2 Core permissions
Here are some more examples of permissions existing in SCMMv2 core, at the time of writing. Here are some more examples of permissions existing in SCMMv2 core, at the time of writing.
Look for `@StaticPermissions` and note that there the annotation also declares defaults for `permissions` and `globalPermissions`. Look for `@StaticPermissions` and note that there the annotation also declares defaults for `permissions` and `globalPermissions`.
@@ -105,25 +105,25 @@ Look for `@StaticPermissions` and note that there the annotation also declares d
* Permissions: read, modify, delete, healthCheck, pull, push, permissionRead, permissionWrite * Permissions: read, modify, delete, healthCheck, pull, push, permissionRead, permissionWrite
* Items are the technical ID of dynamically added repositories * Items are the technical ID of dynamically added repositories
# Repository and global permissions ## Repository and global permissions
In order to fulfill the requirements, this concept describes In order to fulfill the requirements, this concept describes
* how to extend the existing repository permissions to be more fine-grained * how to extend the existing repository permissions to be more fine-grained
* a new dialog to assign global permissions on user or group level * a new dialog to assign global permissions on user or group level
# UI / UX ## UI / UX
## Global permissions ### Global permissions
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](Permissions-mockup-user.jpg). ![Permissions mockup user](../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](Permissions-mockup-global-permissions.jpg). ![Permissions mockup global permissions](../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),
@@ -131,7 +131,7 @@ The UI
* displays descriptions as tooltips, * displays descriptions as tooltips,
* and queries all user/group permissions to populate the check boxes. * and queries all user/group permissions to populate the check boxes.
## Repository permissions ### Repository permissions
The repository permission are already implemented and can be reached via Repositories | Permissions. Right now, it The repository permission are already implemented and can be reached via Repositories | Permissions. Right now, it
allows for assigning the roles READ, WRITE, OWNER as in SCMMv1 (see above). Internally they are mapped to shiro allows for assigning the roles READ, WRITE, OWNER as in SCMMv1 (see above). Internally they are mapped to shiro
@@ -139,9 +139,9 @@ permissions (see `PermissionType`).
The UI is extended like so: The UI is extended like so:
![Permissions-mockup-repository-permissions](Permissions-mockup-repository-permissions.jpg). ![Permissions mockup repository permissions](../resources/permissions-mockup-repository-permissions.jpg)
### Existing repository dialog #### Existing repository dialog
* queries all available repository permissions (shiro strings) and roles from the REST API, * queries all available repository permissions (shiro strings) and roles from the REST API,
* queries all user/group permissions of the repository (shiro strings) and aggregates them to roles to populate the * queries all user/group permissions of the repository (shiro strings) and aggregates them to roles to populate the
@@ -149,25 +149,25 @@ The UI is extended like so:
* Note that the permissions are always stored as shiro strings not roles. * Note that the permissions are always stored as shiro strings not roles.
* A new `Advanced` button per user or group entry opens a modal dialog * A new `Advanced` button per user or group entry opens a modal dialog
### New modal dialog #### New modal dialog
* The modal dialog shows all available repository permissions (shiro strings) * The modal dialog shows all available repository permissions (shiro strings)
* via the shiro string the display name and descriptions are found (see i18n), * via the shiro string the display name and descriptions are found (see i18n),
* displays descriptions as tooltips, * displays descriptions as tooltips,
* the individual user/group permission of the repo are used to populate the check boxes * the individual user/group permission of the repo are used to populate the check boxes
# REST API ## REST API
Note that the examples here are not specified in HAL/HATEOAS for brevity. Note that the examples here are not specified in HAL/HATEOAS for brevity.
## Global permissions ### Global permissions
Assigning global permissions must be implemented for **either user and groups**! Assigning global permissions must be implemented for **either user and groups**!
Both use the same available permissions. Both use the same available permissions.
The following shows user as an example. The following shows user as an example.
### Available global permissions #### Available global permissions
* URL: `/globalPermissions` * URL: `/globalPermissions`
* HTTP Method: GET * HTTP Method: GET
@@ -189,7 +189,7 @@ The following shows user as an example.
} }
``` ```
### Assigned global permissions #### Assigned global permissions
* URL: `/users/{id}/permissions/` * URL: `/users/{id}/permissions/`
* HTTP Method: GET/PUT * HTTP Method: GET/PUT
@@ -211,9 +211,9 @@ The following shows user as an example.
} }
``` ```
## Repository permissions ### Repository permissions
### Available repository permissions #### Available repository permissions
* URL: `/repositoryPermissions` (similar to `/repositoryTypes`) * URL: `/repositoryPermissions` (similar to `/repositoryTypes`)
* HTTP Method: GET * HTTP Method: GET
@@ -235,7 +235,7 @@ The following shows user as an example.
} }
``` ```
### Assigned repository permissions #### Assigned repository permissions
Already implemented in `PermissionRootResource`. Needs to be adpated from roles (`WRITE`) to shiro permissions Already implemented in `PermissionRootResource`. Needs to be adpated from roles (`WRITE`) to shiro permissions
(`repository:read:42`). (`repository:read:42`).
@@ -272,7 +272,7 @@ Note that
* On PUT, the REST API needs to **validate** that each entry in `permissions` does not contain `:`! * On PUT, the REST API needs to **validate** that each entry in `permissions` does not contain `:`!
Otherwise we might allow for "permission injection", allowing to set permissions on other or all repositories. Otherwise we might allow for "permission injection", allowing to set permissions on other or all repositories.
# Java API ## Java API
The biggest technical challenges for this concept are the questions: The biggest technical challenges for this concept are the questions:
@@ -287,13 +287,13 @@ Where each questions needs to be answered for
permissions. permissions.
## Global permissions ### Global permissions
In order to implement this for global permissions an existing mechanism of SCM-Manager can be used: In order to implement this for global permissions an existing mechanism of SCM-Manager can be used:
The `SecuritySystem`, implemented by the `DefaultSecuritySystem`. The `SecuritySystem`, implemented by the `DefaultSecuritySystem`.
### List available permissions #### List available permissions
The `DefaultSecuritySystem` reads all `permissions.xml` files from classpath, which also works for plugins (see The `DefaultSecuritySystem` reads all `permissions.xml` files from classpath, which also works for plugins (see
[Proof Of Concept](https://bitbucket.org/sdorra/scm-manager/commits/4ed74bf266106c48db77d21558452b0c968884cb?at=feature/global_permissions#chg-scm-plugins/scm-git-plugin/src/main/resources/META-INF/scm/permissions.xml)). [Proof Of Concept](https://bitbucket.org/sdorra/scm-manager/commits/4ed74bf266106c48db77d21558452b0c968884cb?at=feature/global_permissions#chg-scm-plugins/scm-git-plugin/src/main/resources/META-INF/scm/permissions.xml)).
@@ -308,7 +308,7 @@ For SCMMv2 we could extend this mechanism by
The annotations should be extended to support a list of permissions that are not written to `permissions.xml` The annotations should be extended to support a list of permissions that are not written to `permissions.xml`
(e.g. `user:autocomplete`) (e.g. `user:autocomplete`)
### Assign permissions #### Assign permissions
The `SecuritySystem` also provides means to assign, store and load permissions to users or groups using Shiro string The `SecuritySystem` also provides means to assign, store and load permissions to users or groups using Shiro string
permissions like so: permissions like so:
@@ -323,23 +323,23 @@ log.info("All permissions: {}", securitySystem.getAllPermissions()); // Contains
See also the [Proof Of Concept](https://bitbucket.org/sdorra/scm-manager/src/4a88315d8f3ce0ad9a7c428da1081fb7e4967fe3/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GlobalPermissionPocResource.java?at=feature/global_permissions). See also the [Proof Of Concept](https://bitbucket.org/sdorra/scm-manager/src/4a88315d8f3ce0ad9a7c428da1081fb7e4967fe3/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GlobalPermissionPocResource.java?at=feature/global_permissions).
### Evaluating permissions #### Evaluating permissions
The evaluation of permissions assigned via the `SecuritySystem` is already implemented in the The evaluation of permissions assigned via the `SecuritySystem` is already implemented in the
`DefaultAuthorizationCollector`. `DefaultAuthorizationCollector`.
### Dynamically add new items to available permissions #### Dynamically add new items to available permissions
Adding items (e.g. new users) dynamically during runtime is not implemented by the `SecuritySystem` and in order to Adding items (e.g. new users) dynamically during runtime is not implemented by the `SecuritySystem` and in order to
keep this simple we do not plan to support it, yet. See considered alternatives. keep this simple we do not plan to support it, yet. See considered alternatives.
## Repository Permissions ### Repository Permissions
For repository permissions we need to implement a new mechanism for discovering available permissions . For repository permissions we need to implement a new mechanism for discovering available permissions .
Assigning is already implemented (on role level, e.g. `WRITE`), which needs to be adapted to shiro permission level Assigning is already implemented (on role level, e.g. `WRITE`), which needs to be adapted to shiro permission level
(e.g. `repository:read:42`). (e.g. `repository:read:42`).
### List available permissions #### List available permissions
We need to implement a new mechanism for discovering available permssions. Let's call it `RepositoryPermissionResolver`. We need to implement a new mechanism for discovering available permssions. Let's call it `RepositoryPermissionResolver`.
It can work similar to the `DefaultSecuritySystem` (see global permissions). It reads all `repository-permissions.xml` It can work similar to the `DefaultSecuritySystem` (see global permissions). It reads all `repository-permissions.xml`
@@ -362,22 +362,22 @@ This obsoletes the `PermissionType` enum.
</permissions> </permissions>
``` ```
### Assign permissions #### Assign permissions
This is already implemented in `RepositoryManager`s. Needs to be adapted from roles (`WRITE`) to shiro permissions This is already implemented in `RepositoryManager`s. Needs to be adapted from roles (`WRITE`) to shiro permissions
(`repository:read:42`). (`repository:read:42`).
### Evaluating permissions #### Evaluating permissions
Same here: Already implemented in `DefaultAuthorizationCollector`. Needs to be adapted from roles to shiro permissions. Same here: Already implemented in `DefaultAuthorizationCollector`. Needs to be adapted from roles to shiro permissions.
## The Admin flag/role ### The Admin flag/role
In addition to the fine-grained permission management described in this concept, we could just keep the admin flag In addition to the fine-grained permission management described in this concept, we could just keep the admin flag
(or role) that add the permission `*` to a user. (or role) that add the permission `*` to a user.
It's already implemented and a well-known concept from SCMMv1. It's already implemented and a well-known concept from SCMMv1.
## Permission for managing permissions ### Permission for managing permissions
Once permissions can be managed, an additional permission is necessary that answers the question: Who is allowed to Once permissions can be managed, an additional permission is necessary that answers the question: Who is allowed to
manage permissions? manage permissions?
@@ -391,11 +391,11 @@ and write. That is,
* `permission:read` * `permission:read`
* `permission:write` * `permission:write`
# i18n ## i18n
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) * All permission i18n are described in `plugins.json` (also for core), see [i18n for Plugins](i18n-for-plugins.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.
@@ -412,7 +412,7 @@ Example:
} }
``` ```
# Group Manager Plugin ## Group Manager Plugin
One shortcoming of limiting the global permission concept to verbs (not items) is that the functionality of the One shortcoming of limiting the global permission concept to verbs (not items) is that the functionality of the
`scm-groupmanager-plugin` is not included. `scm-groupmanager-plugin` is not included.
@@ -432,7 +432,7 @@ The following needs to be implemented:
* For storing the permission, make use of the `SecuritySystem` to set the `group:*:<id>` permissions. * For storing the permission, make use of the `SecuritySystem` to set the `group:*:<id>` permissions.
# Considered alternatives ## Considered alternatives
This chapter documents some other approaches that were considered but rejected and the reasons for rejecting them. This chapter documents some other approaches that were considered but rejected and the reasons for rejecting them.
@@ -450,7 +450,7 @@ This chapter documents some other approaches that were considered but rejected a
of userrepo or groupmanager plugins. Those could still be implemented separately. Still, as SCMMv2 provides a of userrepo or groupmanager plugins. Those could still be implemented separately. Still, as SCMMv2 provides a
mechanism for evaluate permissions on the fine-grained `subject:verb:item` level, why not allow our users to make use of it? mechanism for evaluate permissions on the fine-grained `subject:verb:item` level, why not allow our users to make use of it?
# Implemented Permissions ## Implemented Permissions
This chapter documents the permissions implemented in SCM-Manager core and a lot of plugins that can be assigned to users and groups This chapter documents the permissions implemented in SCM-Manager core and a lot of plugins that can be assigned to users and groups
using the GUI/API. using the GUI/API.
@@ -458,10 +458,10 @@ Be aware, that this is only a snapshot and may not track each change in a plugin
for a concrete version of the core or a plugin, take a look at the corresponding `permissions.xml`, `repository-permissions.xml` and for a concrete version of the core or a plugin, take a look at the corresponding `permissions.xml`, `repository-permissions.xml` and
`plugins.json` files. `plugins.json` files.
## Global Permissions ### Global Permissions
| plugin | permission | description | | plugin | permission | description |
|-|-|-| |--------|------------|-------------|
| core | `repository:read,pull:*` | read all repositories | | core | `repository:read,pull:*` | read all repositories |
| core | `repository:read,pull,push:*` | write all repositories | | core | `repository:read,pull,push:*` | write all repositories |
| core | `repository:*` | own all repositories | | core | `repository:*` | own all repositories |
@@ -501,10 +501,10 @@ for a concrete version of the core or a plugin, take a look at the corresponding
| ssh | `user:readAuthorizedKeys:*` | read authorization keys for all users | | ssh | `user:readAuthorizedKeys:*` | read authorization keys for all users |
| ssh | `user:readAuthorizedKeys,writeAuthorizedKeys:*` | configure authorization keys for all users | | ssh | `user:readAuthorizedKeys,writeAuthorizedKeys:*` | configure authorization keys for all users |
## Repository Permissions ### Repository Permissions
| plugin | verb | description | | plugin | verb | description |
|-|-|-| |--------|------|-------------|
| core | `read` | read metadata of repository | | core | `read` | read metadata of repository |
| core | `modify` | modify metadata of repository | | core | `modify` | modify metadata of repository |
| core | `delete` | delete repository | | core | `delete` | delete repository |
@@ -530,13 +530,13 @@ for a concrete version of the core or a plugin, take a look at the corresponding
| branchwp | `branchwp` | administer write protected paths for repository | | branchwp | `branchwp` | administer write protected paths for repository |
| webhook | `webhook` | administer web hools for repository | | webhook | `webhook` | administer web hools for repository |
## Repository Roles ### Repository Roles
The verbs for roles are merged internally, so that a resulting role will have all verbs specified by any plugin. The verbs for roles are merged internally, so that a resulting role will have all verbs specified by any plugin.
Mind that a `OWNER` has overall permissions, including all possible permissions for all plugins. Mind that a `OWNER` has overall permissions, including all possible permissions for all plugins.
| plugin | role | verbs | | plugin | role | verbs |
|-|-|-| |--------|------|-------|
| core | `READ` | `read`, `pull` | | core | `READ` | `read`, `pull` |
| core | `WRITE` | `read`, `pull`, `push` | | core | `WRITE` | `read`, `pull`, `push` |
| core | `OWNER` | `*` | | core | `OWNER` | `*` |

View File

@@ -4,12 +4,12 @@
The plugin can be compiled and packaged with the normal maven lifecycle: The plugin can be compiled and packaged with the normal maven lifecycle:
* clean - `mvn clean` - removes the target directory, can be combined with other phases
* compile - `mvn compile` - compiles Java code and creates the ui bundle * compile - `mvn compile` - compiles Java code and creates the ui bundle
* test - `mvn test` - executes test for Java and JavaScript * test - `mvn test` - executes test for Java and JavaScript
* package - `mvn package` - creates the final plugin bundle (smp package) in the target folder
* install - `mvn install` - installs the plugin (smp and jar) in the local maven repository * install - `mvn install` - installs the plugin (smp and jar) in the local maven repository
* package - `mvn package` - creates the final plugin bundle (smp package) in the target folder
* deploy - `mvn deploy` - deploys the plugin (smp and jar) to the configured remote repository * deploy - `mvn deploy` - deploys the plugin (smp and jar) to the configured remote repository
* clean - `mvn clean` - removes the target directory
For the development and testing the `serve` lifecycle of the plugin can be used: For the development and testing the `serve` lifecycle of the plugin can be used:
@@ -19,32 +19,63 @@ If the plugin was started with `mvn run`, the default browser of the os should b
If the browser does not start automatically, start it manually and go to [http://localhost:8081/scm](http://localhost:8081/scm). If the browser does not start automatically, start it manually and go to [http://localhost:8081/scm](http://localhost:8081/scm).
In this mode each change to web files (src/main/js or src/main/webapp), should trigger a reload of the browser with the made changes. In this mode each change to web files (src/main/js or src/main/webapp), should trigger a reload of the browser with the made changes.
If you compile a class (e.g.: with your íde from src/main/java to target/classes), If you compile a class (e.g.: with your IDE from src/main/java to target/classes),
the SCM-Manager context will restart automatically. So you can see your changes without restarting the server. the SCM-Manager context will restart automatically. So you can see your changes without restarting the server.
## Directory/File structure ## Directory & File structure
### Directories A quick look at the files and directories you'll see in a SCM-Manager project.
* src/main/java (contains the Java code) .
* src/main/resources (contains the the classpath resources) ├── node_modules/
* src/main/webapp (contains static files, which are accessible by the web ui) ├── src/
* src/main/js (contains the JavaScript code for the web ui, inclusive unit tests: suffixed with `.test.js`) | ├── main/
* src/test/java (contains the Java unit tests) | | ├── java/
* src/test/resources (containers classpath resources for unit tests) | | ├── js/
* target (build directory) | | └── resources/
| ├── test/
| | ├── java/
| | └── resources/
| └── target/
├── .editorconfig
├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── package.json
├── pom.xml
├── README.md
├── tsconfig.json
└── yarn.lock
### Files 1. **`node_modules/`**: This directory contains all of the modules of code that your project depends on (npm packages) are automatically installed.
* pom.xml (Maven configuration) 2. **`src/`**: This directory will contain all of the code related to what you see or not. `src` is a convention for “source code”.
* package.json (ui dependency/build configuration) 1. **`main/`**
* yarn.lock (ui dependency configuration) 1. **`java/`**: This directory contain the Java code.
* .eslintrc (ui linter configuration) 2. **`js/`**: This directory contains the JavaScript code for the web ui, inclusive unit tests: suffixed with `.test.ts`
* .flowconfig (ui typecheck configuration) 3. **`resources/`**: This directory contains the the classpath resources.
* .babelrc (ui javascript language level configuration) 2. **`test/`**
* src/main/resource/locale/(de|en)/plugins.json (i18n configuration, see [i18n for plugins](https://bitbucket.org/sdorra/scm-manager/wiki/i18n%20for%20Plugins)) 1. **`java/`**: This directory contains the Java unit tests.
* META-INF/scm/plugin.xml (plugin descriptor) 3. **`resources/`**: This directory contains classpath resources for unit tests.
3. **`target/`**: This is the build directory.
3. **`.editorconfig`**: This is a configuration file for your editor using [EditorConfig](https://editorconfig.org/). The file specifies a style that IDEs use for code.
4. **`.gitignore`**: This file tells git which files it should not track / not maintain a version history for.
5. **`CHANGELOG.md`**: All notable changes to this project will be documented in this file.
6. **`LICENSE`**: This project is licensed under the MIT license.
7. **`package.json`**: Here you can find the dependency/build configuration and dependencies for the frontend.
8. **`pom.xml`**: Maven configuration, which also includes things like metadata.
9. **`README.md`**: This file, containing useful reference information about the project.
10. **`tsconfig.json`** This is the typescript configuration file.
11. **`yarn.lock`**: This is the ui dependency configuration.
## UI Extensions ## UI Extensions
@@ -69,8 +100,8 @@ In order to extend the ui the plugin requires a `package.json` in the project ro
``` ```
The `main` field of the `package.json` describes the main entry point of the plugin. The `main` field of the `package.json` describes the main entry point of the plugin.
The file specified at `main` should use the `binder` from the [@scm-manager/ui-extensions](https://bitbucket.org/scm-manager/ui-extensions) in oder to bind its extensions. The file specified at `main` should use the `binder` from the [@scm-manager/ui-extensions](../../scm-ui/ui-extensions) in oder to bind its extensions.
For more information of extensions, binder and extension points, please have a look at the [readme](https://bitbucket.org/scm-manager/ui-extensions/src/master/README.md) of [@scm-manager/ui-extensions](https://bitbucket.org/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 the [@scm-manager/ui-bundler](https://bitbucket.org/scm-manager/ui-bundler).

View File

@@ -1,8 +1,10 @@
# 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)
### Main goals ### ### Main goals
* remove deprecated and unused stuff * remove deprecated and unused stuff
* remove old style listeners * remove old style listeners
* replace [guava eventbus](https://code.google.com/p/guava-libraries/wiki/EventBusExplained) with [legman](https://github.com/sdorra/legman) * replace [guava eventbus](https://code.google.com/p/guava-libraries/wiki/EventBusExplained) with [legman](https://github.com/sdorra/legman)
@@ -12,25 +14,25 @@ The development of SCM-Manager 2.0.0 is organised in [Trello Boards](https://tre
* use of [annotation processors](http://docs.oracle.com/javase/7/docs/api/javax/annotation/processing/Processor.html) instead of classpath scanning * use of [annotation processors](http://docs.oracle.com/javase/7/docs/api/javax/annotation/processing/Processor.html) instead of classpath scanning
* move non core modules (plugin-backend, maven plugins, etc.) to separate repositories * move non core modules (plugin-backend, maven plugins, etc.) to separate repositories
## [Milestone 2](https://trello.com/b/Afb3hoJ9/scm-manager-2-0-0-milestone-2) ## ## [Milestone 2](https://trello.com/b/Afb3hoJ9/scm-manager-2-0-0-milestone-2)
### Main goals ### ### Main goals
* use [apache shiro](http://shiro.apache.org/) everywhere * use [apache shiro](http://shiro.apache.org/) everywhere
* improve authentication * improve authentication
* improve user and group management * improve user and group management
* use permission instead of roles * use permission instead of roles
## [Milestone 3](https://trello.com/b/eLvqTGGe/scm-manager-2-0-0-milestone-3) ## ## [Milestone 3](https://trello.com/b/eLvqTGGe/scm-manager-2-0-0-milestone-3)
### Main goals ### ### Main goals
* completely new designed rest api * completely new designed rest api
## Milestone 4 ## ## Milestone 4
### Main goals ### ### Main goals
* completely new user interface * completely new user interface
## Milestone 5 ## ## Milestone 5
### Main goals ### ### Main goals
* improve repository api * improve repository api

View File

@@ -8,7 +8,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) for IntelliJ IDEA. There are plugins for a lot of IDEs and text editors. 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.
- 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:
@@ -24,4 +24,5 @@ Please mind the [EditorConfig](https://editorconfig.org/) file `.editorconf` in
- Though we will not define a maximum line length, you should break lines when they go beyond 120 characters or so. - Though we will not define a maximum line length, you should break lines when they go beyond 120 characters or so.
## JavaScript ## JavaScript
Take a look at our styleguide using `yarn serve` in ui-styles directory.
Take a look at our styleguide using `yarn serve` in [ui-styles](scm-ui/ui-styles) directory.

View File

@@ -1,13 +1,13 @@
# 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.
[TOC]
# Test Cases
The following states general test cases per HTTP Method and en expected return code as well as exemplary curl calls. The following states general test cases per HTTP Method and en expected return code as well as exemplary curl calls.
Resource-specifics are stated Resource-specifics are stated
## GET ## Test Cases
### GET
- Collection Resource (e.g. `/users`) - Collection Resource (e.g. `/users`)
- Without parameters -> 200 - Without parameters -> 200
@@ -23,13 +23,13 @@ Resource-specifics are stated
- Unknown field (e.g. `?fields=nam`) returns empty object - Unknown field (e.g. `?fields=nam`) returns empty object
- without permission (individual and collection (TODO)) -> 401 - without permission (individual and collection (TODO)) -> 401
## POST ### POST
- not existing -> 204 - not existing -> 204
- existing -> 409 - existing -> 409
- without permission -> 401 - without permission -> 401
## PUT ### PUT
- existing -> 204 - existing -> 204
- lastModified is updated - lastModified is updated
@@ -43,44 +43,37 @@ Resource-specifics are stated
- creationDate, lastModified --> 200 is liberally ignored - creationDate, lastModified --> 200 is liberally ignored
- Additional unmodifiable fields per resource, see examples - Additional unmodifiable fields per resource, see examples
## DELETE ### DELETE
- existing -> 204 - existing -> 204
- not existing -> 204 - not existing -> 204
- without permission -> 401 - without permission -> 401
# Exemplary calls & Resource specific test cases ## Exemplary calls & Resource specific test cases
In order to extend those tests to other Resources, have a look at the rest docs. Note that the Content Type is specific to each resource as well. In order to extend those tests to other Resources, have a look at the rest docs. Note that the Content Type is specific to each resource as well.
After calling `mvn -pl scm-webapp compile -P doc` the docs are available at `scm-webapp/target/restdocs/index.html`. After calling `mvn -pl scm-webapp compile -P doc` the docs are available at `scm-webapp/target/restdocs/index.html`.
### Users
## Users #### GET
### GET ##### Collections
#### Collections
```
#!bash
```bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/users?sortBy=admin&desc=true" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/users?sortBy=admin&desc=true"
``` ```
#### Individual ##### Individual
```
#!bash
```bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/users/scmadmin?fields=name,_links" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/users/scmadmin?fields=name,_links"
``` ```
### POST #### POST
```
#!bash
```bash
curl -vu scmadmin:scmadmin --data '{ curl -vu scmadmin:scmadmin --data '{
"properties": null, "properties": null,
"active": true, "active": true,
@@ -96,14 +89,12 @@ curl -vu scmadmin:scmadmin --data '{
--header "Content-Type: application/vnd.scmm-user+json;v=2" http://localhost:8081/scm/api/v2/users/ --header "Content-Type: application/vnd.scmm-user+json;v=2" http://localhost:8081/scm/api/v2/users/
``` ```
### PUT #### PUT
- Change unmodifiable fields - Change unmodifiable fields
- type? -> can be overwritten right now - type? -> can be overwritten right now
``` ```bash
#!bash
curl -X PUT -vu scmadmin:scmadmin --data '{ curl -X PUT -vu scmadmin:scmadmin --data '{
"properties": null, "properties": null,
"active": true, "active": true,
@@ -119,40 +110,31 @@ curl -X PUT -vu scmadmin:scmadmin --data '{
--header "Content-Type: application/vnd.scmm-user+json;v=2" http://localhost:8081/scm/api/v2/users/xyz --header "Content-Type: application/vnd.scmm-user+json;v=2" http://localhost:8081/scm/api/v2/users/xyz
``` ```
### DELETE #### DELETE
```
#!bash
```bash
curl -X DELETE -vu scmadmin:scmadmin http://localhost:8081/scm/api/v2/users/xyz curl -X DELETE -vu scmadmin:scmadmin http://localhost:8081/scm/api/v2/users/xyz
``` ```
### Groups
#### GET
## Groups ##### Collections
### GET
#### Collections
```
#!bash
```bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/groups/?sortBy=name&desc=true" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/groups/?sortBy=name&desc=true"
``` ```
#### Individual ##### Individual
``` ```bash
#!bash
curl -vu scmadmin:scmadmin http://localhost:8081/scm/api/v2/groups/firstGroup curl -vu scmadmin:scmadmin http://localhost:8081/scm/api/v2/groups/firstGroup
``` ```
### POST #### POST
``` ```bash
#!bash
curl -vu scmadmin:scmadmin --data '{ curl -vu scmadmin:scmadmin --data '{
"creationDate": "2018-06-28T07:42:45.281Z", "creationDate": "2018-06-28T07:42:45.281Z",
"lastModified": "2018-06-28T07:42:45.281Z", "lastModified": "2018-06-28T07:42:45.281Z",
@@ -169,14 +151,11 @@ curl -vu scmadmin:scmadmin --data '{
} }
}' \ }' \
--header "Content-Type: application/vnd.scmm-group+json" http://localhost:8081/scm/api/v2/groups/ --header "Content-Type: application/vnd.scmm-group+json" http://localhost:8081/scm/api/v2/groups/
``` ```
### PUT #### PUT
```
#!bash
```bash
curl -X PUT -vu scmadmin:scmadmin --data '{ curl -X PUT -vu scmadmin:scmadmin --data '{
"creationDate": "2018-06-28T07:42:45.281Z", "creationDate": "2018-06-28T07:42:45.281Z",
"lastModified": "2018-06-28T07:42:45.281Z", "lastModified": "2018-06-28T07:42:45.281Z",
@@ -195,40 +174,31 @@ curl -X PUT -vu scmadmin:scmadmin --data '{
--header "Content-Type: application/vnd.scmm-group+json" http://localhost:8081/scm/api/v2/groups/firstGroup --header "Content-Type: application/vnd.scmm-group+json" http://localhost:8081/scm/api/v2/groups/firstGroup
``` ```
### DELETE #### DELETE
```
#!bash
```bash
curl -X DELETE -vu scmadmin:scmadmin http://localhost:8081/scm/api/v2/groups/firstGroup curl -X DELETE -vu scmadmin:scmadmin http://localhost:8081/scm/api/v2/groups/firstGroup
``` ```
### Repositories
## Repositories #### GET
### GET ##### Collections
#### Collections
```
#!bash
```bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/?sortBy=name&pageSize=1&desc=true" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/?sortBy=name&pageSize=1&desc=true"
``` ```
#### Individual ##### Individual
``` ```bash
#!bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/42/arepo" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/42/arepo"
``` ```
### POST #### POST
```
#!bash
```bash
curl -vu scmadmin:scmadmin --data '{ curl -vu scmadmin:scmadmin --data '{
"contact": "a@con.tact", "contact": "a@con.tact",
"creationDate": "2018-07-11T08:54:44.569Z", "creationDate": "2018-07-11T08:54:44.569Z",
@@ -236,17 +206,14 @@ curl -vu scmadmin:scmadmin --data '{
"name": "arepo", "name": "arepo",
"type": "git" "type": "git"
}' --header "Content-Type: application/vnd.scmm-repository+json" http://localhost:8081/scm/api/v2/repositories }' --header "Content-Type: application/vnd.scmm-repository+json" http://localhost:8081/scm/api/v2/repositories
``` ```
### PUT #### PUT
- Change unmodifiable fields - Change unmodifiable fields
- type? -> Leads to 500 right now - type? -> Leads to 500 right now
``` ```bash
#!bash
curl -X PUT -vu scmadmin:scmadmin --data '{ curl -X PUT -vu scmadmin:scmadmin --data '{
"contact": "anoter@con.tact", "contact": "anoter@con.tact",
"creationDate": "2017-04-11T08:54:45.569Z", "creationDate": "2017-04-11T08:54:45.569Z",
@@ -258,20 +225,17 @@ curl -X PUT -vu scmadmin:scmadmin --data '{
}' --header "Content-Type: application/vnd.scmm-repository+json" http://localhost:8081/scm/api/v2/repositories/42/arepo }' --header "Content-Type: application/vnd.scmm-repository+json" http://localhost:8081/scm/api/v2/repositories/42/arepo
``` ```
### DELETE #### DELETE
```
#!bash
```bash
curl -X DELETE -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/42/anSVNRepo" curl -X DELETE -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/42/anSVNRepo"
``` ```
### Repository Permissions
## Repository Permissions
In this test we do not only test the REST endpoints themselves, but also the effect of the different permissions. In this test we do not only test the REST endpoints themselves, but also the effect of the different permissions.
### Prerequisites #### Prerequisites
For these tests we assume that you have created For these tests we assume that you have created
@@ -280,21 +244,17 @@ For these tests we assume that you have created
If your entities have other ids, change them according to your data. If your entities have other ids, change them according to your data.
### GET #### GET
This request should return an empty list of permissions: This request should return an empty list of permissions:
``` ```bash
#!bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/git/permissions/" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/git/permissions/"
``` ```
### POST / READ permission #### POST / READ permission
```
#!bash
```bash
curl -X POST -vu scmadmin:scmadmin --data '{ curl -X POST -vu scmadmin:scmadmin --data '{
"name": "user", "type":"READ" "name": "user", "type":"READ"
}' --header "Content-Type: application/vnd.scmm-permission+json" }' --header "Content-Type: application/vnd.scmm-permission+json"
@@ -303,17 +263,13 @@ curl -X POST -vu scmadmin:scmadmin --data '{
After this, you should be able to `GET` the repository with the user `user`: After this, you should be able to `GET` the repository with the user `user`:
``` ```bash
#!bash
curl -vu user:user "http://localhost:8081/scm/api/v2/repositories/scmadmin/git/permissions/" curl -vu user:user "http://localhost:8081/scm/api/v2/repositories/scmadmin/git/permissions/"
``` ```
Trying to change the repository using `PUT` with the user `user` should result in `403`: Trying to change the repository using `PUT` with the user `user` should result in `403`:
``` ```bash
#!bash
curl -vu user:user -X PUT --data '{ curl -vu user:user -X PUT --data '{
"contact": "zaphod.beeblebrox@hitchhiker.com", "contact": "zaphod.beeblebrox@hitchhiker.com",
"namespace":"scmadmin", "namespace":"scmadmin",
@@ -326,25 +282,19 @@ curl -vu user:user -X PUT --data '{
Reading the permissions of the repository with the user `user` should result in `403`: Reading the permissions of the repository with the user `user` should result in `403`:
``` ```bash
#!bash
curl -vu user:user "http://localhost:8081/scm/api/v2/repositories/scmadmin/git/permissions/" curl -vu user:user "http://localhost:8081/scm/api/v2/repositories/scmadmin/git/permissions/"
``` ```
The user should be able to `clone` the repository: The user should be able to `clone` the repository:
``` ```bash
#!bash
git clone http://owner@localhost:8081/scm/git/scmadmin/git git clone http://owner@localhost:8081/scm/git/scmadmin/git
``` ```
The user should *not* be able to `push` to the repository: The user should *not* be able to `push` to the repository:
``` ```bash
#!bash
cd git cd git
touch a touch a
git add a git add a
@@ -352,13 +302,11 @@ git commit -m a
git push git push
``` ```
### PUT / WRITE permission #### PUT / WRITE permission
It should be possible to change the permission for a specific user: It should be possible to change the permission for a specific user:
``` ```bash
#!bash
curl -X PUT -vu scmadmin:scmadmin --data '{ curl -X PUT -vu scmadmin:scmadmin --data '{
"name": "user", "name": "user",
"type":"WRITE" "type":"WRITE"
@@ -367,18 +315,14 @@ curl -X PUT -vu scmadmin:scmadmin --data '{
After this the user `user` should now be able to `push` the repository created and modified beforehand. After this the user `user` should now be able to `push` the repository created and modified beforehand.
``` ```bash
#!bash
cd git cd git
git push git push
``` ```
### OWNER permission #### OWNER permission
```
#!bash
```bash
curl -X PUT -vu scmadmin:scmadmin --data '{ curl -X PUT -vu scmadmin:scmadmin --data '{
"name": "user", "name": "user",
"type":"OWNER" "type":"OWNER"
@@ -387,68 +331,57 @@ curl -X PUT -vu scmadmin:scmadmin --data '{
After this, the user should be able to `GET` the permissions: After this, the user should be able to `GET` the permissions:
``` ```bash
#!bash
curl -vu user:user "http://localhost:8081/scm/api/v2/repositories/scmadmin/git/permissions/" curl -vu user:user "http://localhost:8081/scm/api/v2/repositories/scmadmin/git/permissions/"
``` ```
Additionally, the user should be able to change permissions: Additionally, the user should be able to change permissions:
``` ```bash
#!bash
curl -X PUT -vu scmadmin:scmadmin --data '{ curl -X PUT -vu scmadmin:scmadmin --data '{
"name": "user", "name": "user",
"type":"OWNER" "type":"OWNER"
}' --header "Content-Type: application/vnd.scmm-permission+json" "http://localhost:8081/scm/api/v2/repositories/scmadmin/git/permissions/user" }' --header "Content-Type: application/vnd.scmm-permission+json" "http://localhost:8081/scm/api/v2/repositories/scmadmin/git/permissions/user"
``` ```
### DELETE #### DELETE
Finally, a user with the role `OWNER` should be able to delete permissions: Finally, a user with the role `OWNER` should be able to delete permissions:
``` ```bash
#!bash
curl -X DELETE -vu user:user "http://localhost:8081/scm/api/v2/repositories/scmadmin/git/permissions/user" curl -X DELETE -vu user:user "http://localhost:8081/scm/api/v2/repositories/scmadmin/git/permissions/user"
``` ```
## Branches ### Branches
* In advance: POST repo. * In advance: POST repo.
* Clone Repo, add Branches * Clone Repo, add Branches
### GET #### GET
#### Collections ##### Collections
``` ```bash
#!bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/arepo/branches" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/arepo/branches"
``` ```
#### Individual ##### Individual
``` ```bash
#!bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/arepo/branches/master" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/arepo/branches/master"
``` ```
## Configuration ### Configuration
### GET #### GET
``` ```bash
#!bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/config" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/config"
``` ```
### PUT #### PUT
```
#!bash
```bash
curl -X PUT -vu scmadmin:scmadmin --data '{ curl -X PUT -vu scmadmin:scmadmin --data '{
"proxyPassword": "pw", "proxyPassword": "pw",
"proxyPort": 8082, "proxyPort": 8082,
@@ -473,19 +406,17 @@ curl -X PUT -vu scmadmin:scmadmin --data '{
}' --header "Content-Type: application/vnd.scmm-config+json" http://localhost:8081/scm/api/v2/config }' --header "Content-Type: application/vnd.scmm-config+json" http://localhost:8081/scm/api/v2/config
``` ```
## Git Plugin Configuration ### Git Plugin Configuration
### GET #### GET
``` ```bash
#!bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/config/git" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/config/git"
``` ```
### PUT #### PUT
``` ```bash
#!bash
curl -X PUT -vu scmadmin:scmadmin --data '{ curl -X PUT -vu scmadmin:scmadmin --data '{
"gcExpression": "0 0 14-6 ? * FRI-MON", "gcExpression": "0 0 14-6 ? * FRI-MON",
"repositoryDirectory": "new", "repositoryDirectory": "new",
@@ -493,19 +424,17 @@ curl -X PUT -vu scmadmin:scmadmin --data '{
}' --header "Content-Type: application/vnd.scmm-gitConfig+json" http://localhost:8081/scm/api/v2/config/git }' --header "Content-Type: application/vnd.scmm-gitConfig+json" http://localhost:8081/scm/api/v2/config/git
``` ```
## Hg Plugin Configuration ### Hg Plugin Configuration
### GET #### GET
``` ```bash
#!bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/config/hg" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/config/hg"
``` ```
### PUT #### PUT
``` ```bash
#!bash
curl -X PUT -vu scmadmin:scmadmin --data '{ curl -X PUT -vu scmadmin:scmadmin --data '{
"repositoryDirectory": "new", "repositoryDirectory": "new",
"disabled": true, "disabled": true,
@@ -516,22 +445,19 @@ curl -X PUT -vu scmadmin:scmadmin --data '{
"useOptimizedBytecode": true, "useOptimizedBytecode": true,
"showRevisionInId": true "showRevisionInId": true
}' --header "Content-Type: application/vnd.scmm-hgConfig+json" http://localhost:8081/scm/api/v2/config/hg }' --header "Content-Type: application/vnd.scmm-hgConfig+json" http://localhost:8081/scm/api/v2/config/hg
``` ```
### Auto Config #### Auto Config
#### Default ##### Default
``` ```bash
#!bash
curl -v -X PUT -u scmadmin:scmadmin "http://localhost:8081/scm/api/v2/config/hg/auto-configuration" curl -v -X PUT -u scmadmin:scmadmin "http://localhost:8081/scm/api/v2/config/hg/auto-configuration"
``` ```
#### Specific config ##### Specific config
``` ```bash
#!bash
curl -v -X PUT -u scmadmin:scmadmin --data '{ curl -v -X PUT -u scmadmin:scmadmin --data '{
"repositoryDirectory": "new", "repositoryDirectory": "new",
"disabled": true, "disabled": true,
@@ -544,113 +470,96 @@ curl -v -X PUT -u scmadmin:scmadmin --data '{
}' --header "Content-Type: application/vnd.scmm-hgConfig+json" "http://localhost:8081/scm/api/v2/config/hg/auto-configuration" }' --header "Content-Type: application/vnd.scmm-hgConfig+json" "http://localhost:8081/scm/api/v2/config/hg/auto-configuration"
``` ```
### Installations #### Installations
#### Hg ##### Hg
``` ```bash
#!bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/config/hg/installations/hg" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/config/hg/installations/hg"
``` ```
#### Python ##### Python
``` ```bash
#!bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/config/hg/installations/python" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/config/hg/installations/python"
``` ```
### Packages #### Packages
##### GET
```bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/config/hg/packages"
```
##### PUT
See [here](https://download.scm-manager.org/pkg/mercurial/packages.xml) for available packages. Will only work on Windows!
```bash
curl -X PUT -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/config/hg/packages/4338c4_x64"
```
### Svn Plugin Configuration
#### GET #### GET
``` ```bash
#!bash curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/config/svn"
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/config/hg/packages"
``` ```
#### PUT #### PUT
See [here](https://download.scm-manager.org/pkg/mercurial/packages.xml) for available packages. Will only work on Windows! ```bash
```
#!bash
curl -X PUT -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/config/hg/packages/4338c4_x64"
```
## Svn Plugin Configuration
### GET
```
#!bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/config/svn"
```
### PUT
```
#!bash
curl -X PUT -vu scmadmin:scmadmin --data '{ curl -X PUT -vu scmadmin:scmadmin --data '{
"repositoryDirectory": "new", "repositoryDirectory": "new",
"disabled": true, "disabled": true,
"enabledGZip": true, "enabledGZip": true,
"compatibility": "PRE15" "compatibility": "PRE15"
}' --header "Content-Type: application/vnd.scmm-svnConfig+json" http://localhost:8081/scm/api/v2/config/svn }' --header "Content-Type: application/vnd.scmm-svnConfig+json" http://localhost:8081/scm/api/v2/config/svn
``` ```
## Repository Types ### Repository Types
### GET #### GET
#### Collections ##### Collections
```
#!bash
```bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repository-types" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repository-types"
``` ```
#### Individual ##### Individual
```
#!bash
```bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repository-types/hg" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repository-types/hg"
``` ```
## Tags ### Tags
### GET #### GET
Pre-conditions: the git repository "HeartOfGold-git" exists and contains tags example v1.0 and v1.1 Pre-conditions: the git repository "HeartOfGold-git" exists and contains tags example v1.0 and v1.1
#### Collections ##### Collections
```
#!bash
```bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/HeartOfGold-git/tags/" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/HeartOfGold-git/tags/"
``` ```
#### Individual ##### Individual
``` ```bash
#!bash
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/HeartOfGold-git/tags/v1.1" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/HeartOfGold-git/tags/v1.1"
``` ```
## Content ### Content
### git #### git
#### Prepare ##### Prepare
``` ```bash
#!bash
curl -vu scmadmin:scmadmin --data '{ curl -vu scmadmin:scmadmin --data '{
"contact": "a@con.tact", "contact": "a@con.tact",
"creationDate": "2018-07-11T08:54:44.569Z", "creationDate": "2018-07-11T08:54:44.569Z",
@@ -669,10 +578,10 @@ git add .
git commit -m 'Msg' git commit -m 'Msg'
git push git push
``` ```
#### Query and assert
``` ##### Query and assert
#!bash
```bash
# Assert Content type text plain # Assert Content type text plain
curl -X HEAD -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/arepo/content/$(git rev-parse HEAD)/b.txt" 2>&1 | grep Content-Type curl -X HEAD -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/arepo/content/$(git rev-parse HEAD)/b.txt" 2>&1 | grep Content-Type
# Assert file content "bbb" # Assert file content "bbb"
@@ -689,12 +598,11 @@ curl -X HEAD -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositorie
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/arepo/content/$(git rev-parse HEAD)/RestActionResult.java" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/arepo/content/$(git rev-parse HEAD)/RestActionResult.java"
``` ```
### hg #### hg
#### Prepare ##### Prepare
``` ```bash
#!bash
curl -vu scmadmin:scmadmin --data '{ curl -vu scmadmin:scmadmin --data '{
"contact": "a@con.tact", "contact": "a@con.tact",
"creationDate": "2018-07-11T08:54:44.569Z", "creationDate": "2018-07-11T08:54:44.569Z",
@@ -713,11 +621,9 @@ hg commit -m 'msg'
hg push hg push
``` ```
#### Query and assert ##### Query and assert
```
#!bash
```bash
# Assert Content type text plain # Assert Content type text plain
curl -X HEAD -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/hgrepo/content/$(hg identify --id)/b.txt" 2>&1 | grep Content-Type curl -X HEAD -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/hgrepo/content/$(hg identify --id)/b.txt" 2>&1 | grep Content-Type
# Assert file content "bbb" # Assert file content "bbb"
@@ -734,12 +640,11 @@ curl -X HEAD -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositorie
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/hgrepo/content/$(hg identify --id)/RestActionResult.java" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/hgrepo/content/$(hg identify --id)/RestActionResult.java"
``` ```
### svn #### svn
#### Prepare ##### Prepare
``` ```bash
#!bash
curl -vu scmadmin:scmadmin --data '{ curl -vu scmadmin:scmadmin --data '{
"contact": "a@con.tact", "contact": "a@con.tact",
"creationDate": "2018-07-11T08:54:44.569Z", "creationDate": "2018-07-11T08:54:44.569Z",
@@ -757,10 +662,9 @@ svn add ./*
svn commit --non-interactive --no-auth-cache --username scmadmin --password scmadmin -m 'msg' svn commit --non-interactive --no-auth-cache --username scmadmin --password scmadmin -m 'msg'
``` ```
#### Query and assert ##### Query and assert
``` ```bash
#!bash
REVISION=$(svn --non-interactive --no-auth-cache --username scmadmin --password scmadmin info -r 'HEAD' --show-item revision | xargs echo -n) REVISION=$(svn --non-interactive --no-auth-cache --username scmadmin --password scmadmin info -r 'HEAD' --show-item revision | xargs echo -n)
# Assert Content type text plain # Assert Content type text plain
curl -X HEAD -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/svnrepo/content/${REVISION}/b.txt" 2>&1 | grep Content-Type curl -X HEAD -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/svnrepo/content/${REVISION}/b.txt" 2>&1 | grep Content-Type
@@ -778,14 +682,13 @@ curl -X HEAD -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositorie
curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/svnrepo/content/${REVISION}/RestActionResult.java" curl -vu scmadmin:scmadmin "http://localhost:8081/scm/api/v2/repositories/scmadmin/svnrepo/content/${REVISION}/RestActionResult.java"
``` ```
## Access Token ### Access Token
### Admin #### Admin
#### Output all links of index resource ##### Output all links of index resource
``` ```bash
#!bash
TOKEN=$(curl -s 'http://localhost:8081/scm/api/v2/auth/access_token' -H 'content-type: application/json' --data '{ TOKEN=$(curl -s 'http://localhost:8081/scm/api/v2/auth/access_token' -H 'content-type: application/json' --data '{
"cookie": false, "cookie": false,
"grant_type": "password", "grant_type": "password",
@@ -795,12 +698,11 @@ TOKEN=$(curl -s 'http://localhost:8081/scm/api/v2/auth/access_token' -H 'content
curl -s http://localhost:8081/scm/api/v2/ -H "Authorization: Bearer ${TOKEN}" | jq curl -s http://localhost:8081/scm/api/v2/ -H "Authorization: Bearer ${TOKEN}" | jq
``` ```
#### Output only "config" and default logged in links ##### Output only "config" and default logged in links
default logged in links = self, uiPlugins, me, logout default logged in links = self, uiPlugins, me, logout
``` ```bash
#!bash
TOKEN=$(curl -s 'http://localhost:8081/scm/api/v2/auth/access_token' -H 'content-type: application/json' --data '{ TOKEN=$(curl -s 'http://localhost:8081/scm/api/v2/auth/access_token' -H 'content-type: application/json' --data '{
"cookie": false, "cookie": false,
"grant_type": "password", "grant_type": "password",
@@ -813,13 +715,11 @@ TOKEN=$(curl -s 'http://localhost:8081/scm/api/v2/auth/access_token' -H 'content
curl -s http://localhost:8081/scm/api/v2/ -H "Authorization: Bearer ${TOKEN}" | jq curl -s http://localhost:8081/scm/api/v2/ -H "Authorization: Bearer ${TOKEN}" | jq
``` ```
### non-Admin #### non-Admin
Create non-admin user Create non-admin user
``` ```bash
#!bash
curl -vu scmadmin:scmadmin --data '{ curl -vu scmadmin:scmadmin --data '{
"active": true, "active": true,
"admin": false, "admin": false,
@@ -832,12 +732,11 @@ curl -vu scmadmin:scmadmin --data '{
--header "Content-Type: application/vnd.scmm-user+json;v=2" http://localhost:8081/scm/api/v2/users/ --header "Content-Type: application/vnd.scmm-user+json;v=2" http://localhost:8081/scm/api/v2/users/
``` ```
#### Standard permissions of a logged in user without additional permissions ##### Standard permissions of a logged in user without additional permissions
Standard links of a logged in user = self, uiPlugins, me, logout, autocomplete, repositories Standard links of a logged in user = self, uiPlugins, me, logout, autocomplete, repositories
``` ```bash
#!bash
TOKEN=$(curl -s 'http://localhost:8081/scm/api/v2/auth/access_token' -H 'content-type: application/json' --data '{ TOKEN=$(curl -s 'http://localhost:8081/scm/api/v2/auth/access_token' -H 'content-type: application/json' --data '{
"cookie": false, "cookie": false,
"grant_type": "password", "grant_type": "password",
@@ -847,14 +746,12 @@ TOKEN=$(curl -s 'http://localhost:8081/scm/api/v2/auth/access_token' -H 'content
curl -s http://localhost:8081/scm/api/v2/ -H "Authorization: Bearer ${TOKEN}" | jq curl -s http://localhost:8081/scm/api/v2/ -H "Authorization: Bearer ${TOKEN}" | jq
``` ```
#### Scope requests permission the user doesn't have ##### Scope requests permission the user doesn't have
This should not retrun `configuration` links, even though this scope was requested, because the user does not have the configuration permission. Otherwise this would be a major security flaw! This should not retrun `configuration` links, even though this scope was requested, because the user does not have the configuration permission. Otherwise this would be a major security flaw!
Compare to admin tests above. Compare to admin tests above.
``` ```bash
#!bash
TOKEN=$(curl -s 'http://localhost:8081/scm/api/v2/auth/access_token' -H 'content-type: application/json' --data '{ TOKEN=$(curl -s 'http://localhost:8081/scm/api/v2/auth/access_token' -H 'content-type: application/json' --data '{
"cookie": false, "cookie": false,
"grant_type": "password", "grant_type": "password",

View File

@@ -3,11 +3,11 @@
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.
| | Don't forget to | | | Don't forget to |
|-|-| |---|-----------------|
| ☐ | use imports with `@scm-manager`, eg. `@scm-manager/ui-components` | | ☐ | use imports with `@scm-manager`, eg. `@scm-manager/ui-components` |
| ☐ | let buttons have whitespace | | ☐ | let buttons have whitespace |
| ☐ | update german translation | | ☐ | update german translation |
| ☐ | 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 here: https://bitbucket.org/sdorra/scm-manager/wiki/v2/Extension-Points | | ☐ | document [extension points in wiki](extension-points.md) |

View File

@@ -1,5 +1,4 @@
WebHook Plugin # WebHook Plugin
--------------
### Installation ### Installation
@@ -15,27 +14,24 @@ You could now insert a new webhook for a repository. The url pattern is
the url of the remote webserver. It is possible to use placeholders in the url of the remote webserver. It is possible to use placeholders in
the url: the url:
- \${repository.id} - the id of the current repository - `${repository.id}` - the id of the current repository
- \${repository.name} - the name of the current repository - `${repository.name}` - the name of the current repository
- \${first.id} - the if of the first changeset in the push - `${first.id}` - the if of the first changeset in the push
- \${last.author.name} - the name of the author of the last changeset - `${last.author.name}` - the name of the author of the last changeset in the commit
in the commit
If you enable the \"Execute on every commit\" checkbox the last and If you enable the \"Execute on every commit\" checkbox the last and
first patterns are not available, but you could use the commit pattern first patterns are not available, but you could use the commit pattern
e.g: e.g:
- \${changeset.id} - The id of the current changeset - `${changeset.id}` - The id of the current changeset
- \${changeset.author.name} - The name of the author of the current - `${changeset.author.name}` - The name of the author of the current changeset
changeset
If you need more informations about the available patterns have a look If you need more informations about the available patterns have a look
at the javadoc. Ever method which starts with a get could be used in a at the javadoc. Ever method which starts with a get could be used in a
pattern (Repository.getName() would be \${repository.name}): pattern (Repository.getName() would be \${repository.name}):
- [repository](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/Repository.html "wikilink") - [repository](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/Repository.html)
- [changeset, first and - [changeset, first and last](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/Changeset.html)
last](http://docs.scm-manager.org/apidocs/latest/sonia/scm/repository/Changeset.html "wikilink")
Since version 1.4 of the webhook-plugin there is also a global Since version 1.4 of the webhook-plugin there is also a global
configuration at \"Config-\>General\". Global WebHooks are executed for configuration at \"Config-\>General\". Global WebHooks are executed for

View File

@@ -1 +1 @@
Plugins moved see https://bitbucket.org/sdorra/scm-manager/wiki/scm-plugins for details. Plugins moved see https://github.com/scm-manager/scm-manager/blob/develop/docs/scm-plugins.md for details.

View File

@@ -70,7 +70,7 @@ public class DBFormatHealthCheck extends DirectoryHealthCheck
/** Field description */ /** Field description */
private static final HealthCheckFailure INCOMPATIBLE_DB_FORMAT = private static final HealthCheckFailure INCOMPATIBLE_DB_FORMAT =
new HealthCheckFailure("AnOTx99ex1", "Incompatible DB Format", new HealthCheckFailure("AnOTx99ex1", "Incompatible DB Format",
"https://bitbucket.org/sdorra/scm-manager/wiki/healthchecks/svn-incompatible-dbformat", "https://github.com/scm-manager/scm-manager/blob/develop/docs/healthchecks/svn-incompatible-dbformat.md",
"The subversion db format is incompatible with the svn version used within scm-manager."); "The subversion db format is incompatible with the svn version used within scm-manager.");
/** Field description */ /** Field description */

View File

@@ -68,6 +68,14 @@ const ContentRight = styled.div`
margin-left: auto; margin-left: auto;
`; `;
const RightMarginDiv = styled.div`
margin-right: 0.5rem;
`;
const InheritFlexShrinkDiv = styled.div`
flex-shrink: inherit;
`;
export default class CardColumn extends React.Component<Props> { export default class CardColumn extends React.Component<Props> {
createLink = () => { createLink = () => {
const { link, action } = this.props; const { link, action } = this.props;
@@ -105,8 +113,10 @@ export default class CardColumn extends React.Component<Props> {
<ContentRight>{contentRight}</ContentRight> <ContentRight>{contentRight}</ContentRight>
</div> </div>
<FooterWrapper className={classNames("level", "is-flex")}> <FooterWrapper className={classNames("level", "is-flex")}>
<div className="level-left is-hidden-mobile">{footerLeft}</div> <RightMarginDiv className="level-left is-hidden-mobile">{footerLeft}</RightMarginDiv>
<div className="level-right is-mobile is-marginless">{footerRight}</div> <InheritFlexShrinkDiv className="level-right is-block is-mobile is-marginless shorten-text">
{footerRight}
</InheritFlexShrinkDiv>
</FooterWrapper> </FooterWrapper>
</FlexFullHeight> </FlexFullHeight>
</NoEventWrapper> </NoEventWrapper>

View File

@@ -34455,7 +34455,7 @@ exports[`Storyshots RepositoryEntry Avatar EP 1`] = `
className="CardColumn__FooterWrapper-sc-1w6lsih-3 jlTqlS level is-flex" className="CardColumn__FooterWrapper-sc-1w6lsih-3 jlTqlS level is-flex"
> >
<div <div
className="level-left is-hidden-mobile" className="CardColumn__RightMarginDiv-sc-1w6lsih-6 dbLPPh level-left is-hidden-mobile"
> >
<a <a
className="RepositoryEntryLink__PointerEventsLink-sc-1hpqj0w-0 gtboNN level-item" className="RepositoryEntryLink__PointerEventsLink-sc-1hpqj0w-0 gtboNN level-item"
@@ -34495,7 +34495,7 @@ exports[`Storyshots RepositoryEntry Avatar EP 1`] = `
</a> </a>
</div> </div>
<div <div
className="level-right is-mobile is-marginless" className="CardColumn__InheritFlexShrinkDiv-sc-1w6lsih-7 jkwBTE level-right is-block is-mobile is-marginless shorten-text"
> >
<small <small
className="level-item" className="level-item"
@@ -34572,7 +34572,7 @@ exports[`Storyshots RepositoryEntry Before Title EP 1`] = `
className="CardColumn__FooterWrapper-sc-1w6lsih-3 jlTqlS level is-flex" className="CardColumn__FooterWrapper-sc-1w6lsih-3 jlTqlS level is-flex"
> >
<div <div
className="level-left is-hidden-mobile" className="CardColumn__RightMarginDiv-sc-1w6lsih-6 dbLPPh level-left is-hidden-mobile"
> >
<a <a
className="RepositoryEntryLink__PointerEventsLink-sc-1hpqj0w-0 gtboNN level-item" className="RepositoryEntryLink__PointerEventsLink-sc-1hpqj0w-0 gtboNN level-item"
@@ -34612,7 +34612,7 @@ exports[`Storyshots RepositoryEntry Before Title EP 1`] = `
</a> </a>
</div> </div>
<div <div
className="level-right is-mobile is-marginless" className="CardColumn__InheritFlexShrinkDiv-sc-1w6lsih-7 jkwBTE level-right is-block is-mobile is-marginless shorten-text"
> >
<small <small
className="level-item" className="level-item"
@@ -34686,7 +34686,7 @@ exports[`Storyshots RepositoryEntry Default 1`] = `
className="CardColumn__FooterWrapper-sc-1w6lsih-3 jlTqlS level is-flex" className="CardColumn__FooterWrapper-sc-1w6lsih-3 jlTqlS level is-flex"
> >
<div <div
className="level-left is-hidden-mobile" className="CardColumn__RightMarginDiv-sc-1w6lsih-6 dbLPPh level-left is-hidden-mobile"
> >
<a <a
className="RepositoryEntryLink__PointerEventsLink-sc-1hpqj0w-0 gtboNN level-item" className="RepositoryEntryLink__PointerEventsLink-sc-1hpqj0w-0 gtboNN level-item"
@@ -34726,7 +34726,7 @@ exports[`Storyshots RepositoryEntry Default 1`] = `
</a> </a>
</div> </div>
<div <div
className="level-right is-mobile is-marginless" className="CardColumn__InheritFlexShrinkDiv-sc-1w6lsih-7 jkwBTE level-right is-block is-mobile is-marginless shorten-text"
> >
<small <small
className="level-item" className="level-item"
@@ -34800,7 +34800,7 @@ exports[`Storyshots RepositoryEntry Quick Link EP 1`] = `
className="CardColumn__FooterWrapper-sc-1w6lsih-3 jlTqlS level is-flex" className="CardColumn__FooterWrapper-sc-1w6lsih-3 jlTqlS level is-flex"
> >
<div <div
className="level-left is-hidden-mobile" className="CardColumn__RightMarginDiv-sc-1w6lsih-6 dbLPPh level-left is-hidden-mobile"
> >
<a <a
className="RepositoryEntryLink__PointerEventsLink-sc-1hpqj0w-0 gtboNN level-item" className="RepositoryEntryLink__PointerEventsLink-sc-1hpqj0w-0 gtboNN level-item"
@@ -34847,7 +34847,7 @@ exports[`Storyshots RepositoryEntry Quick Link EP 1`] = `
</a> </a>
</div> </div>
<div <div
className="level-right is-mobile is-marginless" className="CardColumn__InheritFlexShrinkDiv-sc-1w6lsih-7 jkwBTE level-right is-block is-mobile is-marginless shorten-text"
> >
<small <small
className="level-item" className="level-item"

View File

@@ -87,8 +87,12 @@ class PluginEntry extends React.Component<Props, State> {
}); });
}; };
createFooterLeft = (plugin: Plugin) => {
return <small>{plugin.version}</small>;
};
createFooterRight = (plugin: Plugin) => { createFooterRight = (plugin: Plugin) => {
return <small className="level-item">{plugin.author}</small>; return <small className="level-item is-block shorten-text">{plugin.author}</small>;
}; };
isInstallable = () => { isInstallable = () => {
@@ -172,8 +176,8 @@ class PluginEntry extends React.Component<Props, State> {
const { plugin } = this.props; const { plugin } = this.props;
const avatar = this.createAvatar(plugin); const avatar = this.createAvatar(plugin);
const actionbar = this.createActionbar(); const actionbar = this.createActionbar();
const footerLeft = this.createFooterLeft(plugin);
const footerRight = this.createFooterRight(plugin); const footerRight = this.createFooterRight(plugin);
const modal = this.renderModal(); const modal = this.renderModal();
return ( return (
@@ -184,6 +188,7 @@ class PluginEntry extends React.Component<Props, State> {
title={plugin.displayName ? <strong>{plugin.displayName}</strong> : <strong>{plugin.name}</strong>} title={plugin.displayName ? <strong>{plugin.displayName}</strong> : <strong>{plugin.name}</strong>}
description={plugin.description} description={plugin.description}
contentRight={plugin.pending || plugin.markedForUninstall ? this.createPendingSpinner() : actionbar} contentRight={plugin.pending || plugin.markedForUninstall ? this.createPendingSpinner() : actionbar}
footerLeft={footerLeft}
footerRight={footerRight} footerRight={footerRight}
/> />
{modal} {modal}

View File

@@ -295,9 +295,9 @@ public class DefaultCGIExecutor extends AbstractCGIExecutor
env.set(ENV_AUTH_TYPE, request.getAuthType()); env.set(ENV_AUTH_TYPE, request.getAuthType());
env.set(ENV_CONTENT_LENGTH, createCGIContentLength(request, contentLengthWorkaround)); env.set(ENV_CONTENT_LENGTH, createCGIContentLength(request, contentLengthWorkaround));
/** /*
* Decode PATH_INFO * Decode PATH_INFO
* https://bitbucket.org/sdorra/scm-manager/issue/79/hgweb-decoding-issue * https://github.com/scm-manager/scm-manager/issues/79
*/ */
if (Util.isNotEmpty(pathInfo)) if (Util.isNotEmpty(pathInfo))
{ {

3201
yarn.lock

File diff suppressed because it is too large Load Diff