{"action":"opened","issue":{"url":"https://api.github.com/repos/Masterminds/glide/issues/415","repository_url":"https://api.github.com/repos/Masterminds/glide","labels_url":"https://api.github.com/repos/Masterminds/glide/issues/415/labels{/name}","comments_url":"https://api.github.com/repos/Masterminds/glide/issues/415/comments","events_url":"https://api.github.com/repos/Masterminds/glide/issues/415/events","html_url":"https://github.com/Masterminds/glide/issues/415","id":154353188,"number":415,"title":"Proposal: glide up should be idempotent if glide.yaml has not changed","user":{"login":"akutz","id":101085,"avatar_url":"https://avatars.githubusercontent.com/u/101085?v=3","gravatar_id":"","url":"https://api.github.com/users/akutz","html_url":"https://github.com/akutz","followers_url":"https://api.github.com/users/akutz/followers","following_url":"https://api.github.com/users/akutz/following{/other_user}","gists_url":"https://api.github.com/users/akutz/gists{/gist_id}","starred_url":"https://api.github.com/users/akutz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akutz/subscriptions","organizations_url":"https://api.github.com/users/akutz/orgs","repos_url":"https://api.github.com/users/akutz/repos","events_url":"https://api.github.com/users/akutz/events{/privacy}","received_events_url":"https://api.github.com/users/akutz/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2016-05-11T22:02:07Z","updated_at":"2016-05-11T22:02:07Z","closed_at":null,"body":"Hi @mattfarina,\r\n\r\nI think `glide up` should be idempotent with respect to `glide.lock` if `glide.yaml` has not changed. Now that `glide.lock` is part of my project's git index, it's frustrating that `glide.lock` is updated every time I run `glide up`, even if `glide.yaml` has not changed. Still, `glide.lock`'s second line, `updated: ...` gets updated each time `glide up` is executed.\r\n\r\nThis is cumbersome when using `glide.lock` as part of a `Makefile`'s target dependency chain. Before adding `glide.lock` to my index, it was the marker on which `glide.yaml` depended in order to determine if it was necessary to run `glide up`. In other words, if `glide.yaml` changed, it was necessary to update `glide.lock`. Updating `glide.lock` invoked `glide up`. Simple and straight-forward.\r\n\r\nHowever, now I'm using `glide.lock.d` to determine if an update is needed:\r\n\r\n```\r\n$(GLIDE_LOCK_D): $(GLIDE_LOCK)\r\n\tglide up && touch $@\r\n\r\n$(GLIDE_LOCK): $(GLIDE_YAML)\r\n\ttouch $@\r\n```\r\n\r\nThe above works fine in order to keep my vendor directory up-to-date based on whether or not `glide.lock.d` is wholly absent or if `glide.yaml` is newer than `glide.lock.d`. The file `glide.lock` just happens to be sitting in the middle...which is fine. It works. It's just that if manually run `glide up` outside of my `Makefile` process, then `glide.lock` can be updated even when nothing has changed. This results in a secondary `glide up` operation the next time I *do* run `make` since `glide.lock` is now newer than `glide.lock.d`.\r\n\r\nHopefully this all makes sense. Please let me know if you have any questions.\r\n"}}