Несколько вопросов о Грит - PullRequest
2 голосов
/ 30 апреля 2011

У меня есть несколько вопросов о Grit / Git, с которыми я надеюсь, вы сможете мне помочь. Вот мой код:

# create Repo
r = Repo.init_bare 'myrepo.git'
i = r.index

# first commit to master
i.add('myfile.txt', 'my file contents')
i.commit("This is my commit")

# second commit to master
i.read_tree("master")
i.add('myfile2.txt', 'my file 2 contents')
i.commit("This is my second commit", [r.commits.first])

# first commit to newbranch
i.read_tree("master")
i.add('myfile3.txt', 'my file 3 contents')
i.commit("This is my third commit", [r.commits.first], nil, nil, 'newbranch')

# second commit to newbranch
i.read_tree("newbranch")
i.add('myfile4.txt', 'my file 4 contents')
i.commit("This is my fourth commit", [r.commit("newbranch")], nil, nil, 'newbranch')

С помощью этого кода я пытаюсь создать репо, дважды зафиксировать мастер, создать новую ветку от мастера и дважды зафиксировать эту ветку. Но проблема в том, что когда я делаю это:

r.commits("newbranch")  # => 3

Там написано, что на "newbranch" есть только 3 коммита. Это оставляет второй коммит на мастере. Это почему? Что-то не так с моим кодом?

Больше всего меня смущает то, как указать родительский коммит при разветвлении и при втором коммите на "newbranch".

Надеюсь, вы сможете помочь. Спасибо

Ответы [ 3 ]

3 голосов
/ 04 января 2012

Файл API.txt говорит, что он еще не реализован как реализация нативной библиотеки. Однако вы все равно можете это сделать, минуя любую реализацию библиотеки, с помощью:

r.git.native :checkout, {}, 'my_branch'

Для получения более подробной информации обратитесь к git.rb источника Grit.

2 голосов
/ 28 мая 2012

На данный момент это мое решение для фиксации определенной ветви:

index = repo.index
index.read_tree( branch )
index.add( path_to_a_file, file_data )
c = repo.commits( branch ) 
index.commit( comment, repo.commits( branch ), nil, nil, branch )

В последней строке разрешено фиксировать в конкретную ветку без ее проверки.Также необходим вызов функции read_tree, если вы не хотите потерять свой индекс.

0 голосов
/ 30 апреля 2011

Просто сделай:

r.checkout (r.branch ( 'newbranch'))

, а затем сделайте свои коммиты.

...