# GetGit - Git Repository Setup Tool A simple bash script that helps users set up SSH keys and clone repositories from a private git server. ## Features - **SSH Key Generation**: Automatically generates SSH keys if they don't exist - **Dynamic User Support**: Works with any username on the git server - **Repository Discovery**: Automatically discovers available repositories for the user - **Interactive Selection**: Allows users to choose which repository to clone - **Dotfiles Support**: Special handling for dotfiles repositories with automatic setup execution ## Usage 1. Make the script executable: ```bash chmod +x setup.sh ``` 2. Run the script: ```bash ./setup.sh ``` 3. Follow the prompts: - Enter your git username - Generate SSH key (if needed) - Add the SSH key to your git account - Select which repository to clone ## How It Works ### 1. Username Input The script prompts for your git username, which is used to: - Discover available repositories - Construct repository URLs - Set up proper directory structure ### 2. SSH Key Management - Checks for existing SSH key (`~/.ssh/id_ed25519`) - Generates a new key if none exists - Displays the public key for copying to your git account ### 3. Repository Discovery The script automatically checks for common repository patterns: - `username/dotfiles` - `username/scripts` - `username/configs` - `username/tools` - `username/projects` - `username/notes` - `username/backup` - `username/workspace` ### 4. Repository Selection Users can: - Select from numbered list of discovered repositories - Press Enter to use `username/dotfiles` (if available) - Type `custom` to enter a custom repository path ### 5. Cloning and Setup - Clones the selected repository to the appropriate directory - For dotfiles repositories: runs `setup.sh` automatically - For other repositories: simply clones to `~/repository-name` ## Configuration The script can be configured by modifying the settings at the top: ```bash ### === SETTINGS === ### GIT_SERVER="git.del-c.net" # Change to your git server ``` ## Directory Structure - **Dotfiles**: `~/.dotfiles/` - **Other repos**: `~/repository-name/` ## Requirements - Bash shell - Git installed - SSH client - Access to the configured git server ## Example Flow ``` $ ./setup.sh [?] Enter your git username: Username: john [+] No SSH key found. Need to generate a new SSH key... [+] If you are using the correct user, please enter your email for the SSH key. Enter your email for the SSH key: john@example.com [*] Add the following public key to your GitHub account: ---------------------------------------- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGx... john@example.com ---------------------------------------- Press Enter after you've added the key... [+] Fetching available git projects for user: john... [*] Available repositories: 1. john/dotfiles 2. john/scripts 3. john/tools [?] Which project would you like to download? Enter the number of the repository from the list above, or: - Press Enter to use john/dotfiles (if available) - Type 'custom' to enter a custom repository path Enter your choice: 1 [*] Selected repository: git@git.del-c.net:john/dotfiles.git [*] Download directory: /Users/john/.dotfiles [+] Cloning selected repository... [+] Launching dotfiles setup using Bash... ``` ## Troubleshooting ### SSH Key Issues - Ensure the SSH key is added to your git account - Check SSH connection: `ssh -T git@git.del-c.net` ### Repository Not Found - Verify the repository exists on the server - Check username spelling - Ensure you have access to the repository ### Permission Denied - Confirm SSH key is properly added to git account - Verify you have read access to the repository ## Contributing Feel free to submit issues and enhancement requests!