{"id":31601654,"url":"https://github.com/aceberg/git-confed","last_synced_at":"2025-10-06T07:23:56.095Z","repository":{"id":167639710,"uuid":"643257138","full_name":"aceberg/git-confed","owner":"aceberg","description":"Edit .git/config with predefined blocks","archived":false,"fork":false,"pushed_at":"2024-09-20T18:50:03.000Z","size":401,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-05T15:45:57.227Z","etag":null,"topics":["git","golang","self-hosted","selfhosted","webapp"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/aceberg/git-confed","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aceberg.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"custom":["https://www.donationalerts.com/r/andrewerlikh","https://boosty.to/aceberg/donate","https://github.com/aceberg#donate"]}},"created_at":"2023-05-20T15:35:17.000Z","updated_at":"2025-01-04T20:36:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"c8b561b5-7989-460e-b5c4-aa468950efa4","html_url":"https://github.com/aceberg/git-confed","commit_stats":null,"previous_names":["aceberg/git-confed"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/aceberg/git-confed","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aceberg%2Fgit-confed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aceberg%2Fgit-confed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aceberg%2Fgit-confed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aceberg%2Fgit-confed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aceberg","download_url":"https://codeload.github.com/aceberg/git-confed/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aceberg%2Fgit-confed/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278574010,"owners_count":26009094,"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-06T02:00:05.630Z","response_time":65,"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","golang","self-hosted","selfhosted","webapp"],"created_at":"2025-10-06T07:23:54.972Z","updated_at":"2025-10-06T07:23:56.079Z","avatar_url":"https://github.com/aceberg.png","language":"Go","funding_links":["https://www.donationalerts.com/r/andrewerlikh","https://boosty.to/aceberg/donate","https://github.com/aceberg#donate"],"categories":[],"sub_categories":[],"readme":"[![Go Report Card](https://goreportcard.com/badge/github.com/aceberg/git-confed)](https://goreportcard.com/report/github.com/aceberg/git-confed)\n[![Main-Docker](https://github.com/aceberg/git-confed/actions/workflows/main-docker.yml/badge.svg)](https://github.com/aceberg/git-confed/actions/workflows/main-docker.yml)\n[![Binary-release](https://github.com/aceberg/git-confed/actions/workflows/release.yml/badge.svg)](https://github.com/aceberg/git-confed/actions/workflows/release.yml)\n![GitHub](https://img.shields.io/github/license/aceberg/git-confed)\n[![Maintainability](https://api.codeclimate.com/v1/badges/b326d121b6eb53713396/maintainability)](https://codeclimate.com/github/aceberg/git-confed/maintainability)\n\n\u003ch1\u003e\u003ca href=\"https://github.com/aceberg/git-confed\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/aceberg/git-confed/main/assets/logo.png\" width=\"20\" /\u003e\n\u003c/a\u003egit-confed\u003c/h1\u003e\n\u003cbr/\u003e\n\nOverview all your git repos and edit their `.git/config` with predefined blocks. For example, if you need to add `user` to some repos, just configure block with username and email and then click `Add block` in each repo.   \nThe app is capable of detecting git repos in folder.\n\n- [Docker](https://github.com/aceberg/git-confed#docker)\n- [Other installation methods](https://github.com/aceberg/git-confed#installation)   \n- [Usage](https://github.com/aceberg/git-confed#usage)   \n- [Config](https://github.com/aceberg/git-confed#config)   \n- [Options](https://github.com/aceberg/git-confed#options) \n- [Local network only](https://github.com/aceberg/git-confed#local-network-only)  \n- [Thanks](https://github.com/aceberg/git-confed#thanks)\n\n![screenshot](https://raw.githubusercontent.com/aceberg/git-confed/main/assets/Screenshot%202023-05-26%20at%2016-08-42%20Git%20Config%20Editor.png)     \n\n![screenshot](https://raw.githubusercontent.com/aceberg/git-confed/main/assets/Screenshot%202023-05-25%20at%2017-17-23%20Git%20Config%20Editor.png)\n\n## Docker\nDon't forget to set the correct `/path/to/git/repos/folder`!   \nYou can mount as many paths, as you need.\n```sh\ndocker run --name git-confed \\\n-v ~/.dockerdata/git-confed:/data/git-confed \\\n-v /path/to/git/repos/folder:/repos \\\n-p 8848:8848 \\\naceberg/git-confed\n```\nOr use [docker-compose.yml](docker-compose.yml)\n\n## Installation\n\n### 1. From .deb repository (recommended)\n```sh\ncurl -s --compressed \"https://aceberg.github.io/ppa/KEY.gpg\" | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/aceberg.gpg\n```\n```sh\nsudo curl -s --compressed -o /etc/apt/sources.list.d/aceberg.list \"https://aceberg.github.io/ppa/aceberg.list\"\n```\n```sh\nsudo apt update \u0026\u0026 sudo apt install git-confed\n```\n### 2. From .deb file\nDownload [latest](https://github.com/aceberg/git-confed/releases/latest) release, install with your package maneger\n\n### 3. From .tar.gz\nDownload [latest](https://github.com/aceberg/git-confed/releases/latest) release, then\n```sh\ntar xvzf git-confed-*.tar.gz\ncd git-confed\nsudo ./install.sh\n```\n\n## Usage\n### 1. Systemd as user (recommended)\nEnable and start service, replace `MYUSER` with your username\n```sh\nsudo systemctl enable git-confed@MYUSER.service\nsudo systemctl start git-confed@MYUSER.service\n```\nWeb GUI will be available at [http://0.0.0.0:8848](http://0.0.0.0:8848)\n\n### 2. Systemd as root\nEnable and start service\n```sh\nsudo systemctl enable git-confed.service\nsudo systemctl start git-confed.service\n```\nWeb GUI will be available at [http://0.0.0.0:8848](http://0.0.0.0:8848)\n\n### 3. From command line\nJust run `git-confed`. Be mindful of the config files paths listed in [options](https://github.com/aceberg/git-confed#options) section.\n\n\n## Config\n### 1. With web GUI (recommended)\nYou can do all configuration through web interface. Config files paths are listed in [options](https://github.com/aceberg/git-confed#options) section below.\n\n### 2. CLI\n`blocks.yaml`\n```yaml\nTest Remote: \"[remote \\\"test\\\"]\\r\\n\\turl = bf:/home/data/repo/bare/testrepo\"\nUser - aceberg: \"[user]\\r\\n\\tname = aceberg\\r\\n\\temail = email@example.com\"\n```\n`config.yaml`\n```yaml\nfolders:\n    - /home/data/repo/01-cloned\n    - /home/data/repo/03-code\n    - /home/data/repo/awesome\nhost: 0.0.0.0\nother:\n    - test\nport: \"8848\"\ntheme: darkly\nurls:\n    - bitbucket\n    - github\n    - gitlab\n```\n| Variable  | Description | Default |\n| --------  | ----------- | ------- |\n| host | Address for web GUI | 0.0.0.0 |\n| port | Port for web GUI | 8848 |\n| theme | Any theme name from https://bootswatch.com in lowcase | darkly |\n| color | Color mode: light or dark | light |\n| folders | Where to search for git repos | |\n| urls | Search for those in config file | bitbucket github gitlab |\n| other | Search for those in config file | |\n\n\n\n## Options\n\n| Key  | Description | Default | Systemd (user) | Systemd (root) |\n| --------  | ----------- | ------- | --- | --- |\n| -b | Path to file with code blocks | /data/git-confed/blocks.yaml | $HOME/.config/git-confed/blocks.yaml | /etc/git-confed/blocks.yaml |\n| -c | Path to GUI config file | /data/git-confed/config.yaml | $HOME/.config/git-confed/config.yaml | /etc/git-confed/config.yaml |\n| -n | Path to node modules (see below) | \"\" | | |\n\n\n## Local network only\nBy default, this app pulls themes, icons and fonts from the internet. But, in some cases, it may be useful to have an independent from global network setup. I created a separate [image](https://github.com/aceberg/my-dockerfiles/tree/main/node-bootstrap) with all necessary modules and fonts.\nRun with Docker:\n```sh\ndocker run --name node-bootstrap          \\\n    -p 8850:8850                          \\\n    aceberg/node-bootstrap\n```\n```sh\ndocker run --name git-confed \\\n    -v ~/.dockerdata/git-confed:/data/git-confed \\\n    -v /path/to/git/repos/folder:/repos \\\n    -p 8848:8848 \\\n    aceberg/git-confed -n \"http://$YOUR_IP:8850\"\n```\n\n## Thanks\n- All go packages listed in [dependencies](https://github.com/aceberg/git-confed/network/dependencies)\n- [Bootstrap](https://getbootstrap.com/)\n- Themes: [Free themes for Bootstrap](https://bootswatch.com)\n- Icon \u003ca href=\"https://www.flaticon.com/free-icons/gear\" title=\"gear icons\"\u003eGear icons created by Anggara - Flaticon\u003c/a\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faceberg%2Fgit-confed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faceberg%2Fgit-confed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faceberg%2Fgit-confed/lists"}