Skip to content
Java Python Dockerfile Roff JavaScript HTML Other
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows Run Windows CI using cmd Oct 24, 2019
.jcheck 234: Allow more granular jcheck reviewer configuration Jan 20, 2020
args 314: Add help command to git-pr Mar 19, 2020
bot Add support for configuring Jira credentials Nov 27, 2019
bots 274: Remove quoted part of top-level reply emails in GitHub comments May 14, 2020
buildSrc
census
ci Replace ContinuousIntegration.query with ContinuousIntegration.jobsFor Dec 3, 2019
cli 383: More fuzzy matching of bug ids in PR titles May 14, 2020
email 357: Mismatch between PR body and RFR email Apr 14, 2020
encoding Rename encoding/src/main/java/org/openjdk/skara/base85/Base85.java Nov 19, 2019
forge
gradle/wrapper build: update to Gradle 6.3 Apr 29, 2020
host Add HostUserDetails::email Feb 14, 2020
ini Initial commit Jun 24, 2019
issuetracker notify: add Slack notifier Apr 6, 2020
jcheck Improve handling of squash and rebase of PRs Apr 20, 2020
json merge-bot: provide default values in conf Apr 27, 2020
mailinglist Reuse HttpClient instances Mar 23, 2020
network 291: Intermittent test failure in RestRequestTests.cachedSeparateAuth Feb 27, 2020
process Fix some issues building on Windows Aug 22, 2019
proxy cli: add git-proxy tool Apr 16, 2020
storage 381: Retry failed materialization of hosted repository storage May 8, 2020
test build: update JUnit to 5.6.2 Apr 29, 2020
vcs 383: More fuzzy matching of bug ids in PR titles May 14, 2020
version 220: webrev version unknown message Jan 21, 2020
webrev 398: git webrev cannot handle a file named index.html May 11, 2020
.dockerignore
.gitattributes
.gitignore Initial commit Jun 24, 2019
CONTRIBUTING.md Initial commit Jun 24, 2019
LICENSE Initial commit Jun 24, 2019
Makefile doc: update README Mar 2, 2020
README.md
Unzip.java 9: JDK dependencies should only be in one file Sep 18, 2019
bots.dockerfile
build.gradle build: update JUnit to 5.6.2 Apr 29, 2020
deps.env build: update to JDK 14.0.1 Apr 29, 2020
gradlew build: respect git's http.proxy setting Apr 17, 2020
gradlew.bat Add support for offline and local builds Nov 11, 2019
settings.gradle 218: Enforce check on approval of CSRs Jan 29, 2020
skara.gitconfig trees: add treconfigure command Apr 28, 2020
skara.py trees: add treconfigure command Apr 28, 2020
skara.sh hg: add support for skara and focus on webrev, defpath and jcheck Mar 23, 2020
test.dockerfile Allow unsafe features when importing Jan 13, 2020

README.md

OpenJDK Project Skara

The goal of Project Skara is to investigate alternative SCM and code review options for the OpenJDK source code, including options based upon Git rather than Mercurial, and including options hosted by third parties.

This repository contains tooling for working with OpenJDK projects and their repositories. The following CLI tools are available as part of this repository:

  • git-jcheck - a backwards compatible Git port of jcheck
  • git-webrev - a backwards compatible Git port of webrev
  • git-defpath - a backwards compatible Git port of defpath
  • git-fork - fork a project on an external Git source code hosting provider to your personal space and optionally clone it
  • git-sync - sync the personal fork of the project with the current state of the upstream repository
  • git-pr - interact with pull requests for a project on an external Git source code hosting provider
  • git-info - show OpenJDK information about commits, e.g. issue links, authors, contributors, etc.
  • git-token - interact with a Git credential manager for handling personal access tokens
  • git-translate - translate between Mercurial and Git hashes
  • git-skara - learn about and update the Skara CLI tools
  • git-publish - publishes a local branch to a remote repository

There are also CLI tools available for importing OpenJDK Mercurial repositories into Git repositories and vice versa:

  • git-openjdk-import
  • git-verify-import
  • hg-openjdk-import

The following server-side tools (so called "bots") for interacting with external Git source code hosting providers are available:

  • hgbridge - continuously convert Mercurial repositories to git
  • mlbridge - bridge messages between mailing lists and pull requests
  • notify - send email notifications when repositories are updated
  • pr - add OpenJDK workflow support for pull requests
  • submit - example pull request test runner
  • forward - forward commits to various repositories
  • mirror - mirror repositories
  • merge - merge commits between different repositories and/or branches
  • test - test runner

Building

