Mercurial: "el archivo sin seguimiento en el directorio de trabajo difiere del archivo en la revisión solicitada"?

78

¿Alguien puede decirme qué significa este error de Mercurial?

El archivo sin seguimiento en el directorio de trabajo difiere del archivo en la revisión solicitada

Esto ocurrió al hacer una búsqueda de hg:

C:\myapp>hg fetch ssh://hg/myapp-v1
pulling from ssh://hg/myapp-v1
searching for changes
adding changesets
adding manifests
adding file changes
added 93 changesets with 693 changes to 78 files (+1 heads)
updating to 797:0df7dbe7dc06
196 files updated, 0 files merged, 196 files removed, 0 files unresolved
merging with 704:edb7765768c6
abort: untracked file in working directory differs from file in requested revision: 'a/b/c/d.java'

Por lo que puedo decir, este archivo (a / b / c / d.java) no coincide con ninguna ruta configurada en .hgignore. Y este archivo específico también es idéntico en los dos repositorios (myapp y myapp-v1).

No tengo claro qué significa esto. ??

Marcus Leon
fuente

Respuestas:

83

Le dice que ya tiene un archivo nombrado a/b/c/d.javaen su directorio de trabajo local del repositorio de myapp, pero no se ha agregado (rastreado), y fetch no está dispuesto a sobrescribirlo al actualizar / fusionar.

Las cosas que puedes hacer son éter:

  • Mueva su copia de a/b/c/d.javafuera del camino y luego haga la extracción / actualización. Después de eso, compare su movimiento a/b/c/d.javacon el que trae hacia abajo.

o

  • hg add a/b/c/d.java, hg commit a/b/c/d.javay luego extraer / fusionar

El primero funciona porque ya no hay un archivo en el camino, y el último funciona porque se realiza un seguimiento de su copia para que Mercurial pueda fusionarlos.

Además, debería considerar dejar de usar fetch. Combina pully updatey mergepara usted, que no es sólo una forma segura de ser. En este caso, su pullhubiera tenido éxito y tanto updatey mergete habría dado mucho más mensajes de votos.

Ry4an Brase
fuente
Antes de realizar la fusión, hg statusno se devuelven cambios pendientes. hg add a/b/c/d.javadevuelve "a / b / c / d.java ya registrado"
Marcus Leon
Punto interesante sobre buscar vs extraer / fusionar. Hice una pull, y luego mergerecibo muchos mensajes en la forma:remote changed dir/blah.xml which local deleted use (c)hanged version or leave (d)eleted?
Marcus Leon
sí, fusionar es codificar y no debe pasarse por alto. a la primera parte probablemente podríamos resolverlo con su hg statsalida, pero ¿podría ser el caso de que su directorio de trabajo actual no sea la raíz del repositorio? Aunque solo una suposición.
Ry4an Brase
29

Evité esto corriendo hg update --clean

azeroth12
fuente
11

Simplemente acepte el cuadro de diálogo de error y luego marque Discard local changes, no backup

ingrese la descripción de la imagen aquí

Y debería estar bien, sobrescribirá cualquier archivo local sin seguimiento ...

Matas Vaitkevicius
fuente
8

Probé la respuesta de Ry4an (de eliminar el archivo) y todavía no funcionó, así que ejecuté una purga y eso eliminó todos los rastros de modo que funcionó después. En caso de que alguien esté buscando una solución alternativa.

Justin Pihony
fuente
hg purge no pareció funcionar para mí, no purgó nada y sigo recibiendo el mismo mensaje
Naguib Ihab
3

Si usa TortoiseHG, puede marcar la opción "Descartar cambios locales, sin respaldo" en la ventana Actualizar.

Owen Pauling
fuente