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.