Code Monkey home page Code Monkey logo

gitextender's Introduction

Git Extender

Actions Status codecov

Git Extender is a plugin for IntelliJ products, which allows updating all local branches of all modules in the current project.

It will update all local branches of all git roots (most usually defined as separate modules) in the current project.

Local branches that will be updated are the branches that exist locally and have been configured to track a remote branch.

It tries to fast-forward commits in remote branches to local branches. If the local branch cannot be merged to the tracked remote using fast-forward only, and the respective setting has been enabled through File->Settings->Other Settings->GitExtender Settings then a simple merge will be attempted. If there are conflict errors, it will be aborted and an error notification will be shown. In this case, the update must be performed manually for the reported branch.

After updating a branch, if there were any file changes, they will be displayed in IntelliJ Version Control tab. Currently, the correct list of file changes (updated, created, removed) will be displayed. However, when performing a diff for files in a branch other than the currently checked out, the diff will most probably be incorrect.

This plugin is available under Apache License, Version 2.0

gitextender's People

Contributors

dependabot[bot] avatar jchrist avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

jackqii

gitextender's Issues

Too Much Parallelism!

Hey,

Thanks a lot for the awesome plugin. Its life, as well as a time saver :)

In my project I have generally bunch of repositories 10s sometime 20s in my project. Whenever I run sync "Git Extender > Update All" its gets throttled bunch of time. I had to keep retrying until it succeeds, creating more traffic. So, I was wondering if I could "slow" it down to do the sync. Do you think its something we could do ?

I was thinking GitExtenderUpdateAll.updateRepositories specifically around this. Probably change this to go through each thread sequentially and wait for that to finish before starting the next. What do you think ?

Thanks,
-anil

Exception when runing (when there are 2 projects opening)

I was just running this tool normally (mac os, latest IntelliJ 2017.3)

The 2 screenshot of the error popup:
https://www.dropbox.com/s/uqk9bomn6b5vszu/Screenshot%202017-12-06%2015.41.13.png?dl=0
https://www.dropbox.com/s/ilbonwhqf8l6sd4/Screenshot%202017-12-06%2015.42.11.png?dl=0

Stacktrace:

Access is allowed from event dispatch thread only.
 EventQueue.isDispatchThread()=false isDispatchThread()=false Toolkit.getEventQueue()=com.intellij.ide.IdeEventQueue@634bddbb Current thread: Thread[ApplicationImpl pooled thread 31,4,Idea Thread Group] 174860262 SystemEventQueueThread: Thread[AWT-EventQueue-0,6,main] 267529812

