MXPA00007625A - Sistema y metodo para el desarrollo de sitios de red - Google Patents

Sistema y metodo para el desarrollo de sitios de red

Info

Publication number
MXPA00007625A
MXPA00007625A MXPA/A/2000/007625A MXPA00007625A MXPA00007625A MX PA00007625 A MXPA00007625 A MX PA00007625A MX PA00007625 A MXPA00007625 A MX PA00007625A MX PA00007625 A MXPA00007625 A MX PA00007625A
Authority
MX
Mexico
Prior art keywords
area
module
directory
article
generation
Prior art date
Application number
MXPA/A/2000/007625A
Other languages
English (en)
Inventor
Russell Nakano
Terrence T W Yee
Britt H Park
Sanford L Barr
Jack S Jia
Kevin Cochrane
Gajanana Hegde
Original Assignee
Sanford L Barr
Kevin Cochrane
Gajanana Hegde
Jack S Jia
Nakano Russell T
Britt H Park
Yee Terrence Tw
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sanford L Barr, Kevin Cochrane, Gajanana Hegde, Jack S Jia, Nakano Russell T, Britt H Park, Yee Terrence Tw filed Critical Sanford L Barr
Publication of MXPA00007625A publication Critical patent/MXPA00007625A/es

Links

Abstract

Un sistema y método para la administración de archivos estácompuesto por sistemas de archivos jerárquicos, denominados"áreas". Hay tres tipos deáreas de trabajo,áreas de disposición en etapas, yáreas de edición. Unárea de trabajo es un sistema de archivos modificables, y, en unárea de trabajo un usuario puede crear, editar, y borrar archivos y directorios. Unárea de disposición en etapas es un sistema de archivos de solamente lectura que soporta operaciones de versiones seleccionadas. Varios usuarios de lasáreas de trabajo pueden integrar su trabajo sometiendo el contenido de suárea de trabajo alárea de disposición en etapas. En elárea de disposición en etapas, los desarrolladores pueden comparar su trabajo y ver de que manera los cambios se ajustan entre sí. Una edición es un sistema de archivos de sólo lectura, y el contenido de unárea de disposición archivos virtualmente se copia en una edición para crear una instantánea de sólo lectura, congelada, del contenido delárea de disposición en etapas. Un uso del sistrma y método para la administración de archivos es una herramienta de desarrollo de sitios de la red.

Description

