extract update process
recommend --recursive to handle submodules