Je déplace un référentiel de sourcesafe vers Subversion et je dois veiller à ce que les points vitaux soient égaux. Est-ce une commande/un outil existant pour Windows qui me permet de comparer deux arborescences de dossiers identiques (structure de dossiers identique et fichiers de même contenu)? L'idéal sera quelque chose en ligne de commande comme:
some_cool_compare c:\current_vss c:\current_svn -exclude .svn;*.vspscc;*.scc
Est-ce que certains outils/commandes existent ou je dois écrire mon propre script?
Au-delà de comparer vous permet de faire cela et bien plus encore.
C'est un de ces outils sans lesquels je ne peux pas vivre.
Regardez ici pour une référence sur les options de script
Vous pouvez aussi exécuter tree > tree.txt
dans les deux dossiers, puis diff dans les deux fichiers tree.txt avec n’importe quel outil basé sur les fichiers (git diff).
Comme je suis réticent à installer de nouveaux programmes sur ma machine, ce script PowerShell (de Hey, Scripting Guy! Blog ) m'a aidé à résoudre mon problème. J'ai seulement modifié le chemin pour l'adapter à mon cas:
$fso = Get-ChildItem -Recurse -path F:\songs
$fsoBU = Get-ChildItem -Recurse -path D:\songs
Compare-Object -ReferenceObject $fso -DifferenceObject $fsoBU
SyncToy est une application gratuite de Microsoft avec un mode "Aperçu" pour comparer deux chemins. Par exemple:
Vous pouvez ensuite choisir l'un des trois modes ("Synchroniser", "Echo" et "Contribute") pour résoudre les différences.
Enfin, il est livré avec SyncToyCmd
pour la création et la synchronisation de paires de dossiers à partir de la CLI ou d'une tâche planifiée.
Vous pouvez utiliser git exactement à cette fin. En gros, vous créez un référentiel git dans le dossier A
(le référentiel est dans A/.git
), puis copiez A/.git
à B/.git
, puis passez au dossier B
et comparez simplement en exécutant git diff. Et le --exclude
la fonctionnalité peut être obtenue avec .gitignore
.
Donc, restez fidèle à votre exemple (mais en utilisant bash Shell sous Linux):
# Create a Git repo in current_vss
pushd current_vss
printf ".svn\n*.vspscc\n*.scc" >> .gitignore
git init && git add . && git commit -m 'initial'
popd
# Copy the repo to current_svn and compare
cp -r current_vss/.git* current_svn/
pushd current_svn
git diff
Avez-vous essayé: https://www.araxis.com/merge/index.fr Il permet de visualiser les modifications et de fusionner de manière sélective les différences spécifiques entre fichiers et dossiers.
À l'instar de l'OP, je recherchais un outil de différenciation des dossiers Windows, en particulier un outil capable de gérer des arbres très volumineux (des centaines de gigaoctets de données). Merci Lieven Keersmaekers pour le pointeur sur BeyondCompare , que j’ai trouvé TRÈS rapide (environ 10 à 100 fois plus rapide) que mon ancien outil d’école ancienne windiff .
BTW, BeyondCompare a un mode ligne de commande en plus de l'interface graphique.