Choosing a Workflow
When setting up workflows in Tower, you have several options to match your team's development process. The right choice depends on your project's complexity, team size, and release requirements.
Understanding Your Options
Tower provides two main categories of workflows: custom workflows that you can fully configure within Tower, and external workflows that integrate with established command-line tools.
Custom Workflows
Custom workflows offer the most flexibility and are recommended for most teams. When creating a custom workflow, you can choose from three starting points:
Auto-detected configuration works by analyzing your repository's existing branches. Tower examines your current branch structure and suggests a workflow configuration that matches your existing patterns. This approach is ideal when you already have an established branching strategy that you want to formalize.
Template-based workflows provide proven starting points that you can customize. Tower includes templates for GitHub Flow, GitLab Flow, and git-flow. Each template comes with predefined branch types and merge strategies that you can modify to suit your needs. This approach combines the benefits of established patterns with the flexibility to adapt them.
Building from scratch gives you complete control over every aspect of your workflow. You define your own branch types, establish merge strategies, and create parent-child relationships between branches. This option works best for teams with unique requirements that don't fit standard patterns.
The power of custom workflows lies in their flexibility. Like git-flow, they provide structure and automation, but without the constraints. You can skip steps that don't apply to your process, define branch types that match your terminology, and establish dependencies that reflect your actual development flow.
External Workflows
External workflows integrate Tower's visual interface with established command-line tools. These workflows require their respective CLI tools to be installed on your system.
Graphite workflow enables stack-based development where branches can depend on other branches. This approach excels in environments where features build upon each other or where code review happens on smaller, focused changes. Tower provides the visual interface while Graphite CLI handles the branch management logic.
git-flow CLI workflows implement the traditional git-flow branching model through the original git-flow command-line tool. This option works well for teams already using git-flow CLI who want to add Tower's visual capabilities without changing their existing process.
Getting Started
To set up your chosen workflow, click the
button in Tower's left sidebar. Tower presents the available workflow options and guides you through the selection process.The configuration experience differs based on your workflow choice. When you select a custom workflow, Tower opens its comprehensive workflow configuration dialog where you can define branch types, set merge strategies, and establish dependencies between branches. This dialog provides complete control over every aspect of your workflow behavior.
External workflows streamline the setup process by providing their own specialized configuration dialogs. These dialogs focus on the specific settings and options relevant to their particular workflow system, ensuring you can quickly configure the external tool's requirements without navigating unnecessary options.
Quick Setup If you're unsure which workflow to choose, start with auto-detection. Tower analyzes your existing branches and suggests a configuration that matches your current patterns, making it easy to formalize your existing process.
Adapting Over Time
Workflow choice isn't permanent. As your team and project evolve, you can disable your current workflow and select a different approach. Custom workflows can be modified at any time to accommodate changing requirements.
External workflows can be switched to custom workflows if you want more control or need features that the external tool doesn't provide. This flexibility ensures your workflow can grow with your development process rather than constraining it.