Hi Stefan,

I would prefer to keep it as is for three reasons:

1) The target is called *-update, not *-pull. ;-)
2) Getting a proper BY wide pull into a consistent state is not as simple as a 'git pull' (see below for explanation) and it is better to leave a difficult operation to manual intervention than implement a flawed automation.
3) The PROJECT-update is a dependency of update (see 2), and further, my reading of this chart (http://www.kitware.com/media/html/BuildingExternalProjectsWithCMake2.8.html) is that 'update' is a sub-dependency of the target.

re 2) Because pull can fail, the BY can be left in an inconsistent state, where project A fails the merge (e.g., because of modified files), but project B succeeds.  If project B depends on project A, and A has a change that B depends upon, then the BY will now be in a state where B will fail to build because of errors (the dependency in B on changes in A that were not merged).

If update does a pull, then a target should ensure that all child targets have a clean workspace (or that a 'force' flag is set); if not, then it should fail early with a notice that the BY isn't in a properly clean state for the 'pull'.

Since we don't have this behaviour, it would be better to just do the safe operation and leave the rest to the developer.

re 3) As far as 'update' being a dependency goes, I see ExternalProject_Add invoke _ep_add_update_command which invokes a ExternalProject_Add_Step with update as a step.  Is this the same 'update'?  If there is some doubt, I can run some tests.

Thank you,

Glendon

On 05/07/2014 05:33 PM, Stefan Eilemann wrote:

In CMake/ReadConfigs.cmake:

> @@ -196,7 +196,7 @@ foreach(_dir ${_dirs})
>        add_custom_target(${_dirName}-update
>          COMMAND ${GIT_EXECUTABLE} reset -q .travis.yml || ${GIT_EXECUTABLE} status
>          COMMAND ${GIT_EXECUTABLE} checkout -q -- .travis.yml || ${GIT_EXECUTABLE} status
> -        COMMAND ${GIT_EXECUTABLE} pull
> +        COMMAND ${GIT_EXECUTABLE} remote update


The above three are only invoked explicitly through 'make update' in BY. Unless I'm missing something, I would rather not merge them.

—
Reply to this email directly or view it on GitHub<https://github.com/Eyescale/Buildyard/pull/89/files#r12379873>.


________________________________

This message and its contents including attachments are intended solely for the original recipient. If you are not the intended recipient or have received this message in error, please notify me immediately and delete this message from your computer system. Any unauthorized use or distribution is prohibited. Please consider the environment before printing this email.