A practical guide for setting up your development environment and working with Kit, our Git workflow tool.
Kit is a command-line tool that simplifies Git operations across multiple repositories and submodules. Instead of running git commands in each submodule individually, Kit lets you manage everything from the parent repository.
- Git installed on your system
- SSH key configured with GitHub
- Basic terminal knowledge
Go to the Kit releases page and download the appropriate version for your system.
For Linux, download kit-linux.
After downloading, open your terminal and make the file executable:
chmod +x ~/Downloads/kit-linuxMove it to your system binaries and rename it:
sudo mv ~/Downloads/kit-linux /usr/local/bin/kitVerify the installation:
which kit
kit helpYou should see the Kit help menu with available commands.
Common Issue: Using HTTPS URLs for cloning will cause problems with recursive submodules. You need to force Git to use SSH instead.
Configure Git to always use SSH for GitHub:
git config --global url."git@github.com:".insteadOf "https://github.com/"This ensures all GitHub operations use your SSH key, even when a repository references HTTPS URLs.
If you had previous failed attempts, clean up first:
cd ~
rm -rf asoft
mkdir asoft
cd asoftNow clone the home repository with all its submodules recursively:
git clone --recursive git@github.com:aSoft-Ltd/home.git
cd homeThe --recursive flag ensures all nested submodules are cloned too. This might take a few minutes depending on the number of submodules.
Now that everything is set up, here's how to use Kit for common operations.
See the status of all submodules at once:
kit statusCreate your personal development branch across all submodules:
git submodule foreach --recursive "git switch -C dev-yourname || true"Replace dev-yourname with your actual branch name (e.g., dev-neicore).
The || true ensures the command continues even if a branch already exists in some submodules.
Important: At aSoft, you work directly on your developer branch (dev-yourname). Only create feature branches if you're working on something new while your current changes are pending review.
Fetch changes from the remote repository:
kit fetch origin mainOr fetch across all submodules:
git submodule foreach --recursive "git fetch origin"Merge changes from origin/main into your current branch:
kit merge origin mainThe quick way (recommended):
kit ac "your commit message"This adds all changes and commits them with your message in one command.
Example: You're working on academia-client and majestic for one feature. Once done:
cd ~/asoft/home
kit ac "implemented user authentication flow"Kit will automatically add and commit changes across all repositories you've modified.
Push your changes to your development branch:
kit push origin dev-yournameExample:
kit push origin dev-neicoreKit automatically pushes changes only in the repositories where you've made commits.
Work on your features across multiple repositories as needed (e.g., academia-client, majestic, overwatch-client).
Once you're done with a feature or logical unit of work:
cd ~/asoft/home
kit ac "descriptive message about what you changed"Example commits:
kit ac "implemented user authentication flow"kit ac "fixed navigation bug in dashboard"kit ac "added validation to form inputs"
Push your changes to your development branch:
kit push origin dev-yournameExample:
kit push origin dev-neicoreGo to GitHub and create pull requests for each repository you modified. Set the base branch to main and compare with your branch (dev-yourname).
Post in the team WhatsApp group to inform reviewers. Common messages:
When you push changes:
⚙️ Changes pushed
When you create/update a PR:
[PR link]
@ReviewerName
When changes are requested:
♻️ Changes Requested
If reviewers request changes:
- Make the requested changes in your code
- Commit:
kit ac "addressed review comments" - Push:
kit push origin dev-yourname - Notify in WhatsApp:
⚙️ changes pushed
If you need to work on something new while your current changes are pending review, create a feature branch:
git checkout -b feature/new-feature-nameOnce your main branch changes are merged, switch back and continue working.
In all submodules:
git submodule foreach "git branch"Switch to an existing branch across all submodules:
git submodule foreach --recursive "git switch dev-yourname || true"If you need to delete a branch:
git branch -D branch-namegit logHere's a quick reference of Kit commands:
kit status- Show status of all repositorieskit ac "message"- Add and commit changes with message (most used!)kit fetch- Fetch updates from remotekit merge- Merge changes from remote branchkit push origin dev-yourname- Push changes to your branchkit help- Show help menu
Solution: Make sure you've configured SSH as shown in Part 2, then try cloning again with the --recursive flag.
Solution: Make sure the file is executable:
sudo chmod +x /usr/local/bin/kitSolution: Check if the file is in your PATH:
which kit
echo $PATH# Setup (one time)
git config --global url."git@github.com:".insteadOf "https://github.com/"
git clone --recursive git@github.com:aSoft-Ltd/home.git
# Daily workflow
cd ~/asoft/home
kit status # Check what's changed
kit fetch origin main # Get latest updates
kit merge origin main # Merge updates into your branch
# ... make your changes across repos ...
kit ac "implemented feature X" # Add and commit all changes
kit push origin dev-yourname # Push to your branch
# Create PR on GitHub, then post in WhatsApp:
# "⚙️ Changes pushed"
# Branch management
git submodule foreach --recursive "git switch -C dev-yourname || true"
git submodule foreach "git branch" # See all branchesLet's say you're implementing a new authentication feature that touches both academia-client and majestic:
# 1. Start your day - get latest changes
cd ~/asoft/home
kit fetch origin main
kit merge origin main
# 2. Make sure you're on your dev branch
git submodule foreach --recursive "git switch dev-neicore || true"
# 3. Work on your feature
# Edit files in academia-client/...
# Edit files in majestic/...
# 4. Check what you changed
kit status
# 5. Commit your work
kit ac "implemented user authentication flow"
# 6. Push to GitHub
kit push origin dev-neicore
# 7. Create PRs on GitHub for academia-client and majestic
# 8. Post in WhatsApp
# "⚙️ Changes pushed"
# Tag your reviewer
# 9. If changes requested, make fixes and repeat steps 5-8
kit ac "addressed review comments"
kit push origin dev-neicore
# Post: "⚙️ changes pushed"- Always work on your dev branch (
dev-yourname) - only create feature branches if your current work is pending review - Use
kit ac "message"for quick commits - it's the most common command - Push with your branch name:
kit push origin dev-yourname - Check status frequently:
kit statusshows what you've changed - Communicate on WhatsApp: Use "⚙️ Changes pushed" when you push, tag reviewers
- Fetch and merge regularly: Stay up to date with main to avoid conflicts
- Kit is smart: It only pushes repos where you've made changes
- Commit messages matter: Be descriptive about what you changed
- One feature, one commit cycle: Complete logical units of work before committing
- When in doubt, ask: Better to ask in the group than to mess up branches
- Ask Isaka
- Ask in the team in WhatsApp chat