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