A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/gitster/git/commit/72ecc6ef53cb2906f5efab11fa6ab26c1729f233 below:

Merge branch 'js/push-to-deploy' · gitster/git@72ecc6e · GitHub

@@ -26,7 +26,8 @@ enum deny_action {

26 26

DENY_UNCONFIGURED,

27 27

DENY_IGNORE,

28 28

DENY_WARN,

29 -

DENY_REFUSE

29 +

DENY_REFUSE,

30 +

DENY_UPDATE_INSTEAD

30 31

};

31 32 32 33

static int deny_deletes;

@@ -76,6 +77,8 @@ static enum deny_action parse_deny_action(const char *var, const char *value)

76 77

return DENY_WARN;

77 78

if (!strcasecmp(value, "refuse"))

78 79

return DENY_REFUSE;

80 +

if (!strcasecmp(value, "updateinstead"))

81 +

return DENY_UPDATE_INSTEAD;

79 82

}

80 83

if (git_config_bool(var, value))

81 84

return DENY_REFUSE;

@@ -730,11 +733,89 @@ static int update_shallow_ref(struct command *cmd, struct shallow_info *si)

730 733

return 0;

731 734

}

732 735 736 +

static const char *update_worktree(unsigned char *sha1)

737 +

{

738 +

const char *update_refresh[] = {

739 +

"update-index", "-q", "--ignore-submodules", "--refresh", NULL

740 +

};

741 +

const char *diff_files[] = {

742 +

"diff-files", "--quiet", "--ignore-submodules", "--", NULL

743 +

};

744 +

const char *diff_index[] = {

745 +

"diff-index", "--quiet", "--cached", "--ignore-submodules",

746 +

"HEAD", "--", NULL

747 +

};

748 +

const char *read_tree[] = {

749 +

"read-tree", "-u", "-m", NULL, NULL

750 +

};

751 +

const char *work_tree = git_work_tree_cfg ? git_work_tree_cfg : "..";

752 +

struct argv_array env = ARGV_ARRAY_INIT;

753 +

struct child_process child = CHILD_PROCESS_INIT;

754 + 755 +

if (is_bare_repository())

756 +

return "denyCurrentBranch = updateInstead needs a worktree";

757 + 758 +

argv_array_pushf(&env, "GIT_DIR=%s", absolute_path(get_git_dir()));

759 + 760 +

child.argv = update_refresh;

761 +

child.env = env.argv;

762 +

child.dir = work_tree;

763 +

child.no_stdin = 1;

764 +

child.stdout_to_stderr = 1;

765 +

child.git_cmd = 1;

766 +

if (run_command(&child)) {

767 +

argv_array_clear(&env);

768 +

return "Up-to-date check failed";

769 +

}

770 + 771 +

/* run_command() does not clean up completely; reinitialize */

772 +

child_process_init(&child);

773 +

child.argv = diff_files;

774 +

child.env = env.argv;

775 +

child.dir = work_tree;

776 +

child.no_stdin = 1;

777 +

child.stdout_to_stderr = 1;

778 +

child.git_cmd = 1;

779 +

if (run_command(&child)) {

780 +

argv_array_clear(&env);

781 +

return "Working directory has unstaged changes";

782 +

}

783 + 784 +

child_process_init(&child);

785 +

child.argv = diff_index;

786 +

child.env = env.argv;

787 +

child.no_stdin = 1;

788 +

child.no_stdout = 1;

789 +

child.stdout_to_stderr = 0;

790 +

child.git_cmd = 1;

791 +

if (run_command(&child)) {

792 +

argv_array_clear(&env);

793 +

return "Working directory has staged changes";

794 +

}

795 + 796 +

read_tree[3] = sha1_to_hex(sha1);

797 +

child_process_init(&child);

798 +

child.argv = read_tree;

799 +

child.env = env.argv;

800 +

child.dir = work_tree;

801 +

child.no_stdin = 1;

802 +

child.no_stdout = 1;

803 +

child.stdout_to_stderr = 0;

804 +

child.git_cmd = 1;

805 +

if (run_command(&child)) {

806 +

argv_array_clear(&env);

807 +

return "Could not update working tree to new HEAD";

808 +

}

809 + 810 +

argv_array_clear(&env);

811 +

return NULL;

812 +

}

813 + 733 814

static const char *update(struct command *cmd, struct shallow_info *si)

734 815

{

735 816

const char *name = cmd->ref_name;

736 817

struct strbuf namespaced_name_buf = STRBUF_INIT;

737 -

const char *namespaced_name;

818 +

const char *namespaced_name, *ret;

738 819

unsigned char *old_sha1 = cmd->old_sha1;

739 820

unsigned char *new_sha1 = cmd->new_sha1;

740 821

@@ -760,6 +841,11 @@ static const char *update(struct command *cmd, struct shallow_info *si)

760 841

if (deny_current_branch == DENY_UNCONFIGURED)

761 842

refuse_unconfigured_deny();

762 843

return "branch is currently checked out";

844 +

case DENY_UPDATE_INSTEAD:

845 +

ret = update_worktree(new_sha1);

846 +

if (ret)

847 +

return ret;

848 +

break;

763 849

}

764 850

}

765 851

@@ -784,10 +870,13 @@ static const char *update(struct command *cmd, struct shallow_info *si)

784 870

break;

785 871

case DENY_REFUSE:

786 872

case DENY_UNCONFIGURED:

873 +

case DENY_UPDATE_INSTEAD:

787 874

if (deny_delete_current == DENY_UNCONFIGURED)

788 875

refuse_unconfigured_deny_delete_current();

789 876

rp_error("refusing to delete the current branch: %s", name);

790 877

return "deletion of the current branch prohibited";

878 +

default:

879 +

return "Invalid denyDeleteCurrent setting";

791 880

}

792 881

}

793 882

}


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4