Update or a local checkout.

    Arguments
    target - The target to operate on.

def checkout_task(current_target):
    """
    Update or a local checkout.

    Arguments
    target - The target to operate on.
    """
    try:
        scm = _make_scm(current_target)
        src_dir = current_target.config.get("dp.src_dir")
        shared_dir = current_target.config.get("dp.src_dir_shared")
        scm.checkout(repo_dir=src_dir, shared_dir=shared_dir)
        scm.update(repo_dir=src_dir)
    except devpipeline_core.toolsupport.MissingToolKey as mtk:
        current_target.executor.warning(mtk)