<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mehran Zand</title>
    <description>The latest articles on DEV Community by Mehran Zand (@mehranzand).</description>
    <link>https://dev.to/mehranzand</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3783805%2F30c91d93-38cb-48de-8f71-6f04a7d2e51d.jpg</url>
      <title>DEV Community: Mehran Zand</title>
      <link>https://dev.to/mehranzand</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mehranzand"/>
    <language>en</language>
    <item>
      <title>I Built RepoFleet to Manage One Feature Across Multiple Git Repositories</title>
      <dc:creator>Mehran Zand</dc:creator>
      <pubDate>Tue, 14 Jul 2026 15:24:25 +0000</pubDate>
      <link>https://dev.to/mehranzand/i-built-repofleet-to-manage-one-feature-across-multiple-git-repositories-3oe4</link>
      <guid>https://dev.to/mehranzand/i-built-repofleet-to-manage-one-feature-across-multiple-git-repositories-3oe4</guid>
      <description>&lt;p&gt;When one feature touches multiple repositories, the Git workflow can quickly become repetitive.&lt;/p&gt;

&lt;p&gt;You may need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create the same branch in several repositories&lt;/li&gt;
&lt;li&gt;Pull the latest changes in each project&lt;/li&gt;
&lt;li&gt;Check the status of every repository&lt;/li&gt;
&lt;li&gt;Remember which repositories belong to the same task&lt;/li&gt;
&lt;li&gt;Move between directories repeatedly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A typical workflow might look like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd api&lt;br&gt;
git switch -c fix/123-auth&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd ../frontend&lt;br&gt;
git switch -c fix/123-auth&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd ../worker&lt;br&gt;
git switch -c fix/123-auth&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I built RepoFleet to simplify this workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is RepoFleet?
&lt;/h2&gt;

&lt;p&gt;RepoFleet is an issue-centered CLI tool for managing Git workflows across multiple repositories.&lt;/p&gt;

&lt;p&gt;Instead of managing each repository separately, you create one issue context:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;rf issue create 123 --name auth --type fix&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
RepoFleet creates and manages the related branches across your repositories.&lt;/p&gt;

&lt;p&gt;You can then check everything from one place:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;rf issue status&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
One issue. Multiple repositories. One workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Imagine that one feature requires changes in three repositories:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;api&lt;br&gt;
frontend&lt;br&gt;
worker&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Without RepoFleet, you might need to run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd api&lt;br&gt;
git fetch&lt;br&gt;
git switch -c feature/123-auth&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd ../frontend&lt;br&gt;
git fetch&lt;br&gt;
git switch -c feature/123-auth&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd ../worker&lt;br&gt;
git fetch&lt;br&gt;
git switch -c feature/123-auth&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Later, you need to repeat a similar process to check status, pull changes, or push branches.&lt;/p&gt;

&lt;p&gt;This works, but it becomes inconvenient when you manage many tasks across multiple repositories.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Built It
&lt;/h2&gt;

&lt;p&gt;At work, our codebase was split into multiple repositories.&lt;/p&gt;

&lt;p&gt;After the split, one task could require changes in several projects.&lt;/p&gt;

&lt;p&gt;I repeatedly had to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create matching branches&lt;/li&gt;
&lt;li&gt;Switch between project directories&lt;/li&gt;
&lt;li&gt;Fetch updates&lt;/li&gt;
&lt;li&gt;Check Git status in every repository&lt;/li&gt;
&lt;li&gt;Remember which repositories belonged to each issue&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted a workflow centered around the issue, rather than individual repository directories.&lt;/p&gt;

&lt;p&gt;That idea became RepoFleet.&lt;/p&gt;

&lt;p&gt;_Example Workflow&lt;/p&gt;

&lt;p&gt;_Create an issue context&lt;br&gt;
&lt;code&gt;rf issue create 123 --name authentication --type feature&lt;br&gt;
&lt;/code&gt;Add repositories&lt;br&gt;
&lt;code&gt;rf issue repo add api&lt;br&gt;
rf issue repo add frontend&lt;br&gt;
rf issue repo add worker&lt;/code&gt;&lt;br&gt;
Check all repository statuses&lt;br&gt;
&lt;code&gt;rf issue status&lt;br&gt;
&lt;/code&gt;Sync repositories&lt;br&gt;
&lt;code&gt;rf issue sync&lt;br&gt;
&lt;/code&gt;Navigate to a repository&lt;br&gt;
&lt;code&gt;rf issue goto&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
RepoFleet keeps related repositories connected to the same issue and provides one place to view their Git state.&lt;/p&gt;

&lt;p&gt;Without RepoFleet&lt;br&gt;
&lt;code&gt;cd api&lt;br&gt;
git status&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd ../frontend&lt;br&gt;
git status&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd ../worker&lt;br&gt;
git status&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;With RepoFleet&lt;br&gt;
&lt;code&gt;rf issue status&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Instead of checking every repository manually, you get one combined view.&lt;/p&gt;

&lt;h2&gt;
  
  
  Main Features
&lt;/h2&gt;

&lt;p&gt;RepoFleet currently supports:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Issue-centered multi-repository workflows&lt;br&gt;
Consistent branch creation across repositories&lt;br&gt;
A multi-repository status dashboard&lt;br&gt;
Fetching and syncing repositories&lt;br&gt;
Interactive repository navigation&lt;br&gt;
GitHub pull request workflows&lt;br&gt;
GitLab merge request workflows&lt;br&gt;
Homebrew installation&lt;br&gt;
Scoop installation&lt;br&gt;
Snapshots for saving multi-repository issue state&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Git worktree support is also part of the development plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who Is RepoFleet For?
&lt;/h2&gt;

&lt;p&gt;RepoFleet may be useful when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A feature touches multiple microservices&lt;/li&gt;
&lt;li&gt;Frontend and backend code live in separate repositories&lt;/li&gt;
&lt;li&gt;A bug requires changes across several services&lt;/li&gt;
&lt;li&gt;Your organization recently moved away from a monorepo&lt;/li&gt;
&lt;li&gt;You frequently create matching branches in different projects&lt;/li&gt;
&lt;li&gt;You manage several related libraries or applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;RepoFleet does not replace Git.&lt;/p&gt;

&lt;p&gt;It provides a higher-level workflow around Git for tasks that span multiple repositories.&lt;/p&gt;

&lt;p&gt;Installation&lt;br&gt;
&lt;em&gt;Homebrew&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;brew install mehranzand/tap/repofleet&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Scoop&lt;/em&gt;&lt;br&gt;
&lt;code&gt;scoop bucket add mehranzand https://github.com/mehranzand/scoop-bucket&lt;br&gt;
scoop install repofleet&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Feedback Is Welcome&lt;/p&gt;

&lt;p&gt;RepoFleet is still evolving, and I would appreciate feedback from developers who regularly work across multiple repositories.&lt;/p&gt;

&lt;p&gt;I’m especially interested in hearing about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How you currently manage multi-repository tasks&lt;/li&gt;
&lt;li&gt;Problems you experience with matching branches&lt;/li&gt;
&lt;li&gt;Features that would make RepoFleet more useful&lt;/li&gt;
&lt;li&gt;How you use Git worktrees across multiple projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find the project here:&lt;/p&gt;

&lt;p&gt;👉 github.com/mehranzand/repofleet&lt;/p&gt;

&lt;p&gt;If this workflow sounds familiar, I’d love to hear how you currently handle it.&lt;/p&gt;

</description>
      <category>git</category>
      <category>opensource</category>
      <category>showdev</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
