# clone-repo: Easily clone repos
- [Home](https://github.com/micktwomey/clone-repo)
- [PyPI](https://pypi.org/project/clone-repo/)
## What is this?
For years I've been using a noddy script which clones many types of repos into a fixed location which is generated based on the repo itself. Similar to how go packages are cloned into go/src I typically clone my stuff into ~/src.
e.g. `clone-repo git@github.com:micktwomey/clone-repo.git` will clone using git to `~/src/github.com/micktwomey/clone-repo`.
This allows me to clone many different repos without worrying about stepping on each other. It also makes it easy to see where stuff comes from (e.g. `rm -rf ~/src/old.git.example.com` will wipe out clones from git server I don't use any more).
Install via `pip install clone-repo`.
Install with [pipx](https://pypa.github.io/pipx/) using `pipx install clone-repo` to make it available as a CLI tool everywhere.
Supports:
- `/path/to/repo`
- `git clone` to `~/src/localhost/file/{repo}`
- `file:///path/to/repo`
- `git clone` to `~/src/localhost/file/{repo}`
- `git@example.com:org/repo.git`
- `git clone` to `~/src/{host}/{org}/{repo}`
- `https://github.com/org/repo.git`
- `git clone` to `~/src/github.com/{org}/{repo}`
- `https://github.com/org/repo`
- `git clone` to `~/src/github.com/{org}/{repo}`
- `https://gitlab.example.com/org/repo.git`
- `git clone` to `~/src/{host}/{org}/{repo}`
- `https://hg.mozilla.org/mozilla-central/`
- `hg clone` to `~/src/hg.mozilla.org/{org}/{repo}`
- `https://hg.sr.ht/~org/repo`
- `hg clone` to `~/src/hg.sr.ht/{org}/{repo}`
- `keybase://team/org/repo`
- `git clone` to `~/src/keybase/{org}/{repo}`
- `man@man.sr.ht:~org/repo`
- `git clone` to `~/src/man.sr.ht/{org}/{repo}`
- `ssh://git@example.com:7999/somegroup/myrepo.git`
- `git clone` to `~/src/{host}/{org}/{repo}`
- `ssh://hg@bitbucket.org/org/repo`
- `hg clone` to `~/src/{host}/{org}/{repo}`
For `https://` URLs the default is git but some will behave differently based on the domain.
# Development
If you want to quickly develop you can use [poetry](https://python-poetry.org) and [pytest](https://pytest.org/):
1. `poetry install`
2. `pytest -vv`
If you want to test across all supported Python versions you can install them via [asdf](https://asdf-vm.com) and then use [nox](https://nox.thea.codes):
1. `asdf install`
2. `poetry install`
3. `nox`
If you want to run [pre-commit](https://pre-commit.com) hooks before committing:
1. `poetry install`
2. `pre-commit install`
Finally, there is a [just](https://github.com/casey/just) justfile to run some commands.
Raw data
{
"_id": null,
"home_page": "https://github.com/micktwomey/clone-repo",
"name": "clone-repo",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7,<4.0",
"maintainer_email": "",
"keywords": "",
"author": "Michael Twomey",
"author_email": "mick@twomeylee.name",
"download_url": "https://files.pythonhosted.org/packages/08/06/7377a1ceae5187f579d5e50c70332a80ea77dda5a458b0469defc56198a5/clone_repo-0.3.0.tar.gz",
"platform": null,
"description": "# clone-repo: Easily clone repos\n\n- [Home](https://github.com/micktwomey/clone-repo)\n- [PyPI](https://pypi.org/project/clone-repo/)\n\n## What is this?\n\nFor years I've been using a noddy script which clones many types of repos into a fixed location which is generated based on the repo itself. Similar to how go packages are cloned into go/src I typically clone my stuff into ~/src.\n\ne.g. `clone-repo git@github.com:micktwomey/clone-repo.git` will clone using git to `~/src/github.com/micktwomey/clone-repo`.\n\nThis allows me to clone many different repos without worrying about stepping on each other. It also makes it easy to see where stuff comes from (e.g. `rm -rf ~/src/old.git.example.com` will wipe out clones from git server I don't use any more).\n\nInstall via `pip install clone-repo`.\n\nInstall with [pipx](https://pypa.github.io/pipx/) using `pipx install clone-repo` to make it available as a CLI tool everywhere.\n\nSupports:\n\n- `/path/to/repo`\n - `git clone` to `~/src/localhost/file/{repo}`\n- `file:///path/to/repo`\n - `git clone` to `~/src/localhost/file/{repo}`\n- `git@example.com:org/repo.git`\n - `git clone` to `~/src/{host}/{org}/{repo}`\n- `https://github.com/org/repo.git`\n - `git clone` to `~/src/github.com/{org}/{repo}`\n- `https://github.com/org/repo`\n - `git clone` to `~/src/github.com/{org}/{repo}`\n- `https://gitlab.example.com/org/repo.git`\n - `git clone` to `~/src/{host}/{org}/{repo}`\n- `https://hg.mozilla.org/mozilla-central/`\n - `hg clone` to `~/src/hg.mozilla.org/{org}/{repo}`\n- `https://hg.sr.ht/~org/repo`\n - `hg clone` to `~/src/hg.sr.ht/{org}/{repo}`\n- `keybase://team/org/repo`\n - `git clone` to `~/src/keybase/{org}/{repo}`\n- `man@man.sr.ht:~org/repo`\n - `git clone` to `~/src/man.sr.ht/{org}/{repo}`\n- `ssh://git@example.com:7999/somegroup/myrepo.git`\n - `git clone` to `~/src/{host}/{org}/{repo}`\n- `ssh://hg@bitbucket.org/org/repo`\n - `hg clone` to `~/src/{host}/{org}/{repo}`\n\nFor `https://` URLs the default is git but some will behave differently based on the domain.\n\n# Development\n\nIf you want to quickly develop you can use [poetry](https://python-poetry.org) and [pytest](https://pytest.org/):\n\n1. `poetry install`\n2. `pytest -vv`\n\nIf you want to test across all supported Python versions you can install them via [asdf](https://asdf-vm.com) and then use [nox](https://nox.thea.codes):\n\n1. `asdf install`\n2. `poetry install`\n3. `nox`\n\nIf you want to run [pre-commit](https://pre-commit.com) hooks before committing:\n\n1. `poetry install`\n2. `pre-commit install`\n\nFinally, there is a [just](https://github.com/casey/just) justfile to run some commands.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "CLI tool to clone repos easily",
"version": "0.3.0",
"project_urls": {
"Homepage": "https://github.com/micktwomey/clone-repo",
"Repository": "https://github.com/micktwomey/clone-repo"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "62d3917011fec331cbdb5caf2b8ff0e466d2ceba0c232d9e4aac11d9f5e5d352",
"md5": "28bca179fae8e3fe0c2fe6e6900f4ebf",
"sha256": "efdadd7477b561f2b2fa5c7edd8f7e2c4f2ffd5324c1e6744b2b78ee3ae36dd4"
},
"downloads": -1,
"filename": "clone_repo-0.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "28bca179fae8e3fe0c2fe6e6900f4ebf",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7,<4.0",
"size": 7905,
"upload_time": "2023-08-18T08:13:47",
"upload_time_iso_8601": "2023-08-18T08:13:47.653078Z",
"url": "https://files.pythonhosted.org/packages/62/d3/917011fec331cbdb5caf2b8ff0e466d2ceba0c232d9e4aac11d9f5e5d352/clone_repo-0.3.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "08067377a1ceae5187f579d5e50c70332a80ea77dda5a458b0469defc56198a5",
"md5": "3cc8c88356061273f4c51925b637842d",
"sha256": "4f6eb7de9e7dcc35241b94b36fb431dc046eb288592bcfeb0f0182e363a3e9f9"
},
"downloads": -1,
"filename": "clone_repo-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "3cc8c88356061273f4c51925b637842d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7,<4.0",
"size": 6367,
"upload_time": "2023-08-18T08:13:49",
"upload_time_iso_8601": "2023-08-18T08:13:49.198088Z",
"url": "https://files.pythonhosted.org/packages/08/06/7377a1ceae5187f579d5e50c70332a80ea77dda5a458b0469defc56198a5/clone_repo-0.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-18 08:13:49",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "micktwomey",
"github_project": "clone-repo",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "clone-repo"
}