SISTEMA Y MÉTODO PARA EL DESARROLLO DE SITIOS DE RED Esta solicitud reclama el beneficio de la Solicitud Provisional de los Estados Unidos de Norteamérica Número 60/073,766, presentada el 4 de febrero de 1998, y titulada "Sistema y Método para el Desarrollo de Sitios de Red", cuyo contenido se incorpora mediante referencia como se describe completamente en la presente.
ANTECEDENTES DE LA INVENCIÓN 1. Campo de la Invención La presente invención se relaciona en general con sistemas de archivos jerárquicos y, más específicamente, como un sistema y método para la administración de archivos que se puede usar como una herramienta de desarrollo de sitios de red ( ebsite) . 2. Descripción de la Técnica Anterior La Internet está representando un papel importante en el comercio, la mayoría de las compañías tienden a tener un sitio en la red. Muchos sitios en la red necesitan ser frecuentemente modificados, y usualmente se modifican en un proceso ad hoc por muchos contribuidores. En consecuencia, el proceso continuo de mantener el contenido del sitio de la red actualizado, preciso y bien integrado frecuentemente es un desafío mayor que la fase inicial de planeación y desarrollo. Los sitios de Internet se pueden actualizar por día, hora o minuto, por equipos que se numeran en los cientos. Similarmente, los contribuidores del contenido de intranet constantemente someten nuevo contenido o presentan cambios al contenido existente, y, a menos que el nuevo contenido se integre rápidamente, la utilidad de la intranet como un recurso de comunicaciones fundamental se limita. Los sitios de red grandes enfrentan muchos problemas, ya que el número de contribuidores de la red crece exponencialmente. El volumen y contenido de estos sitios aumenta rápidamente, y los sitios se deben actualizar más frecuentemente, conforme el tráfico del sitio y el comercio por Internet crece. Con el número creciente de contribuidores, el volumen y la complejidad del contenido, se ha vuelto cada vez más difícil para el administrador del sitio de red ("webmaster") supervisar cada cambio y realizar control de calidad. Debido a la complejidad del desarrollo del sitio de red, hay una necesidad de un sistema central que habilite y controle el desarrollo del sitio de la red. Sistemas conocidos para administrar y controlar el desarrollo del sitio de la red incluyen sistemas de administración de configuración de software, sistemas de administración de documentos, y sistemas de publicación de bases de datos.
Hay varias desventajas asociadas con estos sistemas de desarrollo de sitio de la red conocidos. Por ejemplo, debido a que mantener un sitio de la red frecuentemente requiere los esfuerzos de decenas o cientos de personas, es deseable hacer que los contribuidores del sitio de la red trabajen en paralelo. Los sistemas de administración de configuración de software no permiten que los contribuidores simultáneamente hagan cambios a la misma área de un sitio de red. Más aún, ninguno de los sistemas conocidos permite que los contribuidores trabajen en paralelo para probar por separado su propio trabajo sin hacer realmente un cambio al sitio de la red. De este modo, los cambios conflictivos se pueden hacer a un sitio de la red causando que se corrompa el sitio de la red. Ya que los contribuidores no pueden predecir a un nivel individual los efectos de su trabajo cuando se combina con las contribuciones de otros, los sistemas conocidos dependen de un administrador de red (webmaster) para integrar todos los cambios introducidos a un sitio de la red y verificar los cambios para determinar errores . Un administrador de red también asegura que los contribuidores sólo cambian el contenido que ellos están autorizados a cambiar. Sin embargo, el administrador de red frecuentemente se vuelve un cuello de botella para el desarrollo del sitio de la red en proceso, debido a que el administrador de red debe hacer la integración y prueba de cambios a un sitio de la red. Integrar el trabajo de múltiples usuarios es manual y tardado, y la mayor parte del tiempo se desperdicia en arreglar problemas y resolver conflictos, mientras que demasiado poco tiempo se invierte en diseño, innovación y estrategia. Más aún, un administrador de red no puede fácilmente supervisar el progreso de los contribuidores sobre un cambio hasta que el contribuidor está listo para someter el cambio al administrador de red. De este modo, el administrador de red no puede corregir errores oportunamente y no puede determinar de qué manera están progresando los contribuidores . Otra desventaja de los sistemas de desarrollo de sitios de la red conocidos es que no rastrean historias de versiones de archivo. Ya que los archivos del sitio de la red continuamente se adicionan, remueven, cambian, mueven, y vuelven a nombrar, es útil conocer quien hizo cual versión de un archivo y cuando fue hecha la versión. Con el acceso completo a las versiones anteriores, los usuarios fácilmente pueden encontrar los cambios que causaron un problema, regresar a las versiones anteriores, e identificar nuevos problemas. Adicionalmente, los sistemas de desarrollos de sitios de red conocidos no permiten el acceso inmediato a ninguna versión previa de una subsección de sitio o a un sitio entero. La capacidad para regresar inmediatamente a cualquier versión previa de un sitio de la red puede ser un herramienta de recuperación de desastres vital en el caso de la corrupción del sitio o de la distribución de información inadecuada o imprecisa. Por lo tanto, es deseable tener un sistema de desarrollo de red que permita a los contribuidores determinar de qué manera sus cambios se ajustan en el sitio de la red entera sin realmente imponer los cambios en el sitio de la red. Adicionalmente, es deseable tener un sistema de desarrollo de la red que permita a los contribuidores tener acceso a una versión anterior de un archivo, una subsección del sitio de la red, o al sitio de la red y que permita que un administrador de red verifique el progreso de los contribuidores, así como más fácilmente haga cambios a un sitio de la red.
COMPENDIO DE LA INVENCIÓN La presente invención proporciona un sistema y método para la administración de archivos. Un uso de este sistema es una herramienta de desarrollo de sitio de la red. El sistema de la presente invención está compuesta de sistemas de archivos jerárquicos, a los cuales se les conoce como "áreas". Hay tres tipos de áreas: áreas de trabajo, áreas de disposición en etapas, y áreas de edición. Un área de trabajo es un sistema de archivo modificable, y, en un área de trabajo un usuario puede crear, editar, borrar, añadir, y modificar archivos y directorios. En una modalidad, un área de trabajo es una copia virtual de un sitio de la red existente y una vista personal del usuario del sitio de la red. Un área de disposición en etapas es un sistema de archivo de sólo lectura que soporta las operaciones de versiones seleccionadas. Varios usuarios de las áreas de trabajo pueden integrar su trabajo sometiendo el contenido de sus áreas de trabajo al área de disposición en etapas. En el área de disposición en etapas, los desarrolladores pueden comparar su trabajo y ver de que manera los cambios se ajustan entre sí. Un área de edición es un sistema de archivo de sólo lectura. El contenido de un área de disposición en etapas se copia virtualmente en un área de edición para crear una instantánea de sólo lectura como congelada, del contenido del área de disposición en etapas. En una modalidad del contenido de un área de edición representa el contenido de una edición del sitio de la red. En una modalidad, las áreas comparten árboles de directorios, de manera que los directorios y archivos no tienen que ser copiados físicamente para ver que se crea un área. Esto permite que las áreas se creen rápidamente y proporcione el uso eficiente de los recursos del sistema. Asociado con cada archivo y directorio está un objeto de historia que almacena información sobre el contenido de ese archivo o directorio en cada área, en el cual ese archivo o directorio existe. En otra modalidad, la presente invención rastrea la historia del contenido de cada archivo y directorio. Esto permite que el sistema fácilmente compare un archivo con otro archivo o un directorio con otro directorio, e identifique si son idénticos o relacionados. En todavía otra modalidad, el sistema de la presente invención incluye un módulo de virtualización de protocolo HTTP, el cual permite que un servidor de red opere como si fueran múltiples servidores de red. Esto permite que cada área sea un sitio de la red completo a nivel del protocolo HTTP sin tener un servidor de red separado para cada área.
BREVE DESCRIPCIÓN DE LOS DIBUJOS La Figura 1 ilustra una red de computadora para el desarrollo del sitio de la red de acuerdo con una modalidad de la presente invención. La Figura 2 ilustra el flujo del desarrollo (desde la perspectiva de un desarrollador) para desarrollar el contenido del sitio de la red de acuerdo con una modalidad de la presente invención. La Figura 3 ilustra un ejemplo de una rama de acuerdo con una modalidad de la presente invención. La Figura 4 ilustra un ejemplo del contenido inicial de una rama principal de acuerdo con una modalidad de la presente invención. La Figura 5 ilustra un ejemplo de una rama principal de acuerdo con una modalidad de la presente invención. La Figura 6 ilustra otro ejemplo de una rama principal de acuerdo con una modalidad de la presente invención. La Figura 7 ilustra un ejemplo de una rama principal y una subrama de acuerdo con una modalidad de la presente invención. La Figura 8 ilustra un ejemplo de un árbol de directorios de un área de acuerdo con una modalidad de la presente invención. La Figura 9 es una representación ilustrativa de un objeto de área de trabajo de acuerdo con una modalidad de la presente invención. La Figura 10 ilustra un método para derivar un ID de generación de acuerdo con una modalidad de la presente invención. La Figura 11 ilustra un ejemplo de un árbol genealógico de acuerdo con una modalidad de la presente invención. La Figura 12 es una representación ilustrativa de un directorio de acuerdo con una modalidad de la presente invención. La Figura 13 ilustra un módulo de desarrollo de sitio de la red de acuerdo con una modalidad de la presente invención.
La Figura 14 ilustra una operación de un módulo de creación de área de trabajo de acuerdo con una modalidad de la presente invención. La Figura 15 ilustra una operación de un módulo de creación de área de disposición en etapas de acuerdo con una modalidad de la presente invención. Las Figuras 16a-b ilustran una operación de un módulo de creación de edición de acuerdo con una modalidad de la presente invención. Las Figuras 17a-c ilustran una operación de un módulo de creación de rama de acuerdo con una modalidad de la presente invención. Las Figuras 18a-d ilustran una operación de un módulo de añadir artículo de acuerdo con una modalidad de la presente invención. La Figura 19 ilustra una operación de un módulo de añadir referencia direct. de acuerdo con una modalidad de la presente invención. La Figura 20 ilustra una operación de un módulo de remoción de referencia direct. de acuerdo con una modalidad de la presente invención. Las Figuras 21a-b ilustran una operación de un módulo de cuenta de referencias de acuerdo con una modalidad de la presente invención. La Figura 22 ilustra una operación de un módulo de leer directorios de acuerdo con una modalidad de la presente invención. Las Figuras 23a-b ilustran una operación de un módulo de remover artículo de acuerdo con una modalidad de la presente invención. Las Figuras 24a-b ilustran una operación de un módulo de edición de archivo de acuerdo con una modalidad de la presente invención. La Figura 25 ilustra una operación del módulo de renombrado de acuerdo con una modalidad de la presente invención. Las Figuras 26-a-b ilustran una operación de un módulo de generar senda de directorio de acuerdo con una modalidad de la presente invención. La Figura 27 ilustra la operación de un módulo de generar nombre de base de acuerdo con una modalidad de la presente invención. Las Figuras 28a-c ilustran la operación de un módulo de somisión de acuerdo con una modalidad de la presente invención. La Figura 29 ilustra la operación de un módulo de verificación de conflictos de acuerdo con una modalidad de la presente invención. Las Figuras 30a-b ilustran la operación de un módulo de comparar directorios de acuerdo con una modalidad de la presente invención. Las Figuras 31a-b ilustran la operación de un módulo de comparar archivos de acuerdo con una modalidad de la presente invención. La Figura 32 ilustra la operación de un módulo de borrar un área de acuerdo con una modalidad de la presente invención. Las Figuras 33a-b ilustran una operación de un módulo de bloqueo de acuerdo con una modalidad de la presente invención. La Figura 34 ilustra otra operación del módulo de bloqueo de acuerdo con una modalidad de la presente invención. La Figura 35 ilustra una senda de comunicaciones entre un buscador de red, un módulo de virtualización de protocolo HTTP, y un servidor de red, de acuerdo con una modalidad de la presente invención. Las Figuras 36a-b ilustran una operación de módulo de virtualización de protocolo HTTP de acuerdo con una modalidad de la presente invención. La Figura 37 ilustran otra operación del módulo de virtualización del protocolo HTTP de acuerdo con una modalidad de la presente invención. La Figura 38 ilustra todavía otra operación del módulo de virtualización de protocolo de HTTP de acuerdo con una modalidad de la presente invención.
DESCRIPCIÓN DETALLADA DE LAS MODALIDADES PREFERIDAS La(s) presente (s) invención (es) se describirá con respecto al desarrollo de un sitio de la red, pero aquellos familiarizados con la técnica entenderán que la o las invenciones se pueden incorporar en otras formas específicas. La Figura 1 ilustra una red de computadora 100 para el desarrollo del sitio de la red. En las estaciones de trabajo de desarrollo 110, las cuales pueden ser computadoras personales convencionales, los desarrolladores del sitio de la red añaden, remueven, editan y examinan archivos para un sitio de la red. Las estaciones de trabajo de desarrollo 110 se conectan con un servidor de desarrollo 130 vía una red de computadoras 120, tales como la Internet. El servidor de desarrollo incluye un servidor de red 145, el cual procesa solicitudes de HTTP a partir de las estaciones de desarrollo 110 para el contenido del sitio de la red. El servidor de desarrollo 130 también incluye un almacenamiento de apoyo convencional 160, tal como el sistema de archivos WINDOWS NT comercialmente disponible en Microsoft Corporation, en el cual físicamente se almacenan los archivos del sitio de la red. El servidor de desarrollo 130 también incluye una memoria convencional 150 (por ejemplo, RAM) y un procesador convencional 140, el cual implementa los métodos de desarrollo del sitio de la red de la presente invención ejecutando un módulo de software de desarrollo del sitio de la red 135. El módulo de desarrollo del sitio de la red, el cual se describe más adelante, se almacena en la memoria 150. También almacenado en la memoria 150 está un módulo de virtualización de protocolo HTTP 137, el cual, como se señala más adelante, el procesador 140 ejecuta para permitid que el servidor de la red 145 opere como si fueran múltiples servidores de red. El servidor de desarrollo 130 se acopla con un servidor de red de producción 170 vía una red 165. La red 165 puede ser la misma red que la red 120, ó puede ser una red diferente. El servidor de red de producción de sitio de la red 170 se acopla con la Internet ó una intranet 175, y cuando un sitio de la red está listo para ser expuesto en la Red de Ámbito Mundial (WWW) ó sobre una intranet, el servidor de desarrollo 130 envía el sitio de la red al servidor de la red de producción 170, el cual proporciona acceso a Internet o intranet al sitio de la red. Un sitio de la red está compuesto del contenido de un sistema de archivos arbitrario. El sistema de desarrollo del sitio de la red de la presente invención se compone de una colección de sistemas de archivos jerárquicos. Cada uno de estos sistemas de archivos es un ambiente que maneja archivos individuales y proporcionan medios para manipularlos . Cuando se ejecuta, el módulo de software de desarrollo del sitio de la red 135 es la parte del sistema de archivos que permite la mayoría de la administración y manipulación de archivos . El almacenamiento de respaldo 160 es donde los archivos y los metadatos correspondientes (por ejemplo, la identificación del propietario, la identificación del grupo, el nombre del archivo de control de acceso, los tiempos de modificación, los tiempos de creación, etc.) se almacenan físicamente. En una modalidad, los archivos pueden aparecer almacenados en unidades distintas del almacenamiento de respaldo 160 (aunque físicamente estén almacenados en el almacenamiento de respaldo 160) . Un sistema de archivo jerárquico comprende un árbol de directorios, poblado con archivos y enlaces simbólicos. En la parte superior del árbol de directorios está un directorio raíz, del cual todos los otros directorios se desprenden directa ó indirectamente. Un sistema de archivos puede ser modificable ó sólo legible. Un sistema de archivos modificable es un sistema de archivos que soporta operaciones de lectura (por ejemplo, obtener el directorio raíz, leer el directorio, consultar el directorio, leer un archivo, obtener atributos, leer el enlace simbólico, y etc.) , y operaciones de modificación (por ejemplo, crear directorio, crear archivo, crear enlace simbólico, fijar atributos, remover archivo, remover directorio, renombrar archivo, renombrar directorio, escribir archivo, y etc.) en los archivos. Un volumen de disco duro típico es un ejemplo de un sistema de archivos modificable.
Un sistema de archivo de sólo lectura soporta solamente operaciones de lectura. Dos ejemplos de un sistema de archivo de sólo lectura son, un volumen de CD ROM y un volumen de disco flexible que tenga la protección en la posición de protegido a la escritura. Como se señaló anteriormente, el sistema de desarrollo del sitio de la red de la presente invención está compuesto de sistemas de archivos jerárquicos. Algunos de los sistemas de archivos jerárquicos son modificables para permitir la creación de archivos que conforman el contenido de un sitio de la red. Otros permiten a los archivos de otros sistemas de archivos ser comparados para coordinar el desarrollo del sitio de la red, y todavía otros incluyen los archivos terminados que conforman el contenido del sitio de la red. Una manera en la cual los sistemas de archivos jerárquicos de la presente invención son distintos de los sistemas de archivos convencionales es que, además de las operaciones de leer y/ó modificar, algunos de los sistemas de archivos de la presente invención soportan operaciones de versiones seleccionadas, lo cual se comentará más adelante, que permiten las manipulaciones de dos ó más sistemas de archivo relacionados. El contenido de un sitio de la red se crea realizando operaciones de lectura, modificación, y de versiones sobre una colección de sistemas de archivos relacionados en la presente invención.
Un sistema de archivo jerárquico de la presente invención se conoce como un "área", y hay tres tipos de áreas: áreas de trabajo, áreas de disposición en etapas y áreas de edición. Un área de trabajo es un sistema de archivos modificable, mientras que las áreas de disposición en etapas y de edición son sistemas de archivo de sólo lectura. Un área de trabajo se inicia como una copia virtual de un sitio de la red existente (a menos que no haya sitio de la red existente, en cuyo caso, el área de trabajo comienza vacía) . En otras palabras, un área de trabajo inicia teniendo el mismo contenido que el sistema de archivos designado como el sitio de la red. Un área de trabajo es una vista personal del desarrollador de un sitio de la red, y todo desarrollador que contribuye a un sitio de la red lo hace en un área de trabajo. En un área de trabajo, los desarrolladores libremente pueden añadir, borrar ó modificar el contenido del sitio de la red, y ver de que manera los cambios se ajustan al contexto del sitio de la red entero. Los detalles de las operaciones de añadir, borrar y modificar se comentan más adelante. Los cambios hechos por un contribuidor a un área de trabajo no afectan el sitio de la red ó el trabajo de otros contribuidores en otras áreas de trabajo. Esto es debido, como se señala más adelante, que cada área es un sistema de archivo separado. Los desarrolladores integran su trabajo en un área de disposición en etapas sometiendo el contenido de sus áreas de trabajo en un área de disposición en etapas . La operación de sumisión es la de seleccionar las operaciones e versiones comentadas anteriormente y discutidas en mayor detalle más adelante. El área de disposición en etapas es una vista compartida del sitio de la red disponible a todos los usuarios en una rama (las ramas se discuten más adelante) . En otras palabras, un área de disposición en etapas es un sistema de archivos que es accesible a todos los usuarios a lo largo de una rama. Un área de disposición en etapas mantiene el trabajo colectivo de varias áreas de trabajo de desarrolladores y permite que los desarrolladores compartan e integren sus cambios. En un área de disposición en etapas los desarrolladores pueden comparar su trabajo y ver de qué manera los cambios se ajustan entre sí. La operación de comparación es otra de las operaciones de versiones seleccionadas discutidas en mayor detalle más adelante. El trabajo colectivo en el área de disposición en etapas se puede copiar virtualmente de nuevo a las áreas de trabajo privadas para mantener las áreas de trabajo actualizadas con el estado actual de las áreas de disposición en etapas, las cuales cambian conforme diferentes contribuidores someten nuevo contenido desde las áreas de trabajo. La copia es "virtual", debido a que las áreas comparten árboles de directorios, de manera que los árboles de directorios no tienen que ser físicamente copiados. Cuando el trabajo colectivo en un área de disposición en etapas se considera final, su contenido se puede publicar para crear una edición del sitio de la red. Creando un área de trabajo a partir de una edición y publicar un área de disposición en etapas son operaciones de versiones seleccionadas adicionales señaladas más adelante. El contenido en un área de disposición en etapas se copia virtualmente en un área de edición para crear una edición de un sitio de la red. De nuevo, copiar virtualmente significa que la edición hace referencia al mismo árbol de directorios que el área de disposición en etapas . Debido a que una edición es un sistema de archivos de sólo lectura, es una instantánea congelada del contenido del sitio de la red entera en un punto particular a lo largo de una sola rama. Cada edición es archivada y se hace accesible a todos los desarrolladores. El contenido de las ediciones se puede copiar virtualmente de nuevo en las áreas de trabajo y usarse como base para otros desarrollos del sitio de la red. Las ediciones también sirven como archivos, permitiendo que los usuarios instantáneamente llamen archivos, introduzcan directorios, ó reconstruyan las versiones pasadas enteras del sitio de la red. La Figura 2 resume el flujo de desarrollo a partir de un área de trabajo a una edición a partir de la perspectiva de un desarrollador. Un desarrollador edita, añade, ó borra 210 archivos en un área de trabajo. El desarrollador luego somete 220 el contenido de su área de trabajo al área de disposición en etapas. En el área de disposición en etapas, el contenido del área de trabajo del contribuidor se integra 230 con el contenido de otras áreas de trabajo de contribuidores. Si todos los contenidos sometidos al área de disposición en etapas se integran bien y son aprobados 240, el contenido del área de disposición en etapas se publica 250 en una edición. De otro modo, los contribuidores continúan editando 210 sus archivos hasta que son aprobados . De acuerdo con una modalidad, el desarrollo del sitio de la red se puede dividir a lo lago de varias ramas de desarrollo. A partir de la perspectiva de un desarrollador, una rama es una senda de desarrollo para un solo sitio de red. Como se ilustra en la Figura 3, una sola rama 300 incluye áreas de trabajo 310, un área de disposición en etapas 320, y una ó más ediciones de sitios de la red archivadas 330. Las ramas pueden incluir subramas, de manera que equipos de desarrollo pueden mantener sendas alternativas de desarrollo separadas entre sí. El contenido se puede compartir a través de las ramas y de las subramas. Un ejemplo de dividir el desarrollo del sitio de la red a lo largo de ramas es tener una rama para el sitio de la red actual, y tener otra rama para una nueva versión del sitio de la red. Otro ejemplo es tener una rama diferente de desarrollo para diferentes regiones ó para diferentes clientes con el fin de tener sitios de la red personalizados a regiones particulares ó clientes particulares. Una rama principal se crea cuando un módulo de software de desarrollo de sitio de la red se instala en un servidor de desarrollo. Como se ilustra en la Figura 4, una rama principal 400 inicialmente incluye un área de disposición en etapas vacía 420 y edición vacía 430. Una rama principal también inicialmente puede incluir un área de trabajo vacía 410. Un área de trabajo se puede crear en el momento en que la rama principal se crea, ó en un momento posterior, ya que el usuario puede desear retratar crear el área de trabajo hasta que el usuario está listo para definir los atributos del área de trabajo (por ejemplo, la gente que puede tener acceso al área de trabajo) . Si un sitio de la red existió antes de que el modo de software de desarrollo del sitio de la red se instala, entonces se crea un área de trabajo vacía 410 si ésta ya no existe todavía. Como se muestra en la Figura 5, el contenido 510 del sitio de la red original se copia en el área de trabajo vacía 410, luego el área de disposición en etapas vacía 420, y luego se publica en una edición inicial 440. Se pueden crear áreas de trabajo adicionales de la rama principal virtualmente copiando el contenido de la edición más reciente en las áreas de trabajo nuevas. La Figura 6 ilustra la creación de tres áreas de trabajo 600 en la rama principal a partir de la edición 440. El contenido de las áreas de trabajo 600 se somete al área de disposición en etapas 610, y el contenido del área de disposición en etapas 610 se publica en una nueva edición 620. También se pueden emplear subramas a partir de una principal ó de otra rama. La Figura 7 ilustra la creación de subrama a partir de una rama principal. Una edición 710 a partir de la rama padre 720 se usa como la edición inicial 725 para la subrama 730. El contenido de la edición inicial 725 se copia virtualmente en las áreas de trabajo 740, el área de disposición en etapas 750, y la edición nueva 760 en la subrama 730. Nótese que las subramas se pueden crear a partir de otras subramas de la misma manera. El trabajo hecho en una subrama se presenta independientemente de, y en paralelo al trabajo hecho en una rama superior. El trabajo creado en una subrama se puede incorporar en una rama de nivel superior virtualmente copiando el contenido de una edición en la subrama de nuevo en un área de trabajo en la rama superior. El contenido de la subrama se integrará con el contenido de otras áreas de trabajo y publicará como una nueva edición en la rama superior. Ahora que se ha descrito una vista general y el uso típico del sistema de desarrollo del sitio de la red, se describirá la implementación específica del sistema, de acuerdo con una modalidad.
Cada área de trabajo separada, área de disposición en etapas, y área de edición está compuesta de uno ó más archivos y directorios organizados en una estructura de árbol . La Figura 8 ilustra un ejemplo de un árbol de directorios para un área, cuando el directorio 1 es el directorio raíz . Las áreas pueden compartir el mismo árbol de directorios. De hecho, cuando se copia un área existente para hacer una nueva área, la nueva área únicamente hace referencia al mismo directorio de raíz que el área existente. Cada área de trabajo separada, área de disposición en etapas, y área de edición se crean creando un objeto que represente el área y que tiene un campo de nombre, un campo de identificación de objeto, un campo de identificación de generación, un campo de directorio, y un campo de rama. El campo de nombre incluye el nombre del área de trabajo. El campo de directorio identifica el directorio raíz del árbol de directorios del área de trabajo, áreas de disposición en etapas ó área de edición particular. El campo de rama indica la rama a lo largo de la cual yace el área de trabajo. La Figura 9 ilustra una representación ilustrativa de un objeto de área de trabajo. Nótese que al crear un área de trabajo se hace una copia virtual del árbol de directorios, en oposición a una copia real, debido a que el objeto de área de trabajo apunta al árbol de directorios existente. Cada área de trabajo, área de disposición en etapas y área de edición tiene dos únicos identificadores, uno de los cuales se conoce en esta aplicación como un "identificador de generación" , y el otro de los cuales se conoce como un "identificador de objeto". El identificador de objeto identifica el objeto que representa el área, y, en cuando un identificador de objeto se asigna a un objeto, ese identificador de objeto no cambia. Cada área también se identifica mediante un identificador de generación único, el cual indica de que manera un área se relaciona con otras áreas . El identificador de generación para un área particular se puede cambiar, como se comentará más adelante (por ejemplo, cuando un área de disposición de etapa se publica en una edición) . El identificador de generación se coloca en el campo de identificador de generación. El identificador de objeto se coloca en el campo de identificador de objeto. Nótese que los directorios, archivos, objetos de historia (comentados más adelante) , y otros objetos también se les asigna identificadores de objeto que permanecen sin cambio en cuanto se les asigna. Un identificador de generación está compuesto de una secuencia única ó conjunto de números. Un identificador de generación no solamente identifica unívocamente un área, sino, como se dijo anteriormente, también indica de qué manera un área está relacionada con otras áreas. Un área se relaciona con otra área si una de las áreas se deriva, directa ó indirectamente, de la otra área. Por ejemplo, en la Figura 7, la edición inicial en la subrama se deriva directamente de la edición 2 en la rama padre. Las áreas de trabajo en la subrama se derivan directamente de la edición inicial en la subrama e indirectamente se derivan de la edición 2 en la rama padre . Un identificador de generación incluye un número único a él y los números de identificadores de generación, de los cuales se deriva el identificador de generación. Por ejemplo, si el número 1 es el número único asignado a un área, y si el número 0 es el número único asignado a otra área, entonces el identificador de generación de un área derivada de estas áreas es su número único propio, digamos 4, así como los números 0 y 1. La Figura 10 ilustra el método para derivar un identificador de generación, el cual va a asignar a una nueva área, a partir de un identificador de generación padre, donde el identificador de generación padre se asigna al padre directo de un área nueva. Se obtiene un número único 1000 usando un algoritmo convencional para generar secuencialmente (por ejemplo, 1, 2, 3, 4) ó aleatoriamente números únicos. El conjunto ó secuencia de números únicos asociados con el identificador de generación padre se recupera entonces 1010. Posteriormente, un conjunto ó secuencia de números que es la concatenación del identificador de generación padre y el número único emitido recientemente se crea 1020. La relación entre las áreas también se representa por un árbol genealógico. Un árbol genealógico es una estructura de datos, en donde cada nudo del árbol representa una generación diferente (es decir, área. Nótese que en toda esta solicitud a las áreas se les conoce como generaciones) . La Figura 11 ilustra un ejemplo de un árbol genealógico. La generación GO representa la edición inicial. La generación G2 representa un área de trabajo ("área de trabajo 1"), la generación G3 representa otra área de trabajo ("área de trabajo 2 " ) , la generación Gl representa una edición ("edición 1") , y la generación G4 representa un área de disposición en etapas. El árbol genealógico ilustra que Gl, G2 , G3 se derivan directamente de GO, lo que significa que Gl, G2 y G3 tienen el mismo directorio raíz que GO . G4 se deriva indirectamente de GO y se deriva directamente de Gl y, por lo tanto, también tiene el mismo directorio raíz que GO . La Figura 12 ilustra una representación ilustrativa de un directorio 1200. Para cada generación en la cual el directorio se ha alterado, el directorio incluye un página de generación 1280, que es un objeto que enlista el contenido del directorio en la generación correspondiente a la página de generación 1280. De este modo, un directorio efectivamente incluye una instantánea del contenido del directorio en cada generación, en la cual el directorio ha sido alterado. Las páginas de generación 1280 permiten que las diferentes áreas hagan referencia al mismo directorio, aun cuando el directorio puede tener diferente contenido en diferentes áreas . En el directorio 1200 ilustrado en la Figura 12, las páginas del directorio 1280 indican que el artículo "m" fue añadido al directorio 1200 en la generación G0, el artículo "n" fue añadido al directorio 1200 en la generación G2 , y que "p" se añadió al directorio 1200 en la generación G3. Nótese que, suponiendo que nada ha sido removido del directorio 1200, las páginas del directorio 1280 incluyen no solamente el contenido que fue añadido en una generación particular, sino también el contenido que fue añadido en las generaciones a partir de las cuales se derivó la generación particular. Por ejemplo, supongamos que el árbol genealógico ilustrado en la Figura 10 aplica a este ejemplo. En la generación G0, el directorio dl contiene el artículo "m" . En la generación G2 , el artículo "n" se añade al directorio 1200, y, por lo tanto, ya que G2 se derivó de G0, el directorio 1200 contiene los artículos "m" y "n" en la generación G2 (suponiendo que "m" no fue removido) . En la generación G3 , se añade el artículo "p" al directorio dl, y, por lo tanto, el directorio 1200 incluye los artículos "p" y "m" . Nótese que G3 no se derivó de G2 , y, consecuentemente, el directorio 1200 no incluye el artículo "n" en la generación G3. En una modalidad, si un directorio no ha sido alterado en una generación particular, el directorio no incluirá una página de generación para esa generación. En cuanto se altera un directorio en una generación, se añade una página de generación al directorio. Cada artículo en un directorio se asocia con un objeto de historia. Un objeto de historia indica la generación en la cual el contenido de un archivo ó directorio fue editado ó modificado. En otras palabras, un objeto de historia indica la historia de un artículo en un directorio. Un objeto de historia incluye un campo 1225 para un identificador de generación y un campo de contenido 1230 para un señalador a un archivo ó a un directorio. En el ejemplo ilustrado en la Figura 12, el objeto de historia hO indica que en la generación gO, el artículo n contiene el contenido asociado con el archivo fl. El objeto de historia hO también indica que en la generación G2 el artículo n contiene el contenido asociado con el archivo f2 (y no el archivo fl) . Los artículos enlistados en el campo de contenido 1230 apuntan al contenido real 1235 del archivo f2. Si f2 fuera un directorio, señalaría a otro directorio como el directorio 1200. El contenido incluye un "campo previo" 1240 que tiene un señalador al archivo precedente ó directorio asociado con el artículo enlistado en el directorio. Por ejemplo, f2 señala un archivo que tiene el contenido, "B", así como un señalador 1240 a fl, que significa que antes de la generación G2 , el artículo "m" tenía el contenido de fl.
La Figura 13 ilustra el módulo de software de desarrollo del sitio de red 135 de acuerdo con una modalidad de la presente invención, que permite la creación y manipulación de las áreas de trabajo, disposición en etapas y edición. El módulo de software de desarrollo del sitio de la red 135 incluye un subsistema de flujo de trabajo 1300, un subsistema de versiones 1305, y un subsistema de objetos 1310. El subsistema de flujo de trabajo crea y administra áreas de trabajo, áreas de disposición en etapas, áreas de edición, y ramas. El subsistema de versiones administra y controla funciones tales como modificar y editar archivos y directorios, comparar archivos, comparar directorios, someter el contenido de un área de trabajo a un área de disposición en etapas, y verificar archivos y directorios para determinar conflictos. El subsistema de objetos administra la distribución de objetos en la memoria principal del servidor y en el disco. El subsistema de objetos puede ser implementado como un subsistema de almacenamiento y almacenamiento instantáneo de objetos persistentes convencionales. El subsistema de flujo de trabajo incluye un módulo de creación de área de trabajo 1312, un módulo de creación de área de disposición en etapas 1314, un módulo de creación de área de edición 1316, un módulo de creación de rama 1346, y un módulo de borrado de área 1342. El subsistema de versiones 130 incluye un módulo de sumisión 1336, un módulo de verificación de conflictos 1338, un módulo de comparación 1340, un módulo de artículo añadido 1318, un módulo de cuenta de referencia 1320, un módulo de referencia directa de adición 1322, un módulo de referencia directa de remoción 1324, un módulo de leer directorios 1326, un módulo de remover artículo 1328, un módulo de editar archivo 1330, un módulo de renombrar 1332, un módulo de senda de directorio 1334, un módulo de bloqueo 1344, un módulo de identificador de generación 1348. Estos módulos en el subsistema de flujo de trabajo y el subsistema de versiones permite la creación y manipulación de áreas, archivos, directorios, y otros objetos usados para desarrollar un sitio de la red. Los subsistemas de flujo de trabajo y de versiones se implementan en el lenguaje de programación C++. La operación de los módulos en el subsistema de flujo de trabajo y el subsistema de versiones se describe más adelante. Como se comentó anteriormente, un área de trabajo se crea virtualmente copiando el contenido de una edición previa en el área de trabajo (con la excepción de una primera área de trabajo en la rama principal que inicialmente está vacía) . La Figura 14 ilustra la operación del módulo de creación de área de trabajo 1312 para crear un área de trabajo a partir de una edición, la cual se denominará arbitrariamente "edición e" . El módulo 1312 obtiene 1410 el directorio de raíz y el identificador de generación de la edición e. El módulo 1312 obtiene entonces 1420 a partir del módulo de identificador de generación 1348 un nuevo identificador de generación, el cual se deriva del identificador de generación de la edición e. El módulo de identificador de generación 1348 deriva el nuevo identificador de generación realizando el proceso ilustrado en la Figura 11. El módulo 1312 también obtiene un nuevo identificador de objeto (el cual es un número único, generado aleatoriamente ó secuencialmente) para el área de trabajo. El módulo 1312 crea 1430 un objeto que representa el área de trabajo y que tiene un campo de nombre, un campo de directorio raíz, un campo identificador de objeto, un campo identificador de generación, y un campo de rama. El módulo llena 1440 el nombre del área de trabajo en el campo del nombre, el directorio raíz de la edición e en el campo de directorio, el identificador de generación derivado en el paso 1420 en el campo de identificador de generación, el identificador de objeto en el campo identificador de objetos, y la identificación de la rama, junto con el área de trabajo está en el campo de rama. De este modo, el objeto indica que el área de trabajo es una estructura de datos que tiene el mismo directorio raíz de la edición e y que tiene el identificador de generación derivado. Nótese que el contenido de la edición e no se copió físicamente para crear el área de trabajo. En vez de eso, se creó un objeto que indica que el área de trabajo recientemente creada inicialmente tiene la misma estructura de datos que la edición e. La Figura 15 ilustra la operación del módulo de creación de área de disposición en etapas 1314 para crear un área de disposición en etapas a partir de una edición, la cual se denominará edición e. Para crear un área de disposición en etapas, el módulo 1314 obtiene 1510 el identificador de generación de la edición e, y luego tiene 1520 a partir del módulo identificador de generación 1348 un nuevo identificador de generación derivado del identificador de generación de la edición e. El módulo 1314 también obtiene un nuevo identificador de objeto (un número único, generado aleatoriamente ó secuencialmente) para el área de disposición en etapas . El módulo 1314 crea 1530 un objeto que representa el área de disposición en etapas y que tiene un campo de nombre, un campo de directorio raíz, un campo de identificador de generación, un campo identificador de objeto, y un campo de rama. El módulo 1314 llena 1540 el nombre del área de disposición en etapas en el campo de nombre, el directorio raíz de la edición e en el campo de directorio raíz, el identificador de generación obtenido en el paso 1520 en el campo identificador de generación, el identificador de objetos obtenido en el paso 1525 en el campo identificador de objeto, y la identificación de la rama, junto con el área de disposición en etapas está en el campo de rama.
A veces es deseable tener múltiples áreas de disposición en etapas. Por ejemplo, además de un área pública de disposición en etapas puede ser deseable tener algunas áreas privadas de disposición en etapas, en las cuales sólo algunos usuarios pueden someter contenido. Se pueden crear múltiples áreas de disposición en etapas realizando el método de creación de áreas de disposición en etapas descrito anteriormente varias veces . Las Figuras 16a-b ilustran la operación del módulo de creación de edición 1316 para crear una edición a partir del contenido de un área de disposición en etapas, arbitrariamente etiquetada "s". El módulo 1316 obtiene 1610 el identificador de generación y el directorio raíz del área de disposición en etapas s. El módulo también obtiene 1615 un identificador de objetos único para la edición e. El módulo 1316 crea 1620 un objeto que representa la nueva edición y que tiene un campo de nombre, un campo de directorio raíz, un campo identificador de generación, un campo identificador de objeto, un campo de rama. El módulo 1316 llena 1630 el campo de nombre con el nombre de la nueva edición, el campo identificador de generación con el identificador de generación del área de disposición en etapas s, el campo de directorio raíz con el directorio raíz del área de disposición en etapas s, el campo identificador de objeto con el identificador de objeto obtenido en el paso 1625, y el campo de rama con la identificación de la rama, junto con la edición. Tomando el identificador de generación del área de disposición en etapas, el módulo 1316 esencialmente convierte el área de disposición en etapas s en la nueva edición. Consecuentemente, cuando la edición se crea, un módulo de creación de edición 1316 obtiene 1640 un nuevo identificador de generación y lo asigna 1650 al área de disposición en etapas.
Las Figuras 17a-17c ilustra la operación del módulo de creación de rama 1346. Para crear una rama, el módulo 1346 determina 1705 si la rama que se está creando es una rama principal. Si la rama no es una rama principal, el módulo 1346 obtiene 1710 el identificador de generación de la edición base, la llama "edición b", a partir de la rama padre, a partir de la cual brota la nueva rama. La edición "b" puede ser cualquier edición de la rama padre. El módulo 1346 obtiene entonces 1715 a partir del módulo identificador de generación 1348 un nuevo identificador de generación derivado del identificador de generación de la edición b. Una edición inicial, llamada "edición e" , se crea entonces 1720 con el mismo directorio raíz que la edición b y con el identificador de generación obtenido en el paso 1715. Adicionalmente, cero ó más áreas de trabajo que pueden crear 1730, teniendo cada una el mismo directorio raíz que la edición e y un identificador de generación derivado del identificador de generación de la edición e. Las áreas de trabajo se pueden crear al mismo tiempo de la creación de rama ó en un tiempo posterior. Se crea un área de disposición en etapas 1740 que tiene el mismo directorio raíz que la edición e, y que tiene un identificador de generación derivado del identificador de generación de la edición e. La edición e, las áreas de trabajo, y las áreas de disposición en etapas se crean de acuerdo con los métodos comentados con respecto a las Figuras 14-16. Haciendo referencia de nuevo al paso 1705, si la rama que se está creando es una rama principal, el módulo 1346 obtiene 1750 un identificador de generación raíz, llamado gO .
Un identificador de generación raíz es un número generado usando un programa convencional para generar números únicos, y no se deriva de otro identificador de generación. El módulo 1346 crea entonces 1755, 1760 un directorio vacío, llamado dO, y un objeto de historia, llamado hO, para el directorio. El módulo 1346 añade 1765 una entrada al objeto de historia indicando que el objeto de historia se asocie con el directorio dO en la generación gO . Esta entrada puede ser presentada por la notación (gO, dO) . Después de crear el objeto de historia, el módulo 1346 crea 1770 una edición inicial que tiene el directorio raíz dO y la generación raíz gO . El módulo también crea 1775 un área de disposición en etapas y una ó más áreas de trabajo, teniendo cada una el mismo directorio raíz que la edición inicial (es decir, vacía) , y un identificador de generación diferente derivado de la generación raíz. Nótese que las áreas de trabajo no han sido creadas en el momento de la creación de la rama; pueden ser creadas en un tiempo posterior. El módulo de añadir artículos 1318 permite la adición de objetos, tales como archivos y directorios, a un área de trabajo ó a un área de disposición en etapas. Las Figuras 18a-d ilustran la operación del módulo de añadir artículos 1318 para añadir un artículo "n" que tiene el contenido "f" a un directorio "d" en un área "a" . El área puede ser un área de trabajo ó un área de disposición en etapas, y el artículo n puede ser un archivo ó un directorio. El artículo f también puede ser un archivo ó un directorio. Para añadir el artículo, el módulo 1318 identifica 1805 el identificador de generación para el área a, llamado "g" . El módulo 1318 lee entonces 1810 el directorio d, y determina 1815 en la página de generación para la generación g. Si no hay una página de generación para el directorio d, el módulo 1318 crea 1820 una página de generación para el directorio d copiando la página de generación a partir de la generación padre más cercanamente relacionada ("la generación de mejor apareamiento") que tiene una página de generación. Ya sea después de encontrar una página de generación para la generación g ó de crearla, el módulo 1318 escanea 1825 el contenido de la página de generación para un artículo con el nombre "n" , para determinar el 1835 y el artículo n existe en el directorio d en la generación g. Si un artículo llamado "n" no se encuentra en el directorio d en la generación g, el módulo 1318 crea 1840 un objeto de historia con una entrada en el objeto de historia indicando que el contenido "f" se asocia con el artículo n en la generación g. La anotación (f, g) se usará para representar esta entrada. El módulo 1318 subsecuentemente añade 1845 una entrada, representada por la anotación (n, h) , a la página de generación "g", indicando que el archivo "n" se asocia con el objeto de historia "h" . Nótese que para añadir el artículo n al directorio d, el artículo n no se copia virtualmente ni se copia físicamente en el directorio d. Únicamente el directorio d hace referencia al artículo n. La respuesta a la pregunta en el paso 1835 será afirmativa cuando el artículo n haya sido añadido al directorio, pero una versión actualizada del artículo n está reemplazando la versión existente (es decir, nuevo contenido está siendo asociado con el artículo n) . Si este es el caso, el módulo 1318 escaneará 1850 el contenido del objeto de historia asociado con el archivo "n" para la generación más reciente, en la cual el artículo "n" fue alterado. El módulo 1318 determina entonces 1855 si el artículo n fue alterado en la generación g (es decir, el módulo 1318 determina si el artículo n fue alterado en el área a, debido a que el área a tiene el identificador de generación g) . Si el artículo n no fue alterado en la generación g, entonces el módulo 1318 añade 1860 una entrada al objeto de historia indicado que el contenido f se asocia con el archivo n en la generación g. El artículo f tiene un campo que indica que el contenido anterior del artículo n (por ejemplo, el artículo f incluye un señalador al contenido anterior del artículo n) . El módulo 1318 fija 1865 el campo anterior del artículo f para señalar el contenido de "n" en la generación de mejor apareamiento. Haciendo referencia al paso 1855, si el artículo n se alteró en la generación g, entonces el módulo 1318 altera 1870 el artículo de historia introducido asociado con la generación g para reflejar que, en la generación g, el contenido del artículo n es el artículo f . Entonces el módulo 1318 fija 1875 el campo previo del artículo f para señalar el contenido previo de n en la generación g. Para reclamar recursos, un objeto (por ejemplo, un directorio, un archivo, un objeto de historia) se borra físicamente el almacenamiento si no puede tenerse acceso a él a partir de ninguna área. Añadir y borrar un objeto de un área puede ser virtual, debido a que frecuentemente solamente una copia física del objeto se almacena. Por lo tanto, con el fin de determinar si la copia física dé un objeto deberá borrarse, es necesario saber si al objeto se puede tener acceso a partir de cualquier otra área. Si se puede tener acceso a un objeto a partir de un área, está "referenciado" en esa área. Para determinar si se puede tener acceso a un objeto desde alguna área, se mantiene la cuenta de referencia para cada objeto, en donde la cuenta de referencia indica el número de áreas, a partir de las cuales se puede tener acceso a un objeto. Un objeto se puede borrar si la cuenta de referencia del objeto es cero. Para habilitar el cálculo de una cuenta de referencia, cada objeto se asocia con una "lista de referencias" y una "lista de anti-referencias" . Una lista de referencias indica los directorios en loe cuales se añadió un objeto y, para cada directorio referenciado, la generación (es decir, área) en la cual se añadió el objeto al directorio. Específicamente, cada vez que se añade un objeto a un directorio, se añade una entrada a la lista de referencias que indica la generación en la cual se añadió el objeto al directorio. Una lista de anti-referencias indica los directorios a partir de los cuales se removió el objeto y, para cada directorio referenciado, la generación en la cual se removió el objeto del directorio. Específicamente, cada vez que se remueve un objeto de un directorio, se añade una entrada a la lista de anti-referencias indicando el directorio y la generación en la cual se removió el objeto del directorio. Un módulo de referencia añadir direct. 1322 añade entradas a las listas de referencia. La Figura 19 ilustra la operación del módulo de referencia añadir direct. 1322 cuando un objeto (por ejemplo, un archivo, ó un directorio, ó un objeto de historia) se añade a un directorio "d" en el área "a" . Cuando se añade el objeto c al directorio d, se añade una referencia direct. de d a c. En otras palabras, la lista de referencias de c indica que c se añadió al directorio d. Para añadir una referencia de direct . , el módulo de referencia añadir direct. 1322 primero obtiene 1910 la generación del área a, la cual se llamará "g" por conveniencia. El módulo de referencia añadir direct. 1322 determina entonces 1920 si hay una entrada en la lista de referencias del objeto c que indique que el objeto c se añadió al directorio d en la generación g. Por conveniencia, esta entrada se representa por la notación (g, d) . Si (g, d) no está en la lista de referencias del objeto c, entonces la entrada se añade 1930 a la lista de referencias. Después de que se añade (g, d) a la lista de referencias, ó si ya se añadió (g, d) en la lista de referencias, el módulo de referencia añadir direct. 1322 determina 1940 si la entrada (g, d) en la lista de anti-referencias. La entrada (g, d) estaría en la lista de antireferencias si el objeto c se removió previamente del directorio p en la generación g. Si la entrada (g, d) no está en la lista de anti-referencias del objeto c, entonces el proceso de añadir una referencia de direct. está completa. Si la entrada (g, d) está en la lista de anti-referencias, la entrada se remueve 1950 de la lista de anti-referencias. Adicionalmente, para cada generación, llamada g{, directamente derivada de la generación g, la entrada (g¡, d) se añade 1960 a la lista de anti-referencias. La razón para este último paso es que una generación derivada sale con el mismo contenido que su generación padre. Por lo tanto, si se puede tener acceso en un objeto en una generación, se puede tener acceso a partir de todas las generaciones hijas derivadas de esta generación, a menos que el objeto se añadió al directorio padre después de la derivación de las generaciones hijas, ó a menos que el objeto se ha removido específicamente de las generaciones hijas. En consecuencia, si se añade un objeto a un directorio en una generación que tenga generaciones hijas existentes, la lista de anti-referencias debe indicar que al objeto no se puede acceder desde las generaciones hijas existentes, debido a que el objeto no era parte de la generación padre en el momento en que se • derivaron las generaciones hijas existentes. Desde luego, el objeto también se puede añadir a las generaciones hijas usando el método ilustrado en, y descrito con respecto a las Figuras 18a-d. El módulo de referencia remover direct. 1324 añade entradas a la lista de anti-referencias. La Figura 20 ilustra la operación del módulo de referencia remover direct, 1324, cuando un objeto "c" se remueve de un directorio "d" en un área "a". El módulo de referencia remover direct. 1324 verifica 2010 el identificador de generación del área a, el cual se llamará "g" por conveniencia. El módulo de remover referencia de direct. 1324 determina 2020 si hay una entrada en la lista de referencias de objetos que indica que el objeto c previamente se añadió al directorio d en la generación g. Esta entrada se representará por la notación (g, d) . Si (g, d) no está en la lista de referencias, entonces el proceso está completo, debido a que el objeto c nunca tuvo una referencia de direct. al directorio d en la generación g. Por lo tanto, no se necesita remover ninguna referencia. Si (g, d) está en la lista de referencias, se remueve 2030 de la lista de referencias del objeto c. Adicionalmente, para cada generación hija, llamada g¡, derivada del g, si la entrada (g, d) no está en la lista de anti-referencias, la entrada se añade 2040 a la lista de referencias. La razón para este paso es que la lista de referencias indique que, si el objeto c fue accesible de las generaciones hijas existentes, todavía es accesible de las generaciones hijas existentes, a pesar del hecho de que ha sido removido de una generación padre. Después del paso 2040, el módulo de remover referencia de direct. 1324 determina 2050 si la entrada (g, d) está en la lista de anti-referencias. Si la entrada no está ya en la lista de anti-referencias, se añade 2060 a la lista de anti-referencias. De otro modo, el proceso de remover una referencia de direct. está completo. Aunque la entrada (g, d) no deberá estar ya en la lista de anti-referencias, el módulo de remover referencia de direct. 1324 hace esta determinación, en el caso en que la entrada erróneamente fue añadida a la lista de anti-referencias en un tiempo anterior. El módulo de contar referencias 1320 calcula el número de referencias a un artículo. Para hacerlo, el módulo de contar referencias 1320 mantiene la lista p de pares ordenads, que inicialmente está vacía. El módulo de contar referencias 1320 también usa un entero n, que inicialmente se fija en cero, para representar el número de referencias hechas al artículo f . Las Figuras 21a-b ilustran la operación del módulo de contar referencias 1320 para calcular la cuenta de referencias a un artículo f . El módulo de contar referencias 1320 recupera 2110, 2120 las listas de referencias y anti-referencias para el artículo f. El módulo de contar referencias obtiene 2525 el identificador de generación, el cual se llamará "g" por conveniencia, del nudo de raíz del árbol genealógico (recuérdese que todas las áreas en la presente invención se pueden organizar en una genealogía) . El módulo de contar referencias 1320 encuentra 2130 todas las entradas en la lista de referencias con la generación g. Por ejemplo, si el artículo f se añadió al directorio dl en la generación g, habría la entrada (g, dl) en la lista de referencias, y el módulo de contar referencias 1320 localizaría esta entrada. Para cada una de las entradas con la generación g, el módulo de contar referencias 1320 añade 2130 una entrada (nombre del artículo, +) a la lista p, en donde "el nombre del artículo" es el nombre del artículo referencia en la generación g. El "+" significa que el artículo fue referenciado en la lista de referencias (en oposición a la lista de anti-referencias) . Por ejemplo, si la entrada (g, dl) se encontró en la lista de referencias del artículo f, la entrada (dl, +) se añadiría a la lista p. Si la lista p ya incluye una entrada con el mismo nombre de artículo (por ejemplo, dl, -) , el módulo de contar referencias asegura que esta entrada se fija para ser (nombre de artículo, +) . El módulo de contar referencias 1320 también busca la lista de anti-referencias para encontrar 2140 todas las entradas en la lista de anti-referencias con generación g. Para cada una de las entradas en la lista de anti-referencias con la generación g, el módulo de contar referencias 1320 añade 2140 una entrada (nombre de artículo, -) a la lista p, en donde el "-" signifique que el artículo fue referenciado en la lista de anti-referencias. Si la lista p ya incluye una entrada con el mismo nombre de artículo, el módulo de contar referencias asegure que la entrada se fija en (nombre de artículo, -) . El módulo de contar referencias 1320 fija entonces 2050 n=n+l para cada entrada en la lista p con un "+". Recordemos que n inicialmente se fijó en cero. El módulo de contar referencias 1320 entonces determina 2160 si la generación g tiene algunas generaciones hijas (es decir, generaciones derivadas de la generación g) . Si no, la cuenta de referencia está completa 2170, y n es el número de referencias al artículo f. Si la generación g tiene generaciones hijas, para cada generación hija el módulo de contar referencias 1320 fija 2180 g igual al identificador de generación de la generación hija y regresa al paso 2130. La Figura 22 ilustra la operación de un módulo de leer directorio 1326 para leer el contenido de un directorio "d" en un área "a" . El módulo leer directorio 1326 obtiene 2210 la generación del área a, la cual se denonimará "g" . El módulo de leer directorio 1326 analiza a través del directorio para determinar 2220 si hay una página de generación para la generación g. Habrá una página de generación para la generación g, si el directorio d ya ha sido modificado en el área a. Si hay una página de generación para la generación g, el módulo de leer directorio 1326 regresa 2230 una lista de las entradas en la página de generación "g" . De otro, el directorio regresa 2240 una lista de las entradas en la página de generación de la página de generación padre más cercanamente relacionada ("la página de generación mejor apareada") . Un ejemplo de la operación del módulo de leer directorio se describirá usando el directorio ilustrado en la Figura 12. Para leer el contenido del directorio en un área que tiene generación G3 , el módulo de leer directorio 1326 regresa una lista de la ó las entradas en la página de generación G3 , la cual es la entrada (m, hO) en este ejemplo. Supongamos que las generaciones en la Figura 12 están relacionadas de la manera ilustrada en la Figura 10. Para leer el contenido del directorio d en la generación G4, el módulo leer directorio 1326 determina si hay una página de generación para G4. Ya que no hay una página de generación para G4, el módulo leer directorio 1326 busca la página de generación de mejor apareamiento. Gl es la generación padre más cercana a G4, pero no hay página de generación para Gl . GO es la generación padre siguiente más cercana, y ya que hay una página de generación para GO, se regresa una lista de las entradas en la página de generación GO como el contenido del directorio en G4. Las Figuras 23a-b ilustran la operación del módulo remover artículo 1328 cuando un artículo "n" se remueve de un directorio "d" en el área "a" que tiene un identificador de generación "g" . El artículo n puede ser cualquier objeto en un directorio, tal como un archivo u otro directorio. Para remover un artículo de un directorio d, el directorio d se lee 2310 de acuerdo con el método descrito con respecto a la Figura 22. El módulo remover artículo 1328 determina 2320 si hay una página de generación para la generación g en el directorio d. Si no, se crea una página de generación 2330 para la generación g copiando la página de generación a partir de la generación padre más cercana ("generación de mejor apareamiento") .
El módulo de remover artículo 1328 determina 2330 si hay una entrada para el artículo n en la página de generación "g" . Si no, el módulo de remover artículo 1328 indica 2330 que se ha presentado un error, debido a que el artículo n no está en el directorio d en la generación g y, por lo tanto, no puede ser removido del directorio en la generación g. Regresando al paso 2330, si hay una entrada para el artículo n en la página de generación g, el módulo remover artículo 1328 obtiene 2350 el objeto de historia correspondiente a n. El módulo de remover artículo 1328 determina 2355 si el objeto de historia indica que el artículo n fue modificado en la generación g. En otras palabras, el módulo remover artículo 1328 determina si el objeto de historia incluye una entrada con "g" como la generación. Si el artículo n no fue alterado en la identificador de generación g, el módulo remover artículo 1328 añade 2370 una entrada al objeto de historia indicando que el artículo n fue removido del directorio d en la generación g. Ya que el borrado del artículo n es virtual en este proceso, añadir esta entrada efectivamente borra el artículo n del directorio d en la generación g. Esta entrada se representa por la notación (g, z) , en donde "z" representa un objeto que indica que un artículo ha sido removido. Si objeto z no ha sido creado del artículo n, el módulo de remover artículo 1328 crea un objeto z.
Haciendo referencia al paso 2355, si el artículo n ha sido alterado en la generación g, el módulo de remover artículo 1328 altera 2360 la entrada en el objeto de historia correspondiente a la generación g para indicar que n fue removido del directorio d en la generación g (es decir, la entrada se vuelve (g, z) ) . El módulo de remover artículo 1328 crea un objeto z para el artículo n si no existe ya alguno. Como el contenido del archivo 1235 ilustrado en la Figura 12, un objeto z también tiene un campo que indica el contenido previo de un artículo. Este campo se conoce como el "campo previo". Después de los pasos 2360 ó 2370, el campo previo en el objeto z se fija 2380 para señalar el contenido previo de n en la generación g. Las Figuras 24a-b ilustran la operación del módulo de editar archivo 1320 para editar un archivo "n" en un directorio "d" en un área de trabajo "a" que tiene un identificador de generación "g" . El módulo de editar archivo 1320 recibe 2405 un comando de escribir para el archivo "n" . El módulo de editar archivo 1320 obtiene entonces 2410 el objeto de historia para el archivo n, y determina 2420 si el archivo n ha sido alterado en la generación g (es decir, ¿hay una entrada con la generación g?) . Si lo hay, el módulo de editar archivo 1320 escribe 2430 todos los cambios al archivo "n" a un contenido asociado con el archivo n en la generación g. Si el objeto de historia no tiene una entrada con la generación g, el módulo de editar archivo 1320 encuentra 2440 una entrada con la generación de mejor apareamiento. El módulo de editar archivo 1320 copia entonces 2450 el archivo, llamado fl, asociado con la entrada en el paso 2440, y escribe 2460 todos los cambios a la nueva copia del archivo fl, el cual se denomina f2. Se añade una entrada 2470 a la indicación de objeto de historia indicando que, en la generación g, el contenido del archivo n es el del archivo f2. En otras palabras, el módulo de editar archivo 1320 añade la entrada representada por la notación (g, f2) al objeto de historia. La Figura 25 ilustra la operación del módulo de renombrar 1332 para renombrar un artículo ni, el cual puede ser un archivo ó un directorio, en el directorio dl en el área a al artículo n2 en el directorio d2 en el área a. El módulo de renombrar 1332 obtiene 2510 el objeto de historia, el cual se llamará hl, del artículo ni en el directorio dl . Nótese que si no existe este objeto de historia, el módulo de renombrar 1332 reporta al usuario que se ha presentado un error. Después de obtener el objeto de historia, el módulo de renombrar 1332 determina 2520 si un artículo con el nombre n2 existe en el directorio d2. Si es así, el módulo de renombrar determina 2523 si hay alguna protección de sobreescritura para el artículo n2. En una modalidad, hay protección de sobreescritura para los directorios, pero para los archivos. Si existe protección de sobreescritura, el módulo de renombrar informa 2527 que un artículo n2 ya existe en el directorio d2. Si no hay protección de sobreescritura, el módulo de renombrar 1332 remueve 2830 el artículo n2 existente del directorio d2 de acuerdo con el método ilustrado en y descrito con respecto a las Figuras 23a-b. En cuanto el artículo existente n2 ha sido removido del directorio d2 , ó si el artículo n2 no existe en el directorio d2, el módulo de renombrar 1332 añade 2540 un nuevo artículo con el nombre n2 el directorio d2. El módulo de renombrar 1332 asocia el objeto de historia hl con el artículo n2 en el directorio d2. En el "campo previo" del contenido del artículo n2 , el módulo de renombrar 1332 indica que ni es el "renombre del ancestro" (como se define más adelante) de n2.
Nótese que el proceso de renombrar es el mismo si dl = d2. Las Figuras 26a-b ilustran la operación del módulo de generar senda de directorio 1334 para generar una senda de nombre completo para el directorio d en el área a. El módulo de generar senda de directorio 1334 lee el directorio d en el área a, e identifica al directorio padre, lo llama Pd, al directorio d. De acuerdo con una modalidad de la presente invención, un directorio padre se asocia con la entrada " .. " en un directorio. En esta modalidad, el módulo de generar senda de directorio 1334 identifica el directorio correspondiente a la entrada " .. " . El módulo 1334 lee el directorio Pd en el área a, y encuentra la entrada para el directorio d. El módulo 1334 identifica entonces el directorio d como el nombre en la senda de directorio. Este algoritmo se repite hasta que se alcanza el directorio raíz. Específicamente, el método descrito anteriormente con respecto al directorio d se repite para el directorio Pd y luego el padre del directorio P , y así sucesivamente hasta que se alcance el directorio raíz. Los nombres que se encuentran son los nombres en la senda de directorio. Los nombres se encuentran en el orden del último al primero en el nombre de senda de directorio. La Figura 27 ilustra la operación del módulo de generar nombre base 1335 para generar el nombre base de un objeto de historia "h" en el directorio "d" en el área "a". El módulo de generar nombre de base 1335 lee 2710 la página de generación correspondiente al área a en el directorio d. El módulo de genera el nombre base 1335 identifica 2720 la entrada con el objeto de historia h. El nombre del artículo correspondiente al objeto de historia h en la entrada es el nombre base buscado. Por ejemplo, si la entrada (n, h) se encontró en el directorio d en el área a, "n" sería el nombre base del objeto de historia h. Las Figuras 28a-c ilustran la operación del módulo de sumisión 1336 para someter un artículo "n" con el objeto de historia h y el contenido f a un directorio d en el área de disposición en etapas a que tiene el identificador de generación g. La operación de sumisión se usa para someter el contenido de un área de trabajo a un área de disposición en etapas. Ya que el contenido de un archivo está definido por su objeto de historia, el objeto de historia de un archivo es lo que actualmente se somete al área de disposición en etapas. El módulo de sumisión 1336 obtiene 2805 la senda completa del objeto de historia h calculando el nombre de senda completo del directorio d y el objeto de historia del nombre base h en el área a, de acuerdo con los métodos ilustrados en, y descritos con respecto a las Figuras 26 y 27. El módulo de sumisión 1336 determina 2810 si hay un artículo correspondiente con el mismo nombre de senda completo en el área de disposición en etapas. Esto se hace leyendo repetidamente el directorio d (con el módulo de leer directorio 1326) para determinar si otro objeto en el área de disposición en etapas tiene el mismo nombre de senda completa que el objeto de historia h. Si no hay un artículo correspondiente en el área de disposición en etapas, el módulo de sumisión 1336 verifica 2830 si la senda de directorio calculada en el paso 2805 existe en el área de disposición en etapas. Si no existe, la senda de directorio es creada 2835, y el archivo f se marca 2840 congelado. Después del paso 2830 ó el paso 2840, el módulo de sumisión 1336 llama al módulo de añadir artículo 1318 para añadir 2845 el artículo n con el contenido f al directorio d en el área de disposición en etapas a. El módulo de sumisión 1336 añade 2840 la entrada (g, f) al objeto de historia. El módulo de sumisión 1336 determina entonces 2855 si el artículo f es un directorio. Si no lo es, el proceso de sumisión está completo. Si el artículo f es un directorio, entonces para cada directorio hijo d¡, el módulo de sumisión 1336, añade una entrada (g, d¡) al objeto de historia asociado con d¡ en el área de trabajo. Este paso asegura que, cuando a directamente se somete a un área de disposición en etapas, sus directorios hijos también se someten. Volviendo al paso 2810, si hay un artículo correspondiente en el área de disposición en etapas, el módulo de sumisión 1336 llama al módulo de identificación de conflicto 1338 (descrito más adelante) para determinar 2815 si hay un conflicto entre el objeto de historia correspondiente, lo llama hs, si el objeto de historia h. Los objeto de historia h y hs no están en conflicto si: a) h y hs son iguales, ó b) h se deriva de hs, ó c) hs se deriva de h. Si no hay un conflicto entre h y el objeto de historia correspondiente hs, el módulo de sumisión 1336 continúa al paso 2840. De otro modo, el módulo de sumisión 1336 determina 2820 si el modo de sobreescribir, permite que un archivo existente sea sobreescrito, esté en efecto. Si es así, el módulo de someter 1336 continúa al paso 2840. Si no, la sumisión falla debido al conflicto.
La Figura 29 ilustra la operación del módulo de verificación de conflicto 1338 para verificar un archivo f0bjetivo contra un archivo freferencia para determinar el conflicto en el área aob¡et¡vo en la rama b. El módulo de verificación de conflictos 1338 determina 2910 si el f0b¡etivo está bloqueado en la rama b. Un archivo se bloquea en una rama si solamente un área de trabajo de la rama puede someter el archivo al área de disposición en etapas. Bloquear un archivo proporciona un medio para evitar conflictos. Si f0bjetivo esta bloqueado en la rama b, el módulo de verificación de conflictos 1338 determina 2920 si el bloqueo para fobjetivo pertenece a un área diferente que aob¡et¡vo. Si es así, hay un conflicto y fobjetivo no Puede ser sometida al área aobjet¡vo. Si fo jetivo no está bloqueado en la rama b, ó si el bloqueo para fobjetivo pertenece a aobjet¡vo, el módulo de verificación de conflictos verifica 2930 si f0bjetivo V freferencia señalan al mismo contenido (es decir, ¿son f0b¡etivo v freferencia iguales?) . Si señalan al mismo contenido, el módulo de verificación de conflicto 1338 encuentre que no hay conflicto. Si los dos archivos no tienen el mismo contenido, el módulo de verificación de conflicto 1338 determina 2940 si freferencia es un ancestro (es decir, uno con nombre igual al ancestro, una copia del ancestro, ó un renombre del ancestro, como se define más adelante) de fobjetivo- si freferencia es un ancestro, no hay conflicto , debido a que f objetivo probablemente es una modificación deseada de f referencia- De otro ™°clo, hay conflicto . Las Figuras 30a-b ilustran la operación del módulo de comparar directorios 1340 para comparar un directorio d0 ¡et¡v0 en el área aobjet¡vo contra el directorio d,.^^^ en el área areferenda .
Para hacer la comparación, el módulo de comparar directorio 1340 lee 3005 el contenido del directorio dobjetivo en el área aobjetivo ^e acuerdo con el método ilustrado en, y descrito con respecto a la Figura 22 . El módulo de verif icación de conflictos también lee 3010 el contenido del directorio ¿referencia en el área areferenc¡a de acuerdo con el método ilustrado en, y descrito con respecto a la Figura 22. El módulo de comparar directorios 1340 identifica 3015 el primer artículo en el directorio ¿objetivo' y determina 3020 si hay un artículo en el directorio ¿referencia con el mismo nombre que el primer artículo en el directorio ¿objetivo- Si no, el módulo de comparar directorios 1340 informa 3045 que no hay artículo en ¿referencia ?iue coincide con el artículo identificado en dobset¡vo y continúa al paso 3050. De otro modo, el módulo de comparar directorios 1340 determina 3025 si los dos artículos con el mismo nombre tienen el mismo contenido. Esta comparación se hace viendo el objeto de historia de cada artículo, y si el objeto de artículo de ¿referencia en el area areferencia señala el mismo contenido que el objeto de historia de dobjet¡vo en el área aobjetivo' e-*- contenido de los directorios son iguales. Si los contenidos son los mismos, el módulo de comparar directorios 1340 informa 3030 que los artículos tienen el mismo nombre y contenido, y el módulo de comparar directorios 1340 continúa al paso 3050. Si el contenido no es el mismo, el módulo de comparar directorios 1340 informa 3035 que los nombres son iguales, pero no el contenido, y el módulo de comparar directorios 1340 continúa al paso 3050. En el paso 3050, el módulo de compara directorios 1340 verifica 3050 si hay otro artículo en ¿objetivo* s^ hay otro artículo en ¿objetivo' el m°dulo de comparar directorios 1340 identifica 3053 el siguiente artículo y regresa al paso 3020. Si no hay otro artículo en ¿objetivo' el m°dulo de comparar directorios 1340 identifica 3055 el primer artículo en ¿referencia-El módulo de comparar directorios 1340 determina 3060 si el artículo identificado tiene el mismo nombre que un artículo en ^objetivo- Si no, el módulo de comparar directorios 1340 reporta 3065 que el artículo identificado en ¿objetivo no coincide con ningún artículo en ¿referencia y continúa el paso 3067. Si el artículo identificado tiene el mismo nombre que un artículo en ¿objetivo' e^- artículo identificado ya fue encontrado en el paso 3020, y, as{i, el módulo de comparar directorios 1340 continúa al paso 3067. En el paso 3067, el módulo de comparar directorios 1340 determina si hay otro artículo en el directorio ¿referencia- Como respuesta a no haber más artículos en ¿referencia' el Proceso para comparar ¿0bjetivo con deferencia esta completo. De otro modo, el módulo de comparar directorios 1340 obtiene 3070 el siguiente artículo en ¿referencia v re<3resa al paso 3060 El módulo de comparar archivos 1341 compara archivos (en oposición al módulo de comparar directorios 1340 que compara directorios) . Los archivos se comparan cuando se someten a un área de disposición en etapas. Adicionalmente, los desarrolladores de sitios de red pueden desear comparar archivos en sus respectivas áreas de trabajo. Comparar archivos incluye ver los ancestros de un archivo. Tres tipos de ancestros pueden tener un archivo, estos son un mismo nombre que el ancestro, una copia del ancestro, y un renombre del ancestro. Un mismo nombre que el ancestro es una versión previa de un archivo, llamarlo f, que tiene el mismo nombre que el archivo (es decir, "f") , en donde el mismo nombre que el ancestro previamente se ha sometido a la misma área que el v archivo f . El "campo previo" (por ejemplo, el campo 1240 en la Figura 12) de un archivo señala al mismo nombre de ancestro del archivo . Una copia del ancestro de un archivo, llamarlo f, es un archivo cuyo contenido se copió en un archivo f . Una copia ó una operación de inversión de un archivo puede producir un archivo en un área de trabajo con un copiar del ancestro. Esto se presenta si la operación sobreescribe un archivo existente. Por ejemplo, sea el archivo e2 un archivo en un área de disposición en etapas . Sea el archivo u un archivo en un área de trabajo que está en conflicto con el archivo e2. Si el archivo u es actualizado reemplazando el contenido del archivo u con una copia del contenido del archivo e2 , el viejo archivo u es el mismo nombre de ancestro del archivo u actualizado, y el archivo e2 es una copia del ancestro del archivo actualizado u. El archivo e2 puede ser un archivo de otra área ó de otra rama. El archivo e2 también puede ser un archivo en la historia de versión del archivo u, ó un archivo en la historia de versión de otro archivo en otra rama. Si un archivo tiene una copia del ancestro, el "campo previo" (por ejemplo, el campo 1240 en la Figura 12) de ese archivo señala copia del ancestro, as {i como al mismo nombre que el ancestro. Un renombre del ancestro ó un archivo, llamarlo f, es el archivo a partir del cual el archivo f se renombra. Si un archivo tiene un renombre del ancestro, el "campo previo" del archivo señala al renombre del ancestro, as{i como al mismo nombre del ancestro. Las Figuras 31a-b ilustran la operación del módulo de comparar archivos 1341 para comparar un archivo F0bjetivo en el directorio ¿objetivo a un archivo Freferencia en el directorio ¿referencia- E--- m°dulo de comparar archivos 1341 consulta 3110 el archivo, llamado ft, que contiene el contenido de F0b¡etivo en el directorio ¿objetivo- Notese que la diferencia entre F0bietivo v ff es que F0bjetivo es el nombre del archivo en el directorio, mientras que, ft es el contenido real de ^objetivo en e-*- directorio ¿objetivo- La diferencia entre F0bjetivo y ft es como la diferencia entre el archivo llamado "m" en el directorio ilustrado en la Figura 12 y el contenido, "A" del archivo "m" en la generación GO. El módulo de comparar archivos 1341 consulta 3120 el archivo, llamarlo fr, que contiene el contenido de Freferenc¡a en ¿referencia- E1 módulo de comparación determina entonces 3130 si fr y ft son idénticos. Si lo son, entonces el módulo de comparar archivos 1341 informa 3140 que Preferencia y Fobjetivo son idénticos. Si fr y ft no son idénticos, el módulo de comparar archivos 1341 determina 3145 si Freferencia es un ancestro de Fobjetivo* Recordar que el contenido de cada directorio contiene un señalador (en el "campo previo") al mismo nombre de ancestro del directorio (por ejemplo, el contenido previo) y, si el archivo tiene una copia de ancestro ó un renombre de ancestro, a ese ancestro. El módulo de comparación se invierte de nuevo a través de "campo previo" de ft y sus ancestros en la búsqueda de fr. Si fr aparece en uno de los "campos previos" invertido, entonces Preferencia es un ancestro de F0bjetivo' v el mo¿ul° de comparar archivos 1341 informa 3050 que F0bietivo es una verificación de Freferencia. si deferencia no es un ancestro de Fobjet¡vo, el módulo de comparar archivos 1341 determina 3155 si Fob¡et¡vo es un ancestro de Freferenc¡a. Específicamente, el módulo de comparar se va de nuevo a través del "campo previo" de fr y su ancestro en búsqueda de ft. Si ft aparece en uno de los "campos previos" invertidos, el módulo de comparar archivos 1341 informa 3160 que Freferenc¡a es una modificación de F0bietivo • De otro modo, el módulo de comparar archivos 1341 determina 3165 si hay algún archivo si es un ancestro tanto de Fob¡et¡vo como de Freferenc¡a. Si hay algún archivo común, el módulo de comparar archivos 1341 informa 3170 que Freferencia y Fob¡et¡vo tienen un ancestro común, y, si no hay un archivo común, informa 3175 que Fobjet¡vo no está relacionado con Freferenda. El módulo de borrado de área 1342 borra las áreas que ya no son deseadas por un usuario ó un administrador de sistema. La Figura 32 ilustra la operación del módulo de borrado de área 1342 para borrar un área "a" . El módulo de borrar área recupera 3210 el árbol de directorios para el área a, y encuentra 3230 cualquier nudo sin hijo (es decir, directorio) , el cual será llamado el "nudo c" por conveniencia. El módulo de borrado de área 1342 llama al módulo de remover artículo 1328 para remover 3240 el nudo c de su directorio ó directorios padres. El módulo de borrado de área 1342 también llama al módulo de remover referencia de direct. 1324 para remover 3240 la referencia al directorio padre a partir de la lista de referencias del nudo c. El módulo de borrado de área 1342 llama al módulo de contar referencias 1320 para determinar 3260 si la cuenta de referencia es cero, y, si es cero, el objeto físico asociado con el nudo c se borra 3270 del almacenamiento. De otro modo, el objeto físico asociado con el nudo c no se borra del almacenamiento, debido a que, aunque el nudo c ha sido removido del área a, todavía existe en otras áreas. Después de determinar la cuenta de referencia, el módulo de borrar área 1342 determina 380 si hay nudos todavía en el área. Si los hay, el módulo 1342 regresa al paso 3230. Si no los hay, el proceso de borrado de área está completo. Las Figuras 33a-b y 34 ilustran la operación del módulo de bloque 1346. Las Figuras 33a-b ilustran la operación del módulo de bloqueo 1346 para crear un bloqueo en el artículo f en el directorio ¿ en el área a a lo largo de la rama b. Para crear este bloqueo, el módulo de bloqueo 1346 determina 3310 el nombre de la senda completa del artículo f en el directorio d en el área a, y luego verifica 3320 si otro bloqueo tiene el mismo nombre de senda completa. Si es as{i, el módulo de bloqueo 1346 reporta 3250 que la operación de creación de bloqueo falló debido a un bloque conflictivo. Si ningún otro bloqueo tiene el mismo nombre de senda completo, el módulo de bloqueo 1346 crea 3230 un bloqueo que incluye el nombre de senda completo identificado en el paso 3310 y marca 3240 el bloqueo con el área a como el propietario del bloqueo. La Figura 34 ilustra la operación del módulo de bloqueo 1346 para determinar si un artículo en el directorio d en el área a está bloqueado. El módulo de bloqueo 1346 verifica 3410 el nombre de senda completo del artículo f en el directorio d en el área a, y luego determina 3420 si la rama b tiene un bloqueo con el mismo nombre de senda completo. Si no, el módulo de bloqueo reporta 3430 que el artículo f no está bloqueado. De otro modo, el módulo de bloqueo reporta 3440 que el artículo f está bloqueado. Ahora que se ha descrito el software de desarrollo del sitio de red, el módulo de virtualización de protocolo HTTP 137 ("el módulo de virtualización 137"), de acuerdo con una modalidad, será descrito. Cada área parece ser un sitio de red completo al nivel del protocolo HTTP. Para lograr esto sin tener un servidor de red separado para cada área, el módulo de virtualización 137 permite que un solo servidor de red parezca múltiples servidores de red. Esto reduce en gran medida los costos de mantenimiento y de despliegue, al mismo tiempo que permite que cada área sea un sitio de la red completo a nivel protocolo HTTP. La Figura 35 ilustra la senda de comunicación entre un buscador de red en una de las estaciones de trabajo de desarrollo 110, el módulo de virtualización 137, y el servidor de red 145. Los buscadores de red en las estaciones de trabajo de desarrollo 110 son dirigidas a encaminarse todas ó seleccionar (dependiendo del tipo de enlaces como se comentará más adelante) solicitudes HTTP para el contenido del sitio de red al módulo de virtualización 137. Si es necesario, el módulo de virtualización 137 altera la senda de directorio de la solicitud, de manera que la senda de directorio corresponda al área, a partir de la cual se originó la solicitud (esta área se denomina el "área de visualización") , u otra localidad deseada (como se comentará más adelante) . En otras palabras, las solicitudes HTTP enviadas al módulo de virtualización 137 se redirigen, si es necesario, al sistema de archivos correspondiente al área de visualización ó a otra localidad deseada. Después de procesar una solicitud HTTP, el módulo de virtualización 137 envía la solicitud HTTP al servidor de red 145, el cual recupera el documento solicitado del lugar especificado por la solicitud. El servidor de red 145 envía entonces el documento solicitado (ó una señal de error si éste no es encontrado) de nuevo al módulo de virtualización 137, el cual envía el documento solicitado (ó la señal de error) de nuevo al buscador de red. El módulo de virtualización 137 usa reglas de mapeo para determinar si se altera y cuando una solicitud de HTTP.
Una regla de mapeo mapea una expresión a otra expresión. Una regla de mapeo se divide en dos lados separados por un signo igual. El lado izquierdo de la regla de mapeo es una expresión regular, la cual define las partes de un patrón variable que se va a aparear. Las expresiones regulares de las reglas de mapeo siguen reglas muy definidas de expresiones regulares en los campos de las matemáticas y de la ciencia de la computación, y, en una modalidad, las expresiones regulares usadas en las reglas de mapeo se aplican de la misma manera que las expresiones regulares se aplican en el sistema de operación UNIX (por ejemplo, expresiones regulares extendidas regex(5)). El lado derecho de la regla de mapeo es la expresión sustituta (es decir, la expresión sustituida por la expresión regular del lado izquierdo) . En la expresión sustituta, el símbolo $N, en donde N es "1", "2", .."9", representa las primeras diez partes de un patrón del lado izquierdo que son representadas por el operador de expresión regular de paréntesis () (por ejemplo, $1 representa el primer patrón del lado izquierdo, $2 representa el segundo patrón del lado izquierdo, y así sucesivamente) . Una solicitud HTTP se puede dividir en tres partes en el siguiente orden: área de prefijo/prefijo de documento raíz/ nombre de archivo solici tado El módulo 137 redirige solicitudes HTTP alterando el prefijo del documento raíz y el prefijo del área de la solicitud. El prefijo del documento raíz es el nombre de senda del "documento raíz", en donde el documento raíz es el directorio de origen para el servidor de la red. El documento raíz es el directorio en el sistema de archivos bajo el cual el servidor de la red busca los documentos solicitados (a menos que se especifique otra cosa) . El documento raíz se puede pensar como la noción del servidor de red de su directorio raíz . El directorio a nivel superior de un área no es necesariamente el documento raíz. Un desarrollador puede establecer un área, de manera que el directorio a nivel superior de un área no corresponda al documento raíz del servidor de red. El documento raíz real para el servidor de red puede vivir cualquier número de directorios debajo del directorio del área superior. El documento raíz de un área se especifica mediante una regla de mapeo especial. En una modalidad, cada rama tiene un conjunto de reglas de mapeo, y, en esta modalidad, cada área a lo largo de una rama particular tiene el mismo documento raíz que es especificado por la regla de mapeo especial '_docroot' . Un ejemplo de una regla de mapeo para el documento raíz de una rama particular es como sigue: _docroot=/directorioA/directorioB Si la solicitud URL original es GET / documentos/idex.html, el prefijo del documento raíz será anexado directamente en frente de la primera "/" de la solicitud original. En otras palabras, el prefijo "/directorioA/directorioB" se anexará en la parte del frente de "/documentos/índex. html". Hay situaciones en donde es deseable usar otro prefijo en vez del prefijo del documento raíz. Estas situaciones incluyen cuando un desarrollador configura directorios de contenido fuera del directorio del documento raíz, sobrenombra el nombre de un directorio de contenido, ó aplica una transformación arbitraria al nivel de área. Hay reglas de mapeo para esas situaciones especiales, y, si la solicitud se aparea con una de estas reglas de mapeo especiales, la expresión sustituta (lado derecho) de la regla de mapeo es el prefijo anexado a la solicitud en vez del prefijo del documento raíz. Por ejemplo, supongamos que lo siguiente es una regla de mapeo para una rama particular: /Special ( . *) =/Foo$l Si la solicitud original es GET /special/index.html, el prefijo "/Foo" se añade a "/index.html". El prefijo del área se anexa en la parte frontal del prefijo del documento raíz ó, si es aplicable, el prefijo especial que reemplaza el prefijo del documento raíz. El prefijo de área se deriva descodificando la "galleta" transmitida con la solicitud original. Una galleta es una cantidad pequeña de datos persistentes almacenados por el buscador de red y que pasa al módulo de virtualización 137. Una galleta puede incluir varios tipos de información (por ejemplo, la identidad del usuario, la identidad de una sesión de usuario ("ID sesión"), número de puerto, etc.), y uno de estos tipos puede ser indicación de la senda del área de visualización. En una modalidad, la galleta incluye el prefijo de área real, en otra modalidad, el módulo de virtualización extrae otro tipo de información, tal como un identificador de sesión ó un número de puerto, a partir de la galleta y consulta el prefijo de área en una tabla de consulta externa que mapea el tipo de información extraída a los prefijos de área. Para continuar el ejemplo del prefijo del documento raíz, si el prefijo de área derivado de galleta transmitida con la solicitud original es "/iw-mount/default/main/wor area/joe" , la solicitud transformada se verá como sigue: GET /iw-mount/default/main/workarea/j oe/directoryA/ directoryB/documents/index.html . Si un buscador de red encamina todas las solicitudes HTTP al módulo de virtualización 137 ó sólo algunas, esto depende de los tipos de enlace contenidos dentro de los documentos HTML en el sistema. Hay cuando menos tres diferentes tipos de enlace que pueden estar contenidos dentro de un documento HTML, a saber un enlace relativo, un enlace absoluto, y un enlace completamente calificado. El enlace completamente calificado es un enlace que incluye una especificación de protocolo explícita y un nombre de anfitrión explícito seguido por el nombre de la senda completa a un documento. Un enlace absoluto es un enlace que no contiene ni la especificación de protocolo ni un nombre de anfitrión, pero sí contiene un nombre de senda completo a un documento. Un enlace absoluto usualmente comienza con un carácter inicial de ('/')• Un enlace relativo es similar a un enlace absoluto, pero en vez de estar caracterizado por el carácter de diagonal delantero ('/'), el cual indique que la senda es relativa al enlace del documento actual. En otras palabras, el enlace relativo tiene el mismo nombre completo de senda del documento actual , excepto por el nombre real del documento solicitado. El módulo de virtualización 137 puede procesar los tres tipos de enlaces. Si el contenido HTML almacenado dentro del sistema 100 requiere virtualización de enlaces completamente calificados, el buscador de red se configura para enviar todas las solicitudes al módulo de virtualización 137. Muchos buscadores de red comunes soportan esta característica con un establecimiento de configuración. De acuerdo con una modalidad, si el sitio de la red no requiere la administración de enlaces calificados completamente, el buscador de red pasa sólo enlaces absolutos y relativos HTML al módulo de virtualización 137. Un servidor de red usualmente no requiere configuración especial para los enlaces absolutos y relativos que se envían automáticamente al módulo de virtualización 137. Las Figuras 36a-b ilustran la operación del módulo de virtualización 137 para manejar las solicitudes absolutas y relativas. El módulo de virtualización 137 recibe 3610 una solicitud HTTP a partir de un buscador de red en una de las estaciones de trabajo de desarrollo 110, y extrae 3620 la dirección del Localizador de Recursos Uniforme (URL) de la solicitud. El módulo de virtualización 137 también extrae 3630 la galleta que ha sido enviada con la dirección URL. El módulo de virtualización 137 determina entonces 3640 si la solicitud es una solicitud absoluta ó una solicitud relativa. En una modalidad de solicitud, estas solicitudes se distinguen por el hecho de que en la solicitud HTML relativa ya tendrá un prefijo de área anexado antes de que sea procesada por el módulo de virtualización 137 (esto se hace automáticamente por el buscador de red) , pero una solicitud absoluta no tendrá un prefijo de área anexado a ella antes de que sea procesada por el módulo de virtualización 137. Si la solicitud es relativa, la solicitud ya está dirigida al sistema de archivo correcto y a los directorios (por ejemplo, el sistema de archivo y directorios a partir de los cuales se tuvo acceso al documento de visualización) , y el módulo de virtualización 137 pasa 3690 la solicitud al servidor de red. Si la solicitud es una solicitud absoluta, el módulo de virtualización 137 busca 3650 las reglas de mapeo correspondientes a la rama, a lo largo de la cual, el área de visualización reside y selecciona 3660 el prefijo adecuado (ya sea un prefijo de documento raíz ó un prefijo especial basado en las reglas de mapeo (como se comentó anteriormente) ) . El módulo de virtualización 137 une 3670 el prefijo seleccionado a la solicitud original ó a parte de la misma de acuerdo con la regla de mapeo adecuada. El módulo de virtualización 137 extrae ó deriva (como se comentó anteriormente) 3680 el prefijo del área a partir de la galleta y la anexa enfrente del prefijo unido en el paso 3670. La senda de la solicitud, ó una porción de la misma, ahora está completa, y, por lo tanto, el módulo 137 encamina 3690 la solicitud modificada al servidor de red 145. La Figura 37 ilustra el método del módulo de virtualización 137 para procesar enlaces completamente calificados. El módulo de virtualización 137 recibe 3710 una solicitud HTTP de uno de los buscadores de red en una de las estaciones de trabajo de desarrollo 110, y extrae 3720 el URL y la galleta de la solicitud. El módulo de virtualización 137 busca entonces 3730 a través de las reglas de mapeo solicitudes completamente calificadas, y determina si la solicitud coincide con la expresión regular de una regla de mapeo. Si no coincide, la solicitud es enviada 3780 al servidor de red como está. Si sí coincide, el módulo de virtualización 137 anexa 3756 el prefijo resultante de la regla de mapeo a la solicitud, ó a una porción de la misma, de acuerdo con la regla de mapeo. El módulo de virtualización 137 extrae ó deriva (como se comentó anteriormente) 3760 el prefijo de área de la galleta y la anexa 3770 al frente del prefijo unido en el paso 3750. La senda de la solicitud ahora está completa, y el módulo de virtualización 137 encamina 3780 la solicitud modificada al servidor de red 145. El módulo de virtualización 137 permite la división dinámica del contenido de un servidor de red externo. En algunos casos, un sitio de la red puede incluir contenido que no está administrado por el sistema 100. En estos casos, el módulo de virtualización 137 permite que una solicitud de documento se redirija dinámicamente a un servidor de red externo si el documento no reside en el lugar originalmente buscado (por ejemplo, el área de visualización) . Si una solicitud de documento regresa con el código de error HTTP '404 Archivo no encontrado', el módulo de virtualización 137 busca las reglas de mapeo, y, si se encuentra una coincidencia, altera la solicitud de acuerdo con las reglas de coincidencia. La solicitud alterada se envía al servidor de red de destino externo especificado. El módulo de virtualización 137 también proporciona la división dinámica del contenido de diferentes ramas. En algunos casos, el contenido del sitio de la red se puede segregar en diferentes ramas de desarrollo. En estos casos, si el módulo de virtualización 137 recibe un código de error '404 Archivo no encontrado', el módulo de virtualización 137 reemplaza el prefijo del documento raíz existente con el prefijo del documento raíz de otra rama. La solicitud alterada se envía entonces al servidor de red 145. La Figura 38 ilustra la operación del módulo de virtualización para realizar división dinámica basada en el sitio ó basada en la rama. El módulo de virtualización 137 recibe los resultados de una solicitud HTTP del servidor de red 145. El módulo de virtualización determina los resultados si el documento solicitado fue encontrado. Si es así, el módulo de virtualización envía 3825 el documento solicitado al buscador de red que originalmente envió la solicitud al módulo de virtualización 137. Si el documento no es encontrado, el módulo de virtualización busca 3830 las reglas de mapeo para determinar 3840 si la solicitud HTTP ó una porción de las mismas, enviadas al servidor de red coincide con el lado izquierdo de cualquiera de las reglas. Si es así, la solicitud 3850 se altera de acuerdo con las reglas de mapeo y se envía 3860 al servidor de red adecuado. Como lo entenderán los expertos en la técnica, la invención se puede realizar de otras formas específicas sin apartarse del espíritu y de las características esenciales de la misma. El desarrollo de los sitios de red es solamente una de las muchas aplicaciones prácticas para las invenciones descritas en la presente. Otras aplicaciones de las invenciones descritas en la presente incluyen desarrollar el código de origen, los archivos de medios (por ejemplo, para multimedia CD-ROM) , una maquinaria de medios, y etc. De conformidad con lo anterior, la descripción de la presente invención pretende ser ilustrativa, pero no limitante, del alcance de la invención, que se presenta en las siguientes reivindicaciones.

Claims (6)

  1. REIVINDICACIONES 1. Un método para desarrollar un sitio de red: editar un objeto seleccionado en un área de trabajo; someter el contenido de la área de trabajo a un área de disposición en etapas,- integrar el contenido del área de trabajo con otro contenido sometido al área de disposición en etapas; determinar si el otro contenido está en conflicto con el contenido del área de trabajo; y como respuesta a que los otros contenidos no están en conflicto con el contenido del área de trabajo, hacer que el contenido del área de disposición en etapas sea una edición de un sitio de la red.
  2. 2. Un sistema para la administración de archivos que comprende : un área de trabajo, siendo el área de trabajo un sistema de archivos que tiene operaciones de lectura y escritura para habilitar a un usuario para editar archivos en el área de trabajo; un área de disposición en etapas, siendo el área de disposición en etapas un sistema de archivo que tiene operaciones de leer y hacer versiones y recibir adaptados los contenidos del área de trabajo; y un área de edición, siendo el área de edición un sistema de archivos que tiene operaciones de lectura y adaptados para recibir el contenido del área de disposición en etapas .
  3. 3. El sistema de la reivindicación 2, que además comprende una pluralidad de áreas de trabajo y en donde el área de disposición en etapas se adapta para recibir y verificar conflictos en el contenido de dos ó más de la pluralidad de áreas de trabajo.
  4. 4. En un sistema que tiene una pluralidad de sistemas de archivos, un método para mantener una identidad de contenidos de un artículo en cada uno de los sistemas de archivo, en los cuales el artículo está incluido, comprendiendo el método: asociar un objeto de historia con el artículo; y para cada sistema de archivo en el cual el artículo está incluido, mantener una entrada en el objeto de historia indicando el contenido asociado con el artículo en ese sistema de archivos.
  5. 5. El método de la reivindicación 4, que además comprende : como respuesta a asociar nuevo contenido con el artículo en uno de la pluralidad de sistemas de archivos, alterar una entrada en el objeto de historia correspondiente a ese sistema de archivo para indicar que el artículo tiene el nuevo contenido; y añadir una referencia en el nuevo contenido al contenido previo .
  6. 6. El método de la reivindicación 5, que además comprende : determinar si un segundo artículo está en conflicto con el artículo, determinando si el contenido en el segundo artículo es el contenido previo del artículo.
MXPA/A/2000/007625A 1998-02-04 2000-08-03 Sistema y metodo para el desarrollo de sitios de red MXPA00007625A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US60/073,766 1998-02-04
US09244333 1999-02-03

Publications (1)

Publication Number Publication Date
MXPA00007625A true MXPA00007625A (es) 2002-06-05

Family

ID=

Similar Documents

Publication Publication Date Title
EP1053523B1 (en) System and method for website development
US6792454B2 (en) System and method for website development
JP7075998B2 (ja) クライアント同期サービスのためのリモートツリーの更新
US20080005164A1 (en) System and method for website development involving journaling and parent maps replacement
US7039658B2 (en) Method and apparatus for generating web pages from templates
EP1513065B1 (en) File system and file transfer method between file sharing devices
US7299450B2 (en) Undoing changes in a software configuration management system
US7962844B2 (en) Dynamic publication of information from a database
CN100452038C (zh) 管理文件修订的方法与系统
US7533136B2 (en) Efficient implementation of multiple work areas in a file system like repository that supports file versioning
US20070101256A1 (en) Perfect source control
US20040216084A1 (en) System and method of managing web content
US7702641B2 (en) Method and system for comparing and updating file trees
EP1422901A1 (en) Client driven synchronization of file and folder content in web publishing
JP3450786B2 (ja) 異なるデータファイルを調停する方法
JP4136267B2 (ja) 文書管理方法およびその方法を実施するためのプログラムを記憶した記憶媒体および文書管理装置
MXPA00007625A (es) Sistema y metodo para el desarrollo de sitios de red
EP1235146A2 (en) System and method for website development
JPH07271569A (ja) プログラム仕様書作成システム
CN101142572A (zh) 涉及日志和父映象替换的网站开发
Desai et al. CINDI: a virtual library indexing and discovery system
Hancock Tru64 Unix file system administration handbook
JP2000250794A (ja) バージョン管理装置、バージョン管理方法およびその方法を実行させるための記録媒体
Turk Communications technologies
JPH0594351A (ja) ノードの更新日時情報変更方式