From bc82c533f1930bd0359a310533142cbf9951df5d Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Tue, 5 Sep 2017 22:55:55 +0200 Subject: [PATCH] [DEV] fetch other remote, status on other remote --- island/__init__.py | 5 ++++ island/actions/islandAction_fetch.py | 22 ++++++++++---- island/actions/islandAction_status.py | 41 ++++++++++++++++++++------- island/env.py | 10 +++++++ 4 files changed, 61 insertions(+), 17 deletions(-) diff --git a/island/__init__.py b/island/__init__.py index ad18e8d..80f0826 100755 --- a/island/__init__.py +++ b/island/__init__.py @@ -64,6 +64,7 @@ myArgs.add("c", "color", desc="Display message in color") #myArgs.add("h", "help", desc="Help of this action") myArgs.add("b", "branch", haveParam=True, desc="Select branch to display") myArgs.add("m", "manifest", haveParam=True, desc="Name of the manifest") +myArgs.add("N", "no-fetch-manifest", haveParam=False, desc="Disable the fetch of the manifest") """ myArgs.add("j", "jobs", haveParam=True, desc="Specifies the number of jobs (commands) to run simultaneously") myArgs.add("d", "depth", haveParam=True, desc="Depth to clone all the repository") @@ -131,6 +132,10 @@ def parseGenericArg(argument, active): else: debug.disable_color() return True + elif argument.get_option_name() == "no-fetch-manifest": + if active == False: + env.set_fetch_manifest(False) + return True return False """ diff --git a/island/actions/islandAction_fetch.py b/island/actions/islandAction_fetch.py index 9c1fce5..d46f12d 100644 --- a/island/actions/islandAction_fetch.py +++ b/island/actions/islandAction_fetch.py @@ -26,9 +26,15 @@ def help(): def execute(arguments): debug.info("execute:") + origin_name = "" for elem in arguments: debug.info(" '" + str(elem.get_arg()) + "'") - if len(arguments) != 0: + if len(arguments) == 0: + pass + elif len(arguments) == 1: + origin_name = arguments[0].get_arg() + debug.info("try fetch remote if exist: '" + str(origin_name) + "'") + else: debug.error("Sync have not parameter") # check if .XXX exist (create it if needed) @@ -40,10 +46,11 @@ def execute(arguments): configuration = config.Config() - debug.info("update manifest : '" + str(env.get_island_path_manifest()) + "'") - # update manifest - cmd = "git fetch --all" - multiprocess.run_command_direct(cmd, cwd=env.get_island_path_manifest()) + if env.get_fetch_manifest() == True: + debug.info("update manifest : '" + str(env.get_island_path_manifest()) + "'") + # update manifest + cmd = "git fetch --all" + multiprocess.run_command_direct(cmd, cwd=env.get_island_path_manifest()) file_source_manifest = os.path.join(env.get_island_path_manifest(), configuration.get_manifest_name()) if os.path.exists(file_source_manifest) == False: @@ -69,7 +76,10 @@ def execute(arguments): # simply update the repository ... debug.verbose("Fetching project: ") # fetch the repository - cmd = "git fetch " + elem.select_remote["name"] + if origin_name == "": + cmd = "git fetch " + elem.select_remote["name"] + else: + cmd = "git fetch " + origin_name debug.verbose("execute : " + cmd) multiprocess.run_command_direct(cmd, cwd=git_repo_path) diff --git a/island/actions/islandAction_status.py b/island/actions/islandAction_status.py index 14851ee..390b1d2 100644 --- a/island/actions/islandAction_status.py +++ b/island/actions/islandAction_status.py @@ -21,15 +21,18 @@ def help(): return "plop" - - - def execute(arguments): debug.info("execute:") + origin_name = "" for elem in arguments: debug.info(" '" + str(elem.get_arg()) + "'") - if len(arguments) != 0: - debug.error("status have not parameter") + if len(arguments) == 0: + pass + elif len(arguments) == 1: + origin_name = arguments[0].get_arg() + debug.info("try fetch remote if exist: '" + str(origin_name) + "'") + else: + debug.error("Sync have not parameter") # check if .XXX exist (create it if needed) if os.path.exists(env.get_island_path()) == False \ @@ -62,28 +65,42 @@ def execute(arguments): debug.verbose("execute : " + cmd) ret_diff = multiprocess.run_command(cmd, cwd=git_repo_path) # get local branch - cmd = "git branch" + cmd = "git branch -a" debug.verbose("execute : " + cmd) ret_branch = multiprocess.run_command(cmd, cwd=git_repo_path) - # get tracking branch - cmd = "git rev-parse --abbrev-ref --symbolic-full-name @{u}" - debug.verbose("execute : " + cmd) - ret_track = multiprocess.run_command(cmd, cwd=git_repo_path) - is_modify = True if ret_diff[0] == 0: is_modify = False list_branch = ret_branch[1].split('\n') list_branch2 = [] + list_branch3 = [] select_branch = "" for elem_branch in list_branch: + if len(elem_branch.split(" -> ")) != 1: + continue + if elem_branch[2:10] == "remotes/": + elem_branch = elem_branch[:2] + elem_branch[10:] if elem_branch[:2] == "* ": list_branch2.append([elem_branch[2:], True]) select_branch = elem_branch[2:] else: list_branch2.append([elem_branch[2:], False]) + list_branch3.append(elem_branch[2:]) + debug.verbose("List all branch: " + str(list_branch3)) + # get tracking branch + if origin_name == "": + cmd = "git rev-parse --abbrev-ref --symbolic-full-name @{u}" + debug.verbose("execute : " + cmd) + ret_track = multiprocess.run_command(cmd, cwd=git_repo_path) + else: + debug.extreme_verbose("check if exist " + origin_name + "/" + select_branch + " in " + str(list_branch3)) + if origin_name + "/" + select_branch not in list_branch3: + debug.info("" + str(id_element) + "/" + str(len(all_project)) + " : " + str(elem.name) + "\r\t\t\t\t\t\t\t (NO BRANCH)") + continue; + else: + ret_track = [True, origin_name + "/" + select_branch] modify_status = " " if is_modify == True: @@ -111,6 +128,8 @@ def execute(arguments): if in_forward != 0: behind_forward_comment += "forward=" + str(in_forward) if in_behind != 0: + if in_forward != 0: + behind_forward_comment += " " behind_forward_comment += "behind=" + str(in_behind) if behind_forward_comment != "": behind_forward_comment = "\r\t\t\t\t\t\t\t\t\t\t\t\t[" + behind_forward_comment + "]" diff --git a/island/env.py b/island/env.py index 24bce1e..3d8def3 100644 --- a/island/env.py +++ b/island/env.py @@ -26,6 +26,16 @@ def get_system_base_name(): return system_base_name +fetch_manifest = True + +def set_fetch_manifest(val): + global fetch_manifest + fetch_manifest = val + +def get_fetch_manifest(): + global fetch_manifest + return fetch_manifest + island_root_path = os.path.join(os.getcwd()) if os.path.exists(os.path.join(island_root_path, "." + get_system_base_name())) == True: