web-dev-qa-db-fra.com

Flux de travail: Utilisation des formats de documents binaires en git sans serrures (déplacement de la subversion)

Nous sommes une consultation logicielle avec une multitude de projets pour différents clients. Nous utilisons traditionnellement la subversion, mais envisagons actuellement de passer à Git.

Une partie importante des documents que nous produisons est partagée avec nos clients (exigences, conceptions globales, spécifications de test, etc.), et nous utilisons MS Bureau pour les produire. À Subversion, nous pourrions utiliser sa fonctionnalité "verrouillage" pour que personne n'édite le même document en même temps. Dans Git, vous ne pouvez pas faire cela depuis sa nature distribuée, Git n'a pas de serrure.

Les serrures sont vraiment peu plus qu'un mécanisme de communication, mais ils sont très efficaces.

Actuellement, nos documents de code et de clientèle sont généralement dans différents sous-dossiers d'un référentiel SVN différent. Quand vous déménageriez à Git, que recommanderiez-vous que nous faisions? Je vois un ensemble d'options:

  1. Nous déployons les référentiels SVN à GIT 1-ON-1. Au lieu d'utiliser des serrures sur les fichiers Office, nous faisons ce que les gens GIT suggèrent et essaient de changer notre flux de travail pour le réparer. Cela pourrait fonctionner dans une succursale sur tout document modifier et la fusion de celle-ci. Cette approche éclate par ex. Excellez les feuilles contenant des informations de gestion de projet; Ils sont facilement édités par les membres de l'équipe (et nous encourageons que cela se fait), mais pas soumis à un processus d'examen formel

  2. Nous utilisons GIT pour le code et SVN pour la gestion de documents et de projets. Cela présente l'inconvénient que certains autres documents de conception-ISH ne soient pas "à proximité" le code informatique des spécifications, augmentant ainsi que les gens oublient de les mettre à jour. De plus, tout le monde doit utiliser et comprendre deux ensembles d'outils. Cela dit, c'est peut-être une excellente occasion de passer à des outils doctoraux basés sur des textes (latex, marquage, HTML, quoi que ce soit) pour des documents de conception non-client.

  3. Comme 1, mais nous pirations un git lock Commande qui fait ce que SVN Verrouiller est pour nous (bascule le drapeau en lecture seule et synchronisé avec un serveur à travers des moyens).

Je n'ai pas acheté l'argument selon lequel les serrures ne fonctionnent pas dans un DVC, car le système devrait même fonctionner lorsque vous êtes entièrement hors ligne. Les serrures SVN peuvent également être remplacées; Ils sont un Communication Mécanisme. Sans une sorte de connexion réseau, vous n'obtiendrez pas votre ordinateur pour communiquer beaucoup.

Nous ne pouvons pas être le seul magasin qui est très heureux avec comment svn lock Convient à notre flux de travail, non?

Des idées ou des conseils?

J'ai trouvé https://stackoverflow.com/questions/119444/Locking-binary-files-utilisation-git-verse-control-system Mais la discussion est plutôt technique; Je cherche des moyens de résoudre ou d'éviter le problème pratique de deux membres de l'équipe édition du même fichier binaire en même temps.

16
skrebbel

Je vous conseillerais de rester avec SVN pour les documents MS Office pour deux raisons:

  1. C'est déjà là et c'est mieux (à mon avis) pour garder des documents de bureau (regarder ici ). A beaucoup plus d'outils tiers pour ce faire.
  2. La serrure, mais peut être atteinte dans Git, n'est pas "la sorte de façon de faire des choses". Si vous avez besoin de ces fonctionnalités, collez-vous avec l'outil qui vous donne la meilleure solution.

Il y a un dicton qui dit que j'aime dire quelque chose comme ça: "Quand tu tiens un marteau, tout ressemble à un clou". Ce n'est pas parce que vous vous déplacez sur GIT pour vous tenir de code, cela ne signifie pas que vous devez l'utiliser pour contenir vos documents.

5
Yoel Gluschnaider

Le contrôle de la version de code n'est pas le meilleur outil pour travailler sur des fichiers Office, car ils sont binaires et ces outils fonctionnent sur la modification au niveau du fichier.

Utilisez un outil de collaboration, comme MediaWiki (gratuit) ou Confluence Atlassian (payé), à partir duquel vous pouvez facilement extraire le document Word. Ou utilisez le latex pour générer les fichiers Office.

Laissez-moi étendre ...

Si vous avez besoin de collaborer, vous devez adopter un modèle qui met en évidence les modifications (par exemple modifiant un mot, rephased ou simplement modifié une police) vers une unité, par exemple. un fichier.

SVN et GIT, même si la pensée pour le code, sont des outils de bas niveau qui comparent leurs fichiers par contenu textuel. Mais le problème est qu'ils ne peuvent travailler que sur des fichiers texte, car ils ne se soucient pas de la nature/du contenu du fichier pour extraire un modèle de modification de haut niveau.

Un exemple clair est un fichier fichier image. Bien que Tortoisemerge est un outil qui aide les utilisateurs SVN en comparant les images de leurs modifications réelles, la normale VCSes exécutée par contenu patchs sur des dossiers. Laissez-moi expliquer. Un outil tel que Tortoisemerge peut vous dire qu'une nouvelle version d'un fichier image n'est modifiée que par quelques pixels ou luminance si elle implémente une analyse HSV plus complexe des deux fichiers. Vous pouvez ajouter un filigrane ou modifier des niveaux de couleur, un outil qui compare les fichiers image sera met en évidence les différences si elle implique un bon algorithme de comparaison. Mais afin de vérifier le nouveau fichier dans votre client DOIT Produire un delta. Un delta est un ensemble de lignes qui sont supprimées et des lignes ajoutées au fichier. Les fichiers binaires n'ont pas de pauses de ligne si elles ne le font pas se produisent avoir \r\n, ou similaire, dans leur charge utile et dans un delta si vous modifiez un seul caractère, vous remplacez une ligne entière.

Alors voici le problème. Les fichiers binaires ne sont pas utiles pour le contrôle de la version, car vous pouvez presque remplacer tout le dossier pour chaque révision. Considérez lorsque vous écrivez des fichiers de bureau à l'aide de MS Office et de vos modifications de collaborateur avec OpenOffice. S'ils mettent en œuvre même une version légèrement différente de l'algorithme de compression des fichiers openxml, vous finirez par des fichiers complètement différents Même si vous avez modifié une seule virgule dans le document.

Collaboration Softwares Render des documents interne dans un format de texte, car Texte C'est ce qui est vraiment significatif pour votre entreprise et peut calculer les différences ou traiter des conflits. Latex ou marquage si vous aimez, est un moyen de stocker un document comme un fichier textuel Fichier avec un balisage avancé, donc pas comme le classic TXT fichier qui a Pas de contrôle de police/formatage.

Mais évidemment, vos clients n'aiment pas ouvrir les fichiers Markdown, seront-ils? Ok, vous pouvez simplement, et je veux vraiment dire simplement, utilisez tout logiciel que je suis actuellement trop paresseux vers Google pour obtenir Convertir Un document source au format PDF, mot ou autre.

Résumé

Si vous commencez à vérifier les fichiers texte dans votre commande source, vous avez une plus grande commande sur l'historique des fichiers et vous pouvez facilement gérer les conflits, en particulier sans utiliser de verrous VCS.

Avant de partager un document officiellement, vous avez besoin d'une routine pour exporter le document de texte source vers un fichier de bureau.

La séparation des deux étapes rend les gens heureux au coût d'une courbe d'apprentissage.