Johannes Schindelin <[email protected]> writes:
> This patch series adds support for a new receive.denyCurrentBranch setting
> to update the working directory (which must be clean, i.e. there must not be
> any uncommitted changes) when pushing into the current branch.
>
> The scenario in which the 'updateInstead' setting became a boon in this
> developer's daily work is when trying to get a bug fix from a Windows
> computer, a virtual machine or a user's machine onto his main machine (in
> all of those cases it is only possible to connect via ssh in one direction,
> but not in the reverse direction).
>
> Interdiff vs v2 below the diffstat.
>
> Johannes Schindelin (1):
> Add another option for receive.denyCurrentBranch
>
> Documentation/config.txt | 5 ++++
> builtin/receive-pack.c | 78
> ++++++++++++++++++++++++++++++++++++++++++++++--
> t/t5516-fetch-push.sh | 17 +++++++++++
> 3 files changed, 98 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/config.txt b/Documentation/config.txt
> index 4f9fe81..c384515 100644
> --- a/Documentation/config.txt
> +++ b/Documentation/config.txt
> @@ -2134,10 +2134,6 @@ Another option is "updateInstead" which will update
> the working
> directory (must be clean) if pushing into the current branch. This option is
> intended for synchronizing working directories when one side is not easily
> accessible via ssh (e.g. inside a VM).
> -+
> -Yet another option is "detachInstead" which will detach the HEAD if updates
> -are pushed into the current branch; That way, the current revision, the
> -index and the working directory are always left untouched by pushes.
I think we had an exchange to clarify the workflow in which
updateInstead is useful and how to help readers, but I do not see
any change on that in this part of documentation. Forgot to revise?
> @@ -737,36 +733,66 @@ static int update_shallow_ref(struct command *cmd,
> struct shallow_info *si)
> return 0;
> }
>
> -static const char *merge_worktree(unsigned char *sha1)
> +static const char *update_worktree(unsigned char *sha1)
> {
> const char *update_refresh[] = {
> "update-index", "--ignore-submodules", "--refresh", NULL
> };
> + const char *diff_index[] = {
> + "diff-index", "--quiet", "--cached", "--ignore-submodules",
> + "HEAD", "--", NULL
> + };
> const char *read_tree[] = {
> "read-tree", "-u", "-m", sha1_to_hex(sha1), NULL
> };
OK.
"update-index --refresh && diff-files && diff-index --cached" is how
we traditionally ensure the working tree is absolutely clean (see
require_clean_work_tree in git-sh-setup.sh), but I do not think of a
reason why diff-files step is not redundant. As a totally separate
topic outside this series, we may want to visit that shell function.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html