2010-03-04 20 views
18

He creado un repositorio, y luego ejecuté svn import . https://myrepo. Parece haber comprobado todo muy bien, y puedo verificarlo en mi otra máquina. Sin embargo, no parece crear la carpeta .svn, por lo que no puedo ejecutar ningún comando svn ci en una fecha posterior.¿La importación de SVN no crea la carpeta .svn?

Esto crea dolores de cabeza masivos para tratar de sincronizar más tarde, porque ahora todas mis cosas ya está en el repositorio, pero entra en conflicto con los cambios que estoy tratando de cometer.

¿Qué estoy haciendo mal?

+1

Así Espera, ¿Estoy supone * * 'Por importación a él,' cd ..', cambiarle el nombre, y luego comprobar que funciona otra vez? ¿Es ese el flujo de trabajo estándar/esperado? – mpen

+0

Repita después de mí: "El repositorio no es una copia de trabajo y no debería tratarlo como tal". – Powerlord

+4

@Powerlord: ¿qué repositorio? Cuando importa, el directorio local no es el repositorio, simplemente se importa como la versión inicial para el repositorio. –

Respuesta

31

Nunca utilizo la importación porque es incómodo. Import no crea directorios .svn, tendrá que ejecutar un pago adicional del directorio recién importado.

En lugar de importar archivos, primero creo un directorio vacío en el repositorio y lo compruebo en el directorio de mi proyecto existente que quiero "importar". A continuación, puede ejecutar commit y agregará todos los archivos.

+0

Puede consultar una carpeta existente con todos sus archivos de proyecto y no explotará? – mpen

+0

exactamente. puede extraer un directorio vacío del repositorio en un directorio local existente que ya puede contener archivos. todo lo que hará es crear un .svn en el directorio local. una vez que exista .svn, puede ejecutar el compromiso para confirmar todos los archivos existentes. – stmax

+2

este método tiene una ventaja más que me gusta de él: antes de comprometerse ya puede definir su svn: ignora para excluir ciertos archivos. Lo uso muy a menudo. Creo que no puedes hacer eso con la importación, la importación siempre importa todo lo que hay (binarios incluidos), por lo que siempre tendrás que limpiar tu directorio antes de la importación y tendrás que configurar el svn: ignora después del pago y cometer nuevamente. – stmax

1

Cuando configura un proyecto con subversión, después de la importación inicial de su proyecto, debe verificar el proyecto y continuar trabajando en el proyecto en la copia que desprotegió. Creo que el problema es que siguió trabajando en la copia que ingresó.

+1

Así parece. Pero eso no explica * por qué * 'import' no crearía la carpeta' .svn' ... ¿no es lógico que quiera mantener su importación actualizada? – mpen

+0

Esta es una buena pregunta que no puedo responderme. Tal vez las personas no siempre quieran que los directorios importados se conviertan en una "copia de trabajo", a pesar de que aún sería bueno tener esa opción. Debo decir que nunca pensé mucho sobre eso. – rvdginste

+0

El manual menciona explícitamente que una importación no convierte el árbol de directorios original en una copia de trabajo. Sin embargo, ninguna explicación sobre el por qué. http://svnbook.red-bean.com/en/1.4/svn.tour.importing.html – rvdginste

6

Solo una copia de trabajo tendrá una carpeta .svn. Import no crea una copia de trabajo. (¿Por qué no?) Supongamos, por ejemplo, que está intentando importar desde un medio en el que no tiene permisos de escritura. En ese caso, si la importación intentó crear una copia de trabajo, fallaría). Para crear una copia de trabajo, debe usar checkout.

Dicho de otra manera, la importación lleva información al repositorio. Eso es todo lo que se pretende hacer, no tiene impacto en los archivos originales. La mayoría de los comandos de subversión solo funcionan en una dirección: verificar, exportar y actualizar los archivos de modificación en el sistema local/copia de trabajo. import y commit solo actualiza el repositorio. Aparte de las operaciones de bloqueo [un], no puedo pensar en un comando que simultáneamente impacte tanto en el repositorio como en la copia de trabajo.

1

Después de importar, puede ejecutar svn checkout --force para convertir el directorio importado en una copia de trabajo.

+0

El problema es que parece cambiar una gran cantidad de permisos en Linux. Por lo general, importo el directorio/etc en mis servidores y encuentro que necesito corregir una gran cantidad de permisos después de la ejecución de forforce. –

0

GAHHHHHHHHH ... NO UTILICE TORTOISE-SVN PARA HACER ESTO - se borrará su directorio local.
Sooo ......... hacer un zip/copiar en otro lugar primero! Suspiro ... (al menos yo tenía un archivo zip anterior, aunque viejo).

+1

Creo que no sabes cómo funciona svn. Desafortunadamente – Cheung

2

Quería proporcionar una actualización sobre el uso de TortoiseSVN después de una importación. TortoiseSVN ahora te permitirá check-out en una carpeta no vacía.

Por lo tanto, simplemente puede realizar la compra en la misma carpeta que utilizó para la importación. Las versiones de TortoiseSVN contienen todos los archivos, detecta que todos coinciden y no descarga/sobrescribe nada. Ya no tendrá que cambiar el nombre de la carpeta fuente y luego extraerá una nueva carpeta vacía.

Esto se probó en Windows   7 utilizando TortoiseSVN versión 1.8.0, compilación 24401 - 64 bits, 2013-06-17T18: 15: 59 (Subversion 1.8.0, - liberación).

Ejemplo:

carpeta C: \ myfiles tiene los datos.

  1. Importación esa carpeta en SVN en http://example.com/svn/myfiles

  2. de salida http://example.com/svn/myfiles en C: \ myfiles.

  3. TortoiseSVN advierte que el destino no está vacía, haga clic en OK.

TortoiseSVN luego coloca C: \ myfiles y su contenido (que actualmente coinciden con el repositorio) bajo control de versiones, sin tener que modificar/descarga/reemplazar los archivos.

+0

la verificación del archivo parece tener el mismo tiempo que un pago y envío real sería :(Creo que voy a tratar de 'svn co --force', como se sugiere en [Michael Hackner] (http://stackoverflow.com/ users/189919/michael-hackner), la próxima vez y ver cómo se desarrolla. –

0

permisos de carpeta Comprobar. En mi caso funcionó.

Cuestiones relacionadas