2011-02-08 3 views
1

Я использую Grit, чтобы создать репо и совершить несколько раз. Каждый раз, когда я фиксирую, моя фиксация сохраняется, но старый исчезает. Кто-нибудь знает, что я делаю неправильно?Grit commit, по-видимому, отменяет последнюю фиксацию в Git repo?

Сначала я создаю репо и совершаю фиксацию. Если я вхожу коммита, я получаю обязательство ID, и все работает

repo_name = 'repos/myrepo.git' 
repo = Repo.init_bare(repo_name) 
index = Index.new(repo) 
index.add('mytext.txt', "This is my first text") 
index.commit('Text commit') 

Тогда я другой совершает

index = repo.index 
index.read_tree('master') 
index.add('mytext.txt', "This is my second text") 
index.commit('Text commit') 

.. и когда я делаю журнал GIT, только последний коммит показывает вверх , Эта следующая строка возвращает 1

repo.commits.count 

Любая идея, что я делаю неправильно? Я не могу найти какие-либо учебники о том, как использовать методы записи в Grit. Поэтому любые ссылки также будут оценены. Благодаря!

ответ

2

Тесто. Ответ был прост. Обязательный номер 2 должен иметь число 1 в качестве родителя. Затем он формирует историю этих фиксаций, и она работает:

index.commit('Text commit', [repo.commits.first]) 

Я все еще ищет учебники или руководства, объясняющие методу записи в библиотеке Grit. Документация Rubyforge мало объясняет.

+1

Возможно, вы посмотрите на собственные руководства Git (http://www.kernel.org/pub/software/scm/git/docs/), особенно команды «сантехника». Большинство из них используются более или менее одинаково в API Grit. Эквивалент, например. 'Grit :: Index # commit' -' git-commit-tree' (http://www.kernel.org/pub/software/scm/git/docs/v1.7.4/git-commit-tree.html). – Koraktor

Смежные вопросы