git: Како да се оддели библиотеката од проектот?

Значи, имам поголем проект (затворен извор) и во контекст на овој проект создадов библиотека што исто така може да биде корисна на друго место, јас мислам.

Сега сакам да ја разделам библиотеката во нејзиниот сопствен проект, што може да оди како отворен извор на гитхуб или слично. Се разбира, библиотеката (и нејзината историја таму) не смее да содржи никакви траги од нашиот проект.

git-subtree се чини дека е решение тука, но не се вклопува целосно.

Распоредот на мојот директориум е нешто како ова (бидејќи тоа е проект на Јава):

  • игра со мечување (git workdir)
    • src
      • де
        • игра со мечување
          • транспорт (мојата библиотека)
            • протокол (дел од библиотеката)
            • мечување (дел од главниот проект што се поврзува со библиотеката)
            • клиент ( дел од интерфејсот на главниот проект со библиотеката)
            • сервер (дел од главниот проект што се поврзува со библиотеката)
          • клиент (дел од главниот проект)
          • сервер ( дел од главниот проект)
          • ... (дел од главниот проект)
    • други датотеки и директориуми (систем за градење, веб-страница и слично - дел од главниот проект)

По поделбата, Сакам изгледот на директориумот на библиотеката да изгледа вака (вклучувајќи ги и сите датотеки директно во задебелените директориуми):

  • my-библиотека (името треба да се утврди)
    • src
      • де
        • мечување_игра
          • транспорт (мојата библиотека)
            • протокол (дел од библиотеката)

Историјата исто така треба да содржи само дел од историјата на главниот проект што го допира овој дел од складиштето.

Првиот поглед ми покажа поделба на git-под-дрво - префикс = src / de / fencing_ame / transport , но ова

  1. ќе ми даде дрво вкоренето во транспорт ( што нема да се компајлира) и
  2. вклучуваат директориуми за транспорт / клиент , транспорт / сервер и транспорт / мечување .

Првата точка може да биде ублажено со употреба на git поддрво додадете --prefix = src / de / fencing_ame / transport на страната што прима, но мислам дека git-под-дрвото не може да стори многу против извозот и на овие поддиректориуми. (Идејата навистина е да може едноставно да се сподели целосното дрво овде).

Дали треба да користам git филтер-гранка тука?

После поделбата, сакам да можам да увезете ја библиотеката во мојот главен проект, или користејќи git-поддрево или git-субмодул, во посебен поддиректориум отколку во тоа што е сега. Го замислувам распоредот на овој начин

  • игра со мечување (git workdir)
    • src
      • де
        • игра со мечување
          • транспорт (празен)
            • мечување (дел од главниот проект што се поврзува со библиотеката)
            • клиент (дел од главниот проект што се поврзува со библиотеката)
            • сервер (дел од главниот проект што се поврзува со библиотеката)
          • клиент (дел од главниот проект)
          • сервер (дел од главниот проект)
          • ... (дел од главниот проект)
    • моја библиотека
      • ср
        • де
          • игра со мечување
            • транспорт (мојата библиотека)
              • протокол (дел од библиотеката)
    • други датотеки и директориуми (систем за градење, веб-страница и слично - дел од главниот проект)
Што би Дали има други алатки освен git-subtree и git-filter-гранка за оваа цел?
23
задан Mat 7 January 2012 в 08:57
поделиться