Я аспирант со многими сценариями, библиографическими данными в bibtex, черновиком диссертации в латексе, презентациями в открытом офисе, плакатами в scribus, а также рисунками и данными о результатах. Я хотел бы поставить все в одном проекте под контролем версий. Затем, когда мне нужно поработать над частью, такой как библиографические данные, я хотел бы проверить этот подкаталог, изменить его при необходимости и объединить обратно. Я хотел бы иметь возможность проверить одну версию на моем домашнем компьютере и отличается от моего рабочего компьютера и вносит изменения в каждый из них независимо и в конечном итоге объединяет их. Я также хотел бы иметь возможность извлечь фрагмент кода из этого большого проекта и импортировать его с версионированием в отдельный проект. Если бы я мог внести изменения, я бы хотел объединить их с первоначальным проектом.
Исходя из моего понимания, Git поддерево может сделать это.
http://github.com/apenwarr/git-subtree
Есть пример того, что я пытаюсь сделать по адресу:
http://psionides.jogger.pl/2010/02/04/sharing-code-between-projects-with-git-subtree/
Скажем, ствол моего проекта содержал каталоги: (bib bin cfg data fig src todo).
Когда я использую
git subtree split -P bib -b export
git checkout export
Я получаю каталог bib плюс все файлы, которые должны были игнорироваться или считаться двоичными на основе .gitignore, такие как каталог src и все, что в нем заканчивается тильдой или ./data каталог.
dwickrama@DWwork:~/research/trunk$ ls * -r
biblography.bib JabRef
src:
script1.sh~ README~ script2.sh~
script3.sh~ script4.R~ script5.awk~
script5.py~
cfg:
cfgFile1.ini~ cfgFile2.ini~ cfgFile3.ini~
bin:
bigBinaryPackage1 bigBinaryPackage2
dwickrama@DWwork:~/research/trunk$
Мой файл .gitignore выглядит следующим образом:
*.doc diff=word
*.tex diff=tex
*.bib diff=bibtex
*.py diff=python
*.eps binary
*.jpg binary
*.png binary
./bin/* binary
*~
Как мне предотвратить это?