{"id":19978759,"url":"https://github.com/s3rvac/git-branch-viewer","last_synced_at":"2026-04-13T09:31:20.761Z","repository":{"id":16811238,"uuid":"19570247","full_name":"s3rvac/git-branch-viewer","owner":"s3rvac","description":"A Python WSGI viewer of branches in git repositories.","archived":false,"fork":false,"pushed_at":"2019-02-10T10:14:04.000Z","size":153,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-01T19:24:22.765Z","etag":null,"topics":["branch","git","python","viewer","wsgi"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/s3rvac.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-08T10:55:07.000Z","updated_at":"2024-11-26T22:24:30.000Z","dependencies_parsed_at":"2022-08-04T11:15:12.554Z","dependency_job_id":null,"html_url":"https://github.com/s3rvac/git-branch-viewer","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/s3rvac/git-branch-viewer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s3rvac%2Fgit-branch-viewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s3rvac%2Fgit-branch-viewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s3rvac%2Fgit-branch-viewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s3rvac%2Fgit-branch-viewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/s3rvac","download_url":"https://codeload.github.com/s3rvac/git-branch-viewer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s3rvac%2Fgit-branch-viewer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31746291,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T09:16:15.125Z","status":"ssl_error","status_checked_at":"2026-04-13T09:16:05.023Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["branch","git","python","viewer","wsgi"],"created_at":"2024-11-13T03:35:14.362Z","updated_at":"2026-04-13T09:31:20.747Z","avatar_url":"https://github.com/s3rvac.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"git-branch-viewer\n=================\n\n[![Build Status](https://travis-ci.org/s3rvac/git-branch-viewer.svg?branch=master)](https://travis-ci.org/s3rvac/git-branch-viewer)\n[![Coverage Status](https://coveralls.io/repos/s3rvac/git-branch-viewer/badge.svg?branch=master\u0026service=github)](https://coveralls.io/github/s3rvac/git-branch-viewer?branch=master)\n\nA Python WSGI viewer of branches in [Git](http://git-scm.com/) repositories.\nThrough a web browser, it allows you to view the branches in a repository,\nincluding their status (age, unmerged commits).\n\nRequirements\n------------\n\n* [Python](https://www.python.org/) (tested with Python \u003e= 3.4)\n* [Flask](http://flask.pocoo.org/) (tested with Flask 0.10)\n* a [WSGI](http://en.wikipedia.org/wiki/Wsgi)-compliant web server (tested on\n  [Apache](http://httpd.apache.org/) 2.4 with\n  [mod_wsgi](https://code.google.com/p/modwsgi/))\n\nInstallation\n------------\n\n1. Install all the requirements above. [Flask](http://flask.pocoo.org/) can be\n   installed by using\n   [easy_install](http://pythonhosted.org/setuptools/easy_install.html) or\n   [pip](https://pypi.python.org/pypi/pip) (recommended):\n   ```\n   pip install flask\n   ```\n2. Clone this repository to your web server:\n\n        git clone https://github.com/s3rvac/git-branch-viewer\n\n3. Set up your web server and point it to the\n   `git-branch-viewer/git-branch-viewer.wsgi` file. A sample configuration for\n   [Apache](http://httpd.apache.org/) 2.4 with\n   [mod_wsgi](https://code.google.com/p/modwsgi/):\n\n        LoadModule wsgi_module modules/mod_wsgi.so\n\n        WSGIScriptAlias /git-branch-viewer /path/to/git-branch-viewer/git-branch-viewer.wsgi\n        WSGIDaemonProcess git-branch-viewer user=some_user group=some_group python-path=/path/to/git-branch-viewer\n        \u003cDirectory /path/to/git-branch-viewer\u003e\n                WSGIProcessGroup git-branch-viewer\n                WSGIApplicationGroup %{GLOBAL}\n                Require all granted\n        \u003c/Directory\u003e\n4. Configure the viewer (see the Configuration section below).\n5. Start/restart your web server.\n\n\nUsage\n-----\n\nSimply open `http://your-server.com/git-branch-viewer` in your favorite web\nbrowser. Depending on your configuration, you should see a list of branches on\nthe given remote in the given repository. For each branch, you can see its\nname, age, current commit, and commits that have not yet been merged into the\nmaster branch. If a branch does not have any unmerged commits, it is marked\nwith a red square (usually, such branches can be removed as they contain\nnothing that is not already in the master branch).\n\nConfiguration\n-------------\n\nThe global (default) configuration is stored in\n`git-branch-viewer/viewer/web/settings/default.cfg`. Do NOT edit this file to\noverride the settings. Instead, create a new file `local.cfg` in the same\ndirectory and add the modified settings in there. When the viewer is run, it\nfirst loads the default configuration. Then, it loads the local configuration\n(if any) and overrides the already loaded settings.\n\nYou should at least override `GIT_REPO_PATH`, which tells the viewer which Git\nrepository it should use. Currently, it has to be an absolute path to a cloned\nrepository.\n\nAn example of `local.cfg`:\n\n    GIT_REPO_PATH='/path/to/some/cloned/repository'\n    GIT_BRANCHES_TO_IGNORE = ['master', 'stable']\n    COMMIT_DETAILS_URL_FMT = 'http://your-server.com/some-app-to-show-commit-details/{}'\n    UNMERGED_COMMITS_LIMIT = 10\n\nAs you can see, the configuration uses Python constructs, such as strings and\nlists. See `default.cfg` for all the possible configuration settings, including\ntheir description.\n\nNotes\n-----\n\n* The viewer does not perform any repository updates by itself. To keep your\n  repository up to date, you should set up a\n  [cronjob](http://en.wikipedia.org/wiki/Cron):\n```\n# Update the cloned repository for git-branch-viewer every 1 minute.\n*/1 * * * * git -C /path/to/some/cloned/repository pull --prune\n```\n\nContribution\n------------\n\nAny contributions are welcomed. Notes:\n\n* Project documentation can be generated by running `make docs` (you need to\n  have [Sphinx](http://sphinx-doc.org/) installed).\n* The code is covered with unit tests. To run them, execute `make tests` (you\n  need to have [nose](https://nose.readthedocs.io/en/latest/) installed).\n* Test coverage can be generated by executing `make tests-coverage` (once\n  again, you need to have [nose](https://nose.readthedocs.io/en/latest/)\n  installed).\n* To ensure that the code complies to\n  [PEP8](https://www.python.org/dev/peps/pep-0008/), execute `make lint` (you\n  need to have [flake8](https://pypi.python.org/pypi/flake8) installed).\n* By executing script `run-dev-web-server.py`, a local web development server\n  is run, which is available on `http://localhost:5000`. Whenever you modify a\n  source file, the server automatically reloads itself. Moreover, in case of an\n  exception, it prints the whole stack trace to ease the debugging.\n  **Warning**: Do NOT use this local server in production because it may allow\n  attackers to execute arbitrary code on your server!\n\nSee the contents of the `Makefile` file to all the possible targets.\n\nLicense\n-------\n\nCopyright (c) 2014 Petr Zemek \u003cs3rvac@gmail.com\u003e and contributors\n\nDistributed under the BSD 3-clause license. See the\n[`LICENSE`](https://github.com/s3rvac/git-branch-viewer/blob/master/LICENSE)\nfile for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs3rvac%2Fgit-branch-viewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fs3rvac%2Fgit-branch-viewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs3rvac%2Fgit-branch-viewer/lists"}