2016-11-10 3 views
0

Я использую Repo для среды с несколькими репозиториями.
При попытке обновить все операции РЕПО, я делаю repo sync и вывод показывает, что-то вроде:Репозиторий Android не синхронизирует ветви, кроме мастера

... 
From github.com:<repo-name> 
    1c9accf..4b2f449 feature/branch1 -> origin/feature/branch1 
... 

feature/branch1 является филиалом я в настоящее время работаю, и который является несколько фиксаций за origin/feature/branch1. Он отслеживает удаленную ветку.

Но после repo sync местный филиал по-прежнему не обновляется. Хранилища, которые до сих пор на master работают отлично - они выводят следующее:

... 
Fetching projects: 77% (7/9) From github.com:<repo-name-on-master> 
    eb99bff..372e69f master  -> origin/master 
Fetching projects: 100% (9/9), done. 

<project-name>/: manifest switched refs/heads/master...master 
project <project-name>/ 
Updating eb99bff..372e69f 
Fast-forward 
README.md | 2 +- 
1 file changed, 1 insertion(+), 1 deletion(-) 
... 

Так последняя часть - обновление - не происходит за branch1. Почему это?

default.xml выглядит так и в отдельном репо на GitHub:

<?xml version="1.0" encoding="UTF-8"?> 
<manifest> 
    <remote name="origin" fetch=".." /> 
    <default revision="master" remote="origin" sync-j="4" /> 

    <project name="repo-name" path="api" /> 
    <project name="repo-name-2" path="docs" /> 
</manifest> 

.git/config выглядит следующим образом:

[core] 
    repositoryformatversion = 0 
    filemode = true 
    ignorecase = true 
    precomposeunicode = true 
[filter "lfs"] 
    smudge = git-lfs smudge --skip -- %f 
[remote "origin"] 
    url = [email protected]:<repo-name> 
    projectname = <project-name> 
    fetch = +refs/heads/*:refs/remotes/origin/* 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 
[branch "feature/branch1"] 
    remote = origin 
    merge = refs/heads/feature/branch1 
+0

Что вы имеете в виду под «Но после синхронизации репо местное отделение еще не обновлено.»? Что происходит, когда вы проверяете местный филиал? –

+0

Это уже проверено, но новые коммиты не были извлечены или вытащены – pkyeck

+0

Вы уверены, что коммиты не были получены? Я предлагаю вам узнать о различии между выборкой и тягой. Возможно, вам просто нужно объединиться с веткой удаленного отслеживания. –

ответ

1

Если проект уже был синхронизирован один раз, а затем репо синхронизации эквивалентно:

git удаленное обновление

мерзавец перебазироваться происхождения/< ФИЛИАЛ>

< где ДП> является в настоящее время извлеченная филиал в локальном каталоге проекта. Если локальный филиал не отслеживает ветвь в удаленном репозитории, синхронизация не будет выполняться для проекта.

Выполняется фиксация от ветви удаленной функции (если ветвь удаленного отслеживания не настроена правильно). Они просто не на вершине вашего местного отделения.

+0

Я поставил дополнительную информацию в вопрос - я просто не понимаю, почему 'master' работает и' branch1' не – pkyeck

+0

да, но почему это не репо?когда я делаю это вручную ('git remote update' и' git rebase origin/branch1'), все обновляется, как и ожидалось. но не при выполнении 'repo sync'. – pkyeck

1

repo sync только обновите ветку, указанную в файлах манифеста, как показано в вашем вопросе, это revision="master".

Если вы хотите синхронизировать ветвь 1, вам необходимо изменить файл манифеста.

Repo command reference дает некоторые подробности о repo sync

+0

Хммм, вот что я подумал. Но вроде ожидая/надеясь на что-то более похожее: если вы начнете ветку с функцией 'repo start/test1 .', то' repo' тогда узнает о ветке, а также обновит ее на 'sync' :( – pkyeck

+0

@pkyeck, I имеют то же самое с вами, но, согласно документу репо, рекомендуется использовать 'local_manifests' для замены исходного проекта на свой собственный. – gzh

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