В документации repo sync
указано, что:
If the project has been synchronized before, then repo sync is equivalent to:
git remote update
git rebase origin/branch
where branch is the currently checked-out branch in the local project directory. If the local branch isn't tracking a branch in the remote repository, then no synchronization occurs for the project.
Это означает, что после успешного однократного repo init && repo sync
я могу использовать
$ repo forall -c git update
$ repo forall -c git checkout -b $REPO_RREV $REPO_REMOTE/$REPO_RREV
$ repo forall -c git pull $REPO_REMOTE $REPO_RREV
для достижения того же результата, что и repo sync
.
Меня беспокоит следующее:
- Если
repo
- это инструмент, который управляет несколькими git репозитории с помощью файла manifest. xml, что произойдет, если манифест изменится в удаленном репозитории (upstream)? - Если, например, новый репозиторий будет добавлен в манифест. xml файл, как
repo sync
эквивалентно git remote update && git rebase origin/branch
? - Разве
repo sync
также не обновляет файл манифеста . xml и затем извлекает только что добавленный репозиторий? Потому что, если это так, то repo sync
явно не эквивалентно repo forall -c git remote update && repo forall -c git rebase origin/branch
.
Является ли repo sync
эквивалентным git remote update && git rebase origin/branch
или в документации что-то отсутствует? Может кто-нибудь уточнить, как действительно repo sync
работает под капотом с этой точки зрения?