tenis significado nike meaning mercurial

significado - mercurial tenis



Mercurial "hg status" y rutas relativas. (5)

Estoy usando mercurial y git para diferentes proyectos y me gustan ambos. Lo que me molesta un poco acerca de mercurial es que "hg status" muestra rutas relativas a la raíz del repositorio, no al directorio actual (a diferencia de git). ¿Se puede modificar este comportamiento de alguna manera?


Estoy agregando esta respuesta no porque sea mejor que la respuesta aceptada, sino porque aclara la distinción entre "estado de hg". y "hg status $ (hg root)". Lo que puede haber confundido a algunos comentaristas, lo que es peor, lo que puede llevar a olvidarse de verificar las cosas necesarias.

"estado de hg". solo informa del estado del subárbol que se encuentra debajo., utilizando rutas relativas.

"hg status $ (hg root)" informa sobre el estado de todo el repositorio, utilizando rutas relativas a CWD.

Ambos son útiles.

(En general, "hg status path" muestra el estado del subárbol debajo de path (todo el repositorio if path = $ (hg root) ", pero en relación con CWD. Debo admitir que esto me parece confuso, porque hay dos cosas sucediendo: subárbol para obtener el estado y cwd para mostrar las rutas relativas a)))

Esto se muestra en el ejemplo de una sesión de shell incrustada a continuación.

$ bash [~/hack] 562 $> mcd hg-test ./hg-test $ bash [~/hack/hg-test] 563 $> hg init . $ bash [~/hack/hg-test] 564 $> mkdir subdir $ bash [~/hack/hg-test] 565 $> touch foo $ bash [~/hack/hg-test] 566 $> touch subdir/bar $ bash [~/hack/hg-test] 567 $> hg status ? foo ? subdir/bar $ bash [~/hack/hg-test] 552 $> hg status $(hg root) ? foo ? subdir/bar $ bash [~/hack/hg-test] 552 $> cd subdir ./subdir $ bash [~/hack/hg-test/subdir] 553 $> hg status ? foo ? subdir/bar $ bash [~/hack/hg-test/subdir] 553 $> hg status . ? bar $ bash [~/hack/hg-test/subdir] 513 $> hg status $(hg root) ? ../foo ? bar $ bash [~/hack/hg-test/subdir] 523 $> hg status ? foo ? subdir/bar

Por lo tanto, si desea hacer algo como hacer una copia de seguridad de los archivos en el subárbol local, sin registrarse, y luego revertir (a menudo necesito hacer esto cuando uso "hg lock", porque estoy usando archivos de FrameMaker que no se pueden modificar o fusionado dentro de hg (o apenas en absoluto):

$ bash [~/hack/hg-test/subdir] 523 $> mkdir bak; hg status -n . | xargs cp --target-directory bak $ bash [~/hack/hg-test/subdir] 524 $> ls bak bar

Pero si desea hacer una copia de seguridad de todos los archivos en el árbol que se informan por estado

$ bash [~/hack/hg-test/subdir] 528 $> mkdir bak-root; hg status -n $(hg root) | xargs cp --target-directory bak-root cp: will not overwrite just-created `bak-root/bar'' with `bar'' $ bash [~/hack/hg-test/subdir] 529 $> ls bak-root bar foo

Por cierto, la advertencia muestra los problemas de los nombres de archivos en colisión. Usualmente uso una pequeña herramienta que tengo para agregar un sufijo .bak o xargs. Pero este ejemplo es suficiente.

A propósito ^ 2, normalmente hago cosas como esta con "hg status -nm", pero el ejemplo anterior es suficiente.


Hg está mejorando con el tiempo: con hg 2.2.3, puedo definir st alias.

[alias] st = !hg status $($HG root) $HG_ARGS

Por consiguiente:

  • hg st te dará una ruta relativa al directorio actual
  • hg status le dará una ruta relativa al directorio raíz de hg.

La forma estándar que funciona desde las antiguas versiones mercuriales (> = 1.1 de 2008) es:

hg status re:

cuyos rendimientos:

M ../contrib/buildrpm M ../hg M httprepo.py

Desde mercurial 1.3 (2009) puede definir un alias si desea:

[alias] sst = status re:

Este comportamiento fue finalmente documentado en 3.4 (2015):

$ hg help status --verbose [...] - show changes in the working directory relative to the current directory (see ''hg help patterns'' for more information): hg status re:

Desde mercurial 4.2 (mayo de 2017), puede indicar al comando de estado que siempre imprima rutas relativas, colocando esto en su hgrc :

[commands] status.relative = True

Prueba directamente en la línea de comando (hg> = 4.2):

$ hg --config commands.status.relative=True status M ../contrib/buildrpm M ../hg M httprepo.py

Finalmente, mercurial 4.3 introdujo ui.tweakdefaults que, entre otras cosas, cambia algunos valores predeterminados a más modernos:

[ui] # hg status prints relative paths # hg diff produces patches in git format tweakdefaults = True

Si estás en un mercurial moderno (> = 4.3), esta es la forma oficialmente recomendada.


La solución habitual es ejecutar:

hg status $(hg root)

Para versiones anteriores de Mercurial, antes de 1.7, podría usar este truco, agregando al archivo ".hg / hgrc" de su repositorio:

[alias] sst = status /path/to/root

Eso necesita la extensión de alias habilitada, por lo que es posible que tenga que agregar "alias =" a su archivo ~ / .hgrc.

Comenzando con Mercurial 1.7, la extensión de alias aprendió sobre el "!" escapa para usar comandos de shell, así que ahora puedes tener un alias global que hace esto:

[alias] sst = !hg status $($HG root) $HG_ARGS

No use st = !hg status $(hg root) , ya que crea un bucle infinito, ejecutando el estado de hg una y otra vez. Parece un error en el análisis de alias: si desea alias hg status para mostrar la ruta desde la raíz, entonces el siguiente encantamiento funciona en $ HOME / .hgrc global:

[alias] __mystatus = status st = !hg __mystatus $($HG root) $HG_ARGS


Para ver el estado del área de trabajo en relación con el directorio actual, siempre puede utilizar "." (un solo punto) como el argumento de "hg status", es decir:

% hg root # root of the workspace /work/foo % pwd # current directory is <root>/src /work/foo/src % hg status # no argument, see all files M etc/foo.conf # all files are shown with paths M src/foosetup.c # relative to workspace root %

La diferencia cuando solicita explícitamente el directorio de trabajo actual es que las rutas de nombre de archivo relativas lo utilizan como punto de partida:

% hg status . # see only files under current path M foosetup.c %