2017-05-06 1 views
1

Comment un référentiel Git distant peut-il être configuré pour pousser, ne pas aller chercher ou tirer?Comment un référentiel Git distant peut-il être configuré pour pousser, extraire ou extraire?

J'ai un référentiel dans un emplacement où il n'est pas connecté à un système de gestion de projet, et je veux le relier à un autre emplacement où se trouve le chef de projet (Gogs).

Comment est-ce que je peux configurer la copie de travail locale pour pousser seulement vers l'emplacement de Gogs, mais ne jamais en tirer, c'est-à-dire pour m'assurer qu'un git fetch ou git pull ne le référence jamais?

À quoi ressemble l'entrée .git/config pour une telle télécommande?

Répondre

3

Vous pouvez définir un faux chercher URL:

$ git remote set-url origin "https://{pulling-is-disabled-for-this-remote}" 
$ # Below command is needed since git remote set-url sets both fetch and push URLs 
$ git remote set-url --push origin CORRECT_REMOTE_URL 
$ git pull origin 
fatal: unable to access 'https://{pulling-is-disabled-for-this-remote}/': Could not resolve host: {pulling-is-disabled-for-this-remote} 

Ainsi, l'entrée .git/config pour une telle distance ressemblera ci-dessous:

[remote "origin"] 
    url = https://{pulling-is-disabled-for-this-remote} 
    pushurl = CORRECT-URL-MUST-BE-PUT-HERE 

La fonction bash suivante fera la travail:

git_disable_pull_from_remote() 
{ 
    if [ $# -ne 1 ]; 
    then 
     echo 1>&2 "Usage: git_disable_pull_from_remote <remote_repo>" 
     return 1 
    fi 

    local url="$(git remote get-url --push "$1")" 
    git remote set-url "$1" "https://{pulling-is-disabled-for-this-remote}" 
    git remote set-url --push "$1" "$url" 
} 

Exemple:

$ git_disable_pull_from_remote origin 
+0

devrait créer la télécommande directement dans '.git/config » avec seulement '' pushurl' sans ajouter url', ie sans utiliser les commandes de remote' 'git faire la même chose? – vfclists

+0

Est-ce que créer une entrée directement dans '.git/config' avec seulement 'pushurl' sans ajouter' url' et 'fetch', c'est-à-dire sans utiliser' git remote', ou cela risquerait-il d'engendrer des erreurs? Est-ce que le paramètre 'fetch' a un effet sur' pushurl' seulement distant? – vfclists

+0

@vfclists Quel est le problème avec l'utilisation de 'git remote' pour cette tâche? – Leon