Forks¶
clowder simplifies some common fork workflows. Currently, it’s only possible to add one fork for a project. Forks are handled specially by certain commands
clowder herd¶
Update with latest changes
# Herd a shallow clone to specified depth
$ clowder herd -d 1
- If any projects don’t have a clean git status then
clowderexits - Projects are cloned from the upstream remote if they don’t currently exist
- Each project fetches the latest changes from upstream
- If the current git ref checked out doesn’t match the
clowder.yamlconfiguration, the correct ref will be checked out - The latest changes are pulled from upstream for branches. For commits and tags, the commits are checked out into a detached
HEADstate
# Herd using rebase instead of pull
$ clowder herd -r
# Herd a specified branch if it exists, otherwise use default ref
$ clowder herd -b my_branch
- If any projects don’t have a clean git status then
clowderexits - Projects are cloned from the upstream remote if they don’t currently exist
- Each project fetches the latest changes from upstream
- If a local branch exists, it’s checked out
- If a remote branch
my_branchexists on the fork remote, the latest changes are pulled. Otherwise, if a remote branchmy_branchexists upstream, the latest changes are pulled - If no local or upstream branches exist, the default ref will be checked out like a normal
herd
# Herd a specified tag if it exists, otherwise use default ref
$ clowder herd -t my_tag
- If any projects don’t have a clean git status then
clowderexits - Projects are cloned from the upstream remote if they don’t currently exist
- Each project fetches the latest changes from upstream
- If a tag exists, it’s checked out into a detached
HEADstate - If no tag exists, the default ref will be checked out like a normal
herd
clowder prune¶
Prune local or remote branches
# Prune remote branch 'stale_branch' for all projects
$ clowder prune -r stale_branch
# Prune local and remote branch 'stale_branch' for all projects
$ clowder prune -a stale_branch
# Force prune local and remote branch 'stale_branch' for all projects
$ clowder prune -af stale_branch
Remote branches are pruned form the fork remote, on the assumption that the user doesn’t have write access to the upstream remote
clowder reset¶
Reset branches to upstream state
# Reset branches in all projects
$ clowder reset
- If any projects don’t have a clean git status then
clowderexits - Projects are cloned from the upstream remote if they don’t currently exist
- Each project fetches the latest changes from upstream
- Branches are reset to the upstream remote branch’s latest commit. Otherwise, projects are checked out into a detached
HEADstate for tags and shas
clowder start¶
Start a new feature branch or check out if it already exists
# Create new local and remote tracking branch 'my_feature' for all projects
$ clowder start -t my_feature
New tracking branches are created on the fork remote, on the assumption that the user doesn’t have write access to the upstream remote
clowder sync¶
Sync default fork branches with upstream remotes
# Sync all forks with upstream remotes
$ clowder sync
- If any projects don’t have a clean git status then
clowderexits - Each project fetches the latest changes from upstream
- If the current git ref checked out doesn’t match the
clowder.yamlconfiguration, the correct ref will be checked out - The latest changes are pulled from upstream for branches. For commits and tags, the commits are checked out into a detached
HEADstate - New changes from upstream are pushed to any fork remote branch
# Sync using rebase instead of pull
$ clowder sync -r
- If any projects don’t have a clean git status then
clowderexits - Each project fetches the latest changes from upstream
- If the current git ref checked out doesn’t match the
clowder.yamlconfiguration, the correct ref will be checked out - The default branch is rebased onto the latest changes from upstream for branches. For commits and tags, the commits are checked out into a detached
HEADstate - New changes from upstream are pushed to any fork remote branch