Есть у меня проблема с ними в последнее время, точнее с golang с его навязыванием этой структуры.

И я, если честно, не знаю, как подружить его с моими привычками и сделать его удобным для себя, потому что если инструмент не удобный - инструментом не пользуются.

Дано

Программировать приходится довольно много, задач разных полно, соответственно репозиториев тоже много. Хочется их классифицировать, навскидку следующие категории:

Подчёркивания нужны для вывода на первое место в ls категорий, некатегоризированное лежит прямо в ./git/.

git
├── _carbonsoft # название компании вместо _work даёт возможность масштабироваться
│   ├── product1
│   └── product2
│       ├── part1
│       └── part2
├── _twitter
│   ├── libs # фермы ботов, врапперы вокруг либ, морфологический угар
│   └── bots
│       ├── bot1
│       └── bot2
├── _sources # тут всякий opensource в неизменном виде, когда его надо поизучать
├── _old # бэкап того, чем я особо заниматься не планирую, но вдруг пригодится
├── _fun # всякий угар:
│   ├── цепи маркова
│   ├── интерактивные вычислители вероятности дропа вещей при фарме в dark souls
│   ├── расчёт цены использования съёмных кваритр
│   ├── плагины к файрфоксу, отсекающие пиццы с грибами и рыбой
│   ├── эксперименты с midi и тому подобный бред
│   └── 18+, машинное обучение и порно, я стесняюсь это куда-либо выкладывать
└── _education
    ├── english
    ├── coursera
    └── codewars

Как бы это всё не совсем суть, чисто мой пример. Может его можно правильнее или неправильнее перестроить, но это показывает потребность самостоятельно классифицировать всю эту писанину.

Проблемы

Насколько мне известно, golang предполагает строгое использование структуры:

$GOPATH/src/host/owner/repo/

В принципе задумка неплохая. Всё довольно хорошо на первый взгляд, унификация - это всегда приносит какую-никакую, но пользу.

Но пытаясь применить это в моём случае, имеем следующие проблемы.

  1. $owner может иметь несколько $host - часть репозиториев является opensource и живёт на github, на локальном gitlab только зеркало.
  2. URL репозитория не содержит ничего, говорящего о категории. То есть host/owner там, конечно есть, в 40% случаев можно определить что это относится к работе, но… (см. следующий пункт)
  3. Категория может иметь несколько $host. То есть некоторые фановые репозитории я хотел бы держать приватными на bitbucket, а частью готов поделиться с миром на github.
  4. Внутри категории (например работа) может быть очень много репозиториев, так что я бы их с удовольствием дополнительно категоризовал. Например по проекту/модулю к которому они относятся.
  5. Люди пишут не только на golang. Исходники не только пишут, не только собирают, но и просто читают. А держать все исходники всё таки хочется в одном дереве.

Выводы

А выводов нет, проблема на месте и как правильно юзать Go при таком расположении репозиториев - не знаю.

  • Весь код держать в таком виде, а Go отдельно - ебанина какая-то, ей богу.
  • Перестраиваться под Go - ещё большая.
  • Не юзать Go - так себя вообще тупым неосилятором чувствую.

P.S: один товарищ посоветовал симлинки. Вариант в принципе рабочий, хоть и требует некоторых ручных трудов.