Gclone removes the hazzle of having to use cd to the preferred directory when cloning and creating repositories.
It consists of two commands:
clonerepoclones git repositores into a pre-determined directory structure, and thencds into the cloned directory.newrepocreates git repositories into a pre-determined directory structure, and thencds into the directory containing the repository.
Example: clonerepo
/tmp $ . clonerepo https://github.com/yngvark/gclone.git Cloning into directory: /home/myself/git/yngvark/gclone Cloning into 'gclone'... remote: Enumerating objects: 26, done. remote: Counting objects: 100% (26/26), done. remote: Compressing objects: 100% (20/20), done. remote: Total 26 (delta 7), reused 23 (delta 4), pack-reused 0 Receiving objects: 100% (26/26), 9.02 KiB | 9.02 MiB/s, done. Resolving deltas: 100% (7/7), done. ~/git/gclone (main) $ Notice that clonerepo changed the current directory (where the parent path is configurable).
Example: newrepo
/tmp $ . newrepo my-new-repo Command: gh repo create --clone my-github-username/my-new-repo --public Successfully created public repository in directory /home/myself/git/my-github-username/my-new-repo cd /home/myself/git/my-github-username/my-new-repoNotice that newrepo changed the current directory to the new repository's directory (where the parent path is configurable).
cd wherever-you-put-your-applications-or-repos git clone https://github.com/yngvark/gclone.git mkdir -p ~/.local/bin # Make sure this is in your PATH ln -s $(pwd)/gclone/clonerepo ~/.local/bin/clonerepo ln -s $(pwd)/gclone/newrepo ~/.local/bin/newrepoIn your .bashrc/.zshrc, or wherever you want your environment variables to live, add:
export GCLONE_GIT_DIR=/home/myself/git export GCLONE_GIT_TEMP_DIR="/tmp/git" export REPONEW_DEFAULT_ORGANIZATION="my-git-username"ToDo: Put this into config file or something instead.
cd wherever-you-put-your-applications-or-repos rm -rf gclone rm ~/.local/bin/clonerepo rm ~/.local/bin/newrepo$ clonerepo -h usage: gclone_repo [-h] [-t] repoUri git clones a repo URI to the appropriate directory. Tip: use ". clonerepo <args>" to change directory to cloned directory. positional arguments: repoUri URI of the repo to clone optional arguments: -h, --help show this help message and exit -t, --temp Clone the repository in a temporary directoryRequirements:
$ newrepo -h usage: gclone_reponew [-h] [-n | --dry-run | --no-dry-run] [-p | --private | --no-private] [-t TEMPLATE] [-d DESCRIPTION] repoId Creates a new Github repository. Tip: use ". newrepo <args>" to change directory to cloned directory. positional arguments: repoId Organization (optinal) and repository name. Example: myorg/myrepo optional arguments: -h, --help show this help message and exit -n, --dry-run, --no-dry-run Don't make any changes -p, --private, --no-private Make the new repository private -t TEMPLATE, --template TEMPLATE repository for template. For instance 'myorg/mytemplaterepo' -d DESCRIPTION, --description DESCRIPTION the description for the repositoryIn Fish shell, . and source don't work. To support Fish, you can install fs.
You can then replace . in the above commands with fs, for instance
fs clonerepo https://github.com/yngvark/gclone.git