scm-manager / scm-manager Goto Github PK
View Code? Open in Web Editor NEWThe easiest way to share and manage your Git, Mercurial and Subversion repositories over http.
Home Page: https://scm-manager.org
License: MIT License
The easiest way to share and manage your Git, Mercurial and Subversion repositories over http.
Home Page: https://scm-manager.org
License: MIT License
Original report by Michał Sznajder (Bitbucket: michalsznajder, GitHub: michalsznajder).
As a result of <<issue 28>> scm-manager is able to authenticate users using DOMAIN\user scheme. This enables users to login into scm-manager not only using primary domain but also using trusted domain of their network.
With <<issue 28>> some basic code for detecting trusted domains was added but it seems it does not work in my case. I will try to provide some input on my AD topology.
Original report by Daniel Jilg (Bitbucket: winsmith, GitHub: winsmith).
Hi,
I'm trying to use scm-manager with the Active Directory plugin. I've installed it, but could not find any configuration options in the UI. Could you please give me some pointers where I should go next in order to get this to work?
So far I've done the following, on a freshly installed Windows 7 VM:
none of those worked. Help me please?
Original report by Anonymous.
Im getting a status error 200, and 401 when trying to view the source and commits to a repo in scm.
Im using
output of /etc/issue
Debian GNU/Linux 5.0 \n \l
Original report by ChrisM (Bitbucket: Krimsar, GitHub: Krimsar).
When you let scm-manager sit in the background for a while, let the session timeout, and then start using it again, you get a lot of different errors.
Thanks for this great app, it was exactly what we were looking for!
Original report by David M. Carr (Bitbucket: [David M. Carr](https://bitbucket.org/David M. Carr), ).
When attempting to browse an hg repository on Windows XP, I got the attached error.
Original report by Anonymous.
I downloaded scm-manager and started it but there is an issue in case I try to read the plugins. I'm able to see the xml file in case I'm using my browser
Webapp is running and I can login
Message: Fehler: Es konnten keine Daten geladen werden. Server-Status: 500
From the cmd:
SCHWERWIEGEND: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container
sonia.scm.plugin.PluginLoadException: java.net.ConnectException: Connection timed out: connect
at sonia.scm.plugin.DefaultPluginManager.getPluginCente(DefaultPluginManager.java:562)
Original report by Sebastian Sdorra (Bitbucket: sdorra, GitHub: sdorra).
"git svn clone" failed with error 500 on mysgit, see https://groups.google.com/forum/#!topic/scmmanager/FFJk0n-9HTE.
Original report by StephanO (Bitbucket: StephanO, GitHub: StephanO).
I have noticed this problem on our Windows 2003 server with Tomcat 7.0.20 and the NioHttpConnector.
When I perform a SVN checkout and abort the checkout on the client, the server keeps dumping data to the socket. For some reason the client side connection abort does not trigger the server socket to close. I use the NIO connector, have not tested it with the 'normal' http connector.
Original report by StephanO (Bitbucket: StephanO, GitHub: StephanO).
When opening the plugin page the installed plugins do not show when scm manager is running on a machine without Internet connectivity.
Original report by StephanO (Bitbucket: StephanO, GitHub: StephanO).
When accessing the plugin page I receive a HTTP 503 error.
Original report by Sergio Paganoni (Bitbucket: wizche, GitHub: wizche).
Hi Sebastian,
sorry to push you so much work here :)
It already happens to me a couple of time that the repositories disappears from the Repository List on the Web interface (I can see the repository in the repository form) but I can always access it via his url: http://IP/scm/hg/MyRepo
How can I recover from this? Are the repositories configurations stored in some kind of XML (I try to look but I found nothing)
To solve this I have to delete manually the repo files (rm -rf repo/), recreate the repo using the web interface and repush all changes from the client.
Original report by Anonymous.
I can't find any information about the LDAP configuration.
I configured LDAP server in the configuration part but I can't check if this is working.
How can I add a user with using LDAP instead of creating an account?
Thanks!
Original report by Anonymous.
Hi,
I just changed the SCM manager settings to use https on an different port but now I can't reach the SCM Manager again.
using https://host:sslport/scm
any idea?
From the system output I can't see any entry about sslport (using 8001).
Just the http port is shown at the end:
2011-05-16 14:06:37.951:INFO::Started [email protected]:8000
but http://hostname:port/scm is not working as well.
Thanks!
Original report by tarul (Bitbucket: tarul, GitHub: tarul).
Hello,
I have just tried to push commits on git repository hosted by scm-manager (it's a very good web app, thanks!).
I can clone, but if I try push I only this response :
"Everything up-to-date"
But, commits have not pushed.
Regards
Edit : i will forget, i have 1.7.4.4 of git.
Original report by Anonymous.
The command "svn move" fail with a java.lang.NoSuchFieldError :
java.lang.NoSuchFieldError: REVISION at org.tmatesoft.svn.core.internal.server.dav.handlers.DAVMergeInfoRequest.init(DAVMergeInfoRequest.java:68)
at org.tmatesoft.svn.core.internal.server.dav.handlers.ServletDAVHandler.readInput(ServletDAVHandler.java:1803)
at org.tmatesoft.svn.core.internal.server.dav.handlers.DAVReportHandler.execute(DAVReportHandler.java:163)
at org.tmatesoft.svn.core.internal.server.dav.DAVServlet.service(DAVServlet.java:133) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)
at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168)
at com.google.inject.servlet.FilterChainInvocation.doFilter(Filte) in response to REPORT request for '/scm/svn/repo_name/!svn/bc/0/folder_to_move'
Original report by mbickel (Bitbucket: mbickel, GitHub: mbickel).
Original report by Anonymous.
All the urls point to http://mydomain:443/scm/repositoryname instead of https://mydomain/scm/repositoryname. I haven't found a solution to display the correct urls while using mod_proxy yet.
Original report by lcutler57 (Bitbucket: lcutler57, ).
There are 2 git repositories, ZebOS and ERS.
With no tester user in SCM manager, checkouts to ERS and ZebOS fail. This is as expected.
With "tester" user permissions, write, for ERS and not ZebOS (no logins for anyone in ZebOS), "tester" was able to clone ZebOS and ERS. Tester should only be able to clone ERS.
Original report by Thierry L. (Bitbucket: [Thierry L.](https://bitbucket.org/Thierry L.), ).
Hi,
I got the following message when i tried to push a commit on repository hosted by scm-manager via Egit.
// An internal Exception occured during push: http://scmadmin@myhost:8080/scm/git/test: 401 Authorization Required//
My repository is configured with "write" access for the scmadmin user
When i tried again with msysgit it worked.
However the worakaround described in the following issues on Egit bugzilla didn't work
https://bugs.eclipse.org/bugs/show_bug.cgi?id=342592
https://bugs.eclipse.org/bugs/show_bug.cgi?id=339220
The url with password inside failed also
http://scmadmin:scmadmin@myhost:8080/scm/git/test
The scm-manager consol diplays:
//14:21:04.462 [qtp11108810-15] INFO sonia.scm.web.filter.PermissionFilter - write access to repostitory test for user anonymous denied
//
scm-admin and Egit are running on Windows XP
Could you help me ?
Is it just a issue with Egit or with your software ?
Other question: does your software use dumb http protocol or smart ?
Best regards
Original report by Anonymous.
NullPointerException occurred when you go inside the hg repositories, servlet filter and Basic Authentication, with empty username/password.
Original report by Anonymous.
Hi,
I tried to deploy the SCM Manager war on Apache Tomcat 7.0.19 but it failed with the following error in the catalina.log
SEVERE: Exception starting filter guiceFilter
com.google.inject.ProvisionException: Guice provision errors:
1 error
at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:987)
at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1009)
at com.google.inject.servlet.ServletDefinition.init(ServletDefinition.java:108)
at com.google.inject.servlet.ManagedServletPipeline.init(ManagedServletPipeline.java:82)
at com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:102)
at com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:172)
at sonia.scm.boot.BootstrapFilter.init(BootstrapFilter.java:134)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:273)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:254)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)
at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:98)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4584)
at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5262)
at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5257)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at java.io.File.(Unknown Source)
at sonia.scm.template.FreemarkerTemplateHandler.(FreemarkerTemplateHandler.java:100)
at sonia.scm.template.FreemarkerTemplateHandler$$FastClassByGuice$$33168a0b.newInstance()
at com.google.inject.internal.cglib.reflect.$FastConstructor.newInstance(FastConstructor.java:40)
at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:60)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.Scopes$1$1.get(Scopes.java:65)
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:54)
at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.Scopes$1$1.get(Scopes.java:65)
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
at com.google.inject.internal.InjectorImpl$4$1.call(InjectorImpl.java:978)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)
at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:974)
... 18 more
4-aug-2011 10:48:12 org.apache.catalina.core.StandardContext startInternal
SEVERE: Error filterStart
4-aug-2011 10:48:12 org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [] startup failed due to previous errors
4-aug-2011 10:48:13 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [] appears to have started a thread named [com.google.inject.internal.util.$Finalizer] but has failed to stop it. This is very likely to create a memory leak.
4-aug-2011 10:48:13 org.apache.catalina.startup.HostConfig deployDescriptor
I am running on Windows 7 x64 bit on a 32bit Tomcat 7.0.19 and JDK 1.6.0_25.
Original report by Stanisław Pitucha (Bitbucket: [Stanisław Pitucha](https://bitbucket.org/Stanisław Pitucha), ).
When I try building from source, only the x86_32 wrapper is detected by the bin/scm-server
script (standalone build). The execution stops later on when the script is unable to find libwrapper-linux-x86-64.so
The script works after I download both the wrapper
and libwrapper.so
from the appropriate package from upstream, but I guess they should be included locally too.
Original report by Sergio Paganoni (Bitbucket: wizche, GitHub: wizche).
Hi All,
I used for almost a couple of months scm-manager and it was really helpfully, now I'd like to migrate to HTTPS the comunication.
I've configured the relative section in server-config.xml:
#!XML
<Call name="addConnector">
<Arg>
<New class="org.mortbay.jetty.security.SslSocketConnector">
<Set name="Port">443</Set>
<Set name="maxIdleTime">30000</Set>
<Set name="keystore"><SystemProperty name="jetty.home" default="." />/home/wizche/scm-server/ssh/keystore</Set>
<Set name="password">OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</Set>
<Set name="keyPassword">OBF:1u2u1wml1z7s1z7a1wnl1u2g</Set>
<Set name="truststore"><SystemProperty name="jetty.home" default="." />/home/wizche/scm-server/ssh/keystore</Set>
<Set name="trustPassword">OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</Set>
</New>
</Arg>
</Call>
When I try now to start scm I receive the following error:
wizche@scm-01:/scm-server/bin$ ./scm-server/scm-server/bin$
2011-04-11 19:30:44.209:WARN::Config error at | | | 443| 30000| /home/wizche/scm-server/ssh/keystore| OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4| OBF:1u2u1wml1z7s1z7a1wnl1u2g| /home/wizche/scm-server/ssh/keystore| OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4| | | java.lang.ClassNotFoundException: org.mortbay.jetty.security.SslSocketConnector
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: sonia.scm.server.ScmServerException: error during server configuration
at sonia.scm.server.ScmServer.(ScmServer.java:80)
at sonia.scm.server.ScmServerDaemon.(ScmServerDaemon.java:50)
Caused by: java.lang.ClassNotFoundException: org.mortbay.jetty.security.SslSocketConnector
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.eclipse.jetty.util.Loader.loadClass(Loader.java:90)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.nodeClass(XmlConfiguration.java:353)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:748)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1108)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:1023)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.call(XmlConfiguration.java:693)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:386)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:318)
at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:273)
at sonia.scm.server.ScmServer.(ScmServer.java:76)
... 1 more
Could not find the main class: sonia.scm.server.ScmServerDaemon. Program will exit.
wizche@scm-01:
It seems that scm cannot locate **org.mortbay.jetty.security.SslSocketConnector ** during the startup, is the connector included somewhere in the jar library packages provided with scm?
Any help really appreciated...
My version: scm-server 1.1 (last stable)
Original report by pnico (Bitbucket: pnico, GitHub: pnico).
This would basically be an option to not delete a repository, but just cause it to be hidden from view on the main repository list and stop serving it.
Original report by Anonymous.
Hi there, I have scm-manager working in Windows7, but Windows Server 2003 has the error below.
Regards Graeme
2011-08-12 15:25:06.425:WARN::FAILED org.eclipse.jetty.server.handler.HandlerCollection@bf1d3b: ja
dError: javax/xml/bind/JAXB
2011-08-12 15:25:06.487:INFO::Started [email protected]:8080 STARTING
2011-08-12 15:25:06.487:WARN::FAILED org.eclipse.jetty.server.Server@16de067: java.lang.NoClassDef
bind/JAXB
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/JAXB
at sonia.scm.plugin.DefaultPluginLoader.loadPlugin(DefaultPluginLoader.java:273)
at sonia.scm.plugin.DefaultPluginLoader.load(DefaultPluginLoader.java:233)
at sonia.scm.plugin.DefaultPluginLoader.(DefaultPluginLoader.java:97)
at sonia.scm.ScmContextListener.getInjector(ScmContextListener.java:131)
at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletCo
at sonia.scm.ScmContextListener.contextInitialized(ScmContextListener.java:117)
at sonia.scm.boot.BootstrapListener.contextInitialized(BootstrapListener.java:147)
at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:640)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1208)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:586)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:449)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:224)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:89)
at org.eclipse.jetty.server.Server.doStart(Server.java:258)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
at sonia.scm.server.ScmServer.run(ScmServer.java:95)
at sonia.scm.server.ScmServerDaemon.main(ScmServerDaemon.java:62)
Original report by Sergio Paganoni (Bitbucket: wizche, GitHub: wizche).
Hi,
I fall into this error during the launch of the scm-server:
C:\scm-server>bin\scm-server console
wrapper | --> Wrapper Started as Console
wrapper | Launching a JVM...
wrapper | Unable to execute Java command. The system cannot find the file spec
ified. (0x2)
wrapper | "java" -Xms256m -Xmx256m -Djava.library.path="lib" -classpath "li
b/wrapper.jar;conf;lib/scm-server-1.0-M7.pom;lib/scm-server-api-1.0-M7.jar;lib/s
cm-server-jetty-1.0-M7.jar;lib/jetty-server-7.1.6.v20100715.jar;lib/servlet-api-
2.5.jar;lib/jetty-webapp-7.1.6.v20100715.jar" -Dwrapper.key="hEj8c6ttRjlNX6CS" -
Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -D
wrapper.pid=1868 -Dwrapper.version="3.2.3" -Dwrapper.native_library="wrapper" -D
wrapper.cpu.timeout="10" -Dwrapper.jvmid=1 org.tanukisoftware.wrapper.WrapperSim
pleApp sonia.scm.server.ServerApplication
wrapper | Critical error: wait for JVM process failed
Press any key to continue . . .
My OS:
Windows Server 2008 x64 R2
java version "1.6.0_23"
Java(TM) SE Runtime Environment (build 1.6.0_23-b05)
Java HotSpot(TM) 64-Bit Server VM (build 19.0-b09, mixed mode)
Original report by hk135 (Bitbucket: hk135, GitHub: hk135).
I login using default admin account and set an ad user to admin, the user.xml file updates the admin tag to true. As soon as I log in with the user the admin tag is set to false.
Original report by Anonymous.
When pulling and pushing data to a remote repository I uses a user (LDAP) which is set up in the system and is part of a Group but which is not set up to the repository (maybe earlier but removed from the list).
By accident this user have access to these files.
10:59:49.117 [qtp1377187-20] DEBUG sonia.scm.web.security.ChainAuthenticatonMana
ger - authenticator sonia.scm.web.security.XmlAuthenticationHandler ends with result, user: null, state: NOT_FOUND
10:59:50.055 [qtp1377187-20] DEBUG sonia.scm.web.security.ChainAuthenticatonMana
ger - authenticator sonia.scm.auth.ldap.LDAPAuthenticationHandler ends with result, user: xxx, state: SUCCESS
10:59:50.055 [qtp1377187-20] DEBUG sonia.scm.web.security.BasicSecurityContext -
user xxx is member of yyy, zzz
Original report by David M. Carr (Bitbucket: [David M. Carr](https://bitbucket.org/David M. Carr), ).
Different authentication mechanisms may have a concept of groups of their own that they would like to contribute to the SCM-Manager group store. Examples may include Active Directory and PAM. It would be useful if there was some clear way for authentication plugins to add this type of functionality.
Original report by Robert (Bitbucket: rros, GitHub: rros).
We have about 150 subversion repositories and about 50 mercurial repositories at our server. With 200 repositories in the repositories view it's kind of hard to find the repository you were looking for.
I propose the following filter/search options:
Original report by Anonymous.
The repositories should not be deleted from physical drive directly after it is removed. Should move/hide from the repositories list, and able to remove it completely at somewhere else.
Original report by Thierry L. (Bitbucket: [Thierry L.](https://bitbucket.org/Thierry L.), ).
With creation of a new repository, there is no master branch.
With Egit you can't clone an empty repository:
//"Source Git Repository is empty"//
Therefore you have to install mssysgit; init a local repo and push it to your repo created via scm-manager.
If scm-manager could create a master branch, it would be possible to create the local repo within eclipse and push it directly to scm-manager.
No more need (almost) for a native git client.
Original report by pnico (Bitbucket: pnico, GitHub: pnico).
This would be a permission level that would allow a regular user to create repositories and delete repositories that they created or own.
Original report by Anonymous.
I created a GIT repository with SCM Manager and this is not set to public
in case I'm using
$ git push http://[email protected]/name/.git
I'm gettind asked foer a password but whatever I typed in I can update the remote repository
same with http://user:[email protected]/name/.git
and a wrong password here.
Original report by Jeremy Neiman (Bitbucket: docmarionum1, GitHub: docmarionum1).
I'm trying to use the LDAP plugin, but am unable to login using an LDAP account. I didn't change much, besides the Base DN, Connection DN and password. In the scm log file I see that there's an LDAP invalid credentials error:
12:39:51.111 [qtp1829923591-21] ERROR sonia.scm.auth.ldap.LDAPAuthenticationHandler - [LDAP: error code 49 - Invalid Credentials]
javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]
Though I can't tell where the error is encountered (i.e. connecting to the server or authenticating the user I'm trying to log in as.)
I've tried playing around with the other options (filter, scope, etc,) without success. Any idea which options could be set wrong?
Thanks.
Original report by Stanisław Pitucha (Bitbucket: [Stanisław Pitucha](https://bitbucket.org/Stanisław Pitucha), ).
I followed the instruction for building the package from source on a debian machine. The build succeeded and after adding appropriate wrapper scripts (issue#4), the application seems to be happy - apart from the config files. I couldn't find any information on what should I do with them.
The first error is:
jvm 1 | could not find /app-info.xml in classpath
wrapper | <-- Wrapper Stopped
If I use the app-info.xml
from the src
directory, I get this:
jvm 1 | WrapperSimpleApp: Encountered an error running main: sonia.scm.server.ServerException: could not find server-config.xml
jvm 1 | sonia.scm.server.ServerException: could not find server-config.xml
jvm 1 | at sonia.scm.server.jetty.JettyServer.start(JettyServer.java:113)
jvm 1 | at sonia.scm.server.ServerApplication.main(ServerApplication.java:102)
jvm 1 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
jvm 1 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
jvm 1 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
jvm 1 | at java.lang.reflect.Method.invoke(Method.java:616)
jvm 1 | at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240)
jvm 1 | at java.lang.Thread.run(Thread.java:636)
Is there a way to generate those configs automatically? Or should I do something myself? (Could https://bitbucket.org/sdorra/scm-manager/wiki/build-from-source be updated ?) :)
Original report by Stefan Bechtold (Bitbucket: sbechtold, GitHub: sbechtold).
It seems that there is a problem when using eclipse and subversive (eclipse plugin) to access the SVN repository. I checked it from within the browser and that worked out very well.
In the logfile of my eclipse workspace I found the following exception:
!ENTRY org.eclipse.team.svn.core.svnnature 4 0 2011-05-28 19:12:43.094
!MESSAGE SVN: '0x00000230: Get Repository Folder Children' operation finished with error
!SUBENTRY 1 org.eclipse.team.svn.core.svnnature 4 0 2011-05-28 19:12:43.094
!MESSAGE Get repository folder children operation failed.
!STACK 0
org.eclipse.team.svn.core.connector.SVNConnectorException: svn: For input string: ""
at org.polarion.team.svn.connector.svnkit.SVNKitConnector.handleClientException(SVNKitConnector.java:1424)
at org.polarion.team.svn.connector.svnkit.SVNKitConnector.list(SVNKitConnector.java:1274)
at org.eclipse.team.svn.core.extension.factory.ThreadNameModifier.list(ThreadNameModifier.java:278)
at org.eclipse.team.svn.core.utility.SVNUtility.list(SVNUtility.java:335)
at org.eclipse.team.svn.core.svnstorage.SVNRepositoryContainer.getChildren(SVNRepositoryContainer.java:79)
at org.eclipse.team.svn.core.operation.remote.GetRemoteFolderChildrenOperation.runImpl(GetRemoteFolderChildrenOperation.java:76)
at org.eclipse.team.svn.core.operation.AbstractActionOperation.run(AbstractActionOperation.java:81)
at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTask(ProgressMonitorUtility.java:104)
at org.eclipse.team.svn.core.operation.CompositeOperation.runImpl(CompositeOperation.java:95)
at org.eclipse.team.svn.core.operation.AbstractActionOperation.run(AbstractActionOperation.java:81)
at org.eclipse.team.svn.core.operation.LoggedOperation.run(LoggedOperation.java:39)
at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTask(ProgressMonitorUtility.java:104)
at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTaskExternal(ProgressMonitorUtility.java:90)
at org.eclipse.team.svn.ui.utility.DefaultCancellableOperationWrapper.run(DefaultCancellableOperationWrapper.java:55)
at org.eclipse.team.svn.ui.utility.ScheduledOperationWrapper.run(ScheduledOperationWrapper.java:37)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: org.tigris.subversion.javahl.ClientException: svn: For input string: ""
at org.tigris.subversion.javahl.JavaHLObjectFactory.throwException(JavaHLObjectFactory.java:778)
at org.tmatesoft.svn.core.javahl.SVNClientImpl.throwException(SVNClientImpl.java:1924)
at org.tmatesoft.svn.core.javahl.SVNClientImpl.list(SVNClientImpl.java:365)
at org.tmatesoft.svn.core.javahl.SVNClientImpl.list(SVNClientImpl.java:337)
at org.polarion.team.svn.connector.svnkit.SVNKitConnector.list(SVNKitConnector.java:1263)
... 14 more
Caused by: org.tmatesoft.svn.core.SVNException: svn: For input string: ""
at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64)
at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51)
at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getDir(DAVRepository.java:373)
at org.tmatesoft.svn.core.io.SVNRepository.getDir(SVNRepository.java:1309)
at org.tmatesoft.svn.core.wc.SVNLogClient.list(SVNLogClient.java:1373)
at org.tmatesoft.svn.core.wc.SVNLogClient.doList(SVNLogClient.java:1364)
at org.tmatesoft.svn.core.wc.SVNLogClient.doList(SVNLogClient.java:1213)
at org.tmatesoft.svn.core.javahl.SVNClientImpl.list(SVNClientImpl.java:350)
... 16 more
Caused by: java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Long.parseLong(Long.java:431)
at java.lang.Long.parseLong(Long.java:468)
at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getDir(DAVRepository.java:371)
... 21 more
The number format exception is a result of an attempt of parsing the content-length of the current directory element (within the directory listing). It occurs whenever I use the SVN Repository Browser and open the first level of an non-empty repository. I'm not quite sure if this issue is still related with the SCM-Manager but I do not run into this problem if I configure my server's apache to serve the SVN repository via DAV. So it feels as if there still is a little issue within the service. :-(
Is there any kind of detection of the user's client? Maybe the headers sent from the subversive eclipse plugin do not match any detection rules...
Original report by ChrisM (Bitbucket: Krimsar, GitHub: Krimsar).
I've tried several GUI-Tools and most of them fail to handle http authentication properly (ether they don't ask for the user/pass and fail silently, or they don't provide a way to save the credentials).
Therefore I would like to see authentication support with a ssh-key-file, if that's possible at all.
Any other suggestions?
Original report by Robert (Bitbucket: rros, GitHub: rros).
We recently switched to scm-manager and we use mercurial as our default scm. In mercurial we don't use named-branches but the clone-per-branch model. In our old setup we used a directory structure like this:
+ Project
| - 2.3
| - 2.4
| - 3.0
+ OtherProject
| - 1.1
...
So Project and OtherProject are just directories and the sub directories are mercurial repositories (clones-per-branch).
Currently scm-manager only supports a flat structure. We had to rename our structure to something like Project-2.3 and OtherProject-1.1.
I think it would be nice if we could use the directory structure again. This should also work for other scms. Maybe just to categorize your repostitories or maybe like us, to group your branches.
Original report by Pietro Piccoli (Bitbucket: rider_pie, ).
Hi,
after I've pushed save button on Config->General I got the error:
GRAVE: The RuntimeException could not be mapped to a response, re-throwing to t
e HTTP container
javax.xml.bind.DataBindingException: javax.xml.bind.MarshalException
But scm-server write correctly files like repositories.xml in the same folder.
Is it possible change the path of the .scm folder before the server starts?
Original report by skrapsrwt (Bitbucket: skrapsrwt, GitHub: skrapsrwt).
Where does scm-manager keep the description files for the git repos?
Original report by Hardcoded (Bitbucket: Hardcoded, GitHub: Hardcoded).
For a DVCS (hg, git, bzr) it would be nice if one could clone/branch a repository directly at the server.
Original report by mbickel (Bitbucket: mbickel, GitHub: mbickel).
Would be nice to have a possibility to activate the compabitility for Subversion version 1.4 and 1.5
This is already an option in the subversion package:
#!sh
svnadmin create --pre-1.4-compatible
svnadmin create --pre-1.5-compatible
Background: I have to import a dump and it expects FS 1-3, but SCM-Manager creates in FS 4
Original report by Anonymous.
I tried to use my Email Adress as user like [email protected]
When I try to clone
git clone http://test%[email protected]
the http string is not decoded in [email protected]
In this case it's not possible to user email as user name in the tool
Original report by Anonymous.
Hi,
I'm trying your nice program on Windows.
After importing a local repository (url http://localhost:8080/scm/git//d/git/git1/my_project/.git), i tried to clone this repository but it failed.
With Egit, I got the following message:
"
Cannot list the avalaible branches.
Reason:
http://localhost:8080/scm/git//d/git/git1/my_project/.git:
http://localhost:8080/scm/git//d/git/git1/my_project/.git/info/refs/?service=git-upload-pack not found
"
It thought he doesn't find the info directory as i got the following message with msysgit.
"
fatal: http://localhost:8080/scm/git//d/git/my_project/.git/info/refs not found: did you run git update-server-info on the server?
"
Then i ran the git-update-server-info and got the same message with Egit and msysgit/
Does your program use jgit instead msysgit ?
How can i configure the repository or your software to solve this issue ?
Best Regards,
Original report by Thierry L. (Bitbucket: [Thierry L.](https://bitbucket.org/Thierry L.), ).
With Egit, you can't push to a repository if the repository is "public" ("Public" field checked ine the repo settings)
It's as the repo considered only anonymous access although some write permissions are defined.
The scm-manager's console displays the following message:
//sonia.scm.web.filter.PermissionFilter - user anonymous has not enough permissions
//
Note also another little orthography mistake in an INFO message (trailing "t"in repostitory):
//sonia.scm.web.filter.PermissionFilter - write access to repostitory test for user anonymous denied
//
Original report by David M. Carr (Bitbucket: [David M. Carr](https://bitbucket.org/David M. Carr), ).
In the permissions form for a repository, you should be able to specify permissions either to individual users (which is already supported) or groups. These permissions should be additive, meaning that a user is granted the highest level of permission that is applicable to them, regardless of whether it came from a group or individual permission assignment.
It may be useful to store user and group permission assignments separately to support users and groups with the same name. For example, in some cases it might be desirable to have both a QA user and a QA group.
Example:
Repository 1:
Effective permissions:
Original report by Michał Sznajder (Bitbucket: michalsznajder, GitHub: michalsznajder).
I am using scm-manager in Windows environment for Mercurial access. I've enabled ActiveDirectory plugin so user of my domain have access. But there is another trusted domain in my environment. Users from both domains can access resources on computers from both domains.
Would it be a big deal to add a small check that if we try to login in a user that has login like "DOMAIN\user" (eg. backslash inside) we will try to authenticate over provided domain and not a default one?
Original report by Anonymous.
Whenever you have a path that contains characters that will be URL encoded the server throws a "Path not Found" 500 error. It seems that the path resolver does not decode the URL and uses it as-it-is.
We are running SCM-Manager at a Tomcat 6.0.30.
Stacktrace:
message org.tmatesoft.svn.core.SVNException: svn: Path '/Seminar%20Algorithm%20Engineering' you requested not found at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51) at org.tmatesoft.svn.core.internal.server.dav.handlers.DAVGetHandler.execute(DAVGetHandler.java:52) at org.tmatesoft.svn.core.internal.server.dav.DAVServlet.service(DAVServlet.java:133) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:216) at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:141) at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:93) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:63) at sonia.scm.web.filter.PermissionFilter.doFilter(PermissionFilter.java:148) at sonia.scm.web.filter.HttpFilter.doFilter(HttpFilter.java:100) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:129) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at sonia.scm.web.filter.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:143) at sonia.scm.web.filter.HttpFilter.doFilter(HttpFilter.java:100) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:129) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at sonia.scm.filter.SSLFilter.doFilter(SSLFilter.java:93) at sonia.scm.web.filter.HttpFilter.doFilter(HttpFilter.java:100) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:129) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:122) at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:110) at sonia.scm.boot.BootstrapFilter.doFilter(BootstrapFilter.java:104) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:662)
description The requested resource (org.tmatesoft.svn.core.SVNException: svn: Path '/Seminar%20Algorithm%20Engineering' you requested not found at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51) at org.tmatesoft.svn.core.internal.server.dav.handlers.DAVGetHandler.execute(DAVGetHandler.java:52) at org.tmatesoft.svn.core.internal.server.dav.DAVServlet.service(DAVServlet.java:133) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:216) at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:141) at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:93) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:63) at sonia.scm.web.filter.PermissionFilter.doFilter(PermissionFilter.java:148) at sonia.scm.web.filter.HttpFilter.doFilter(HttpFilter.java:100) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:129) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at sonia.scm.web.filter.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:143) at sonia.scm.web.filter.HttpFilter.doFilter(HttpFilter.java:100) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:129) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at sonia.scm.filter.SSLFilter.doFilter(SSLFilter.java:93) at sonia.scm.web.filter.HttpFilter.doFilter(HttpFilter.java:100) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:129) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59) at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:122) at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:110) at sonia.scm.boot.BootstrapFilter.doFilter(BootstrapFilter.java:104) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:662) ) is not available.
Original report by Pietro Piccoli (Bitbucket: rider_pie, ).
If I try to clone repository through http URL like that:
hg clone --verbose http://webserver:8080/scm/hg/HGPie
I got Client and Server error:
10:09:16.604 [qtp8918249-22] WARN sonia.scm.web.cgi.DefaultCGIExecutor - Traceback (most recent call last):
File "C:\Programmi\scm-server1.1\scm-server\bin..\confapp\cgi-bin\hgweb.py", line 13, in
from mercurial import demandimport; demandimport.enable()
ImportError: Bad magic number in C:\Python27\lib\mercurial_init_.pyc
10:09:16.604 [qtp8918249-22] WARN sonia.scm.web.cgi.DefaultCGIExecutor - process ends with exit code 1
Any suggestions to avoid this?
Thanks in advance.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.