Manera de revisar files dentro y fuera con múltiples desarrolladores

Soy un desarrollador web que trabaja con 2-3 personas, incluyéndome a mí. Nuestra configuration actual es muy simplist. Intentamos comunicarnos entre nosotros cuando trabajamos en un file específico. Usamos FTP para editar nuestros files.

Recientemente nos hemos topado con el problema de 2 personas que accidentalmente editan un file, o que trabajan en un file local y luego lo cargan cuando otra persona simplemente hace lo mismo.

Por lo que he leído, necesito algún tipo de sistema de control. He oído hablar de subversión y mercurial. Parece que estos sistemas pueden no ser lo que necesito, dado que me acaba de dar diferentes versiones de los files. No sé si resuelve el problema de que dos personas trabajen en un file y sobrescriban el trabajo de los demás.

¿Cuáles son sus sugerencias para resolver mi problema?

Edición 1: Debo mencionar que me gustaría integrar con Netbeans que parece tener complementos para Subversion disponibles.

Editar 2: ¿Es posible hacer esto con un alojamiento web normal? (usando el hosting del sitio en la nube de rackspace). Tengo un server configurado en casa que creo que podría manejar configurarlo como repository. (ejecuta Windows Server 2007)

Un sistema de control de versiones (VCS) es exactamente lo que necesita. Los desarrolladores trabajan fuera de los files en control de fuente, y cuando un cambio se vuelve a registrar en el sistema, si alguien más también ha realizado cambios en el mismo file, el sistema combinará los 2 sets de cambios (a veces asistencia de el usuario será necesario) en lugar de simplemente perder el set anterior de cambios.

Periódicamente, el website se puede actualizar desde el repository de VCS.

Con un equipo de solo 3 o más desarrolladores, casi cualquier VCS podría funcionar bien. He escuchado cosas buenas sobre Mercurial (aunque todavía no lo he usado, planeo probarlo este mes), y Subversion es realmente bastante agradable.

Pero creo que cualquier cosa que elijas será una mejora importante sobre el uso de ninguna.

Puede usar la subversión, actúa como un repository central para todos sus files y también maneja los conflictos de files.

Si dos miembros están trabajando en el mismo file, y en el momento en que actualizan el file en la relocation de subversión, verán un error notificándolos sobre el conflicto y también le permitirán comparar las diferencias entre los dos files.

Sí, definitivamente necesitas get algún tipo de control de fuente. Además de coordinar los cambios en múltiples desarrolladores, podrá retroceder a la versión anterior de su software. Descubrirá que le permite arriesgarse con ideas, sabiendo que siempre puede volcarlas y volver a una versión anterior. También puede ser muy valioso para rastrear informes de errores cuando haya pasado al desarrollo de la próxima versión. La list sigue y sigue, pero una vez que se da count del valor del control de la fuente, nunca querrá que la string floja recorra esa encoding sin control de fuente.

Subversion es muy popular, pero te animo a que vayas a http://hginit.com/ y leas la introducción de Joel Spoelsky a Mercurial. Digamos que no fue inmediatamente vendido, pero al leer el tutorial, veo que es probablemente una mejor manera de manejar las cosas, especialmente cuando se distribuye gente.

Sí, resuelve el problema que estás teniendo. Eche un vistazo al libro svn para más detalles.

Todos los sistemas de control de versiones tienen que resolver el mismo problema fundamental: ¿cómo permitirá el sistema que los usuarios compartan información, pero que eviten que accidentalmente se pisen los pies? Es muy fácil para los usuarios sobrescribir accidentalmente los cambios de los demás en el repository.

Otro problema que esto soluciona es, accidentalmente, realizar malas ediciones en un file y querer volver a una versión anterior. Subversion funcionará contra múltiples files como un set de cambios (un set de cambios que comprenden una versión del código).

He estado en una situación similar (los files .zip en la networking comparten con el file por lotes que "bloquea" el file zip). No es divertido y definitivamente es propenso a todo tipo de errores.

Eche un vistazo aquí para encontrar un libro gratis decente en Subversion: http://svnbook.networking-bean.com/

Subversion se adapta bien al desarrollo distribuido.

Cada desarrollador trabaja en su propia copy y comtesting los cambios. Todos los cambios son reversibles.

Aléjese de los sistemas de control de origen que funcionan principalmente con el locking de files y luego se "controlan". El modo pnetworkingeterminado para SVN funciona sin lockings, fusionando cambios y manejando conflictos solo cuando surgen.

Subversion es la más ampliamente soportada, con Linux soportándola de inmediato, y TortoiseSVN ( http://svn.tigris.org ) como un complemento de Windows Explorer.

Sí, un sistema de control de versiones es lo que necesita, pero no ningún VCS. Creo que necesitas un Sistema de control de versiones distribuidas. En mi compañía utilizamos SVN durante mucho time (un pequeño equipo de desarrollo, igual que tú) pero nunca estuvimos muy contentos con él. Hace unos meses, migramos todos los repositorys a GIT y toda la administración del proyecto y el alojamiento del repository se migraron a la base de código . Estamos muy contentos con la migration debido a la administración del repository y todo es mucho más simple y directo.

Consulte el Progit Book gratuito para get una excelente introducción a Git .