{"id":16199937,"url":"https://github.com/agateau/reposetup","last_synced_at":"2025-03-19T05:30:53.389Z","repository":{"id":66380988,"uuid":"55812767","full_name":"agateau/reposetup","owner":"agateau","description":"A minimalist Git repository manager","archived":false,"fork":false,"pushed_at":"2016-04-11T19:58:06.000Z","size":12,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-17T04:21:17.685Z","etag":null,"topics":["git","repository","shell"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/agateau.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2016-04-08T22:09:54.000Z","updated_at":"2022-09-02T16:39:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"83b3202b-3f38-4f70-9832-4abed1645996","html_url":"https://github.com/agateau/reposetup","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agateau%2Freposetup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agateau%2Freposetup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agateau%2Freposetup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agateau%2Freposetup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agateau","download_url":"https://codeload.github.com/agateau/reposetup/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244364702,"owners_count":20441458,"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","repository","shell"],"created_at":"2024-10-10T09:28:46.117Z","updated_at":"2025-03-19T05:30:53.384Z","avatar_url":"https://github.com/agateau.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Reposetup\n\nReposetup is a minimalist tool to manage repositories on a remote server. It\nrequires only an ssh server and optionally a web server.\n\nIt is a simpler alternative to more feature complete tools like [Gitolite][] if\nyou want to host repositories on your own server.\n\n## Installation\n\nAssuming you have a server with SSH installed and Apache with the\n[mod_userdir][] module enabled, the following will setup Reposetup to manage\nGit repositories in the `public_html/git` directory inside your user home\ndirectories.\n\n- Connect to your server\n\n- Copy the `reposetup` script to a directory which is part of $PATH when\n  running a command over SSH, for example `/usr/local/bin`.\n  (`$HOME/bin` is likely not a good candidate because it is only added to $PATH\n  when starting a shell)\n\n- Create `/etc/reposetuprc` with the following content, replacing\n  `\u003cyourserver\u003e` with the hostname of your server:\n\n    ```\n    # Path where repositories will be created\n    REPO_BASE_DIR=$HOME/public_html/git\n\n    # Repository url for read-write access\n    REPO_RW_URL=$USER@\u003cyourserver\u003e:public_html/git/$REPO_NAME\n\n    # Repository url for read-only access\n    REPO_RO_URL=http://\u003cyourserver\u003e/~$USER/git/$REPO_NAME\n    ```\n\nNote: You can also create a `reposetuprc` file in the `$HOME/.config` directory\nof each user.\n\n## Usage\n\nReposetup is designed to be used over SSH, from your workstation.\n\nLet's say user sheldon wants to create a repository named example on the\nbazinga server:\n\n    $ ssh sheldon@bazinga reposetup create example\n    The \"example\" repository has been created. You can now clone it with:\n\n        git clone sheldon@bazinga:public_html/git/example\n\n    If you already have a local repository, you can push its content with:\n\n        git remote add origin sheldon@bazinga:public_html/git/example\n        git push -u origin master\n\n    The url for read-only access is:\n\n        http://bazinga/~sheldon/git/example\n\nTo list your repositories:\n\n    $ ssh sheldon@bazinga reposetup ls\n    example:\n        read-write url: sheldon@bazinga:public_html/git/example\n        read-only url: http://bazinga/~sheldon/git/example\n\nTo rename the repository:\n\n    $ ssh sheldon@bazinga reposetup rename example bbt\n\nTo delete the repository:\n\n    $ ssh sheldon@bazinga repository rm bbt\n    Delete the \"bbt\" repository? y\n\n## Shouldn't you host this on your own server?\n\nYou might find it ironic that a tool to manage repositories is hosted on\nGitHub rather than self-hosted on a server I own.\n\nThe reason for this is that I am no sysadmin. I am not qualified to setup a\nsecure, public-facing Git server. I use Reposetup on private servers, but\nhosting it on GitHub is simpler for me and probably safer for you.\n\nThat should not stop from hosting it yourself on your own server, that's the\nbeauty of Git.\n\n[Gitolite]: https://github.com/sitaramc/gitolite\n[mod_userdir]: https://httpd.apache.org/docs/2.4/en/mod/mod_userdir.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagateau%2Freposetup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagateau%2Freposetup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagateau%2Freposetup/lists"}