IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GIT Discussion :

Synchroniser depuis plusieurs postes différents


Sujet :

GIT

  1. #1
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mars 2010
    Messages : 74
    Points : 81
    Points
    81
    Par défaut Synchroniser depuis plusieurs postes différents
    Bonjour,

    Le contexte :
    -------------

    Je suis lycéen et travaille :
    - au lycée sur plusieurs postes différents, ayant en commun un serveur sur lequel j'enregistre mon travail, mais n'ayant pas accès à internet (notons les PCS)
    - chez moi sur un ordi portable, ayant accès à internet mais pas aux ordi du lycée (notons le HOME).

    J'ai créé un dossier IRIS sur HOME. Il contient tous mes cours et mes tps.
    J'en ai créé un autre sur PCS.

    Si je commence par exemple un projet "PCS/IRIS/TP1/" au lycée, je veux pouvoir le continuer chez moi dans "HOME/IRIS/TP1/"
    Et de retour au lycée je veux pouvoir continuer là où j'en étais chez moi.
    J'effectue donc constamment des copies de IRIS, que je met sur une clef (notons la USB).

    Chaque fois que je fais des modifs, je dois faire :
    Une copie de PCS/IRIS vers USB/IRIS
    Une copie de USB/IRIS vers HOME/IRIS
    Et vice versa.


    Le problème :
    -------------

    Aujourd'hui j'ai fait une bourde.
    J'avais travaillé la semaine dernière sur TP1 et TP2 en cour.
    Pressé, je n'avais pas lancé la copie de tout le dossier IRIS sur ma USB, j'avais donc effectué la sauvegarde en ne sélectionnant que les dossiers modifiés. C'est là que j'ai oublié que j'avais travaillé sur TP1, et je n'ai copié que TP2 (PCS/IRIS/TP2 -> USB/IRIS/TP2).
    Ce WE j'arrive chez moi, je copie USB/IRIS sur HOME/IRIS.
    Je bosse sur HOME/IRIS/TP2.
    Le WE se termine, je copie HOME/IRIS sur USB/IRIS.
    J'arrive au lycée, et là c'est le drame : je fais comme d'hab USB/IRIS -> PCS/IRIS et par conséquent j'écrase la version la plus récente de TP1 par une ancienne.
    J'ai ainsi perdu près de 6h de travail.


    Les solutions trouvées :
    -----------------------

    J'ai appris qu'il existe des logiciels "intelligents" permettant de copier coller sans écraser les fichiers les plus récents par des anciens.
    J'ai aussi appris qu'il existe des CVS, Git me plaisant le plus grâce à sa notion de branches, de conservation des historiques et parce qu'il ne nécessite pas forcément une connexion internet.


    Ce que je tente de faire :
    ------------------------

    Quitte à changer mes habitudes pour faire quelque chose de mieux, j'aimerais pouvoir combiner
    - La synchronisation sans écraser les fichiers les plus récents par des anciens
    - La conservation de l'historique des modifications
    - Créer des branches pour faire des modifications
    - Préparer un futur travail collaboratif (travailler à plusieurs m'intéresse vivement)

    J'ai donc l'intention de me servir de Git.
    Vu que je n'ai pas internet au lycée, je dois continuer à me servir de ma clef.

    Première idée :
    --------------

    Créer un dépôt nu (que le dossier .git) sur ma clef USB et m'en servir pour pousser et tirer.

    Problème :
    Je n'arrive pas à push dessus, et ça ne m'étonne pas puisque je n'ai fait que la commande "git clone --bare" sans autre réglages : ce n'est pas un véritable dépôt serveur.
    J'ai lu dans le livre Pro Git qu'il était possible de créer un serveur 'local'. Est-ce ce qu'il faudrait faire sur ma USB dans ce cas ?


    Deuxième idée :
    ---------------

    Passer de HOME -> USB -> PCS -> USB -> HOME en tirant seulement.
    C'est à dire que sur HOME, je crée un dépôt.
    Je le clone sur USB, et je clone celui de USB sur PCS.
    A ce stade tout est synchronisé.
    Je fais des modifs sur HOME.
    Il me faut synchroniser PCS, via USB.
    Pour synchroniser USB, je tire sur HOME depuis USB.
    Pour synchroniser PCS, je tire sur USB depuis PCS.
    Je répète l'opération inverse lorsque j'ai fait des modifs
    J'ajoute USB comme dépôt à HOME. J'ajoute PCS comme dépôt à USB.
    Et j'utilise le même principe pour PCS -> USB -> HOME.

    Problème1 :
    J'ai lu que sur un serveur distant il faut un dépôt pour chaque projet.
    Moi j'ai beaucoup de Tps, donc plusieurs projets.
    Il faudrait donc créer un dépôt pour chaque dossier (et cela 3 fois, puisqu'il faut le faire à chaque fois sur HOME, USB, et PC).
    Puis tirer 3 fois pour chaque projet avancé dans la journée...
    Ca me parait très très lourd.
    -> Pour résoudre cela je serais donc tenté de faire un seul dépôt, dans IRIS. Il ne faudrait donc tirer que 3 fois.

    Problème2 :
    Avec un seul dépôt dans IRIS l'historique serait un peu bizarre puisque tous les projets seraient mélangés. Il me faudrait alors créer des branches parallèles pour chaque projet ? (je suis pas encore méga à l'aise avec les branches, même si ça à l'air génial)


    Voilà j'espère que je ne vous ai pas ennuyé, et que mes explications vous paraitront claires.

    Si vous avez des réponses aux questions que je me pose, ou "seulement" quelques idées/suggestions, je vous serai très reconnaissant de me les faire connaitre.
    Si vous ne comprenez pas certaines de mes explications, n'hésitez pas non plus à me le dire, je reformulerai.

    Merci d'avance,

    SmallFitz.

  2. #2
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mars 2010
    Messages : 74
    Points : 81
    Points
    81
    Par défaut
    Bien d'après la doc, le "workflow" que je veux c'est celui de superprojet.
    C'est à dire un projet qui contient lui même plusieurs projets (des sous projets).
    J'ai suivi les explications du livre Pro Git
    L'étape "VI-F-1. Démarrer un sous-module" se déroule bien.
    Mais l'étape "VI-F-2. Cloner un projet avec des sous-modules" échoue lorsque je fais : il me dit que le .git du sous projet source n'est pas reconnu comme un depot git.

    Est-ce parce que dans l'exemple donné ils utilisent un sous projet distant ?
    En effet ils font
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    git submodule add git:URL/rack.git rack
    Alors que moi je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    git submodule add ./CHEMIN_LOCAL/rack/.git ./CHEMIN_LOCAL/rack
    , c'est à dire que l'origine et la source sont dans le même dossier, et c'est logique puisque c'est un sous projet situé dans un sous répertoire de mon super projet.

    Avez vous des conseils, une idée de l'origine de l'erreur, ou des suggestions pour la résoudre ?
    Merci d'avance.

    SmallFitz.

  3. #3
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mars 2010
    Messages : 74
    Points : 81
    Points
    81
    Par défaut
    Heu, y'a quelqu'un sur ce forum ? ...

    J'ai découvert des choses intéressantes dans ce livre.
    Notamment dans ce passage très intéressant :
    To see how submodule support works, create (for example) four example repositories that can be used later as a submodule:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ mkdir ~/git
    $ cd ~/git
    $ for i in a b c d
    do
        mkdir $i
        cd $i
        git init
        echo "module $i" > $i.txt
        git add $i.txt
        git commit -m "Initial commit, submodule $i"
        cd ..
    done
    Now create the superproject and add all the submodules:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ mkdir super
    $ cd super
    $ git init
    $ for i in a b c d
    do
        git submodule add ~/git/$i $i
    done
    NOTE: Do not use local URLs here if you plan to publish your superproject!
    Déjà je remarque que le dossier du superprojet est créé A COTE des dossiers des sousprojets.
    Ensuite il est précisé que lors de l'utilisation de la commande
    git submodule add
    il ne faut pas utiliser des URLs locales si on compte publier son projet.
    Moi je veux qu'il soit clonable donc je suppose que ça revient à le publier.
    Donc il me faut bannir les URL locale. Mais quoi mettre à la place !!!! Je vais quand même pas mettre sur internet (URL externe ?) des projets juste pour pouvoir m'en servir de sousprojet dans un superprojet.
    Je continue à creuser...

    Edit :
    Sur la doc ils disent plutôt :
    Check out the superproject somewhere private and add all the submodules (note: it's important to give an absolute path for submodules on the local filesystem)
    C'est donc un lien absolu qu'il faut, et non pas forcément une URL internet.

  4. #4
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mars 2010
    Messages : 74
    Points : 81
    Points
    81
    Par défaut
    Grâce au tuto j'ai réussi à faire un script commenté pas à pas (cf. piece jointe) qui effectue les actions suivantes (résumé ne considérant que les créations de dossiers) :
    # Script créé grâce à la doc située à cette adresse : https://git.wiki.kernel.org/articles...rial_c489.html
    # Creation dans le repertoire courant des dossiers Prive, Public
    # Creation dans Prive des dossiers Module1, Module2
    # Creation dans Prive/Module1, Prive/Module2 de leurs depots .git (ce sont les submodules)
    # Creation dans Public des dossiers Module1.git, Module2.git par le clonage des submodules Prive/Module1/.git, Prive/Module2/.git

    # Creation dans Prive du dossier super
    # Creation dans Prive/super d'un depot .git (c'est le superproject)
    # Creation dans Public du dossier super.git par le clonage de Prive/super/.git

    # Creation dans Prive/super des dossiers Module1, Module2 par ajout des submodules
    # Publication de Prive/super/.git vers Public/super.git

    # Creation dans le repertoire courant (à côté de Prive et Public) du dossier Prive2
    # Creation dans Prive2 des dossiers super, super/Module1, super/Module2 par clonage de Public/super.git
    # Clonage dans Prive2/super/Module1, Prive2/super/Module2 de leurs contenus respectifs (Public/Module1.git, Public/Module2.git)
    # Modification dans Prive2/super/Module1 et commit
    # Publication de Prive2/super/Module1/.git vers Public/Module1.git
    # Publication de Prive2/super/.git vers Public/super.git
    # Recuperation dans Prive des modifications
    L'arborescence de Public (ce serait ma clef USB) n'a pas d'importance car ce n'est qu'un depot nu, pas un repertoire de travail. Il me suffira de le mettre sur ma clef dans un dossier prevu à cet effet.

    L'arborescence de Prive2 (ce serait un des PCs du lycée) est pile ce qu'il me faut : super contient Module1 et Module2.

    Prive (ce serait mon ordi portable) a deux arborescences différentes.
    Il contient d'une part les dossiers servant de sources aux submodules
    Il contient d'autre part le dossier super qui contient les clones des sources des submodules.
    Comme Prive est un disque dur, il y a redondance de fichiers entre les submodules et leurs sources : Prive/Module1/ == Prive/super/Module1

    J'aimerais faire comprendre à Git que les sources des submodules sont... Eux même !
    Mais rien n'indique comment s'y prendre...

    Est-ce impossible ? Ca me serait très utile de le savoir, histoire de décider si je persiste ou non, car ça fait quand même 12 jours depuis mon premier post...
    Si non, comment s'y prendre ? Un peu d'aide accélérerait grandement mes recherches.

    Merci d'avance.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre expérimenté Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Points : 1 359
    Points
    1 359
    Par défaut
    Citation Envoyé par SmallFitz Voir le message
    Est-ce impossible ? Ca me serait très utile de le savoir, histoire de décider si je persiste ou non, car ça fait quand même 12 jours depuis mon premier post...
    Si non, comment s'y prendre ? Un peu d'aide accélérerait grandement mes recherches.
    J'essaye de répondre pour ce soir.
    Ce que tu veux faire n'est pas difficile mais tu n'es pas sur la bonne voie.
    Comme il y a pas mal dinterrogations dans tes posts je ne peux pas répondre à tout en cinq minutes

    Solution rapide à ton dernier problème : il faut juste que tu crées un dépôt pour chaque sous-projet sur ta clef usb et que tu les ajoutes à ton projet principal.

    Si sur ta clef USB (montée sur /media/usb dans l'exemple) tu as trois dépôt git qui correspondent à :
    - ton projet maître (super_projet.git)
    - tes deux sous-projets (sous_projet_1 et sous_projet_2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    vagabond@Erna lycee $ g clone /media/usb/super_projet.git/
    Cloning into super_projet...
    done.
    vagabond@Erna lycee $ cd super_projet/
    vagabond@Erna super_projet $ g submodule add /media/usb/sous_projet_1.git/
    Cloning into sous_projet_1...
    done.
    vagabond@Erna super_projet $ g submodule add /media/usb/sous_projet_2.git/
    Cloning into sous_projet_2...
    done.
    vagabond@Erna super_projet $ g st
    A  .gitmodules
    A  sous_projet_1
    A  sous_projet_2
    vagabond@Erna super_projet $ g ci -am "Added submodules"
    [master 35df9d4] Added submodules
     3 files changed, 8 insertions(+), 0 deletions(-)
     create mode 100644 .gitmodules
     create mode 160000 sous_projet_1
     create mode 160000 sous_projet_2
    vagabond@Erna super_projet $ g push
    Counting objects: 4, done.
    Delta compression using up to 2 threads.
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 426 bytes, done.
    Total 3 (delta 0), reused 0 (delta 0)
    Unpacking objects: 100% (3/3), done.
    To /media/usb/super_projet.git/
       e22104f..35df9d4  master -> master
    (g est un alias pour git)
    À partir de maintenant, si tu veux cloner ton projet maître et les sous-projets, il te suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    g clone /chemin_montage_clef/super_projet.git
    cd super_projet
    g submodule init
    g submodule update

    Il faut que le dépôt sur ta clef USB soit ton dépôt principal (oublie la notion de serveur, je reviendrai la dessus dans la réponse complète).
    "Je suis incapable d'expliquer ce qui se passa ensuite : je lâchai quelque chose, quelque chose à quoi je m'agrippais depuis toujours sans m'en rendre compte. Je m'enfonçais dans une obscurité chaude, moelleuse et protectrice, tandis qu'un loup montait la garde par mes propres yeux."

  6. #6
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mars 2010
    Messages : 74
    Points : 81
    Points
    81
    Par défaut
    Bonsoir rurouni alex,

    Merci beaucoup pour ta réponse !
    J'essaye de répondre pour ce soir.
    Je peux attendre (surtout que je vais dormir) ! Ta réponse m'a aidé et je pense avoir avancé de mon côté (j'ai fait plein de tests et je crois commencer à pigé la mécanique).
    J'ai même envie de dire, oublie peut être mes premiers posts, quand je me relis moi - même j'ai du mal à comprendre où je veux en venir... u_u

    Bon je confonds un peu tout, mais je suis parti du principe que depot principal était le dépôt nu (celui créé avec l'option --bare). COmme dans le script de la doc quoi.

    Je suis parti d'un cas simple et j'ai esayé de le scripter :
    J'ai un dossier IRIS (superproject) qui contient Matiere1 (submodule)
    Tous mes sources sont sur mon OrdiPortable.
    Je veux les mettre sur PCx en passant par ClefUsb.


    Je dois avouer que je m'exprime mal, part dans tous les sens, et j'oublie même les trucs que j'ai découvert dans les posts precedents.
    Bref j'avais une erreur due à mes liens qui n'étaient pas des liens absolus.
    Ou alors il y avait une erreur de syntaxe à l'intérieur, toujours est il que quoi que je fasse ça me disait que le repertoire visé n'était pas un depot git ou un truc dans le genre.
    En tout cas en m'appuyant sur le script de la doc, ça a marché, et j'ai essayé de modifier ce que je pouvais pour l'adapter.

    J'ai bloqué à l'étape où il fallait cloner sur la clef usb.
    J'avais créé ClefUsb/IRIS/IRIS.git/Matiere1.git, et quand je voulais cloner OrdiPortable/IRIS/.git dans ClefUsb/IRIS/IRIS.git ça me disait que le repertoire existait deja et n'était pas un projet git.
    J'ai donc décidé de faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    git clone --bare .    $chemin/ClefUsb/IRIS/IRIS.git
    En gros chaque depot que je dois cloner, je le clone dans un nouveau dossier qui porte le même nom que le depot, et le clone s'apelle nomDepot.git
    Exemple :
    Clonage de OrdiPortable/IRIS/Matiere1/.git vers ClefUsb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    git clone --bare .    $chemin/ClefUsb/IRIS/Matiere1/Matiere1.git
    Comme ça si je veux rajouter des sous modules à Matiere1, le Matiere1.git gênera pas.

    Ah oui, je dis même pas pourquoi je fais ça :
    Si tous les depots étaient cloné comme ça : ClefUsb/nom_depot.git (comme dans le script de la doc), j'allais vite avoir plein d'erreurs puisque j'ai plein de "projets" (des Tps) avec des noms identiques (Matiere1/Tp1, Matiere2/Tp1) j'aurais donc pas pu cloner Matiere2/Tp1 puisque ClefUsb/TP1.git (celui de Matiere1) aurait bloqué, ou aurait été écrasé j'en sais rien.

    Bref j'ai fini d'adapter le script et tout fonctionne niquel : les arborescences sont partout pareillles et je push et pull sans probleme, que ce soit de PCx ou de OrdiPortable vers ClefUsb.
    Je mets le script en piece jointe, si tu as la foi peux tu me dire ce que tu en penses ?

    Je vais maintenant essayer de rajouter une couche de sous dossier car mon vrai IRIS en est claffi...
    Le truc qui me fait un peu flipper c'est que si il faut push pour chaque couche, ben je suis pas sorti de l'auberge.
    Genre IRIS/Matiere1/Tp1/ : Le superproject IRIS a pour submodule Matiere1, qui est le superproject de TP1.
    Du coup faudra t'il pusher TP1, puis Matiere1, puis IRIS ? =/
    Ou alors j'abuse et faut pas faire autant de couches ? ... Pourtant j'ai tellement de dossier divers et important que tous les suivre individuellement aurait été le top.
    Fichiers attachés Fichiers attachés

  7. #7
    Membre expérimenté Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Points : 1 359
    Points
    1 359
    Par défaut
    Citation Envoyé par SmallFitz Voir le message
    J'avais créé ClefUsb/IRIS/IRIS.git/Matiere1.git
    Un .git dans un autre .git y a un truc qui va pas là


    Citation Envoyé par SmallFitz Voir le message
    Ou alors j'abuse et faut pas faire autant de couches ? ...
    Yep, je dirais même qu'il faut que tu oublies les sous-projets tout court
    Tu mets sur ta clef usb un .git pour chaque matière.
    Dans chacun de ces dépôts, les TPs de la matière concernée.
    Pas besoin d'un dépôt par TP.
    Il te faut des dépôts différents pour des "machins" qui peuvent s'emmêler les historiques.
    Cela ne devrait pas être le cas pour les TPs d'une matière.
    Si tu as un TP à rendre en janvier et un autre en février, tu auras un historique du type :
    - commit 1 TP janvier
    - commit 2 TP janvier
    - ...
    - commit m TP janvier
    - commit 1 TP février
    - commit 2 TP février
    - ...
    - commit n TP février
    Pas besoin de faire deux dépôts différents dans ce cas.
    Et si par malheur il pouvait potentiellement arriver, sur un gros malentendu, que tu doives commiter sur le TP de janvier en février, il te suffirait de créer une branche et de la merger une fois que tu est sûr de ne plus avoir besoin besoin de commiter en février.
    Ainsi tes projets gardent un historique qui ne s'emmêle pas les pinceaux et c'est beaucoup plus simple à gérer de ton côté.

    Maintenant que tu as un dépôt pour chaque matière sur ta clef USB, comment tout pusher et puller en même temps ?
    Il suffit de faire ça en dehors de git.
    Un petit script du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    chemin_cours=/home/moi_meme/cours/
    for i in $chemin_cours/*; do (cd $i && git pull); done
    (ou même juste un pauvre alias) que tu appelles pull_cours et que tu mets dans ton PATH (avec le même pour le push.
    Et après avoir cloné tes dépôts avec un simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd /home/moi_meme/cours/
    for i in /media/usb/depots/*.git; do clone $i; done
    yaka faire un
    pour récupérer les modifs et
    pour les envoyer sur la clef.

    Citation Envoyé par SmallFitz Voir le message
    Je mets le script en piece jointe, si tu as la foi peux tu me dire ce que tu en penses ?
    Clair et bien commenté, c'est un bon résumé pour initialiser tes sous-modules.
    "Je suis incapable d'expliquer ce qui se passa ensuite : je lâchai quelque chose, quelque chose à quoi je m'agrippais depuis toujours sans m'en rendre compte. Je m'enfonçais dans une obscurité chaude, moelleuse et protectrice, tandis qu'un loup montait la garde par mes propres yeux."

  8. #8
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mars 2010
    Messages : 74
    Points : 81
    Points
    81
    Par défaut
    Merci pour tes précisions... Qui me font déprimer !

    Ca remet un peu tout en question ce que tu me dis.
    En gros pourquoi faire compliqué quand on peut faire simple.
    Ouais mais des fois faut en chier pour faire des trucs géniaux.
    Et c'est l'impression que j'avais quand je parcourais la doc.
    J'ai l'impression que ça balaie toute la puissance de Git d'un coup.

    Déjà regrouper les Tps ça me semble être de la pure hérésie !
    Parce que :
    Mes Tps n'ont rien à voir entre eux
    Parce que j'estime que modifier le TP1 après avoir démarré le TP2 c'est légitime. par exemple je peux etre en retard. Ou je peux décider de l'améliorer, le completer, le retravailler completement pour un futur Tp.
    C'est 2 trucs bien distincts qu'il ne faut pas mélanger dans un même historique.
    En tout cas je trouve.

    J'ai vraiment l'impression que dans mon cas, le superprojet c'est LA clef.
    Si c'est pas le cas, je vois pas quand faut l'utiliser ! Ca sert à quoi alors ? Oo

    J'ai pas envie de lâcher les superprojects. xD
    Et vu le temps que j'y ai consacré, autant aller jusqu'au bout, même si je m'aperçois que c'était pas la bonne solution.
    Au moins, je saurai faire. Fin j'espere...
    * Croise les doigts *
    J'ai pas trop le temps de m'y replonger là mais des que je peux je continuerai à poster mes réflexions ici.

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par SmallFitz Voir le message
    Bonjour,

    Le contexte :
    -------------

    Je suis lycéen et travaille :
    - au lycée sur plusieurs postes différents, ayant en commun un serveur sur lequel j'enregistre mon travail, mais n'ayant pas accès à internet (notons les PCS)
    - chez moi sur un ordi portable, ayant accès à internet mais pas aux ordi du lycée (notons le HOME).

    J'ai créé un dossier IRIS sur HOME. Il contient tous mes cours et mes tps.
    J'en ai créé un autre sur PCS.

    Si je commence par exemple un projet "PCS/IRIS/TP1/" au lycée, je veux pouvoir le continuer chez moi dans "HOME/IRIS/TP1/"
    Et de retour au lycée je veux pouvoir continuer là où j'en étais chez moi.
    J'effectue donc constamment des copies de IRIS, que je met sur une clef (notons la USB).

    Chaque fois que je fais des modifs, je dois faire :
    Une copie de PCS/IRIS vers USB/IRIS
    Une copie de USB/IRIS vers HOME/IRIS
    Et vice versa.


    Le problème :
    -------------

    Aujourd'hui j'ai fait une bourde.
    J'avais travaillé la semaine dernière sur TP1 et TP2 en cour.
    Pressé, je n'avais pas lancé la copie de tout le dossier IRIS sur ma USB, j'avais donc effectué la sauvegarde en ne sélectionnant que les dossiers modifiés. C'est là que j'ai oublié que j'avais travaillé sur TP1, et je n'ai copié que TP2 (PCS/IRIS/TP2 -> USB/IRIS/TP2).
    Ce WE j'arrive chez moi, je copie USB/IRIS sur HOME/IRIS.
    Je bosse sur HOME/IRIS/TP2.
    Le WE se termine, je copie HOME/IRIS sur USB/IRIS.
    J'arrive au lycée, et là c'est le drame : je fais comme d'hab USB/IRIS -> PCS/IRIS et par conséquent j'écrase la version la plus récente de TP1 par une ancienne.
    J'ai ainsi perdu près de 6h de travail.


    Les solutions trouvées :
    -----------------------

    J'ai appris qu'il existe des logiciels "intelligents" permettant de copier coller sans écraser les fichiers les plus récents par des anciens.
    J'ai aussi appris qu'il existe des CVS, Git me plaisant le plus grâce à sa notion de branches, de conservation des historiques et parce qu'il ne nécessite pas forcément une connexion internet.


    Ce que je tente de faire :
    ------------------------

    Quitte à changer mes habitudes pour faire quelque chose de mieux, j'aimerais pouvoir combiner
    - La synchronisation sans écraser les fichiers les plus récents par des anciens
    - La conservation de l'historique des modifications
    - Créer des branches pour faire des modifications
    - Préparer un futur travail collaboratif (travailler à plusieurs m'intéresse vivement)

    J'ai donc l'intention de me servir de Git.
    Vu que je n'ai pas internet au lycée, je dois continuer à me servir de ma clef.

    Première idée :
    --------------

    Créer un dépôt nu (que le dossier .git) sur ma clef USB et m'en servir pour pousser et tirer.

    Problème :
    Je n'arrive pas à push dessus, et ça ne m'étonne pas puisque je n'ai fait que la commande "git clone --bare" sans autre réglages : ce n'est pas un véritable dépôt serveur.
    J'ai lu dans le livre Pro Git qu'il était possible de créer un serveur 'local'. Est-ce ce qu'il faudrait faire sur ma USB dans ce cas ?


    Deuxième idée :
    ---------------

    Passer de HOME -> USB -> PCS -> USB -> HOME en tirant seulement.
    C'est à dire que sur HOME, je crée un dépôt.
    Je le clone sur USB, et je clone celui de USB sur PCS.
    A ce stade tout est synchronisé.
    Je fais des modifs sur HOME.
    Il me faut synchroniser PCS, via USB.
    Pour synchroniser USB, je tire sur HOME depuis USB.
    Pour synchroniser PCS, je tire sur USB depuis PCS.
    Je répète l'opération inverse lorsque j'ai fait des modifs
    J'ajoute USB comme dépôt à HOME. J'ajoute PCS comme dépôt à USB.
    Et j'utilise le même principe pour PCS -> USB -> HOME.

    Problème1 :
    J'ai lu que sur un serveur distant il faut un dépôt pour chaque projet.
    Moi j'ai beaucoup de Tps, donc plusieurs projets.
    Il faudrait donc créer un dépôt pour chaque dossier (et cela 3 fois, puisqu'il faut le faire à chaque fois sur HOME, USB, et PC).
    Puis tirer 3 fois pour chaque projet avancé dans la journée...
    Ca me parait très très lourd.
    -> Pour résoudre cela je serais donc tenté de faire un seul dépôt, dans IRIS. Il ne faudrait donc tirer que 3 fois.

    Problème2 :
    Avec un seul dépôt dans IRIS l'historique serait un peu bizarre puisque tous les projets seraient mélangés. Il me faudrait alors créer des branches parallèles pour chaque projet ? (je suis pas encore méga à l'aise avec les branches, même si ça à l'air génial)


    Voilà j'espère que je ne vous ai pas ennuyé, et que mes explications vous paraitront claires.

    Si vous avez des réponses aux questions que je me pose, ou "seulement" quelques idées/suggestions, je vous serai très reconnaissant de me les faire connaitre.
    Si vous ne comprenez pas certaines de mes explications, n'hésitez pas non plus à me le dire, je reformulerai.

    Merci d'avance,

    SmallFitz.
    bon a mon avis vous pouvez utiliser DropBox! installer dans les 2 machine!

Discussions similaires

  1. Identification depuis plusieurs postes
    Par Lexarino dans le forum Débuter
    Réponses: 1
    Dernier message: 21/11/2013, 11h38
  2. Pinger un serveur depuis plusieurs pays différents
    Par Winch44 dans le forum Développement
    Réponses: 4
    Dernier message: 18/05/2010, 11h21
  3. Comment attaquer ma base access depuis plusieurs postes distants?
    Par DJOUA François dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 22/08/2007, 16h41
  4. Réponses: 1
    Dernier message: 02/01/2006, 19h05
  5. [Apache] Probleme d'acces depuis un poste du même LAN
    Par j14z dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 14/11/2005, 12h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo