(sorry for the format problem again)

> (unrelated, but why do your messages include HTML entities?) 

(Sorry, I forgot to forbid the default formatter of my email client.)

> My main fear is that this might have some unintended consequences. 

Of course. 

> I wouldn't want to rely on my understanding of vc either. While it 
> would be easy to add a dynamic variable to indicate this behaviour, I am 
> careful not to overburden the abstractions that VC provides. 

Understand. 

I read the docstring of `vc-pull', which is used by `package-vc-upgrade'. 
It says: 

-------------------------------------------------------------------------- 
"Update the current fileset or branch. 
You must be visiting a version controlled file, or in a `vc-dir' buffer. 
..."
-------------------------------------------------------------------------- 

But `vc-dir' is a user command other than a function, it will open a new buffer and return nil. 
In consideration of the fact that `vc-pull' is an async function, it is not easy for us to 
kill the `vc-diff' buffer right after the pull operation. 

As you suggested earlier, maybe we need to modify vc.el, making the restriction looser? 

Also, I noticed that the maintainer bind `default-directory' in this commit: 

https://github.com/emacs-mirror/emacs/commit/7ab556b57631cb28db86b89ba296bc0599d9a399 
Improve robustness of 'package-vc-update' Regards