java.lang.Throwable
	at com.intellij.util.ExceptionUtil.currentStackTrace(ExceptionUtil.java:65)
	at com.intellij.psi.impl.DebugUtil.currentStackTrace(DebugUtil.java:486)
	at com.intellij.diagnostic.LogEventException.<init>(LogEventException.java:32)
	at com.intellij.openapi.application.impl.ApplicationImpl.a(ApplicationImpl.java:1089)
	at com.intellij.openapi.application.impl.ApplicationImpl.assertIsDispatchThread(ApplicationImpl.java:1078)
	at com.intellij.openapi.vcs.changes.ui.ChangesTree.updateTreeModel(ChangesTree.java:250)
	at com.intellij.openapi.vcs.changes.ui.ChangesBrowserBase$MyChangesTreeList.rebuildTree(ChangesBrowserBase.java:234)
	at com.intellij.openapi.vcs.changes.ui.SimpleChangesBrowser.setChangesToDisplay(SimpleChangesBrowser.java:56)
	at com.intellij.openapi.vcs.changes.committed.CommittedChangesTreeBrowser.f(CommittedChangesTreeBrowser.java:282)
	at com.intellij.openapi.vcs.changes.committed.CommittedChangesTreeBrowser.<init>(CommittedChangesTreeBrowser.java:147)
	at com.intellij.openapi.vcs.update.UpdateInfoTree.createCenterPanel(UpdateInfoTree.java:161)
	at com.intellij.openapi.ui.PanelWithActionsAndCloseButton.init(PanelWithActionsAndCloseButton.java:76)
	at com.intellij.openapi.vcs.update.UpdateInfoTree.<init>(UpdateInfoTree.java:122)
	at gr.jchrist.gitextender.handlers.AfterSuccessfulMergeHandler.generateUpdateInfoTree(AfterSuccessfulMergeHandler.java:100)
	at gr.jchrist.gitextender.handlers.AfterSuccessfulMergeHandler.showUpdatedFiles(AfterSuccessfulMergeHandler.java:67)
	at gr.jchrist.gitextender.handlers.AfterSuccessfulMergeHandler.afterMerge(AfterSuccessfulMergeHandler.java:36)
	at gr.jchrist.gitextender.BranchUpdater.afterMerge(BranchUpdater.java:100)
	at gr.jchrist.gitextender.BranchUpdater.merge(BranchUpdater.java:75)
	at gr.jchrist.gitextender.BranchUpdater.update(BranchUpdater.java:48)
	at gr.jchrist.gitextender.RepositoryUpdater.updateRepository(RepositoryUpdater.java:114)
	at gr.jchrist.gitextender.BackgroundableRepoUpdateTask.run(BackgroundableRepoUpdateTask.java:38)
	at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:704)
	at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:157)
	at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:534)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:479)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:94)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:144)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:165)
	at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:315)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

Request for prune

I believe one feature is missing that is present in IntelliJ that is prune the branches that no longer exist.
From command line I use git remote prune origin and IntelliJ uses
git -c core.quotepath=false fetch origin --progress --prune

Thank you for this awesome plugin.

Error Updating All

There is an error during update all repos.

Git Extender update failed:
Git repo: project Error: Git Extender failed to update git repo, due to an exception during update. The exception was: EventQueue.isDispatchThread()=false Toolkit.getEventQueue()=com.intellij.ide.IdeEventQueue@238dfaa1 Current thread: Thread[Thread-15,6,Idea Thread Group] 631590894 SystemEventQueueThread: Thread[AWT-EventQueue-0,6,Idea Thread Group] 1427407249

Version: PhpStorm 2020.3.2

It updates 1 repo but failed update on another repo after switch to this repo. I must do multiple ALT+T to update all branches with that error. This error shows then you add a option (GitExtender -> UpdateAll) in main "Git" menu.

Reading Git repository information should not be done on the EDT

This happens in 2019.3 EAP invoking Update All.
It's not blocking.

java.lang.Throwable: Reading Git repository information should not be done on the EDT
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:145)
	at git4idea.repo.GitRepositoryImpl.update(GitRepositoryImpl.java:246)
	at com.intellij.dvcs.repo.AbstractRepositoryManager.lambda$updateAllRepositories$0(AbstractRepositoryManager.java:108)
	at com.intellij.util.containers.ContainerUtil.process(ContainerUtil.java:962)
	at com.intellij.dvcs.repo.AbstractRepositoryManager.updateAllRepositories(AbstractRepositoryManager.java:107)
	at gr.jchrist.gitextender.GitExtenderUpdateAll.actionPerformed(GitExtenderUpdateAll.java:51)
	at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:265)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:282)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher$1.performAction(IdeKeyEventDispatcher.java:593)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.lambda$processAction$3(IdeKeyEventDispatcher.java:646)
	at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:193)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processAction(IdeKeyEventDispatcher.java:645)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processActionOrWaitSecondStroke(IdeKeyEventDispatcher.java:508)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.inInitState(IdeKeyEventDispatcher.java:463)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.dispatchKeyEvent(IdeKeyEventDispatcher.java:212)
	at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.java:828)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:773)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:422)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:705)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:421)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Fatal errors in the IDE

PHPstorm version - 9.0

