{"id":19998080,"url":"https://github.com/git-ecosystem/git-bundle-server","last_synced_at":"2025-07-18T23:05:08.964Z","repository":{"id":161076673,"uuid":"522994429","full_name":"git-ecosystem/git-bundle-server","owner":"git-ecosystem","description":"A web server \u0026 management CLI to host Git bundles for use with Git's \"bundle URIs\" feature","archived":false,"fork":false,"pushed_at":"2023-11-22T19:43:26.000Z","size":347,"stargazers_count":39,"open_issues_count":19,"forks_count":18,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-06-21T17:03:55.683Z","etag":null,"topics":["git"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/git-ecosystem.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-09T14:55:20.000Z","updated_at":"2024-04-30T19:22:01.000Z","dependencies_parsed_at":"2023-11-22T20:42:24.674Z","dependency_job_id":null,"html_url":"https://github.com/git-ecosystem/git-bundle-server","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/git-ecosystem%2Fgit-bundle-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/git-ecosystem%2Fgit-bundle-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/git-ecosystem%2Fgit-bundle-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/git-ecosystem%2Fgit-bundle-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/git-ecosystem","download_url":"https://codeload.github.com/git-ecosystem/git-bundle-server/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224393949,"owners_count":17303725,"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","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"],"created_at":"2024-11-13T05:07:18.362Z","updated_at":"2024-11-13T05:07:36.099Z","avatar_url":"https://github.com/git-ecosystem.png","language":"Go","readme":"# Git Bundle Server\n\n[bundle-uris]: https://git-scm.com/docs/bundle-uri\n[codeowners]: CODEOWNERS\n[contributing]: CONTRIBUTING.md\n[license]: LICENSE\n[support]: SUPPORT.md\n\n## Background\n\nBy running this software, you can self-host a bundle server to work with Git's\n[bundle URI feature][bundle-uris].\n\nThis repository is under active development, and loves contributions from the\ncommunity :heart:. Check out [CONTRIBUTING][contributing] for details on getting\nstarted.\n\n## Getting Started\n\n### Installing\n\n\u003e :warning: Installation on Windows is currently unsupported :warning:\n\n\u003c!-- Common sources --\u003e\n[releases]: https://github.com/git-ecosystem/git-bundle-server/releases\n\n#### Linux\n\nDebian packages (for x86_64 systems) can be downloaded from the\n[Releases][releases] page and installed with:\n\n```bash\nsudo dpkg -i /path/to/git-bundle-server_VVV-RRR_amd64.deb\n\n# VVV: version\n# RRR: package revision\n```\n\n#### MacOS\n\nPackages for both Intel and M1 systems can be downloaded from the\n[Releases][releases] page (identified by the `amd64` vs `arm64` filename suffix,\nrespectively). The package can be installed by double-clicking the downloaded\nfile, or on the command line with:\n\n```bash\nsudo installer -pkg /path/to/git-bundle-server_VVV-RRR_AAA.pkg -target /\n\n# VVV: version\n# RRR: package revision\n# AAA: platform architecture (amd64 or arm64)\n```\n\n#### From source\n\n\u003e To avoid environment issues building and executing Go code, we recommend that\n\u003e you clone inside the `src` directory of your `GOROOT`.\n\nYou can also install the bundle server application from source on any Unix-based\nsystem. To install to the system root, clone the repository and run:\n\n```ShellSession\n$ make install\n```\n\nNote that you will likely be prompted for a password to allow installing to\nroot-owned directories (e.g. `/usr/local/bin`).\n\nTo install somewhere other than the system root, you can manually specify an\n`INSTALL_ROOT` when building the `install` target:\n\n```ShellSession\n$ make install INSTALL_ROOT=\u003c/your/install/root\u003e\n```\n\n### Uninstalling\n\n#### From Debian package\n\nTo uninstall `git-bundle-server` if it was installed from a Debian package, run:\n\n```ShellSession\n$ sudo dpkg -r git-bundle-server\n```\n\n#### Everything else\n\nAll other installation methods include an executable script that uninstalls all\nbundle server resources. On MacOS \u0026 Linux, run:\n\n```ShellSession\n$ /usr/local/git-bundle-server/uninstall.sh\n```\n\n## Usage\n\n### Repository management\n\nThe following command-line interface allows you to manage which repositories are\nbeing managed by the bundle server.\n\n* `git-bundle-server init \u003curl\u003e [\u003croute\u003e]`: Initialize a repository by cloning a\n  bare repo from `\u003curl\u003e`. If `\u003croute\u003e` is specified, then it is the bundle\n  server route to find the data for this repository. Otherwise, the route is\n  inferred from `\u003curl\u003e` by removing the domain name. For example,\n  `https://github.com/git-for-windows/git` is assigned the route\n  `git-for-windows/git`. Run `git-bundle-server update` to initialize bundle\n  information. Configure the web server to recognize this repository at that\n  route. Configure scheduler to run `git-bundle-server update-all` as\n  necessary.\n\n* `git-bundle-server update [--daily|--hourly] \u003croute\u003e`: For the\n  repository in the current directory (or the one specified by `\u003croute\u003e`), fetch\n  the latest content from the remote and create a new set of bundles and update\n  the bundle list.  The `--daily` and `--hourly` options allow the scheduler to\n  indicate the timing of this instance to indicate if the newest bundle should\n  be an \"hourly\" or \"daily\" bundle. If `--daily` is specified, then collapse the\n  existing hourly bundles into a daily bundle. If there are too many daily\n  bundles, then collapse the appropriate number of oldest daily bundles into the\n  base bundle.\n\n* `git-bundle-server update-all [\u003coptions\u003e]`: For every configured route, run\n  `git-bundle-server update \u003coptions\u003e \u003croute\u003e`. This is called by the scheduler.\n\n* `git-bundle-server stop \u003croute\u003e`: Stop computing bundles or serving content\n  for the repository at the specified `\u003croute\u003e`. The route remains configured in\n  case it is reenabled in the future.\n\n* `git-bundle-server start \u003croute\u003e`: Start computing bundles and serving content\n  for the repository at the specified `\u003croute\u003e`. This does not update the\n  content immediately, but adds it back to the scheduler.\n\n* `git-bundle-server delete \u003croute\u003e`: Remove the configuration for the given\n  `\u003croute\u003e` and delete its repository data.\n\n* `git-bundle-server list [\u003coptions\u003e]`: List each route and associated\n  information (e.g. Git remote URL) in the bundle server.\n\n* `git-bundle-server repair routes [\u003coptions\u003e]`: Correct the contents of the\n  internal route registry by comparing to bundle server's internal repository\n  storage.\n\n### Web server management\n\nIndependent of the management of the individual repositories hosted by the\nserver, you can manage the web server process itself using these commands:\n\n* `git-bundle-server web-server start`: Start the web server process.\n\n* `git-bundle-server web-server stop`: Stop the web server process.\n\nFinally, if you want to run the web server process directly in your terminal,\nfor debugging purposes, then you can run `git-bundle-web-server`.\n\n### Additional resources\n\nDetailed guides to more complex administration tasks or user workflows can be\nfound in the [`docs/tutorials`](./docs/tutorials/) directory of this repository.\n\n## Local development\n\n### Building\n\n\u003e To avoid environment issues building and executing Go code, we recommend that\n\u003e you clone inside the `src` directory of your `GOROOT`.\n\nIn the root of your cloned repository, you can build the `git-bundle-server` and\n`git-bundle-web-server` executables a few ways.\n\nThe first is to use GNU Make; from the root of the repository, simply run:\n\n```ShellSession\n$ make\n```\n\nIf you do not have `make` installed on your system, you may instead run (again\nfrom the repository root):\n\n```ShellSession\n$ go build -o bin/ ./...\n```\n\n### Testing and Linting\n\nUnless otherwise specified, run commands from the repository root.\n\n#### Unit tests\n\n```\ngo test -v ./...\n```\n\n#### Linter\n\n```\ngo vet ./...\n```\n\n#### End-to-end tests\n\nIn order to run these tests, you need to have a recent version of\n[Node.js](https://nodejs.org) (current LTS version is a pretty safe bet) and NPM\ninstalled.\n\nFor the standard set of tests (i.e., excluding exceptionally slow tests), run:\n\n```\nmake e2e-test\n```\n\nTo configure the test execution and filtering, set the `E2E_FLAGS` build\nvariable. The available options are:\n\n* `--offline`: run all tests except those that require internet access.\n* `--all`: run all tests, including slow performance tests.\n\nThe above modes are mutually exclusive; if multiple are specified, only the last\nwill be used. For example, `E2E_FLAGS=\"--offline --all\"` is equivalent to\n`E2E_FLAGS=\"--all\"`.\n\n:warning: The performance tests that are excluded by default clone very large\nrepos from the internet and can take anywhere from ~30 minutes to multiple hours\nto run, depending on internet connectivity and other system resources.\n\n## License\n\nThis project is licensed under the terms of the MIT open source license. Please\nrefer to [LICENSE][license] for the full terms.\n\n## Maintainers\n\nSee [CODEOWNERS][codeowners] for a list of current project maintainers.\n\n## Support\n\nSee [SUPPORT][support] for instructions on how to file bugs, feature requests,\nand general questions/requests for help.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgit-ecosystem%2Fgit-bundle-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgit-ecosystem%2Fgit-bundle-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgit-ecosystem%2Fgit-bundle-server/lists"}