• # Plusieurs options

    Posté par (site web personnel) . En réponse au message workflow git. Évalué à 5.

    Tu as plusieurs approches possibles. Tout d'abord notons CLIENT et PERSO tes dépôts (copies de travail) git, ce qui nous servira à décrire les workflows. Pour évaluer les différentes solutions il faut que tu regardes ce qui est techniquement et commercialement faisable.

    La raison qui fait que c'est possible techniquement est que git est décentralisé et un dépôt donné n'a aucun rôle techniques spécifique par rapport à un autre – le clone produit par git clone est en principe total – et git fournit plein d'outils pour échanger les données entre les divers clones d'un même dépôt.

    1. INSTALLER UN HOP SUR TON INTRANET

    Comme tu mentionnes que tu peux accéder pour quelques minutes à ton propre depuis chez ton client, ce serait facile de créer un serveur sur ton propre intranet qui tourne toujours et héberge un dépôt HOP, accessible via SSH-GIT, HTTPS-GIT, ou bien par NFS par exemple. Ainsi ton workflow ressemblerait à:

    • Arrivée site client
    • Hack
    • Pousse de CLIENT vers HOP avant de rentrer à la maison
    • À la maison, tire de HOP sur PERSO
    • Hack
    • Avant de partir chez le client pousse de PERSO sur HOP
    • Arrivée sur le site client, tire de HOP sur CLIENT
    • Hack
    • Pousse de CLIENT vers HOP avant de rentrer à la maison
    • ...
    2. INSTALLER UN HOP AILLEURS SUR INTERNET

    Tu peux aussi considérer un hébergement de dépôt git payant, cela coûte une poignée d'euros par mois. Tu y créerais un dépôt HOP, que tu utiliserais comme précédemment. Variante avec une box complète, prix analogue.

    3. UTILISER UN HOP SUR UNE CLEF USB

    Si tes postes de travail peuvent accéder aux mêmes systèmes de fichiers (par exemple ce sont deux Linux) tu peux utiliser un support amovible pour stocker ton dépôt HOP (par exemple un bare repo). Il faudrait certainement crypter ce support pour se prémunir contre sa perte.

    4. UTILISER GIT-BUNDLE PAR E-MAIL

    La sous-commande git bundle permet de sauvegarder une partie d'un dépôt git dans une archive fichier, dite "bundle", qui peut ensuite être importé dans un autre dépôt. Le "bundle" peut être acheminé via une clef USB ou en P.j. sur un email.

    % man git-bundle
    ...
     Some workflows require that one or more branches of development on one
     machine be replicated on another machine, but the two machines cannot
     be directly connected, and therefore the interactive Git protocols
     (git, ssh, http) cannot be used. This command provides support for git
     fetch and git pull to operate by packaging objects and references in an
     archive at the originating machine, then importing those into another
     repository using git fetch and git pull after moving the archive by
     some means (e.g., by sneakernet). As no direct connection between the
     repositories exists, the user must specify a basis for the bundle that
     is held by the destination repository: the bundle assumes that all
     objects in the basis are already in the destination repository.
    

    Cela correspond assez exactement à ton besoin. Je l'ai utilisé pendant longtemps en mode "sneakernet," c'est un peu relou mais si tu dois jongler entre les intranets cela reste sûrement plus simple que les push/pull à travers le réseau.

    En gros c'est le même workflow qu'avec le HOP mais au lieu de cela à la fin de ta session de travail, tu fais und bundle avec tous tes derniers commits et l'apporte ou l'email à ton autre station pour pouvoir l'importer.

    5. GIT-IMAP

    Jette un œil à la man-page git-imap-send – je n'ai jamais utilisé cette fonction mais cela semble pouvoir répondre à ton besoin.

    6. MON AVIS

    Admettant que ton client soit d'accord avec ces manips, je pense que les solutions les plus simples sont, par ordre croissante de complexité à l'usage.

    1. Installer un HOP ailleurs sur Internet, si tu as un accès illimité chez ton client.
    2. Utiliser un HOP sur une clef USB, si tu as droit au support amovible.
    3. Utiliser git-bundle via email
    4. Installer un HOP sur ton intranet.