Introducing OneDev - new open source git server

DZone 's Guide to

Introducing OneDev - new open source git server

Take a look at some of the features that differentiates this git server from others like GitHub and GitLab.

· Open Source Zone ·
Free Resource

About six years ago, we switched to git and developed this tool to serve our own needs as GitHub/GitLab does not have some pull request features we wanted at that time, such as squash support, rebase tracking, review of incremental changes, etc. During our daily usage, more practices are rolled into the product such as language-aware symbol search, source/diff annotation, and more. Now we feel that it is mature and hope that more can benefit from our practices. 

The tool is MIT-licensed and is available at here.

Below is a list of some of the features that differentiates it from other products:

Language-Aware Code Navigation and Search

OneDev parses source code to enable language-aware code search and navigation. Currently, it supports Java, JavaScript, C, C++, CSharp, Go, PHP, Python, CSS, SCSS, LESS, and R.Image title

Source and Diff Comment for Code Discussion and Comprehension

One can comment on selected regions of a source or diff to start code discussions. Added comments will stay in context to help with the understanding of the code even if the code is modified later.

Image title

Rules to Protect Branches, Tags, or Files

For changes affecting certain branches, tags, or files, one can define rules to require specified builds or reviewers. These rules will be used as change acceptance gates in relevant pull requests.

Image title

Intelligent Commit Query and Subscription

Commit query can be easily constructed with a smart input box with auto-suggestion and completion. A constructed query can be saved for quick access later, and a saved query can be subscribed to get notifications of matching code changes.

Image title

Advanced Pull Request for Efficient Code Review

OneDev analyzes commits history to suggest the most relevant reviewers for pull requests. It tracks review history so that reviewers only need to examine changes since the previous review. It also includes other productivity features such as rebase/squash tracking, merge preview, etc.

Image title

Sophisticated Pull Request Query and Subscription

Pull request query makes it easy to find interesting pull requests. For instance, you may list all pull requests requiring your review, or those reviewed by others and requiring your change. Queries can be saved for quick access later, and can be subscribed to get notifications of matching pull requests.

Image title

Custom Issue States and Fields for Flexible Workflows

Issue states and fields are fully customizable. States can be configured to transit manually, or automatically when certain conditions are satisfied. For instance, you may configure the issue to change to "pending review" state when a pull request containing the fix is submitted, or "deployed" state when the build containing the fix is deployed.

Image title

Powerful Issue Query and Subscription

A query language is available to query and order issues based on different properties and their logical combinations. Issue query can be saved for quick access later, and the saved query can be subscribed to get notification of matching issues.

Image title

Coherent and Self-Updating Issue Boards

Issue boards can be set up to show issues with different states or fields side by side. Upon issue modification, issue boards will be updated automatically to reflect the most recent issue change.

Image title

Cross References Amongst Code, Issues and Builds

Build information from Jenkins, TeamCity, and QuickBuild can be fed into OneDev for cross-references amongst code, issues and builds. For instance, you may list code changes and fixed issues between any two builds, or list all builds containing certain issue fix, etc.

Image title

devops ,git ,open source

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}