2010-12-14 73 views
4

Je reçois l'erreur suivante lorsque j'essaie d'ajouter des fichiers à mon repo mercurial.Erreur Mercurial. Je n'ai pas la racine

abort: /HRTRL/img not under root 

Cela a commencé quand ici un développeur a décidé d'ignorer notre flux de travail normal et a apporté des modifications directement sur le serveur de production au lieu de les faire dans son répertoire de travail, puis les pousser à la prise en pension de test. J'ai ensuite eu besoin de synchroniser le repo de test avec ses changements, donc ce que j'ai fini par faire était de simplement copier ses changements dans mon répertoire de travail, qui était en cours, puis de pousser vers le référentiel central. Je n'ai pas utilisé mercurial lors de la copie et de la suppression de fichiers. J'ai maintenant des fichiers non enregistrés dans mon répertoire et je voudrais les ajouter pour que je puisse valider. Je me retrouve avec l'erreur ci-dessus.

C'est la sortie du statut de hg

! HRTRL/css/grid.css 
! HRTRL/css/ie.css 
! HRTRL/css/ie7.css 
! HRTRL/css/jquery.lightbox-0.5.css 
! HRTRL/css/layout.css 
! HRTRL/css/productPages.css 
! HRTRL/css/reset.css 
! HRTRL/css/typography.css 
? HRTRL/img/webheadercenter.jpg 
? HRTRL/img/webheaderleft.jpg 
? HRTRL/img/webheaderright.jpg 
? HRTRL/includes/CallLog/tests/all_tests.php 
? HRTRL/includes/CallLog/views/index.php 
? HRTRL/includes/CallLog/views/styles/style.css 
+0

Avez-vous essayé: 'hg addremove -s 90'? Ou faire manuellement un 'hg add X' pour chaque fichier que vous voulez ajouter, et' hg remove -A X' pour chaque fichier que vous voulez supprimer? –

+2

Avez-vous des liens symboliques en jeu ici? J'ai trouvé ceci: http://mercurial.selenic.com/bts/issue165 –

Répondre

2

Si vous voulez:

  • Tous ceux qui ont le statut ! (le fichier est suivi dans le référentiel, mais manquant sur le disque), à ​​enlever
  • Tous ceux qui ont le statut ? (fichier est inconnu), à ajouter

Ensuite, vous pouvez simplement lancer la commande suivante:

hg addremove --similarity 90 

Vous pouvez, si vous voulez, laissez tomber la partie --similarity 90, mais si vous le laissez va essayer de savoir si vous avez renommé les fichiers ajoutés de certains les disparus.

Si vous le pouvez, j'utiliserais TortoiseHg pour faire l'addremove, car il peut également faire la vérification de similarité pour voir si vous avez copié les fichiers, cela pourrait rendre l'historique de ces fichiers plus correct s'il s'agit de copies fichiers existants (et toujours suivis). La partie addremove --similarity 90 ne vérifie que les renames/déplacements, pas les copies.


Ou, si vous ne voulez que certains fichiers, vous pouvez le faire manuellement. Pour chacun des fichiers avec le statut !, vous pouvez utiliser la commande suivante:

hg remove --after X 

X est le chemin et le nom du fichier, par exemple:

hg remove --after HRTRL/css/grid.css 

et pour chacun les fichiers d'état ? que vous souhaitez ajouter:

hg add X 

exemple:

hg add HRTRL/img/webheadercenter.jpg 
+0

Merci! addremove a fait l'affaire, mais hg add produit cette erreur root. –