fossile:ajouter des fichiers au dépôt existant, dois-je d'abord l'ouvrir ?
-
21-12-2019 - |
Question
Je souhaite contrôler les versions d'un répertoire, appelons-le "Project" et gardez les fichiers fossiles dans un autre répertoire nommé "Fossiles". J'ai réussi à créer le référentiel "project.fsl", à ajouter mes fichiers de projet, à engager et à fermer.Mon problème est de comprendre comment passer à l'étape suivante.
Voici ce que je fais, en suivant le fossilbook
suggestions.
$ cd project
$ fossil new ../fossils/project.fsl
$ fossil open ../fossils/project.fsl
$ fossil add .
$ fossil ci -m "first commit"
$ fossil close project.fsl
Maintenant, j'ai travaillé sur mon projet, édité certains fichiers, supprimé certains fichiers, créé certains fichiers, renommé certains fichiers.J'aimerais ajouter l'état actuel du projet au référentiel.Comment je fais ça?
D'après ce que j'ai lu dans la documentation, j'avais l'impression que je devais d'abord ouvrir le référentiel, puis ajouter des fichiers, puis valider.Si je n'ouvre pas le référentiel, j'obtiens le Not within an open checkout.
message.Mais si je open
fossil veut écraser mon répertoire avec les fichiers les plus anciens.(Et si j'ouvre depuis l'intérieur du fossils
répertoire, j'obtiens une version "décompressée" de mon projet copiée dans le répertoire fossils, pas ce que je veux non plus)
$ cd project
$ fossil open ../fossils/project.fsl
Ici, fossile veut écraser mon projet avec l'ancienne version.Je dis non à chaque suggestion.Je soupçonne open
n'était pas la bonne approche, mais sinon, quelle est-elle ?
Je souhaite ajouter mes modifications au référentiel, alors maintenant ce project.fsl est open
, j'essaye ceci :
$ fossil add .
ADDED Slides/tmp.tex
$ fossil commit -m "no idea what I'm doing, this will not end well"
would fork. "update" first or use --allow-fork.
$ fossil close
there are unsaved changes in the current checkout
À ce stade, je supprime tous les fichiers cachés nommés .fslckout
.fossil
et réessayez, avec des résultats tout aussi décevants.
Pour être tout à fait franc, mon seul intérêt fossil
garde un historique de mon projet.Je n'ai pas de co-auteurs et je n'ai pas l'intention de le faire fossil diff
ou fossil ui
ou quelque chose comme ça jusqu'à un moment, qui j'espère n'arrivera jamais, où j'aurai besoin de fouiller dans l'histoire de mon projet.
Modifier. Je suis un total débutant.Je ne suis pas sûr de comprendre le sens de checkout
, manifest
, leaf
, etc.il m'est donc très difficile d'extraire quoi que ce soit du manuel, malgré les innombrables heures passées à essayer.Je ne comprends pas grand chose à cette page fossil open
: http://fossil-scm.org/fossil/help/open
La solution
fossil open
est la bonne chose à faire.Dans votre cas, c'est le fossil close
ce n'était pas nécessaire.
À ce stade, vous devriez faire fossil open ../fossils/project.fsl --keep
pour ouvrir votre dépôt en conservant toutes les modifications.
Le ouvrir La commande marque le répertoire actuel comme un répertoire de travail (en termes fossiles, un vérifier).Je vous recommande de ne pas le fermer tant que vous n'avez pas besoin de déplacer votre dépôt ou le répertoire de travail lui-même.Personnellement, cela ne se produit que lorsque je passe à un autre ordinateur.
Pour que Fossil identifie tous les changements, il suffit de faire fossil addremove
;fossil ajoutera ensuite tous les nouveaux fichiers et supprimera tous les fichiers supprimés, afin que le référentiel corresponde à nouveau au répertoire de travail.Bien entendu, vous devrez toujours valider les modifications par la suite.
Note que addremove
fait pas reconnaître automatiquement les noms de fichiers !Si vous avez renommé des fichiers, vous devez en informer Fossil pour chaque fichier en utilisant le fossil rename
commande, avant vous effectuez le addremove
commande.Bien sûr, si cela ne vous dérange pas de briser l'historique des modifications de fichiers spécifiques, vous êtes libre de l'ignorer et de laisser Fossil penser qu'un fichier a été supprimé et qu'un autre a été ajouté à la place.
Autres conseils
Cérémonie basse et débuts faciles
Pour un seul développeur, le cycle de vie d’un stockage fossile peut être très simple :
fossil new
pour créer le fichier de référentiel lui-même.fossil open
pour créer le premier (ou éventuellement le seul) espace de travail actiffossil add
,fossil remove
,fossil rename
etfossil addremove
pour tenir Fossil informé des fichiers à suivre.fossil commit
pour valider les modifications dans le référentiel
où les étapes 3 et 4 sont répétées selon les besoins tout au long de la durée de vie du projet.
C’est l’un des principaux avantages du fossile :c'est une cérémonie très basse par conception.Vous pouvez gérer seul un projet très élaboré et n'utiliser réellement que fossil commit
régulièrement.
Prochaines étapes
La prochaine étape de sophistication peut évoluer dans plusieurs directions.Si vous souhaitez partager le travail sur un projet avec un deuxième développeur, vous souhaiterez en savoir plus sur le clonage d'un référentiel et la synchronisation des mises à jour.Si vous souhaitez permettre un travail indépendant sur une fonctionnalité sans interrompre vos builds de tronc, vous pouvez en savoir plus sur la création de branches et la fusion.Si vous souhaitez profiter des fonctionnalités du wiki et du suivi des tickets, vous voudrez en savoir plus sur fossil ui
, fossil server
ou configurez votre serveur Web pour lancer fossil.
Mais aucun de ces cas d'utilisation ne le fera exiger l'utilisation du fossil close
commande.En fait, la sortie de fossil help
a récemment été divisé en une liste plus courte de commandes nécessaires à la plupart des utilisateurs et une liste plus longue de toutes les commandes.Dans cette division fossil close
n'a pas fait partie de la liste restreinte.Les seules fonctions qu'il exécute et qui ne peuvent pas être facilement exécutées par simple suppression de fichiers sont de vérifier qu'il ne s'agit pas de modifications non enregistrées et de supprimer la caisse ouverte de votre liste personnelle de caisses disponibles pour le fossil all
commande.
Vocabulaire spécifique aux fossiles
Même un seul développeur voudra apprendre une partie du vocabulaire utilisé dans la documentation de Fossil.
- "enregistrement":Un ensemble spécifique de révisions de fichiers, identifié par un UUID et éventuellement par une ou plusieurs balises.
- "vérifier":Une arborescence de dossiers associée (par
fossil open
) avec un référentiel spécifique.La plupart des commandes fossil nécessitent que le répertoire actuel soit dans une extraction ouverte. - "UUID" :Un identifiant unique pour tout objet spécifique stocké dans le dépôt de fossiles.En pratique, l'UUID est le SHA-1 de la chose exprimé en hexadécimal.Dans la plupart des cas, l'UUID peut être raccourci à juste assez de chiffres principaux du hachage complet pour l'identifier de manière unique.Il sera généralement écrit sous la forme de 8 ou 10 chiffres entre crochets.
- "artefact":Un fichier ou/ou autre contenu (une page wiki, un ticket, un manifeste, etc.) stocké dans le référentiel.Chaque fichier que vous archivez devient un artefact.Il en va de même pour toutes les métadonnées (commentaires, horodatages, etc.) concernant chaque enregistrement.
- "bifurquer":Une ligne d'enregistrements successifs qui dérive d'un enregistrement racine.Les branches sont utilisées pour mettre les modifications de côté jusqu'à ce qu'elles soient prêtes à être fusionnées, ou simplement pour contenir les modifications qui sont des erreurs.
- "feuille":L'enregistrement au bout d'une succursale.
- "tronc":La première branche de n'importe quel référentiel est nommée « tronc ».La plupart des autres branches seront des branches provenant de certains enregistrements le long du tronc.
- "manifeste":La liste des fichiers modifiés dans un enregistrement particulier ainsi que les métadonnées décrivant cet enregistrement (l'utilisateur, l'heure, la description, l'UUID de son enregistrement parent et toutes les balises qu'il pourrait porter) constituent le manifeste.La plupart des utilisateurs n'ont pas vraiment à se soucier des manifestes, ils sont créés par
fossil commit
et peut être consulté depuis l’interface Web.
Interface Web
Tout utilisateur voudra en savoir plus sur l’interface Web de Fossil.Une première étape facile consiste à dire fossil ui
dans une caisse ouverte.La chronologie affiche l'historique de développement avec un nœud pour chaque enregistrement et des lignes tracées pour montrer les branchements et les fusions.L'interface Web est hautement configurable, fournit un wiki et un suivi des tickets, ainsi qu'une interface graphique à partir de laquelle la plupart des paramètres liés au projet et au référentiel peuvent être ajustés.
Fossil lui-même est un serveur Web efficace pour le contenu du référentiel.En fait, la plupart des pages de site officiel de fossile sont servis par fossil lui-même depuis le référentiel du code source vers fossil.
Sources d'aide supplémentaire
Mis à part le site web et l'aide aux commandes individuelles disponible à partir de fossil help
, il existe plusieurs autres ressources que de nombreux utilisateurs devraient connaître.
Il y a le liste des utilisateurs de fossiles avec un rapport signal/bruit constamment élevé.Les principaux développeurs y prêtent attention, tout comme de nombreux utilisateurs utiles et compétents.La liste contient au moins un archive, ainsi qu'une liste séparée permettant aux développeurs de discuter des nouvelles fonctionnalités et des nouveaux plans, mais fossil-dev ne sera intéressant que si vous souhaitez travailler sur les composants internes de fossil lui-même.
Jim Schimpf a un livre qui tente d'être à la fois un didacticiel et une référence complète, et comprend quelques conseils sur les meilleures pratiques.Cela vaut bien une lecture.
L'aide en ligne de commande intégrée ainsi que la documentation pour toutes les URL de page comprises par l'interface Web sont également disponibles à partir de l'interface Web de Fossil à l'adresse /help
URL dans le site de n’importe quel référentiel.Ce texte d'aide comprend la documentation de chaque commande, y compris les commandes de test internes non prises en charge.
Et enfin, le [fossil tag][tag] ici chez StackOverflow ne peut pas être ignoré en tant que ressource.