Je pense que la réponse à votre question est un oui catégorique - les avantages de la gestion de vos fichiers avec un système de contrôle de version dépassent de loin les coûts de mise en œuvre d'un tel système.
Je vais essayer de répondre en détail à certains des points que vous avez soulevés:
- Sauvegarde: j'ai un système de sauvegarde déjà en place.
Oui, et moi aussi. Cependant, il y a quelques questions à considérer concernant l'opportunité de s'appuyer sur un système de sauvegarde à usage général pour suivre adéquatement les fichiers importants et actifs relatifs à votre travail. Côté performances:
- À quel intervalle votre système de sauvegarde prend-il des instantanés?
- Combien de temps faut-il pour créer un instantané?
- Doit-il créer une image de l'ensemble de votre disque dur lors de la prise d'un instantané, ou pourrait-il être facilement dit de simplement sauvegarder deux fichiers qui viennent de recevoir des mises à jour critiques?
- Votre système de sauvegarde peut-il vous montrer, avec une précision extrême, ce qui a changé dans vos fichiers texte d'une sauvegarde à l'autre?
Et, surtout:
- Dans combien d'emplacements les sauvegardes sont-elles enregistrées? Se trouvent-ils au même emplacement physique que votre ordinateur?
- Est-il facile de restaurer une version donnée d'un seul fichier à partir de votre système de sauvegarde?
Par exemple, possédez un Mac et utilisez Time Machine pour sauvegarder sur un autre disque dur de mon ordinateur. Time Machine est idéal pour récupérer le fichier impair ou restaurer mon système si les choses se gâtent. Cependant, il n'a tout simplement pas ce qu'il faut pour faire confiance à mon travail important:
Lors de la sauvegarde, Time Machine doit créer une image de l'ensemble du disque dur, ce qui prend un temps considérable. Si je continue à travailler, rien ne garantit que mon fichier sera capturé dans l'état où il se trouvait lorsque j'ai lancé la sauvegarde. Je peux également atteindre un autre point que je voudrais enregistrer avant la fin de la première sauvegarde.
Le disque dur sur lequel mes sauvegardes Time Machine sont enregistrées se trouve dans ma machine - cela rend mes données vulnérables au vol, au feu et à d'autres catastrophes.
Avec un système de contrôle de version comme Git, je peux lancer une sauvegarde de fichiers spécifiques sans plus d'effort que de demander une sauvegarde dans un éditeur de texte - et le fichier est imagé et stocké instantanément. De plus, Git est distribué afin que chaque ordinateur sur lequel je travaille ait une copie complète du référentiel.
Cela revient à avoir mon travail en miroir sur quatre ordinateurs différents - rien de moins qu'un acte de Dieu ne pourrait détruire mes fichiers et mes données, auquel cas je ne m'en soucierais probablement pas trop de toute façon.
- Forking et rembobinage: je n'ai jamais ressenti le besoin de le faire, mais je peux voir comment cela pourrait être utile (par exemple, vous préparez plusieurs articles de revue basés sur le même ensemble de données; vous préparez un rapport qui est mis à jour mensuellement, etc. )
En tant que soliste, je ne fourche pas beaucoup non plus. Cependant, le temps que j'ai gagné en ayant la possibilité de rembobiner a à lui seul remboursé mon investissement dans l'apprentissage d'un système de contrôle de version à de nombreuses reprises. Vous dites que vous n'avez jamais ressenti le besoin de faire cela, mais le rembobinage d'un fichier sous votre système de sauvegarde actuel a-t-il vraiment été une option réalisable et indolore?
Parfois, le rapport avait une meilleure apparence il y a 45 minutes, une heure ou deux jours.
- Collaboration: la plupart du temps, j'analyse les données moi-même, donc je n'obtiendrais pas les avantages de collaboration du contrôle de version.
Oui, mais vous apprendriez un outil qui pourrait s'avérer indispensable si vous finissez par collaborer avec d'autres sur un projet.
- Il est temps d'évaluer et d'apprendre un système de contrôle de version
Ne vous en faites pas trop. Les systèmes de contrôle de version sont comme des langages de programmation - ils ont quelques concepts clés à apprendre et le reste n'est que du sucre syntaxique. Fondamentalement, le premier système de contrôle de version que vous apprenez nécessitera d'investir le plus de temps - le passage à un autre nécessite simplement d'apprendre comment le nouveau système exprime les concepts clés.
Choisissez un système populaire et lancez-vous!
- Une augmentation possible de la complexité par rapport à mon système de gestion de fichiers actuel
Avez-vous un dossier, par exemple, Projects
qui contient tous les dossiers et fichiers liés à vos activités d'analyse de données? Si tel est le cas, appliquer le contrôle de version augmentera exactement la complexité de votre système de fichiers 0
. Si vos projets sont éparpillés sur votre ordinateur - alors vous devez les centraliser avant d'appliquer le contrôle de version et cela finira par diminuer la complexité de la gestion de vos fichiers - c'est pourquoi nous avons un Documents
dossier après tout.
- Le contrôle de version en vaut-il la peine?
Oui! Il vous donne un énorme bouton d'annulation et vous permet de transférer facilement le travail d'une machine à l'autre sans vous soucier de choses comme la perte de votre clé USB.
2 Quels sont les principaux avantages et inconvénients de l'adoption du contrôle de version?
Le seul inconvénient auquel je puisse penser est une légère augmentation de la taille du fichier - mais les systèmes de contrôle de version modernes peuvent faire des choses absolument incroyables avec la compression et la sauvegarde sélective, donc c'est à peu près un point discutable.
3 Quelle est une bonne stratégie pour démarrer avec le contrôle de version pour l'analyse des données avec R (par exemple, des exemples, des idées de flux de travail, des logiciels, des liens vers des guides)?
Gardez les fichiers qui génèrent des données ou des rapports sous contrôle de version, soyez sélectif. Si vous utilisez quelque chose comme Sweave
, stockez vos .Rnw
fichiers et non les .tex
fichiers qui en sont produits. Stockez les données brutes s'il serait difficile de les réacquérir. Si possible, écrivez et stockez un script qui acquiert vos données et un autre qui les nettoie ou les modifie plutôt que de stocker les modifications apportées aux données brutes.
En ce qui concerne l'apprentissage d'un système de contrôle de version, je recommande vivement Git et ce guide .
Ces sites Web proposent également de bons conseils et astuces liés à l'exécution d'actions spécifiques avec Git: