EGit основан на JGit, и «not-for-merge
» используется только в org.eclipse.jgit.transport.FetchHeadRecord
Это notForMerge
переменная FetchHeadRecord устанавливается в методе org.eclipse.jgit.transport.FetchProcess#want
.
fhr.notForMerge = spec.getDestination() != null;
Если refspec назначение не равно нуля, то это неправдоподобная голова не для слияния.
При выборке пульта дистанционного управления, назначение удаленного ветвей refs/remotes/yourRemote
, из-за локальной конфигурации для выборки refspec:
[remote "origin"]
fetch +refs/heads/*:refs/remotes/origin/*
Одна ветвь, будет неправдоподобным без прямого назначения будет тот, который отслеживает удаленный филиал:
[branch "master"]
remote = origin
merge = refs/heads/master
Именно поэтому, после извлечения из JGit репо (в командной строке, а не в Eclipse, EGit), я вижу:
C:\Users\VonC\prog\git\jgit\.git>type FETCH_HEAD
c2a9f9e742f7e6633af130823c154a485e6071b2 branch 'master' of https://github.com/eclipse/jgit
51d1af9489924ff03fa10ec963110c608c2882a3 not-for-merge branch 'stable-0.10' of https://github.com/eclipse/jgit
989149736ad1cd09c15e143aa598028b9f9b6502 not-for-merge branch 'stable-0.11' of https://github.com/eclipse/jgit
b2b58feba7400269df8b31ef8495b695af3a9793 not-for-merge branch 'stable-0.12' of https://github.com/eclipse/jgit
Давайте попробуем воспроизвести, что в EGit/JGit (Luna, EGit 3.0, Win7 64-бит):
После нескольких выборки, я никогда не видел запись безnot-for-merge
хотя.
Даже тянуть, который объединит новые comits из удаленного филиала будет по-прежнему генерировать FETCH_HEAD
с:
220c4502ecea147ef4beaae8039b168965e148e9 not-for-merge branch 'master' of ..\..\jgit
Я предполагаю, что поведение JGit отличается от этого аспекта.
Я не совсем следую за тобой. Я пробовал несколько тестов, и я не могу найти случай, когда FETCH_HEAD не содержит not-for-merge. Не могли бы вы показать шаги для достижения этого? – mike
@mike: повторите клонирование хранилища, создайте новую ветку и нажмите ее, затем извлеките из исходного клона и проверите 'FETCH_HEAD'. – robinst
Я все еще не вижу никакой разницы в FETCH_HEAD. Я пробовал это с новым репо. (только одна ведущая ветвь с README, содержащая по умолчанию две строки в ней, созданные Github). Затем я клонировал дважды. Во втором экземпляре я создал новую ветку.Я основал этот новый филиал на удаленной ветке отслеживания. Затем я попытался подтолкнуть новую ветку как с первой, так и без нее. Но когда я возвращаюсь к первому клону и получаю, у меня все еще нет-для-слияния в FETCH_HEAD. – mike