{"id":13908218,"url":"https://github.com/openjdk/skara","last_synced_at":"2025-10-08T09:07:08.402Z","repository":{"id":34974857,"uuid":"193500053","full_name":"openjdk/skara","owner":"openjdk","description":"https://openjdk.org/projects/skara","archived":false,"fork":false,"pushed_at":"2025-09-29T16:02:47.000Z","size":8828,"stargazers_count":206,"open_issues_count":0,"forks_count":91,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-09-29T18:11:02.935Z","etag":null,"topics":["git","hg","java","openjdk","skara"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openjdk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-06-24T12:22:10.000Z","updated_at":"2025-09-29T16:02:10.000Z","dependencies_parsed_at":"2023-01-15T11:17:23.628Z","dependency_job_id":"4b99afc1-3378-4150-9f81-13a83a7a5b5d","html_url":"https://github.com/openjdk/skara","commit_stats":{"total_commits":1662,"total_committers":43,"mean_commits":"38.651162790697676","dds":0.6492178098676293,"last_synced_commit":"c5882168725100819d2847ae0fdb0bbffb1d5b6e"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/openjdk/skara","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openjdk%2Fskara","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openjdk%2Fskara/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openjdk%2Fskara/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openjdk%2Fskara/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openjdk","download_url":"https://codeload.github.com/openjdk/skara/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openjdk%2Fskara/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278917004,"owners_count":26068215,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["git","hg","java","openjdk","skara"],"created_at":"2024-08-06T23:02:33.300Z","updated_at":"2025-10-08T09:07:08.382Z","avatar_url":"https://github.com/openjdk.png","language":"Java","readme":"# OpenJDK Project Skara\n\nThe goal of Project Skara is to investigate alternative SCM and code review\noptions for the OpenJDK source code, including options based upon Git rather than\nMercurial, and including options hosted by third parties.\n\nThis repository contains tooling for working with OpenJDK projects and\ntheir repositories. The following CLI tools are available as part of this\nrepository:\n\n- git-jcheck - a backwards compatible Git port of [jcheck](https://openjdk.org/projects/code-tools/jcheck/)\n- git-webrev - a backwards compatible Git port of [webrev](https://openjdk.org/projects/code-tools/webrev/)\n- git-defpath - a backwards compatible Git port of [defpath](https://openjdk.org/projects/code-tools/defpath/)\n- git-fork - fork a project on an external Git source code hosting provider to your personal space and optionally clone it\n- git-sync - sync the personal fork of the project with the current state of the upstream repository\n- git-pr - interact with pull requests for a project on an external Git source code hosting provider\n- git-info - show OpenJDK information about commits, e.g. issue links, authors, contributors, etc.\n- git-token - interact with a Git credential manager for handling personal access tokens\n- git-translate - translate between [Mercurial](https://mercurial-scm.org/)\nand [Git](https://git-scm.com/) hashes\n- git-skara - learn about and update the Skara CLI tools\n- git-trees - run a git command in a tree of repositories\n- git-publish - publishes a local branch to a remote repository\n- git-backport - backports a commit from another repository onto the current branch\n\nThere are also CLI tools available for importing OpenJDK\n[Mercurial](https://mercurial-scm.org/) repositories into\n[Git](https://git-scm.com/) repositories and vice versa:\n\n- git-openjdk-import\n- git-verify-import\n- hg-openjdk-import\n\nThe following server-side tools (so called \"bots\") for interacting with\nexternal Git source code hosting providers are available:\n\n- hgbridge - continuously convert Mercurial repositories to git\n- mlbridge - bridge messages between mailing lists and pull requests\n- notify - send email notifications when repositories are updated\n- pr - add OpenJDK workflow support for pull requests\n- submit - example pull request test runner\n- forward - forward commits to various repositories\n- mirror - mirror repositories\n- merge - merge commits between different repositories and/or branches\n- test - test runner\n\n## Building\n\n[JDK 21](http://jdk.java.net/21/) or later and [Gradle](https://gradle.org/)\n8.5 or later are required for building and will be automatically downloaded\nand installed by the custom gradlew script. To build the project on macOS or\nGNU/Linux x64, just run the following command from the source tree root:\n\n```bash\n$ sh gradlew\n```\n\nTo build the project on Windows x64, run the following command from the source\ntree root:\n\n```bat\n\u003e gradlew\n```\n\nThe extracted jlinked image will end up in the `build` directory in the source\ntree root. _Note_ that the above commands will build the CLI tools, if you\nalso want to build the bot images run `sh gradlew images` on GNU/Linux or\n`gradlew images` on Windows.\n\n### Other operating systems and CPU architectures\n\nIf you want to build on an operating system other than GNU/Linux, macOS or\nWindows _or_ if you want to build on a CPU architecture other than x64, then\nensure that you have a JDK of suitable version or later installed locally and\nJAVA_HOME set to point to it. You can then run the following command from the\nsource tree root:\n\n```bash\n$ sh gradlew\n```\n\nThe extracted jlinked image will end up in the `build` directory in the source\ntree root.\n\n### Offline builds\n\nIf you don't want the build to automatically download any dependencies, then\nyou must ensure that you have installed the following software locally (see\nversion requirements above):\n\n- JDK\n- Gradle\n\nTo create a build then run the command:\n\n```bash\n$ gradle offline\n```\n\n_Please note_ that the above command does _not_ make use of `gradlew` to avoid\ndownloading Gradle.\n\nThe extracted jlinked image will end up in the `build` directory in the source\ntree root.\n\n### Cross-linking\n\nIt is also supported to cross-jlink jimages to GNU/Linux, macOS and/or Windows from\nany of the aforementioned operating systems. To build all applicable jimages\n(including the server-side tooling), run the following command from the\nsource tree root:\n\n```bash\nsh gradlew images\n```\n\n### Makefile wrapper\n\nSkara also has a very thin Makefile wrapper for contributors who prefer to build\nusing `make`. To build the jlinked image for the CLI tools using `make`, run:\n\n```bash\nmake\n```\n\n## Installing\n\nThere are multiple ways to install the Skara CLI tools. The easiest way is to\njust include `skara.gitconfig` in your global Git configuration file. You can also\ninstall the Skara tools on your `$PATH`.\n\n### Including skara.gitconfig\n\nTo install the Skara tools, include the `skara.gitconfig` Git configuration\nfile in your user-level Git configuration file. On macOS or\nGNU/Linux:\n\n```bash\n$ git config --global include.path \"$PWD/skara.gitconfig\"\n```\n\nOn Windows:\n\n```bat\n\u003e git config --global include.path \"%CD%/skara.gitconfig\"\n```\n\nTo check that everything works as expected, run the command `git skara help`.\n\n### Adding to PATH\n\nThe Skara tools can also be added to `$PATH` on GNU/Linux and macOS and Git\nwill pick them up. You can either just extend `$PATH` with the `build/bin`\ndirectory or you can copy the tools to a location already on `$PATH`. To extend\n`$PATH` with the `build/bin` directory, run:\n\n```bash\n$ sh gradlew\n$ export PATH=\"$PWD/build/bin:$PATH\"\n```\n\nTo copy the tools to a location already on `$PATH`, run:\n\n```bash\n$ make\n$ make install prefix=/path/to/install/location\n```\n\nWhen running `make install` the default value of `prefix` is `$HOME/.local`.\n\nIf you want `git help \u003cskara tool\u003e` (or the equivalent `man git-\u003cskara tool\u003e`\nto work, you must also add the `build/bin/man` directory to `$MANPATH`.\nFor instance, run this from the Skara top directory to add this to your\n`.bashrc` file:\n\n```bash\necho \"export MANPATH=\\$MANPATH\":$PWD/build/bin/man \u003e\u003e ~/.bashrc\n```\n\n## Testing\n\n[JUnit](https://junit.org/junit5/) 5.8.2 or later is required to run the unit\ntests. To run the tests, execute following command from the source tree root:\n\n```bash\n$ sh gradlew test\n```\n\nIf you prefer to use the Makefile wrapper you can also run:\n\n```bash\n$ make test\n```\n\nThe tests expect [Git](https://git-scm.com/) version 2.19.3 or later and\n[Mercurial](https://mercurial-scm.org/) 4.7.2 or later to be installed on\nyour system.\n\nThis repository also contains a Dockerfile, `test.dockerfile`, that allows\nfor running the tests in a reproducible way with the proper dependencies\nconfigured. To run the tests in this way, run the following command from the\nsource tree root:\n\n```bash\n$ sh gradlew reproduce\n```\n\nIf you prefer to use the Makefile wrapper you can also run:\n\n```bash\n$ make reproduce\n```\n\n## Developing\n\nThere are no additional dependencies required for developing Skara if you can\nalready build and test it (see above for instructions). The command-line tools\nand libraries supports all of GNU/Linux, macOS and Windows and can therefore be\ndeveloped on any of those operating systems. The bots primarily support macOS\nand GNU/Linux and may require [Windows Subsystem for\nLinux](https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux) on Windows.\n\nPlease see the sections below for instructions on setting up a particular editor\nor IDE.\n\n### IntelliJ IDEA\n\nIf you choose to use [IntelliJ IDEA](https://www.jetbrains.com/idea/) as your\nIDE when working on Skara you can simply open the root folder and the project\nshould be automatically imported. You will need to configure a Platform SDK that\nis of the appropriate version (see above). Either set this up manually, or\n[build](#building) once from the terminal, which will download a suitable JDK.\nConfigure IntelliJ to use it at `File → Project Structure → Platform\nSettings → SDKs → + → Add JDK...` and browse to the downloaded JDK found\nin `\u003cskara-folder\u003e/.jdk/`. For example, on macOS, select the\n`\u003cskara-folder\u003e/.jdk/openjdk-21_osx-x64_bin/jdk-21.jdk/Contents/Home` folder.\n\n### Vim\n\nIf you choose to use [Vim](https://vim.org) as your editor when working on Skara then you\nprobably also want to utilize the Makefile wrapper. The Makefile wrapper enables\nto you to run `:make` and `:make tests` in Vim.\n\n## Wiki\n\nProject Skara's wiki is available at \u003chttps://wiki.openjdk.org/display/skara\u003e.\n\n## Issues\n\nIssues are tracked in the [JDK Bug System](https://bugs.openjdk.org/)\nunder project Skara at \u003chttps://bugs.openjdk.org/projects/SKARA/\u003e.\n\n## Contributing\n\nWe are more than happy to accept contributions to the Skara tooling, both via\npatches sent to the Skara\n[mailing list](https://mail.openjdk.org/mailman/listinfo/skara-dev) and in the\nform of pull requests on [GitHub](https://github.com/openjdk/skara/pulls/).\n\n## Members\n\nSee \u003chttp://openjdk.org/census#skara\u003e for the current Skara\n[Reviewers](https://openjdk.org/bylaws#reviewer),\n[Committers](https://openjdk.org/bylaws#committer) and\n[Authors](https://openjdk.org/bylaws#author). See\n\u003chttps://openjdk.org/projects/\u003e for how to become an author, committer\nor reviewer in an OpenJDK project.\n\n## Discuss\n\nDevelopment discussions take place on the project Skara mailing list\n`skara-dev@openjdk.org`, see\n\u003chttps://mail.openjdk.org/mailman/listinfo/skara-dev\u003e for instructions\non how to subscribe of if you want to read the archives. You can also reach\nmany project Skara developers in the `#openjdk` IRC channel on\n[OFTC](https://www.oftc.net/), see \u003chttps://openjdk.org/irc/\u003e for details.\n\n## License\n\nSee the file `LICENSE` for details.\n","funding_links":[],"categories":["HarmonyOS"],"sub_categories":["Windows Manager"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenjdk%2Fskara","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenjdk%2Fskara","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenjdk%2Fskara/lists"}