1 # OpenJDK Project Skara
  2 
  3 The goal of Project Skara is to investigate alternative SCM and code review
  4 options for the OpenJDK source code, including options based upon Git rather than
  5 Mercurial, and including options hosted by third parties.
  6 
  7 This repository contains tooling for working with OpenJDK projects and
  8 their repositories. The following CLI tools are available as part of this
  9 repository:
 10 
 11 - git-jcheck - a backwards compatible Git port of [jcheck](https://openjdk.java.net/projects/code-tools/jcheck/)
 12 - git-webrev - a backwards compatible Git port of [webrev](https://openjdk.java.net/projects/code-tools/webrev/)
 13 - git-defpath - a backwards compatible Git port of [defpath](https://openjdk.java.net/projects/code-tools/defpath/)
 14 - git-fork - fork a project on an external Git source code hosting provider to your personal space and optionally clone it
 15 - git-pr - interact with pull requests for a project on an external Git source code hosting provider
 16 - git-info - show OpenJDK information about commits, e.g. issue links, authors, contributors, etc.
 17 - git-token - interact with a Git credential manager for handling personal access tokens
 18 - git-translate - translate between [Mercurial](https://mercurial-scm.org/)
 19 and [Git](https://git-scm.com/) hashes
 20 - git-skara - learn about and update the Skara CLI tools
 21 
 22 There are also CLI tools available for importing OpenJDK
 23 [Mercurial](https://mercurial-scm.org/) repositories into
 24 [Git](https://git-scm.com/) repositories and vice versa:
 25 
 26 - git-openjdk-import
 27 - git-verify-import
 28 - hg-openjdk-import
 29 
 30 The following server-side tools (so called "bots") for interacting with
 31 external Git source code hosting providers are available:
 32 
 33 - hgbridge - continuously convert Mercurial repositories to git
 34 - mlbridge - bridge messages between mailing lists and pull requests
 35 - notify - send email notifications when repositories are updated
 36 - pr - add OpenJDK workflow support for pull requests
 37 - submit - example pull request test runner
 38 
 39 ## Building
 40 
 41 [JDK 12](http://jdk.java.net/12/) or later and [Gradle](https://gradle.org/)
 42 5.2.1 or later is required for building. To build the project on macOS or
 43 GNU/Linux, just run the following command from the source tree root:
 44 
 45 ```bash
 46 $ sh gradlew
 47 ```
 48 
 49 To build the project on Windows, run the following command from the source tree root:
 50 
 51 ```bat
 52 > gradlew
 53 ```
 54 
 55 The extracted jlinked image will end up in the `build` directory in the source
 56 tree root.
 57 
 58 It is also supported to cross-jlink jimages to GNU/Linux, macOS and/or Windows from
 59 any of the aforementioned operating systems. To build all applicable jimages
 60 (including the server-side tooling), run the following command from the
 61 source tree root:
 62 
 63 ```bash
 64 sh gradlew images
 65 ```
 66 
 67 ## Installing
 68 
 69 To install the Skara tools, include the `skara.gitconfig` Git configuration
 70 file in your user-level Git configuration file. On macOS or
 71 GNU/Linux:
 72 
 73 ```bash
 74 $ git config --global include.path "$PWD/skara.gitconfig"
 75 ```
 76 
 77 On Windows:
 78 
 79 ```bat
 80 > git config --global include.path "%CD%/skara.gitconfig"
 81 ```
 82 
 83 To check that everything works as expected, run the command `git skara help`.
 84 
 85 ## Testing
 86 
 87 [JUnit](https://junit.org/junit5/) 5.5.1 or later is required to run the unit
 88 tests. To run the tests, execute following command from the source tree root:
 89 
 90 ```bash
 91 $ sh gradlew test
 92 ```
 93 
 94 The tests expect [Git](https://git-scm.com/) version 2.19.1 or later and
 95 [Mercurial](https://mercurial-scm.org/) 4.7.1 or later to be installed on
 96 your system.
 97 
 98 This repository also contains a Dockerfile, `test.dockerfile`, that allows
 99 for running the tests in a reproducible way with the proper dependencies
100 configured. To run the tests in this way, run the following command from the
101 source tree root:
102 
103 ```bash
104 $ sh gradlew reproduce
105 ```
106 
107 ## Wiki
108 
109 Project Skara's wiki is available at <https://wiki.openjdk.java.net/display/skara>.
110 
111 ## Issues
112 
113 Issues are tracked in the [JDK Bug System](https://bugs.openjdk.java.net/)
114 under project Skara at <https://bugs.openjdk.java.net/projects/SKARA/>.
115 
116 ## Contributing
117 
118 We are more than happy to accept contributions to the Skara tooling, both via
119 patches sent to the Skara
120 [mailing list](https://mail.openjdk.java.net/mailman/listinfo/skara-dev) and in the
121 form of pull requests on [GitHub](https://github.com/openjdk/skara/pulls/).
122 
123 ## Members
124 
125 See <http://openjdk.java.net/census#skara> for the current Skara
126 [Reviewers](https://openjdk.java.net/bylaws#reviewer),
127 [Committers](https://openjdk.java.net/bylaws#committer) and
128 [Authors](https://openjdk.java.net/bylaws#author). See
129 <https://openjdk.java.net/projects/> for how to become an author, committer
130 or reviewer in an OpenJDK project.
131 
132 ## Discuss
133 
134 Development discussions take place on the project Skara mailing list
135 `skara-dev@openjdk.java.net`, see
136 <https://mail.openjdk.java.net/mailman/listinfo/skara-dev> for instructions
137 on how to subscribe of if you want to read the archives. You can also reach
138 many project Skara developers in the `#openjdk` IRC channel on
139 [OFTC](https://www.oftc.net/), see <https://openjdk.java.net/irc/> for details.
140 
141 ## License
142 
143 See the file `LICENSE` for details.