Today i installed Gitextender in PHPstorm and got the following errors

cannot create class "gr.jchrist.gitextender.GitExtenderUpdateAll" [Plugin: gr.jchrist.gitextender] com.intellij.diagnostic.PluginException: cannot create class "gr.jchrist.gitextender.GitExtenderUpdateAll" [Plugin: gr.jchrist.gitextender] at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.convertStub(ActionManagerImpl.java:176) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:516) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:496) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.getAction(ActionManagerImpl.java:489) at com.intellij.openapi.actionSystem.DefaultActionGroup.unStub(DefaultActionGroup.java:354) at com.intellij.openapi.actionSystem.DefaultActionGroup.getChildren(DefaultActionGroup.java:312) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl$5.compute(ActionManagerImpl.java:1310) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl$5.compute(ActionManagerImpl.java:1303) at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:888) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1303) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1318) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1318) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1318) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.preloadActionGroup(ActionManagerImpl.java:1297) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.c(ActionManagerImpl.java:1288) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.access$200(ActionManagerImpl.java:76) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl$4.run(ActionManagerImpl.java:1268) at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:400) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:695) at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56) Caused by: com.intellij.diagnostic.PluginException: gr/jchrist/gitextender/GitExtenderUpdateAll : Unsupported major.minor version 51.0 [Plugin: gr.jchrist.gitextender] at com.intellij.ide.plugins.cl.PluginClassLoader.b(PluginClassLoader.java:130) at com.intellij.ide.plugins.cl.PluginClassLoader.a(PluginClassLoader.java:77) at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:66) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:249) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.convertStub(ActionManagerImpl.java:152) ... 24 more Caused by: java.lang.UnsupportedClassVersionError: gr/jchrist/gitextender/GitExtenderUpdateAll : Unsupported major.minor version 51.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637) at java.lang.ClassLoader.defineClass(ClassLoader.java:621) at java.lang.ClassLoader.defineClass(ClassLoader.java:471) at com.intellij.util.lang.UrlClassLoader._defineClass(UrlClassLoader.java:259) at com.intellij.util.lang.UrlClassLoader.defineClass(UrlClassLoader.java:255) at com.intellij.util.lang.UrlClassLoader._findClass(UrlClassLoader.java:231) at com.intellij.ide.plugins.cl.PluginClassLoader.b(PluginClassLoader.java:124) ... 30 more

Let me know if you need more info

Thanks

Exception thrown in WebStorm 10

Got this error after installing and restarting WebStorm 10:

org/slf4j/LoggerFactory
java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    at gr.jchrist.gitextender.GitExtenderUpdateAll.<clinit>(GitExtenderUpdateAll.java:37)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.convertStub(ActionManagerImpl.java:152)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:516)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:496)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.getAction(ActionManagerImpl.java:489)
    at com.intellij.openapi.actionSystem.DefaultActionGroup.unStub(DefaultActionGroup.java:354)
    at com.intellij.openapi.actionSystem.DefaultActionGroup.getChildren(DefaultActionGroup.java:312)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl$5.compute(ActionManagerImpl.java:1310)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl$5.compute(ActionManagerImpl.java:1303)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:888)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1303)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1318)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1318)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1318)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.preloadActionGroup(ActionManagerImpl.java:1297)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.c(ActionManagerImpl.java:1288)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.access$200(ActionManagerImpl.java:76)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl$4.run(ActionManagerImpl.java:1268)
    at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:400)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
    at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory PluginClassLoader[gr.jchrist.gitextender, 0.1.2]
    at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:68)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 27 more

Platform: OS X 10.10.5, Webstorm 10.0.4

End up on wrong branch after Update

  1. I was on my develop branch with 3 files with uncommitted changes.
  2. I pressed alt+t to update.
  3. I ended up on a feature/docker branch with lots of uncommitted files and a completely different file structure.
  4. on attempting to checkout my develop branch, i get a warning that some files (one that exists on both branches (with different content) and the 3 i had with uncommitted changes) will get overwritten.

