# Milka: a polyrepo managment tool

**URL:** <https://forum.crystal-lang.org/t/milka-a-polyrepo-managment-tool/8556>\
**Category:** Community\
**Tags:** announces\
**Created:** [November 23, 2025, 12:19pm UTC](https://forum.crystal-lang.org/t/milka-a-polyrepo-managment-tool/8556 "2025-11-23T12:19:19Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![kglt](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/kglt/32/3087_2.png) [@kglt](https://forum.crystal-lang.org/u/kglt)\
**Post date:** [November 23, 2025, 12:19pm UTC](https://forum.crystal-lang.org/t/milka-a-polyrepo-managment-tool/8556/1 "2025-11-23T12:19:19Z")

</div>

Built on top of git, it allows you to manage multiple repositories conveniently.  
I’m waiting for criticism and what can be improved, first experience with crystal

> **[GitHub - kogeletey/milka: One command, multiple git repositories](https://github.com/kogeletey/milka)**
>
> One command, multiple git repositories

P.S It can throw stars?

---

<div class="post-metadata">

**Author:** ![ralsina](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/ralsina/32/2139_2.png) [@ralsina](https://forum.crystal-lang.org/u/ralsina)\
**Post date:** [November 23, 2025, 12:22pm UTC](https://forum.crystal-lang.org/t/milka-a-polyrepo-managment-tool/8556/2 "2025-11-23T12:22:02Z")

</div>

One tiny nitpick from the README: you can’t really build static binaries in glibc-based systems, usually you need to do it in something like alpine. I use alpine docker images as builders and attach the binaries to the releases.

---

<div class="post-metadata">

**Author:** ![kglt](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/kglt/32/3087_2.png) [@kglt](https://forum.crystal-lang.org/u/kglt)\
**Post date:** [November 23, 2025, 12:24pm UTC](https://forum.crystal-lang.org/t/milka-a-polyrepo-managment-tool/8556/3 "2025-11-23T12:24:19Z")

</div>

Yes, I’ll add it now and make a note to myself

---

<div class="post-metadata">

**Author:** ![Blacksmoke16](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/blacksmoke16/32/1241_2.png) [@Blacksmoke16](https://forum.crystal-lang.org/u/Blacksmoke16)\
**Post date:** [November 23, 2025, 3:48pm UTC](https://forum.crystal-lang.org/t/milka-a-polyrepo-managment-tool/8556/4 "2025-11-23T15:48:21Z")

</div>

Wouldn’t this use case be better served via [Git Subtree: Alternative to Git Submodule | Atlassian Git Tutorial](https://www.atlassian.com/git/tutorials/git-subtree)? Like since each repo is still its own `.git` repo, you still would have to commit indiviually in each child directory, then push. As opposed to with subtrees you could have a single commit span multiple sub-projects and subtree will handle pushing the relevant changes to the dedicated upstream origin.

---

<div class="post-metadata">

**Author:** ![kglt](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/kglt/32/3087_2.png) [@kglt](https://forum.crystal-lang.org/u/kglt)\
**Post date:** [November 23, 2025, 3:57pm UTC](https://forum.crystal-lang.org/t/milka-a-polyrepo-managment-tool/8556/5 "2025-11-23T15:57:55Z")

</div>

It sounds interesting and can be added as one of the features, by some setting, for example. Sometimes it is important to have turnips as separate and independent, and then subtree, as I understand it, is not very suitable.

---

<div class="post-metadata">

**Author:** ![kglt](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/kglt/32/3087_2.png) [@kglt](https://forum.crystal-lang.org/u/kglt)\
**Post date:** [November 23, 2025, 4:55pm UTC](https://forum.crystal-lang.org/t/milka-a-polyrepo-managment-tool/8556/6 "2025-11-23T16:55:02Z")

</div>

Added support of statics build for version 2025.11.4 and above

---

<div class="post-metadata">

**Author:** ![kglt](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/kglt/32/3087_2.png) [@kglt](https://forum.crystal-lang.org/u/kglt)\
**Post date:** [November 23, 2025, 5:00pm UTC](https://forum.crystal-lang.org/t/milka-a-polyrepo-managment-tool/8556/7 "2025-11-23T17:00:39Z")

</div>

How to add the git+subtree parameter to the configuration, like at  
`[[reps]]￼`  
`# …￼`  
`source = “git+subtree"`

to enable subtree

---

<div class="post-metadata">

**Author:** ![kglt](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/kglt/32/3087_2.png) [@kglt](https://forum.crystal-lang.org/u/kglt)\
**Post date:** [November 29, 2025, 10:13am UTC](https://forum.crystal-lang.org/t/milka-a-polyrepo-managment-tool/8556/8 "2025-11-29T10:13:54Z")

</div>

Added a new version plus commands for working with remote

> **[Release v2025.11.6 · kogeletey/milka](https://github.com/kogeletey/milka/releases/tag/v2025.11.6)**
>
> One command, multiple git repositories. Contribute to kogeletey/milka development by creating an account on GitHub.