JDK 13 or later and Gradle 6.0 or later is required for building. To build the project on macOS or GNU/Linux x64, just run the following command from the source tree root:

$ sh gradlew

To build the project on Windows x64, run the following command from the source tree root:

> gradlew

The extracted jlinked image will end up in the build directory in the source tree root. Note that the above commands will build the CLI tools, if you also want to build the bot images run sh gradlew images on GNU/Linux or gradlew images on Windows.

Other operating systems and CPU architectures

If you want to build on an operating system other than GNU/Linux, macOS or Windows or if you want to build on a CPU architecture other than x64, then ensure that you have JDK 13 or later installed locally. You can then run the following command from the source tree root:

$ sh gradlew

The extracted jlinked image will end up in the build directory in the source tree root.

Offline builds

If you don't want the build to automatically download any dependencies, then you must ensure that you have installed the following software locally:

  • JDK 13 or later
  • Gradle 6.0 or later

To create a build then run the command:

$ gradle offline

Please note that the above command does not make use of gradlew to avoid downloading Gradle.

The extracted jlinked image will end up in the build directory in the source tree root.

Cross-linking

It is also supported to cross-jlink jimages to GNU/Linux, macOS and/or Windows from any of the aforementioned operating systems. To build all applicable jimages (including the server-side tooling), run the following command from the source tree root:

sh gradlew images

Makefile wrapper

Skara also has a very thin Makefile wrapper for contributors who prefer to build using make. To build the jlinked image for the CLI tools using make, run:

make

Installing

There are multiple way to install the Skara CLI tools. The easiest way is to just include skara.gitconfig in your global Git configuration file. You can also install the Skara tools on your $PATH.

Including skara.gitconfig

To install the Skara tools, include the skara.gitconfig Git configuration file in your user-level Git configuration file. On macOS or GNU/Linux:

$ git config --global include.path "$PWD/skara.gitconfig"

On Windows:

> git config --global include.path "%CD%/skara.gitconfig"

To check that everything works as expected, run the command git skara help.

Adding to PATH

The Skara tools can also be added to $PATH on GNU/Linux and macOS and Git will pick them up. You can either just extend $PATH with the build/bin directory or you can copy the tools to a location already on $PATH. To extend $PATH with the build/bin directory, run:

$ sh gradlew
$ export PATH="$PWD/build/bin:$PATH"

To copy the tools to a location already on $PATH, run:

$ make
$ make install prefix=/path/to/install/location

When running make install the default value of prefix is $HOME/.local.

Testing

JUnit 5.5.2 or later is required to run the unit tests. To run the tests, execute following command from the source tree root:

$ sh gradlew test

If you prefer to use the Makefile wrapper you can also run:

$ make test

The tests expect Git version 2.19.3 or later and Mercurial 4.7.2 or later to be installed on your system.

This repository also contains a Dockerfile, test.dockerfile, that allows for running the tests in a reproducible way with the proper dependencies configured. To run the tests in this way, run the following command from the source tree root:

$ sh gradlew reproduce

If you prefer to use the Makefile wrapper you can also run:

$ make reproduce

Developing

There are no additional dependencies required for developing Skara if you can already build and test it (see above for instructions). The command-line tools and libraries supports all of GNU/Linux, macOS and Windows and can therefore be developed on any of those operating systems. The bots primarily support macOS and GNU/Linux and may require Windows Subsystem for Linux on Windows.

Please see the sections below for instructions on setting up a particular editor or IDE.

Vim

If you choose to use Vim as your editor when working on Skara then you probably also want to utilize the Makefile wrapper. The Makefile wrapper enables to you to run :make and :make tests in Vim.

Wiki

Project Skara's wiki is available at https://wiki.openjdk.java.net/display/skara.

Issues

Issues are tracked in the JDK Bug System under project Skara at https://bugs.openjdk.java.net/projects/SKARA/.

Contributing

We are more than happy to accept contributions to the Skara tooling, both via patches sent to the Skara mailing list and in the form of pull requests on GitHub.

Members

See http://openjdk.java.net/census#skara for the current Skara Reviewers, Committers and Authors. See https://openjdk.java.net/projects/ for how to become an author, committer or reviewer in an OpenJDK project.

Discuss

Development discussions take place on the project Skara mailing list skara-dev@openjdk.java.net, see https://mail.openjdk.java.net/mailman/listinfo/skara-dev for instructions on how to subscribe of if you want to read the archives. You can also reach many project Skara developers in the #openjdk IRC channel on OFTC, see https://openjdk.java.net/irc/ for details.

License

See the file LICENSE for details.

You can’t perform that action at this time.