I had to delete all 4 files so that i could switch back to my develop branch.

hope that helps trace it...

Exception in Idea 2017.3 EAP (173.3188.16)

Access is allowed from event dispatch thread only.
 EventQueue.isDispatchThread()=false isDispatchThread()=false Toolkit.getEventQueue()=com.intellij.ide.IdeEventQueue@5d1ff594 Current thread: Thread[ApplicationImpl pooled thread 213,4,main] 404865485 SystemEventQueueThread: Thread[AWT-EventQueue-0,6,main] 74431559

java.lang.Throwable
	at com.intellij.util.ExceptionUtil.currentStackTrace(ExceptionUtil.java:65)
	at com.intellij.psi.impl.DebugUtil.currentStackTrace(DebugUtil.java:486)
	at com.intellij.diagnostic.LogEventException.<init>(LogEventException.java:32)
	at com.intellij.openapi.application.impl.ApplicationImpl.b(ApplicationImpl.java:1094)
	at com.intellij.openapi.application.impl.ApplicationImpl.assertIsDispatchThread(ApplicationImpl.java:1083)
	at com.intellij.openapi.vcs.changes.ui.ChangesTree.updateTreeModel(ChangesTree.java:250)
	at com.intellij.openapi.vcs.changes.ui.ChangesBrowserBase$MyChangesTreeList.rebuildTree(ChangesBrowserBase.java:234)
	at com.intellij.openapi.vcs.changes.ui.SimpleChangesBrowser.setChangesToDisplay(SimpleChangesBrowser.java:56)
	at com.intellij.openapi.vcs.changes.committed.CommittedChangesTreeBrowser.c(CommittedChangesTreeBrowser.java:282)
	at com.intellij.openapi.vcs.changes.committed.CommittedChangesTreeBrowser.<init>(CommittedChangesTreeBrowser.java:147)
	at com.intellij.openapi.vcs.update.UpdateInfoTree.createCenterPanel(UpdateInfoTree.java:161)
	at com.intellij.openapi.ui.PanelWithActionsAndCloseButton.init(PanelWithActionsAndCloseButton.java:76)
	at com.intellij.openapi.vcs.update.UpdateInfoTree.<init>(UpdateInfoTree.java:122)
	at gr.jchrist.gitextender.handlers.AfterSuccessfulMergeHandler.generateUpdateInfoTree(AfterSuccessfulMergeHandler.java:100)
	at gr.jchrist.gitextender.handlers.AfterSuccessfulMergeHandler.showUpdatedFiles(AfterSuccessfulMergeHandler.java:67)
	at gr.jchrist.gitextender.handlers.AfterSuccessfulMergeHandler.afterMerge(AfterSuccessfulMergeHandler.java:36)
	at gr.jchrist.gitextender.BranchUpdater.afterMerge(BranchUpdater.java:100)
	at gr.jchrist.gitextender.BranchUpdater.merge(BranchUpdater.java:75)
	at gr.jchrist.gitextender.BranchUpdater.update(BranchUpdater.java:48)
	at gr.jchrist.gitextender.RepositoryUpdater.updateRepository(RepositoryUpdater.java:114)
	at gr.jchrist.gitextender.BackgroundableRepoUpdateTask.run(BackgroundableRepoUpdateTask.java:38)
	at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:704)
	at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:157)
	at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:534)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:479)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:94)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:144)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:165)
	at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:320)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

Action not appearing in menu at least since 2020.3

Intellij toolbar menu has changed and the toolbar integration defined in plugin.xml is not working any more.
The group-id Git.Menu came from git4idea.
I need to find what group-id that Git button has, but that's far from easy.

Disable git actions while updating

During update (at least for the modules selected for updating) git actions (such as checking out a branch) must be disabled, in order to avoid major issues with merging wrong branches.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.