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