Here I explain why emerge –sync should return to it’s original sync form.
I think emerge sync should have the ability to have a target. Currently emerge –sync has a target of the SYNC variable in make.conf or the default hardcoded. However, git support is being added to portage. git is a very powerful tool, and the Funtoo project uses it to manage it’s full portage tree. git doesn’t work like rsync, it’s not so straight forward as rsync uri, which is effectively what emerge sync is doing. git supports branches. The current implementation of git in portage effectively does git pull … which is great… you know if you pull from the default.
I don’t, and I’m not sure I’d always want to, it’d be great to be able to change tree’s on the fly with a more distributed model. If I want to test funtoo without pulling it’s tree into mine I could emerge sync funtoo funtoo.org, or I could switch to gentoo by doing an emerge sync rsync://rsync.gentoo.org/gentoo-portage and none of this will change the default or require configuring in make.conf.
Biggest reason to do this is branches though. what if I have a development branch and I need to test something… I, in theory should be able to change the branch quickly. with git I will have to cd to PORTDIR then run checkout. with portages current implementation I’ll have to reconfigure some of git and then do a sync. However, if I were able to add a target to it I could easily do emerge sync origin development or emerge sync origin master.
The SYNC variable and maybe some GIT_BRANCH variable could still define defaults while adding a target would make development and testing easier for developers and testers respectively.