KR20010040666A - 웹사이트 개발 시스템 및 방법 - Google Patents

웹사이트 개발 시스템 및 방법 Download PDF

Info

Publication number
KR20010040666A
KR20010040666A KR1020007008540A KR20007008540A KR20010040666A KR 20010040666 A KR20010040666 A KR 20010040666A KR 1020007008540 A KR1020007008540 A KR 1020007008540A KR 20007008540 A KR20007008540 A KR 20007008540A KR 20010040666 A KR20010040666 A KR 20010040666A
Authority
KR
South Korea
Prior art keywords
module
directory
file
item
area
Prior art date
Application number
KR1020007008540A
Other languages
English (en)
Inventor
나카노러셀
예테렌스티.더블유.
박브리트에이치.
발샌포드엘.
지아잭에스.
헤지가자나나
코츠레인케빈
Original Assignee
인터우벤 인크
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 인터우벤 인크 filed Critical 인터우벤 인크
Publication of KR20010040666A publication Critical patent/KR20010040666A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Abstract

파일관리를 위한 시스템 및 방법은 "영역"이라고 여기서 칭하는 계층 파일 시스템으로 구성된다. 3가지 유형의 영역으로서 작업영역, 스테이지 영역, 및 판 영역이 있다. 작업영역은 수정 가능한 파일 시스템이고, 작업영역에서 사용자는 파일 및 디렉토리를 생성, 편집, 부가 및 수정할 수 있다. 스테이지 영역은 선택한 버전작업 조작을 지원하는 독출 전용 파일 시스템이다. 작업영역의 여러 사용자들은 그들의 작업의 콘텐츠를 스테이지 영역에 제출함으로써 그들의 작업을 통합할 수 있다. 스테이지 영역에서, 개발자들은 그들의 작업을 비교할 수 있고 그들의 변경이 서로 부합하는지 알 수 있다. 판은 독출 전용 파일 시스템이다. 스테이지 영역의 콘텐츠는 판 영역에 가상으로 복제되어 스테이지 영역의 콘텐츠의 부동, 독출 전용 단편을 생성한다. 파일관리용 시스템 및 방법의 한 사용은 웹사이트 개발 툴이다.

Description

웹사이트 개발 시스템 및 방법{System and method for website development}
인터넷은 교역에 큰 역할을 하고 있고 대부분의 회사는 웹사이트를 갖고 있다. 많은 웹사이트는 빈번하게 수정될 필요가 있고 이들은 통상 다수의 기고가에 의해 특별한 과정으로 수정된다. 결국, 최신의 정확하고 잘 통합된 웹사이트 콘텐트를 유지하는 계속적인 과정이 대부분 초기 계획 및 개발국면보다 더 큰 문제이다. 인터넷 사이트는 수백에 달하는 팀에 의해, 일, 시간, 혹은 분으로 갱신될 수 있다. 유사하게, 인트라넷 콘텐트 기고가는 꾸준하게 새로운 콘텐트를 제출하거나 기존 콘텐트를 변경하며, 새로운 콘텐트가 신속하게 통합되지 않는다면 기본 통신 자원으로서의 인트라넷 유용성은 제한된다.
다수의 웹사이트는 웹 기고가 수가 지수함수적으로 증가함에 따라 많은 문제에 직면한다. 이들 사이트의 크기 및 콘텐트는 급속히 증가하고 있으며 사이트는 사이트 트래픽 및 인터넷 교역이 성장함에 따라 더 빈번하게 갱신되어야 한다. 기고가 수, 크기, 및 콘텐트의 복잡성이 증가함에 따라, 웹사이트 관리자("웹마스터")가 모든 변화를 감독하고 품질제어를 수행하는 것을 점점 더 어려워지게 되었다.
웹사이트 개발의 복잡성 때문에, 중앙 시스템이 웹사이트 개발을 관리하고 제어할 필요성이 있다. 웹사이트 개발을 관리하고 제어하는 공지된 시스템은 소프트웨어 구성 관리 시스템, 문서 관리 시스템, 및 데이터베이스 공표 시스템을 포함한다.
이러한 공지된 웹사이트 개발 시스템에 연관된 몇 가지 문제가 있다. 예를 들면, 웹사이트를 관리하는 것은 수십 수백의 사람의 노력을 필요로 하기 때문에, 웹사이트 기고가가 동시에 작업하게 하는 것이 바람직하다. 소프트웨어 구성 관리 시스템으로는 웹사이트의 동일한 영역을 기고가가 동시에 변경하지 못한다. 더구나, 공지된 시스템 어느 것도 동시에 작업하는 기고가가 웹사이트를 실제적으로 변경하지 않고 그들 자신의 작업을 개별적으로 테스트할 수 있게 하는 것은 없다. 따라서, 모순되는 변경이 웹사이트에 포스트될 수 있어 웹사이트가 변조되게 할 수 있다.
기고가는 타자의 기고에 결합되었을 때 그들의 작업의 효과를 개인의 레벨에서 예견할 수 없기 때문에, 공지의 시스템은 웹사이트에 포스트된 모든 변경을 통합하고 에러에 대해 그 변경을 체크하기 위해서 웹마스터의 의존한다. 웹마스터는 기고가가 변경할 권한이 있기 때문에 이들만이 콘텐트를 변경할 수 있게 한다. 그러나, 웹마스터는 모든 통합 및 웹사이트 변경을 테스트를 행하여야 하기 때문에 웹사이트 개발 프로세스의 병목이 된다. 복수의 사용자의 작업을 통합하는 것은 수작업이고 시간을 소비하며, 버그를 고치고 모순을 해결하는데 많은 시간이 소비되는 반면, 설계, 기술혁신 및 전략엔 거의 시간을 투자하지 않는다. 더구나, 웹마스터는 기고가가 변경을 웹마스터에 제출할 때까지는 기고가의 변경진척을 쉽게 감독할 수 있다. 따라서, 웹마스터는 조기에 에러를 수정할 수 없고 기고가가 어떻게 진척되고 있는지 판정할 수 없다.
공지된 웹사이트 개발 시스템의 또 다른 문제는 이들이 파일 버전 이력들을 추적하지 못한다는 것이다. 웹사이트 파일들은 연속적으로 추가되고, 제거되고, 변경되며, 이동되고 개명되기 때문에, 파일의 어떤 버전을 누가 만들었는지 그리고 그 버전을 언제 만들었는지 아는 것이 유익하다. 기존의 버전들을 완전하게 엑세스함으로써, 사용자들은 버그를 야기했던 변경을 쉽게 찾을 수 있고 이전 버전으로 돌려놓을 수 있으며 새로운 버그를 확인할 수 있다. 또한 공지된 웹사이트 개발 시스템은 사이트의 서브-부분 혹은 전체 사이트의 임의의 이전버전에 즉시 엑세스되지 않게 한다. 즉시 웹사이트의 임의의 이전 버전으로 갈 수 있는 능력은 사이트 변조(corruption)나 부적합한 혹은 부정확한 정보의 분배 경우에 치명적인 재앙 복구 툴이 될 수 있다.
그러므로, 기고가의 변경이 웹사이트에 변경을 실제적으로 포스트함이 없이 전체 웹사이트에 맞는지 기고가가 판정할 수 있게 하는 웹 개발을 갖는 것이 바람직하다. 또한, 기고가가 파일, 웹사이트 서브-부분, 혹은 웹사이트의 초기 버전을 액세스할 수 있게 하며, 기고가의 진전을 웹사이트가 체크하게 하며, 아울러 웹사이트에 보다 쉽게 포스트 변경을 할 수 있게 하는 웹 개발 시스템을 갖는 것이 바람직하다.
발명의 요약
본 발명은 파일 관리를 위한 시스템 및 방법을 제공한다. 이러한 시스템의 한 사용은 웹사이트 개발 툴이다.
본 발명의 시스템은 "영역"이라고 여기서 칭하는 계층 파일 시스템으로 구성된다. 3가지 유형의 영역으로서 작업영역, 스테이지(staging) 영역, 및 판 영역이 있다. 작업영역은 수정 가능한 파일 시스템이고, 작업영역에서 사용자는 파일 및 디렉토리를 생성, 편집, 부가 및 수정할 수 있다. 일 실시예에서, 작업영역은 현존 웹사이트 및 웹사이트의 사용자의 개인적인 소견의 가상 복제이다.
스테이지 영역은 선택한 버전작업 조작을 지원하는 독출 전용 파일 시스템이다. 작업영역의 여러 사용자들은 그들의 작업의 콘텐츠를 스테이지 영역에 제출함으로써 그들의 작업을 통합할 수 있다. 스테이지 영역에서, 개발자들은 그들의 작업을 비교할 수 있고 그들의 변경이 서로 부합하는지 알 수 있다.
판 영역은 독출 전용 파일 시스템이다. 스테이지 영역의 콘텐츠는 판 영역에 가상으로 복제되어 스테이지 영역의 콘텐츠의 부동, 독출 전용 단편을 생성한다. 일 실시예에서 판 영역의 콘텐츠는 웹사이트의 판의 콘텐츠를 나타낸다.
일 실시예에서, 영역들은 디렉토리 트리들을 공유하므로 디렉토리 및 파일들은 영역이 생성될 때마다 물리적으로 복제될 필요가 없다. 이에 따라 영역들은 신속하게 생성될 수 있게 되고 시스템 자원의 효율적 사용이 제공된다. 각각의 파일 및 디렉토리에 연관된 이력객체는 그 파일 혹은 그 파일 혹은 디렉토리가 존재하는 각각의 영역 내 디렉토리의 콘텐츠에 관한 정보를 저장한다.
또 다른 실시예에서, 본 발명은 각 파일 및 디렉토리의 콘텐츠의 이력을 추적한다. 이에 따라 시스템은 한 파일을 다른 파일과 혹은 한 디렉토리를 다른 디렉토리와 쉽게 비교할 수 있게 되고 이들이 동일한지 아니면 관계되어 있는지 여부를 확인할 수 있게 한다.
또 다른 실시예에서, 본 발명의 시스템은 한 웹 서버가 마치 복수의 웹서버인 것으로 동작할 수 있게 하는 HTTP 프로토콜 가상화 모듈을 포함한다. 이에 의해서 각각의 영역은 각 영역마다 별도의 웹서버를 갖출 필요없이 HTTP 포로토콜 레벨에서 완전한 웹사이트가 된다.
본 발명은 계층파일 시스템에 관한 것으로 특히 웹사이트 개발 툴로서 사용될 수 있는 파일관리용 시스템 및 방법에 관한 것이다.
도 1은 본 발명의 일 실시예에 따른 웹사이트 개발용 컴퓨터망을 도시한 도면.
도 2는 본 발명의 일 실시예에 따른 웹사이트 콘텐트를 개발하기 위한 개발 흐름(개발자의 전망에서)을 도시한 도면.
도 3은 본 발명의 일 실시예에 따른 브랜치의 예를 도시한 도면.
도 4는 본 발명의 일 실시예에 따른 주 브랜치의 초기 콘텐츠의 예를 도시한 도면.
도 5는 본 발명의 일 실시예에 따른 주 브랜치의 예를 도시한 도면.
도 6은 본 발명의 일 실시예에 따른 주 브랜치의 또 다른 예를 도시한 도면.
도 7은 본 발명의 일 실시예에 따른 주 브랜치 및 서브-브랜치의 예를 도시한 도면.
도 8은 본 발명의 일 실시예에 따른 영역의 디렉토리 트리의 예를 도시한 도면.
도 9는 본 발명의 일 실시예에 따른 작업영역 객체를 도식화한 도면.
도 10은 본 발명의 일 실시예에 따른 발생 ID를 도출하는 방법을 도시한 도면.
도 11은 본 발명의 일 실시예에 따른 계통트리의 예를 도시한 도면.
도 12는 본 발명의 일 실시예에 따른 디렉토리를 도식화한 도면.
도 13은 본 발명의 일 실시예에 따른 웹사이트 개발모듈을 도시한 도면.
도 14는 본 발명의 일 실시예에 따른 작업영역 생성모듈의 동작을 도시한 도면.
도 15는 본 발명의 일 실시예에 따른 스테이지 영역 생성 모듈의 동작을 도시한 도면.
도 16a-b는 본 발명의 일 실시예에 따른 판 생성 모듈의 동작을 도시한 도면.
도 17a-c는 본 발명의 일 실시예에 따른 브랜치 생성 모듈의 동작을 도시한 도면.
도 18a-d는 본 발명의 일 실시예에 따른 부가 항목 모듈의 동작을 도시한 도면.
도 19는 본 발명의 일 실시예에 따른 부가 직접 참조 모듈의 동작을 도시한 도면.
도 20은 본 발명의 일 실시예에 따른 제거 직접 참조 모듈의 동작을 도시한 도면.
도 21a-b는 본 발명의 일 실시예에 따른 참조 카운트 모듈의 동작을 도시한 도면.
도 22은 본 발명의 일 실시예에 따른 독출 디렉토리 모듈의 동작을 도시한 도면.
도 23a-b는 본 발명의 일 실시예에 따른 제거 항목 모듈의 동작을 도시한 도면.
도 24a-b는 본 발명의 일 실시예에 따른 편집파일 모듈의 동작을 도시한 도면.
도 25는 본 발명의 일 실시예에 따른 개명 모듈의 동작을 도시한 도면.
도 26a-b는 본 발명의 일 실시예에 따른 발생 디렉토리 경로 모듈의 동작을 도시한 도면.
도 27은 본 발명의 일 실시예에 따른 발생 기본 명칭 모듈의 동작을 도시한 도면.
도 28a-c는 본 발명의 일 실시예에 따른 제출 모듈의 동작을 도시한 도면.
도 29는 본 발명의 일 실시예에 따른 상충 체크 모듈의 동작을 도시한 도면.
도 30a-b은 본 발명의 일 실시예에 따른 비교 디렉토리 모듈의 동작을 도시한 도면.
도 31a-b는 본 발명의 일 실시예에 따른 비교 파일 모듈의 동작을 도시한 도면.
도 32는 본 발명의 일 실시예에 따른 영역 삭제 모듈의 동작을 도시한 도면.
도 33a-b는 본 발명의 일 실시예에 따른 록 모듈의 동작을 도시한 도면.
도 34는 본 발명의 일 실시예에 따른 록 모듈의 또 다른 동작을 도시한 도면.
도 35는 본 발명의 일 실시예에 따라, 웹 브라우저, HTTP 프로토콜 가상화 모듈, 웹 서버간 통신 경로를 도시한 도면.
도 36a-b는 본 발명의 일 실시예에 따른 HTTP 프로토콜 가상화 모듈의 동작을 도시한 도면.
도 37은 본 발명의 일 실시예에 따른 HTTP 프로토콜 가상화 모듈의 또 다른 동작을 도시한 도면.
도 38은 본 발명의 일 실시예에 따른 HTTP 프로토콜 가상화 모듈의 또 다른 동작을 도시한 도면.
본 발명(들)은 웹사이트 개발에 관하여 기술하며, 이 기술을 잘 아는 자는 본 발명(들)을 다른 특정한 형태로 구현할 수 있음을 알 것이다.
도 1은 웹사이트 개발을 위한 컴퓨터 망(100)을 도시한 것이다. 통상의 개인용 컴퓨터일 수 있는 개발 워크스테이션(110)에서 웹사이트 개발자는 웹사이트용 파일을 부가, 제거, 편집 및 검토한다. 개발 워크스테이션(110)은 인터넷 등의 컴퓨터망(120)을 통해 개발 서버(130)에 접속된다.
개발 서버는 웹사이트 콘텐트에 대해 개발 워크스테이션(110)으로부터의 HTTP 요청을 처리하는 웹 서버(145)를 포함한다. 개발 서버(130)는 웹사이트가 물리적으로 저장되는 곳으로, 마이크로소프트사로부터 구입할 수 있는 WINDOWS NT 파일 시스템 등의 통상의 보조 기억장치(160)을 또한 포함한다.
개발서버(130)는 통상의 메모리(150)(예를 들면, RAM) 및 통상의 프로세서(140)를 포함하는데, 웹사이트 개발 소프트웨어 모듈(135)을 실행함으로써 본 발명의 웹사이트 개발 방법을 구현한다. 전술한 웹사이트 개발모듈은 메모리(150)에 저장되어 있다. 또한 메모리(150)에는 후술하는 바와 같이 프로세서(140)가 웹 서버(145)를 복수의 웹서버인 것처럼 동작하게 하는 HTTP 프로토콜 가상 모듈(137)이 저장되어 있다.
개발서버(130)는 망(165)를 통해 제작 웹서버(170)에 결합된다. 망(165)는 망(120)과 동일한 망일 수 있으며 혹은 다른 망일 수도 있다. 웹사이트 제작 웹서버(170)는 인터넷 혹은 인트라넷(175)에 결합되며 웹사이트가 WWW(World Wide Web) 혹은 인트라넷에 포스트될 준비가 되었을 때, 개발서버(130)는 웹사이트를 제작 웹서버(170)로 보내는데 이 웹서버는 웹사이트에 인터넷 혹은 인트라넷 액세스를 제공한다.
웹사이트는 임의의 파일 시스템의 콘텐츠로 구성된다. 본 발명의 웹사이트 개발 시스템은 계층 파일 시스템의 수집으로 구성된다. 이들 파일 시스템 각각은 개별 파일들을 관리하고 이들을 조작하는 수단을 제공하는 환경이다. 실행되었을 때, 웹사이트 개발 소프트웨어 모듈(135)은 파일 관리 및 조작의 대부분을 할 수 있게 하는 파일 시스템의 부분이다. 보조 기억장치(160)은 파일 및 대응하는 메타데이터(예를 들면 소유자 식별, 그룹 식별, 액세스 제어 파일명, 수정시간, 생성시간 등)이 물리적으로 저장되는 곳이다. 일 실시예에서, 파일들은 보조 기억장치(160)(이들이 보조 기억장치(160)에 물리적으로 저장될지라도) 이외의 드라이브들에 저장된 것으로 하게 할 수 있다.
계층 파일 시스템은 파일과 심볼릭 링크로 된 디렉토리 트리를 포함한다. 디렉토리 트리의 맨 위엔 루트 디렉토리가 있고, 이로부터 다른 디렉토리들이 직접 혹은 간접적으로 생겨난다.
파일 시스템은 수정할 수 있는 것이거나 독출 전용일 수도 있다. 수정 가능한 파일 시스템은 독출 조작(예를 들면, 루트 디렉토리를 얻는 것, 디렉토리를 읽는 것, 디렉토리를 참조하는 것. 파일을 읽는 것, 속성을 얻는 것, 심볼릭 링크를 읽는 것 등)과 파일들에 대한 수정 조작(에를 들면, 디렉토리 생성, 파일 생성, 심볼릭 링크 생성, 속성 설정, 파일 제거, 디렉토리를 이동하는 것, 파일명을 개명하는 것, 디렉토리명을 개명하는 것, 파일 기입, 등)을 지원하는 파일 시스템이다. 전형적인 하드 드라이브 용량은 수정 가능 파일 시스템의 예이다.
독출 전용 파일 시스템은 독출 조작만을 지원한다. 독출 전용 파일 시스템의 2가지 예는 CD RAM 용량 및 기입방지 위치로 플립되는 기입-탭을 구비한 플로피 디스크 용량이다.
전술한 바와 같이, 본 발명의 웹사이트 개발 시스템은 계층 파일 시스템들로 구성된다. 계층 파일 시스템 중 일부는 웹사이트의 콘텐트를 구성하는 파일들을 생성할 수 있게 하기 위해서 수정 가능한 계층 파일 시스템들이다. 다른 것들은 웹사이트 개발에 협력하도록 다른 파일 시스템으로부터의 파일들이 비교될 수 있게 하며 이들은 웹사이트의 콘텐트를 구성하는 완성된 파일들을 포함한다.
본 발명의 계층 파일 시스템을 종래의 파일 시스템과 구별하는 한 방법은 독출 및/또는 수정 조작 외에 본 발명에서 파일 시스템의 일부는 후술하는 바와 같이 2개 이상의 관계된 파일 시스템을 조작할 수 있게 하는 선택 버전 작업 조작을 지원한다는 것이다. 웹사이트의 콘텐츠는 본 발명에서 관계된 파일 시스템의 수집에 대한 독출, 수정, 및 버전 작업 조작을 수행함으로써 생성된다.
본 발명의 계층 파일 시스템은 "영역"이라고 칭하며, 3가지 유형의 영역, 즉 작업영역, 스테이지 영역, 및 판(edition) 영역이 있다. 작업영역은 수정가능 파일 시스템이고, 스테이지 및 판 영역은 독출 전용 파일 시스템이다.
작업영역은 기존의 웹사이트의 가상 복제로서 시작한다(기존의 웹사이트가 없다면 이 경우 작업영역은 빈 상태에서 시작함). 즉, 작업영역은 웹사이트로서 지정된 파일 시스템과 동일한 콘텐츠를 갖고 시작한다. 작업영역은 웹사이트의 개발자의 개인적인 것이며 웹사이트에 기고하는 모든 개발자는 작업영역에서 그와 같다. 작업영역에서, 개발자는 웹사이트 콘텐트를 자유롭게 부가, 삭제 혹은 수정할 수 있으며 이들 변경이 전체 웹사이트의 정황에 어떻게 들어맞는지를 알 수 있다. 부가, 삭제, 및 수정조작의 상세를 이하 설명한다. 한 작업영역 내 기고가에 의해 행해진 변경은 웹사이트 혹은 다른 작업영역들에 타 기고가의 작업에 영향을 미치지 않는다. 이것은 후술하는 바와 같이 각각의 영역이 분리된 파일 시스템이기 때문이다.
개발자는 이들의 작업영역의 콘텐트를 스테이지 영역에 제출함으로써 스테이지 영역에서 그들 작업을 통합한다. 제출조작은 위에서 언급된 선택 버전작업 조작 중 하나이며 이하 상세히 다룬다. 스테이지 영역은 브랜치(브랜치에 대해 다음에 설명함)에 관해 모든 사용자가 이용할 수 있는 웹사이트의 공유 관찰이다. 즉, 스테이지 영역은 브랜치를 따라 모든 사용자가 액세스할 수 파일 시스템이다. 스테이지 영역은 몇몇 개발지의 작업영역을 총괄한 작업을 보유하며 개발자로하여금 그들의 변경을 공유하고 통합하게 한다. 스테이지 영역에서, 개발자들은 그들의 작업을 비교할 수 있으며 그들의 변경이 어떻게 함께 어울리는가를 알 수 있다. 비교조작은 이하 상세히 기술하는 선택 버전작업 조작 중 또 다른 것이다.
스테이지 영역 내 총괄적인 작업은 작업영역들로부터 새로운 콘텐트를 다른 기고가가 제출함에 따라 변경되는, 스테이지 영역의 현재의 상태로 최근의 것으로 작업영역들을 유지하기 위해서 개인의 작업영역으로 가상으로 복제될 수 있다. 복제하는 것은 영역들이 디렉토리 트리를 공유하고 따라서 디렉토리 트리는 물리적으로 복제될 필요가 없기 때문에 "가상"적이다. 스테이지 영역에서 총괄적인 작업이 최종의 것으로 간주될 때, 이의 콘텐츠를 공표하여 웹사이트판을 생성할 수 있다. 이 판으로부터 작업영역을 생성하며 스테이지 영역을 공표하는 것은 이하 기술되는 선택 버전작업 조작의 부가적인 것들이다.
스테이지 영역의 콘텐츠를 판 영역에 가상으로 복제하여 웹사이트판을 생성한다. 다시, 가상으로 복제하는 것은 판이 스테이지 영역과 동일한 디렉토리 트리를 참조함을 의미한다. 판은 독출 전용 파일 시스템이기 때문에, 단일 브랜치를 따른 특정 지점에서 전체 웹사이트의 콘텐트의 고정된 단편이다. 각각의 판은 보관되며 모든 개발자들이 액세스할 수 있다.
판들의 콘텐츠는 가상으로 작업영역들에 복제될 수 있으며 웹사이트의 그 다음 개발을 위한 기초로서 사용될 수 있다. 판들은 또한 보관소로서 작용하므로, 사용자들이 즉시 파일, 전체 디렉토리를 불러낼 수 있고 혹은 웹사이트의 지난 버전 전체를 재구성할 수 있다.
도 2는 개발자 견지에서 작업영역에서 판까지 개발흐름을 요약한 것이다. 개발자는 작업영역에서 파일을 편집, 부가 혹은 삭제한다(210). 이이서 개발자는 자신의 작업영역의 콘텐츠를 스테이지 영역에 제출한다(220). 스테이지영역에서, 기고가의 작업영역의 콘텐츠는 타 기고가의 작업영역들의 콘텐츠와 통합된다(230). 스테이지 영역에 제출된 모든 콘텐츠가 잘 통합하고 양호한 것으로 인정되면(240), 스테이지 영역의 콘텐츠는 판에 공표된다(250). 그렇지 아니면, 콘텐츠는 이들이 양호한 것으로 인정될 때까지 이들의 파일을 계속 편집한다(210).
일 실시예에 따라, 웹사이트 개발은 개발의 몇몇 브랜치를 따라 분할될 수 있다. 개발자의 견지에서, 브랜치는 단일 웹사이트에 대한 개발경로이다. 도 3에 도시한 바와 같이, 단일 브랜치(300)는 작업영역(310), 스테이지 영역(320), 및 하나 이상의 보관된 웹사이트판들(330)을 포함한다. 브랜치들은 서브-브랜치를 포함할 수 있으므로 개발팀은 서로간에 분리된 대안이 되는 개발경로들을 유지할 수 있다. 콘텐트는 브랜치 및 서브-브랜치 상호간에 공유될 수 있다.
브랜치를 따라 웹사이트 개발을 분할하는 예는 현재의 웹사이트에 대해 하나의 브랜치를 갖는 것이며 웹사이트의 새로운 버전에 대하 또 다른 브랜치를 갖는 것이다. 또 다른 예는 특정 분야(region) 혹은 클라이언트에 맞추어 웹사이트를 제작하기 위해서 서로 다른 분야(region) 혹은 서로 다른 클라이언트에 대해서 개발의 서로 다른 브랜치를 갖는 것이다.
웹사이트 개발 소프트웨어 모듈이 개발 서버에 설치될 때 주 브랜치가 생성된다. 도 4에 도시한 바와 같이, 주 브랜치(400)는 빈 스테이지 영역(420)과 빈 판(430)을 초기에 포함할 수 있다. 주 브랜치는 또한 빈 작업영역(410)을 초기에 포함할 수 있다. 작업영역은 주 브랜치가 생성될 때, 혹은 사용자가 작업영역의 속성을 정할 준비가 될 때까지(예를 들면 작업영역에 액세스할 수 있는 사람) 작업영역 생성을 지연시키고자 할 수도 있으므로 나중에 생성될 수 있다.
웹사이트 개발 소프트웨어 모듈이 설치되기 전에 웹사이트가 존재하고 있다면, 빈 작업영역(410)은 이미 존재하고 있지 않아도 생성된다. 도 5에 도시한 바와 같이, 원래 웹사이트의 콘텐츠(510)는 빈 작업영역(410) 및 이어서 빈 스테이지 영역(420)에 복제되고 이어서 초판(440)에 공표된다.
가장 최신판의 콘텐츠를 새로운 작업영역에 가상으로 복제함으로써 주 브랜치에서 분리되어 추가 작업영역들이 생성될 수 있다. 도 6은 판(440)으로부터 주 브랜치 상의 작업영역(600)의 생성을 도시한 것이다. 작업영역(600)의 콘텐츠는 스테이지 영역(610)에 제출되고, 스테이지 영역(610)의 콘텐츠는 신판(620)에 공표된다.
서브-브랜치는 주 혹은 다른 브랜치로부터 생성될 수 있다. 도 7은 주 브랜치에서 떨어져 서브-브랜치의 생성을 도시한 것이다. 현 브랜치(720)로부터의 판(710)은 서브-브랜치(730)에 대한 초판(725)으로서 사용된다. 초판(725)의 콘텐츠는 이이서 서브-브랜치(730)에서의 작업영역(740), 스테이지 영역(750), 및 신판(760)에 가상으로 복제된다. 서브-브랜치는 동일한 방식으로 다른 서브-브랜치로부터 나와 생성될 수 있다. 서브-브랜치에 대해 행해진 작업은 상위 브랜치에서 행해진 작업과는 독립적으로 그와 병행하여 일어난다.
서브-브랜치에서 생성된 작업은 서브-브랜치에서의 판의 콘텐츠를 상위 브랜치의 작업영역에 가상으로 복제함으로써 상위 레벨 브랜치에 합쳐질 수 있다. 서브-브랜치로부터의 콘텐트는 다른 작업영역들로부터의 콘텐트와 통합되어 상위 브랜치의 신판으로서 공표될 것이다.
웹사이트 개발 시스템의 개괄 및 전형적인 사용에 대해 기술하며, 일 실시예에 따라 시스템의 특정한 구현예를 기술한다.
각각의 분리된 작업영역, 스테이지 영역, 판 영역은 하나 이상의 파일과 트리 구조로 편재된 디렉토리로 구성된다. 도 8은 영역에 대한 디렉토리 트리의 예를 도시한 것으로 디렉토리(1)는 루트 디렉토리이다. 영역들은 동일한 디렉토리 트리를 공유할 수 있다. 사실, 기존의 영역이 새로운 영역을 만들기 위해 복제될 때, 새로운 영역은 단지 기존의 영역과 동일한 루트 디렉토리를 참조한다.
각각의 분리된 작업영역, 스테이지 영역, 및 판 영역은 영역을 나타내며 명칭필드, 객체 ID 필드, 발생 ID 필드, 디렉토리 필드, 및 브랜치 필드를 갖는 객체를 생성함으로써 생성된다. 디렉토리 필드는 특정한 작업영역, 스테이지 영역 혹은 판 영역의 디렉토리 트리의 루트 디렉토리를 식별한다. 브랜치 필드는 작업영역이 놓여지는 브랜치를 나타낸다. 도 9는 작업영역 객체를 도식화한 것이다. 작업영역을 생성함에 있어서는 실제 복제와는 달리 작업영역 객체가 현존하는 디렉토리 트리를 가리키고 있기 때문에 디렉토리 트리의 가상복제가 행해짐의 유의한다.
각각의 작업영역, 스테이지 영역, 및 판 영역은 2개의 고유 식별자를 갖는데, 그 하나는 이 출원에서 "발생 ID"이라 칭하고 다른 하나는 "객체 ID"라 칭한다. 객체 ID는 영역을 나타내는 객체를 식별하는 것이고, 객체 ID가 일단 객체에 할당되면, 그 객체 ID는 변경되지 않는다. 각각의 영역은 또한 고유 생성 ID에 의해 식별되는데 이것은 영역이 타 영역들에 어떻게 관계되어 있는지를 나타낸다. 특정 영역에 대한 발생 ID는 후술하는 바와 같이 변경될 수 있다(예를 들면, 스테이지 영역이 판에 공표될 때). 발생 ID는 발생 ID 필드 내에 두어진다. 객체 ID는 객체 ID 필드 내에 두어진다.
디렉토리, 파일, 이력 객체(이하 기술함), 및 다른 객체들에는 일단 할당되는 변경되지 않는 객체 ID들이 할당된다.
발생 ID는 고유 시퀀스 혹은 한 세트의 숫자들로 구성된다. 발생 ID는 영역을 고유하게 식별할 뿐만 아니라 전술한 바와 같이 영역이 다른 영역들에 어떻게 관계되어 있는지를 나타낸다.
영역은 영역 중 하나가 다른 영역으로부터 직접적으로 혹은 간접적으로 도출된다면 또 다른 영역에 관계된다. 예를 들면, 도 7에서 서브-브랜치 내 초판은 패어런트 브랜치(parent branch) 내 판 2로부터 직접 도출된다. 서브-브랜치 내 작업영역들은 서브-브랜치 내 초판으로부터 직접 도출되며 패어런트 브랜치 내 판 2로부터 간접적으로 도출된다.
발생 ID는 그에 고유한 번호와 발생 ID가 도출되는 발생 ID의 번호들을 포함한다. 예를 들면, 번호 1이 일 영역에 할당된 고유번호이고 번호 0이 또 다른 영역에 할당된 고유번호이면, 이들 영역으로부터 도출된 영역의 발생 ID는 그 자신의 고유번호, 즉 4와 번호 0 및 1이다.
도 10은 패어런트 발생 ID가 새로운 영역의 직접적인 패어런트에 할당된 이 패어런트 발생 ID으로부터, 새로운 영역에 할당될 발생 ID를 도출하는 방법을 도시한 것이다. 고유번호는 고유번호를 순차(예를 들면, 1, 2, 3, 4) 혹은 무작위로 발생하는 기존의 알고리즘을 사용하여 얻는다(1000). 패어런트 발생 ID에 연관된 한 고유번호 세트 혹은 시퀀스를 불러들인다(1010). 이어서, 패어런트 발생 ID 및 지금 발행된 고유번호의 연속인 번호 세트 혹은 시퀀스가 발행된다(1020).
영역들간 관계는 계통 트리로 표현된다. 계통 트리는 데이터 구조로서 트리의 각각의 노드는 서로 다른 발생(즉, 영역. 본 출원에서 영역은 발생이라고도 칭함)을 나타낸다.
도 11은 계통트리의 예를 도시한 것이다. 발생(G0)은 초판을 나타낸다. 발생(G2)은 일 작업영역("작업영역 1")을 나타내며, 발생(G3)은 또 다른 작업영역("작업영역 2")을 나타내며, 발생(G1)은 판("판 1")을 나타내며, 발생(G4)는 스테이지 영역을 나타낸다. 계통 트리는 G1, G2, G3는 G0으로부터 직접 도출되는 것으로 도시되어 있는데, 이것은 G1, G2, G3가 G0와 동일한 루트 디렉토리를 가짐을 의미한다. G4는 G0로부터 간접적으로 도출되며 G1으로부터 직접적으로 도출되고, 따라서 G0와 동일한 루트 디렉토리를 갖는다.
도 12는 디렉토리(1200)를 도시한 것이다. 디렉토리가 변경된 각각의 발생에 대해서, 디렉토리는 발생 페이지(1280)에 대응하는 발생에서 디렉토리의 콘텐츠를 목록한 객체인 발생 페이지(1280)를 포함한다. 따라서, 디렉토리는 디렉토리가 변경된 각각의 발생에서 디렉토리의 콘텐츠의 단편을 효과적으로 포함한다. 디렉토리가 서로 다른 영역들 내 서로 다른 콘텐츠를 가질 수 있을지라도 발생 페이지(1280)에 의해서 서로 다른 영역들은 동일 디렉토리를 참조할 수 있다.
도 12에 도시한 디렉토리(1200)에서, 디렉토리 페이지(1280)는 항목 "m"이 발생(G0)에서 디렉토리(1200)에 부가되었으며, 항목 "n"이 발생(G2)에서 디렉토리(1200)에 부가되었으며, "p"는 발생(G3)에서 디렉토리(1200)에 부가되었음을 나타낸다. 디렉토리(1200)로부터 아무 것도 제거되지 않았다고 하면, 디렉토리 페이지(1280)는 특정 발생에 부가된 콘텐츠만이 아니라 특정 발생이 도출된 발생들에서 부가된 콘텐츠도 포함한다. 예를 들면, 도 10에 도시한 계통트리를 이 예에 적용한다고 가정한다. 발생(G0)에서, 디렉토리 d1은 항목 "m"을 포함한다. 발생(G2)에서, 항목 "n"은 디렉토리(1200)에 부가되며, 따라서, G2는 G0으로부터 도출되었기 때문에, 디렉토리(1200)는 발생(G2)에서 항목 "m" 및 "n"을 포함한다("m"이 제거되지 않았다면). 발생(G3)에서, 항목 "p"는 디렉토리 d1에 부가되고, 따라서 디렉토리(1200)는 항목 "p"와 "m"을 포함한다. G3는 G2로부터 도출되지 않았으며 결국 디렉토리(1200)는 발생(G3)에서 항목 "n"을 포함하지 않음에 유의한다.
일 실시예에서, 디렉토리가 특정 발생에서 변경되지 않았다면, 디렉토리는 그 발생에 대한 발생 페이지를 포함하지 않을 것이다. 일단 디렉토리가 발생 내에서 변경되면, 발생에 대한 발생 페이지는 디렉토리에 부가된다.
디렉토리 내 각각의 항목은 이력 객체에 연관된다. 이력 객체는 파일 혹은 디렉토리의 콘텐츠가 편집 혹은 수정되었던 발생을 나타낸다. 즉, 이력 객체는 디렉토리 내 항목의 이력을 나타낸다. 이력 객체는 생성 ID에 대한 필드(1225)와 파일 혹은 디렉토리에 의 포인터용의 콘텐츠 필드(1230)를 포함한다. 도 12에 도시한 예에서, 이력 객체(h0)는 생성(g0)에서, 항목 n이 파일(f1)에 연관된 콘텐츠를 포함함을 나타낸다. 이력 객체(h0)는 또한 발생(G2)에서 항목 n은 파일(f2)(파일(f1)이 아님)에 연관된 콘텐츠를 포함함을 나타낸다. 콘텐츠 필드(1230) 내 목록된 항목들은 파일(f2)의 실제 콘텐츠(1235)를 가리킨다. f2가 디렉토리였다면, 이것은 디렉토리(1200)와 같은 또 다른 디렉토리를 가리키게 될 것이다. 콘텐츠는 디렉토리 내 목록된 항목에 연관된 이전 파일 혹은 디렉토리에의 포인터를 갖는 "이전 필드"(1240)를 포함한다. 예를 들면, f2는 콘텐츠 "B", 및 f1에의 포인터(1240)를 갖는 파일을 가리키며, 이것은 생성(G2)에 앞서, 항목 "m"이 f1의 콘텐츠를 가졌음을 의미한다.
도 13은 작업영역, 스테이지영역, 판 영역을 생성 및 조작할 수 있게 하는 본 발명의 일 실시예에 따른 웹사이트 개발 소프트웨어 모듈(135)을 도시한 것이다. 웹사이트 개발 소프트웨어 모듈(135)은 작업흐름 서브시스템(1300), 버전작업 서브시스템(1305), 및 객체 서브시스템(1310)을 포함한다. 작업흐름 서브시스템은 작업영역, 스테이지 영역, 판 영역, 및 브랜치를 생성 및 관리한다. 버전작업 서브시스템은 파일 및 디렉토리 수정 및 편집, 파일 비교, 디렉토리 비교, 작업영역의 콘텐트를 스테이지 영역에 제출, 및 상충에 대해 파일 및 디렉토리를 체크하는 기능을 관리 및 제어한다. 객체 서브시스템은 서버의 주 메모리 및 디스크 내의 객체들의 분배를 관리한다. 객체 서브시스템은 통상의 고정 객체 저장 및 캐시 서브시스템으로서 구현될 수 있다.
작업흐름 서브시스템은 작업영역 생성모듈(1312), 스테이지 영역 생성(1314) 모듈, 판 영역 생성모듈(1316), 브랜치 생성모듈(1346) 및 영역삭제 모듈(1342)를 포함한다. 버전작업 서브시스템(130)은 제출모듈(1336), 상충체크 모듈(1338), 비교모듈(1340), 부가항목 모듈(1318), 참조 카운트 모듈(1320), 부가 직접 참조 모듈(1322), 제거 직접 참조 모듈(1324), 독출 디렉토리 모듈(1326), 제거항목 모듈(1328), 편집 파일 모듈(1330), 개명 모듈(1332), 발생 디렉토리 경로 모듈(1334), 록킹 모듈(1344), 발생 ID 모듈(1348)을 포함한다. 작업흐름 서브시스템 및 버전작업 서브시스템 내 이들 모듈은 영역, 파일, 디렉토리, 및 기타 웹사이트 개발에 사용되는 객체를 생성 및 조작할 수 있게 한다.
작업흐름 및 버전작업 서브시스템은 C++ 프로그래밍 언어로 구현된다. 작업흐름 서브시스템 및 버전작업 서브시스템 내 모듈의 동작에 대해서 이하 기술한다.
전술한 바와 같이, 작업영역은 이전 판의 콘텐츠를 작업영역에 가상 복제하여 생성된다(초기에 비어있는 주 브랜치 상의 제 1 작업영역은 제외하고). 도 14는 임의의 "판 e"이라고 부를 판으로부터 작업영역을 생성하는 작업영역 생성모듈(1312)의 동작을 도시한 것이다. 모듈(1312)는 루트 디렉토리 및 판 e의 발생 ID를 얻는다(1410). 모듈(1312)는 이어서 판 e의 발생 ID로부터 도출된 새로운 발생 ID를 발생 ID 모듈(1348)로부터 얻는다(1420). 발생 ID 모듈(1348)은 도 11에 도시한 과정을 수행함으로서 새로운 발생 ID를 도출한다. 모듈(1312)는 또한 작업영역에 대한 새로운 객체 ID(고유하며, 무작위 혹은 순차로 발생된 번호)를 얻는다.
모듈(1312)은 작업영역을 나타내며, 명칭 필드, 루트 디렉토리 필드, 객체 ID 필드, 발생 ID 필드, 및 브랜치 필드를 갖는 객체를 생성한다(1430). 모듈은 명칭필드에 작업영역의 명칭, 디렉토리 필드에 판 e의 루트 디렉토리, 발생 ID 필드에 단계 1420에서 도출된 발생 ID, 객체 ID 필드에 객체 ID, 및 브랜치 필드에 작업영역이 놓이는 브랜치의 식별을 채운다(1440). 이에 따라, 객체는 작업영역이 판 e와 동일한 루트 디렉토리를 가지며 도출된 발생 ID를 갖는 데이터 구조임을 표시한다. 판 e의 콘텐츠는 작업영역을 생성하기 위해서 물리적으로 복제되는 것이 아님에 유념한다. 그 보다는 객체는 새로이 생성된 영역이 초기엔 판 e와 동일한 데이터 구조를 갖는다는 것을 나타내어 생성되었다.
도 15는 판 e로서 언급될 판으로부터 스테이지 영역을 생성하기 위한 스테이지 영역 생성모듈(1314)의 동작을 도시한 것이다. 스테이지 영역을 생성하기 위해서, 모듈(1314)는 판 e의 발생 ID를 얻고(1510), 판 e의 발생 ID로부터 도출된 새로운 발생 ID를 발생 ID 모듈(1348)로부터 얻는다(1520). 모듈(1314)는 또한 스테이지 영역에 대한 새로운 객체 ID(고유하고, 무작위 혹은 순차적으로 발생된 번호)를 얻는다.
모듈(1314)는 스테이지 영역을 나타내며 명칭필드, 루트 디렉토리 필드, 발생 ID 필드, 객체 ID 필드, 및 브랜치 필드를 갖는 개체를 생성한다(1530). 모듈(1314)는 명칭필드에 스테이지 영역의 명칭, 디렉토리 필드에 판 e의 루트 디렉토리, 발생 ID 필드에 단계 1520에서 얻어진 발생 ID, 객체 ID 필드에 단계 1525에서 얻어진 객체 ID, 및 브랜치 필드에 스테이지 영역이 놓이는 브랜치의 식별을 채운다(1540).
복수의 스테이지 영역을 갖는 것이 종종 바람직하다. 예를 들면, 공공의 스테이지 영역 외에, 선택된 사용자들만이 콘텐트를 제출할 수 있는 몇 개의 개인 스테이지 영역을 갖추는 것이 바람직할 수 있다. 복수의 스테이지 영역은 전술한 스테이지 영역 생성 방법을 복수회 수행함으로서 생성될 수 있다.
도 16a-b는 임의의 "s"로 표시한 스테이지 영역의 콘텐츠로부터 판을 생성하기 위한 판 생성 모듈(1316)의 동작을 도시한 것이다. 모듈(1316)은 스테이지 여역(s)의 발생 ID 및 루트 디렉토리를 얻는다(1610). 모듈은 또한 판 e에 대한 고유 객체 ID를 얻는다(1615). 모듈(1316)은 신판을 나타내며, 명칭필드, 루트 디렉토리 필드, 발생 ID 필드, 객체 ID 필드, 및 브랜치 필드를 나타내는 객체를 생성한다(1620). 모듈(1316)은 신판이 명칭으로 명칭필드와, 스테이지 영역(s)의 발생 ID로 발생 ID와, 스테이지 영역(s)의 루트 디렉토리로 루트 디렉토리 필드와, 단계 1615에서 얻어진 객체 ID로 객체 ID 필드와, 판이 놓이는 브랜치의 식별로 브랜치 필드를 채운다(1630).
스테이지 영역의 발생 ID를 취하여, 모듈(1316)은 스테이지 영역(s)을 신판으로 바꾼다. 결국, 판이 생성될 때, 판 생성 모듈(1316)은 새로운 생성 ID를 얻으며(1640) 이를 스테이지 영역에 할당한다(1650).
도 17a-17c는 브랜치 생성 모듈(1346)의 동작을 도시한 것이다. 브랜치를 생성하기 위해서, 모듈(1346)은 생성되는 브랜치가 주 브랜치인지 여부를 판정한다(1705). 브랜치가 주 브랜치가 아니면, 모듈(1346)는 새로운 브랜치가 유래되는 패어런트 브랜치로부터 "판 b"라 부를 기본 판의 발생 ID를 얻는다(1710). 판 "b"는 패어런트 브랜치 상의 임의의 판일 수 있다. 이어서 모듈(1346)은 판 b의 발생 ID로부터 도출된 새로운 발생 ID를 발생 ID 모듈(1348)로부터 얻는다(1715). "판 e"라고 부를 초판은 판 b와 동일한 루트 디렉토리와 단계 1715에서 얻어진 발생 ID를 갖고 생성된다(1720). 더욱이, 0 또는 그 이상의 작업영역들이 생성되며(1730), 그 각각은 판 e와 동일한 디렉토리와 판 e의 발생 ID로부터 도출된 서로 다른 발생 ID를 갖는다. 작업영역들은 나중에 브랜치 생성 시 생성될 수 있다. 판 e와 동일한 루트 디렉토리를 가지며 판 e의 발생 ID로부터 도출된 발생 ID를 갖는 스테이지 영역이 생성된다(1740). 판 e, 작업영역, 및 스테이지 영역은 도 14-16에 관하여 논한 방법에 따라 생성된다.
단계 1705에서, 생성되는 브랜치가 주 브랜치이면, 모듈(1346)은 g0라고 부르는 루트 발생 ID를 얻는다(1750). 루트 발생 ID는 고유번호를 발생하는 통상의 프로그램을 사용하여 발생된 번호이며 또 다른 발생 ID로부터 도출되지 않는다. 이어서 모듈(1346)은 d0라고 부를 빈 디렉토리, 및 그 디렉토리에 대해 h0라고 부를 이력객체를 생성한다(1755, 1760). 모듈(1346)은 이력객체가 발생 g0 내의 디렉토리 d0에 연관된 것을 나타내는 이력객체에 엔트리를 부가한다(1765). 이 엔트리는 (g0, d0) 표기로 나타낼 수 있다.
이력객체를 생성한 후에, 모듈(1346)은 루트 디렉토리 d0 및 루트 발생 g0 를 갖는 초판을 생성한다(1770). 모듈은 또한 스테이지 영역과, 각각이 초판(즉 비어있는)과 동일한 루트 디렉토리와 루트 발생으로부터 도출된 서로 다른 발생 ID를 갖는 하나 또는 그 이상의 작업영역을 생성한다(1775). 작업영역은 나중에 생성될 수도 있어, 브랜치 생성시 생성될 필요는 없다.
부가 항목 모듈(1318)은 파일 및 디렉토리 등의 객체를 작업영역 혹은 스테이지 영역에 부가할 수 있게 한다. 도 18a-d는 콘텐츠 "f"를 갖는 항목 "n"을 영역 "a" 내의 디렉토리 "d"에 부가하는 부가 항목 모듈(1318)의 동작을 도시한 것이다. 영역 a는 작업영역 혹은 스테이지 영역일 수 있으며 항목 n은 파일 혹은 디렉토리일 수 있다. 항목 f는 또한 파일 혹은 디렉토리일 수 있다. 항목을 부가하기 위해, 모듈(1318)은 "g"라고 부르는, 영역에 대한 발생 ID를 식별한다(1805). 이어서 모듈(1318)은 디렉토리 d를 읽고(1810) g를 발생하기 위한 발생 페이지가 있는지 여부를 판정한다(1815). 디렉토리 d에 대한 발생 페이지가 없다면, 모듈(1318)은 발생 페이지를 갖는 가장 밀접하게 관계된 패어런트 발생("최상의 일치 발생")의 발생 페이지를 복제함으로써 디렉토리 d에 대한 발생 페이지를 생성한다(1820). 발생 g에 대한 발생 페이지를 찾거나 이를 생성한 후에, 모듈(1318)은 명칭 "n"을 가지고 항목에 대한 발생 페이지의 콘텐츠를 스캔하여(1825), 발생 g에서 디렉토리 d에 항목 n이 존재하는지 여부를 판정한다(1835). "n"이라 명명된 항목이 발생 g 내의 디렉토리 d 내에 없다면, 모듈(1318)은 콘텐츠 "f"가 발생 g에서 항목 n에 연관되어 있음을 나타내는 이력객체 내 엔트리로 이력개체를 생성한다(1840). 표기 (f, g)는 이러한 엔트리를 나타내는데 사용될 것이다. 모듈(1318)은 이이서 표기(n, h)으로 나타낸 엔트리를, "n"이 이력객체 "h"에 연관되어 있음을 나타내는 발생 페이지 "g"에 부가한다(1845). 항목 n을 디렉토리 d에 부가하기 위해서, 항목 n이 디렉토리 d에 가상으로도 물리적으로 복제되는 것은 아님에 유의한다. 디렉토리 d는 단순히 항목 n을 참조할 뿐이다.
단계 1835에서 질문에 대한 대답은 항목 n이 디렉토리에 이미 부가되었지만 항목 n의 갱신된 버전이 기존 버전을 대치하고 있을 때는(즉, 새로운 콘텐츠가 항목 n에 현재 연관되어 있을 때) 긍정이 될 것이다. 이러한 경우라면, 모듈(1318)은 항목 "n"이 변경된 가장 최근의 발생에 대해 파일 "n"에 연관된 이력객체의 콘텐츠를 스캔할 것이다(1850). 이어서 모듈(1318)은 항목 n이 발생 g에서 변경되어 있는지 여부를 판정한다(즉, 모듈(1318)은 영역 a가 발생 ID g를 갖기 있기 때문에 항목 n이 영역 a에서 변경되었는지 여부를 판정한다). 항목 n이 발생 g에서 변경되지 않았다면, 모듈(1318)은 콘텐트 f가 발생 g 내의 파일 n에 연관되었음을 나타내는 이력객체에 엔트리를 부가한다(1860). 항목 f는 항목 n의 이전의 콘텐츠를 나타내는 필드를 갖는다(예를 들면, 항목 f는 항목 n의 이전의 콘텐츠에의 포인터를 포함한다). 모듈(1318)은 최상의 일치 발생에서 "n"의 콘텐츠를 가리키도록 항목 f의 이전 필드를 설정한다(1865).
단계 1855에서, 항목 n이 발생 g에서 변경되었다면, 모듈(1318)은 발생 g내에 항목 n의 콘텐트가 항목 f임을 반영하기 위해서 발생 g에 연관된 이력 항목 엔트리를 변경한다(1870). 이어서 모듈(1318)은 발생 g에서 n의 이전 콘텐트를 가리키도록 항목 f의 이전 필드를 설정한다(1875).
자원을 이용하기 위해서, 객체(예를 들면, 디렉토리, 파일, 이력객체)는 임의의 영역으로부터 엑세스될 수 없다면 기억장치로부터 물리적으로 삭제된다. 객체를 영역으로부터 부가 및 삭제하는 것은 객체의 단지 하나의 물리적인 복제가 저장되기 때문에 가상적일 수 있다. 그러므로, 객체의 물리적인 복제가 삭제되어야 할 것인지 여부를 판정하기 위해서, 객체가 임의의 한 영역으로부터 액세스될 수 있는지 여부를 알 필요가 있다. 객체가 영역으로부터 액세스될 수 있다면, 그 영역 내에서 "참조"된다. 객체가 임의의 한 영역으로부터 액세스될 수 있는 여부를 판정하기 위해서, 참조 카운트가 객체마다 유지되고, 이 참조 카운트는 객체가 액세스될 수 있는 영역의 수를 나타낸다. 객체는 객체에 대한 참조 카운트가 제로이면 삭제될 수 있다.
참조 카운트를 계산할 수 있게 하기 위해서, 각각의 객체는 "참조 목록" 및 "반(anti)-참조 목록"에 연관된다. 참조 목록은 객체가 부가된 디렉토리 및 각각의 참조된 디렉토리에 대해서 객체가 디렉토리에 부가된 발생(즉, 영역)을 나타낸다. 구체적으로, 객체가 디렉토리에 부가될 때마다. 객체가 디렉토리에 부가된 발생을 나타내는 참조목록에 엔트리가 부가된다.
반-참조 목록은 객체가 제거된 디렉토리, 및 각각의 참조된 디렉토리에 대해서, 객체가 디렉토리로부터 제거된 발생을 나타낸다. 구체적으로, 객체가 디렉토리로부터 제거될 때마다, 엔트리는 디렉토리와 객체가 디렉토리로부터 제거된 발생을 나타내는 반-참조목록에 부가된다.
부가 직접 기준 모듈(1322)는 엔트리를 참조 목록에 부가한다. 도 19는 객체(예를 들면, 파일, 혹은 디렉토리, 혹은 이력객체)가 영역 "a"에서 디렉토리 "d"에 부가될 때 부가 직접 참조 모듈(1322)의 동작을 도시한 것이다. 객체 c가 디렉토리 d에 부가될 때, c에 d의 직접 참조가 부가된다. 즉, c의 참조목록은 c가 디렉토리 d에 부가되었음을 나타낸다. 직접 참조를 부가하기 위해서, 부가 직접 참조 모듈(1322)는 먼저 편의상 "g"라고 부를 영역 a의 발생을 얻는다(1910). 이어서 부가 직접 참조 모듈(1322)는 발생 g에서 객체 c가 디렉토리 d에 부가되었음을 나타내는 객체 c의 참조목록에 엔트리가 있는지 여부를 판정한다(1920). 편의상 이러한 엔트리는 표기(g, d)로 나타낸다. (g, d)가 객체(c)의 참조목록에 있지 않다면, 엔트리는 참조목록에 부가된다(1930).
(g, d)가 참조목록에 부가된 후에, 혹은 (g, d)가 이미 참조목록에 부가되었다면, 부가 직접 참조 모듈(1322)는 엔트리 (g, d)가 반-참조 목록 내에 있는지 여부를 판정한다(1940). 엔트리(g, d)는 발생 g에서 객체 c가 디렉토리 p로부터 이전에 제거되었다면 반-참조 목록 내에 있게 될 것이다. 엔트리 (g, d)가 객체 c의 반-참조 목록 내에 없다면, 직접 참조를 부가하는 과정이 완료된다. 엔트리 (g, d)가 반-참조 목록 내에 있다면, 엔트리는 반-참조 목록으로부터 제거된다(1950). 또한, 발생 g로부터 직접 도출되는 gi라고 부를 각각의 발생에 있어서, 엔트리(gi, d)는 반-참조 목록에 부가된다(1960). 이 마지막 단계에 대한 이유는 도출된 생성이 이의 패어런트 발생과 동일한 콘텐츠를 가지고 시작하기 때문이다. 그러므로, 객체가 한 발생에서 액세스될 수 있을 경우, 차일드 생성들의 도출 후에 패어런트 디렉토리에 객체가 부가되지 않았다면 혹은 객체가 구체적으로 차일드 생성들로부터 제거되지 않았다면, 그 생성으로부터 도출된 모든 차일드 생성들로부터 액세스될 수 있다. 결국, 현존하는 차일드 생성들을 갖는 생성 내 디렉토리에 객체가 부가되었다면, 반-참조 목록은 현존하는 차일드 생성들이 도출되었을 때에 패어런트 생성의 일부가 아니기 때문에 현존하는 차일드 생성들로부터 액세스될 수 없다. 물론, 객체는 도 18a-d에 도시되어 기술된 방법을 사용하여 차일드 생성들에 부가될 수도 있다.
제거 집적 참조 모듈(1324)는 엔트리들을 반-참조 목록에 부가한다. 도 20은 객체 "c"가 영역 "a"에서 디렉토리 "d"로부터 제거될 때 제거 직접 참조 모듈(1324)의 동작을 도시한 것이다. 제거 직접 참조 모듈(1324)은 편의상 "g"라고 부를 영역 a의 발생 ID를 확인한다(2010). 제거 직접 참조 모듈(1324)는 발생 g에서 객체 c가 디렉토리 d에 사전에 부가되었음을 나타내는 객체의 참조 목록 내 엔트리가 있는지 여부를 판정한다(2020). 이러한 엔트리는 표기(g, d)로 나타낸다. (g, d)가 참조목록 내에 없다면, 객체 c는 발생 g에서 디렉토리 d에 직접적인 참조가 없었기 때문에 과정이 완료된다. 그러므로, 어떠한 참조도 제거될 필요가 없다.
(g, d)가 참조목록 내에 있다면, 객체(c)의 참조목록으로부터 제거된다(2030). 더욱이, g로부터 도출되는 gi라고 부를 각각의 차일드 발생에 대해서, 엔트리(gi, d)가 반-참조 목록에 없다면, 엔트리는 참조목록에 부가된다(2040). 이 단계에 대한 이유는 객체 c가 현존하는 차일드 발생들로부터 액세스가능하였다면 패어런트 발생으로부터 제거되었음에도 불구하고 현존 차이들 발생들로부터 여전히 액세스가 가능함을 나타낸다.
단계 2040 후에, 제거 직접 참조 모듈(1324)는 엔트리(g, d)가 반-참조 목록 내에 있는지 여부를 판정한다(2050). 엔트리가 반-참조 목록 내에 이미 없다면, 반-참조 목록에 부가된다(2060). 그렇지 않다면, 직접 참조를 제거하는 과정은 완료된다. 엔트리(g, d)가 이미 반-참조 목록 내에 없을 것일지라도, 제거 직접 참조 모듈(1324)은 더 이른 때에 반-참조 목록에 엔트리가 잘못 부가된 경우 이러한 결정을 한다.
참조 카운트 모듈(1320)은 항목에 참조 회수를 계산한다. 이와 같이 하기 위해서, 참조 카운트 모듈(1320)은 초기엔 비어있는 2개 집합의 목록 p를 유지한다. 참조 카운트 모듈(1320)은 초기엔 제로로 설정되는 정수 n를 사용하여 항목 f에 행해진 참조 회수를 나타낸다.
도 21a-b는 항목 f의 참조 카운트를 계산하는 참조 카운트 모듈(1320)의 동작을 도시한 것이다. 참조 카운트 모듈(1320)은 항목 f에 대한 참조 및 반-참조 목록을 불러들인다(2110, 2120). 참조 카운트 모듈은 계통 트리의 루트 노드의, 편의상 "g"라고 부를 발생 ID를 얻는다(2525)(본 발명에서 모든 영역은 계통으로 편재될 수 있음을 상기함). 참조 카운트 모듈(1320)은 발생 g를 갖는 참조 목록 내 모든 엔트리를 찾는다(2130). 예를 들면, 항목 f가 발생 g에서 디렉토리 d1에 부가되었다면, 참조 목록 내에 엔트리(g, d1)이 있을 것이며 참조 카운트 모듈(1320)은 이 엔트리를 발견할 것이다. 발생 g를 갖는 엔트리들 각각에 대해서, 참조 카운트 모듈(1320)은 목록 p에 엔트리(항목 명칭, +)을 부가하여, 여기서 "항목 명칭"은 발생 g에서 참조된 항목의 명칭이다. "+"는 항목이 참조목록(반-참조 목록과는 상반되는)에서 참조되었음을 의미한다. 예를 들면, 엔트리(g, d1)이 항목 f의 참조목록에서 발견되었다면, 엔트리(d1, +)은 목록 p에 부가될 것이다. 목록 p가 이미 동일한 항목명칭(예를 들면, d1, -)의 엔트리를 포함한다면, 참조 카운트 모듈은 엔트리가 (항목명칭, +)로 설정되게 한다.
참조 카운트 모듈(1320)은 발생 g를 갖는 반-참조 목록 내 모든 엔트리를 발견하기 위해서(2140) 반-참조 목록을 탐색한다. 발생 g를 갖는 반-참조 목록 내 엔트리들 각각에 대해서, 참조 카운트 모듈(1320)은 목록 p에 엔트리(항목명칭, -)을 부가하며(2140), 여기서 "-"는 항목이 반-참조 목록에서 참조되었음을 의미한다. 목록 p가 이미 동일 항목명칭을 갖는 엔트리를 포함한다면, 참조 카운트 모듈은 엔트리가 (항목명칭, -)으로 설정되게 한다.
참조 카운트 모듈(1320)은 "+"를 갖는 목록 p 내 각각의 엔트리에 대해 n=n+1을 설정한다(2050). n은 초기에 제로로 설정된다는 것을 상기한다. 참조 카운트 모듈(1320)은 발생 g가 임의의 차일드 발생(즉, 발생 g로부터 도출된 발생들)을 갖는지 여부를 판정한다(2160). 그렇지 않다면, 참조 카운트는 완료되고(2170), n은 항목 f에 참조 회수이다. 발생 g가 차일드 발생들을 갖는다면, 각각의 차일드 발생에 대해서 참조 카운트 모듈(1320)은 차일드 발생의 발생 ID와 동일한 g를 설정하고(2180) 단계 2130으로 돌아간다.
도 22은 영역 "a"에서 디렉토리 "d"의 콘텐츠를 읽기 위한 독출 디렉토리 모듈(1326)의 동작을 도시한 것이다. 독출 디렉토리 모듈(1326)은 "g"라고 칭할 영역 a의 발생을 얻는다(2210). 독출 디렉토리 모듈(1326)은 발생 g에 대한 발생 페이지가 있는지 여부를 판정하기 위해서(2220) 디렉토리를 통해 분석한다(parse). 디렉토리 d가 영역 a에서 이미 수정되어 있다면 발생 g에 대한 발생 페이지가 있을 것이다. 발생 g에 대한 발생 페이지가 있다면, 독출 디렉토리 모듈(1326)은 발생 페이지 "g"에 관한 엔트리 목록을 돌려보낸다(2230). 그렇지 않다면, 디렉토리는 가장 가깝게 관계된 패어런트 발생 페이지("최상의 일치 발생 페이지")의 발생 페이지에 관한 엔트리 목록을 돌려보낸다(2240).
독출 디렉토리 모듈의 동작의 예를 도 12에 도시한 디렉토리를 사용하여 기술한다. 발생 G3을 갖는 영역에서 디렉토리의 콘텐츠를 읽기 위해서, 독출 디렉토리 모듈(1326)은 이 예에서 엔트리(m, h0)인 발생 페이지 G3에 관한 엔트리(들) 목록을 돌려보낸다.
도 12에서 발생들은 도 10에 도시한 바와 같은 방식으로 관계되어 있다고 가정한다. 발생 G4에서 디렉토리 d의 콘텐츠를 읽기 위해서, 독출 디렉토리 모듈(1326)은 G4에 대한 발생 페이지가 있는지 여부를 판정한다. G4에 대한 발생 페이지가 없기 때문에, 독출 디렉토리 모듈(1326)은 최상의 일치 발생 페이지를 탐색한다. G1은 G4에 가장 근접한 패어런트 발생이지만, G1에 대한 발생 페이지는 없다. G0는 다음으로 가장 근접한 패어런트 발생이며, G0에 대한 발생 페이지가 있기 때문에, G0 발생 페이지 내 엔트리 목록은 G4에서 디렉토리의 콘텐츠로서 복귀된다.
도 23a-b는 항목 "n"이 발생 ID "g"를 갖는 영역 "a"에서 디렉토리 "d"로부터 제거되었을 때 제거 항목 모듈(1328)의 동작을 도시한 것이다. 항목 n은 파일 혹은 또 다른 디렉토리 등, 디렉토리 내 임의의 객체일 수 있다. 디렉토리 d로부터 항목을 제거하기 위해서, 디렉토리 d는 도 22에 관하여 기술된 방법에 따라 읽혀진다(2310). 제거 항목 모듈(1328)은 디렉토리 d 내에 발생 g에 대한 발생 페이지가 있는지 여부를 판정한다(2320). 그렇지 않다면, 발생 페이지는 가장 가까운 패어런트 발생("최상의 일치 발생")으로부터 발생 페이지를 복제함으로써 발생 g에 대해 생성된다(2330).
제거 항목 모듈(1328)은 발생 페이지 "g"에서 항목 n에 대한 엔트리가 있는지 여부를 판정한다(2330). 그렇지 않다면, 제거 항목 모듈(1328)은 항목 n이 발생 g에서 디렉토리 d 내에 없기 때문에 에러가 발생하였음을 표시하고(2330), 따라서 발생 g에서 디렉토리로부터 제거될 수 없다.
단계 2330으로 돌아가서, 발생 페이지 g에서 항목 n에 대한 엔트리가 있다면, 제거 항목 모듈(1328)은 n에 대응하는 이력객체를 얻는다(2350). 제거 항목 모듈(1328)은 항목 n이 발생 g에서 수정되었음을 이력객체가 표시하고 있는지 여부를 판정한다(2355). 즉, 제거 항목 모듈(1328)은 이력객체가 발생으로서 "g"를 갖는 엔트리를 포함하는지 여부를 판정한다.
항목 n이 발생 g에서 변경되지 않았다면, 제거 항목 모듈(1328)은 발생 g에서 디렉토리 d로부터 항목 n이 제거되었음을 나타내는 이력객체에 엔트리를 부가한다(2370). 항목 n의 삭제는 이 과정에서 가상적이기 때문에, 이 엔트리를 부가하는 것은 발생 g에서 디렉토리 d로부터 항목 n를 효과적으로 삭제한다. 이 엔트리는 (g, z) 표기로 나타내고, 여기서 "z"은 항목이 제거되었음을 나타내는 객체를 나타낸다. z 객체가 항목 n에 대해 생성되지 않았다면, 제거 항목 모듈(1328)은 z 객체를 생성한다.
단계 2355에서, 항목 n이 발생 g에서 변경되었다면, 제거 항목 모듈(1328)은 발생 g에서 디렉토리 d로부터 n이 제거되었음을(즉, 엔트리는 (g, z)이 됨) 나타내기 위해서 발생 g에 대응하는 이력객체 내 엔트리를 변경한다(2360). 제거 항목 모듈(1328)은 이미 존재하지 않는다면 항목 n에 대한 z 객체를 생성한다.
도 12에 도시한 파일 콘텐츠(1235)처럼, z 객체는 항목의 이전의 콘텐츠를 나타내는 필드를 또한 갖는다. 이 필드를 "이전 필드"라 칭한다. 단계 2360 혹은 2370 후에, z 객체 내 이전 필드는 발생 g에서 n의 이전 콘텐츠를 가리키도록 설정된다(2380).
도 24a-b는 발생 ID "g"를 갖는 작업영역 "a"에서 디렉토리 "d" 내의 파일 "n"을 편집하는 편집 파일 모듈(1320)의 동작을 도시한 것이다. 편집 파일 모듈(1320)은 파일 "n"에 대한 기입 코맨드를 수신한다(2405). 편집 파일 모듈(1320)은 파일 n에 대한 이력객체를 얻어(2410), 파일 n이 발생 g에서 변경되었는지(즉, 발생 g를 갖는 엔트리가 있는지?) 판정한다(2420). 그렇다면, 편집 파일 모듈(1320)은 발생 g에서 파일 n에 연관된 콘텐츠에 파일 "n"에 모든 변경을 기입한다(2430).
이력객체가 발생 g를 갖는 엔트리를 갖고 있지 않다면, 편집 파일 모듈(1320)은 최상으로 일치하는 발생을 갖는 엔트리를 찾는다(2440). 편집 파일 모듈(1320)은 단계 2440에서 엔트리에 연관된, f1이라고 부를 파일을 복제하고(2450), f2라고 칭하는 파일 f1의 새로운 복제에 모든 변경을 기입한다(2460). 엔트리는 발생 g에서 파일 n의 콘텐츠가 파일 f2의 것들임을 나타내는 이력객체에 부가된다(2470). 즉, 편집 파일 모듈(1320)은 표기(g, f2)로 나타낸 엔트리를 이력객체에 부가한다.
도 25는 항목 n1을 개명하는 개명 모듈(1332)의 동작을 도시한 것으로, 영역 a에서 디렉토리 d2 내 항목 n2에 영역 a에서 디렉토리 d1 내 파일 혹은 디렉토리일 수 있다. 개명 모듈(1332)은 디렉토리 d1 내 항목 n1의, h1이라 부를 이력객체를 얻는다(2510). 이러한 이력객체가 전혀 존재하지 않는다면, 개명모듈(1332)은 에러가 발생하였다는 것을 사용자에게 보고한다. 이력객체를 얻은 후에, 개명모듈(1332)은 명칭 n2을 갖는 항목이 디렉토리 d2에 존재하는지 여부를 판정한다(2520). 그렇다면, 개명모듈은 항목 n2에 대해 어떤 덮어쓰기 방지가 있는지 판정한다(2523). 일 실시예에서, 파일은 아니고 디렉토리에 대한 덮어쓰기 방지가 있다. 덮어쓰기 방지가 존재한다면, 개명 모듈은 항목 n2가 디렉토리 d2에 이미 존재함을 보고한다(2527). 덮어쓰기 방지가 없다면, 개명 모듈(1332)은 도 23a-b에 관하여 도시 및 기술한 방법에 따라 디렉토리 d2로부터 현존하는 항목 n2를 제거한다(2830).
일단 현존 항목 n2가 디렉토리 d2로부터 제거되었거나 항목 n2가 디렉토리 d2에 존재하지 않았다면, 개명 모듈(1332)은 명칭 n2을 갖는 새로운 항목을 디렉토리 d2에 부가한다(2540). 개명 모듈(1332)는 이력개체(h1)를 디렉토리 d2 내 항목 n2에 연관시킨다. 항목 n2의 콘텐츠의 "이전 필드"에서, 개명 모듈(1332)는 n1이 n2의 "선조(ancestor)로부터 개명"(이하 정의되는 바와 같이)임을 나타낸다.
도 26a-b는 영역 a에서 디렉토리 d에 대한 완전한 명칭 경로를 발생하는 발생 디렉토리 경로 모듈(1334)의 동작을 도시한 것이다. 발생 디렉토리 경로 모듈(1334)는 영역 a에서 디렉토리 d를 읽고 디렉토리 d에의, Pd라 불린 패어런트 디렉토리를 확인한다. 본 발명의 일 실시예에 따라, 패러런트 디렉토리는 디렉토리 내 엔트리 ".."에 연관된다. 이 실시예에서, 발생 디렉토리 경로 모듈(1334)는 엔트리 ".."에 대응하는 디렉토리를 확인한다.
모듈(1334)는 영역 a에서 디렉토리 Pd를 읽고, 디렉토리 d에 대한 엔트리를 찾는다. 이어서 모듈(1334)은 디렉토리 d를 디렉토리 경로에서 명칭으로서 확인한다.
이 알고리즘은 루트 디렉토리가 도달될 때까지 반복된다. 구체적으로, 디렉토리 d에 관하여 전술한 방법은 디렉토리 Pd에 대해 반복되고 이어서 디렉토리 Pd의 패어런트, 등에 대해 루트 디렉토리가 도달될 때까지 반복된다. 발견된 명칭들은 디렉토리 경로에서 명칭들이다. 명칭들은 디렉토리 경로명에서 마지막에서 첫번째까지의 순서로 발견된다.
도 27은 영역 "a"에서 디렉토리 "d" 내의 이력객체 "h"의 기본명칭을 발생하는 발생 기본 명칭 모듈(1335)의 동작을 도시한 것이다. 발생 기본명칭 모듈(1335)은 디렉토리 d 내의 영역 a에 대응하는 발생 페이지를 읽는다(2710). 발생 기본명칭 모듈(1335)은 이력객체 h로 엔트리를 식별한다(2720). 엔트리 내 이력객체 h에 대응하는 항목의 명칭은 찾은 기본명칭이다. 예를 들면, 엔트리(n, h)가 영역 a에서 디렉토리 d에서 발견되었다면, "n"은 이력객체 h의 기본명칭이 될 것이다.
도 28a-c는 이력객체 h를 갖는 항목 "n"과 콘텐츠 f를, 발생 ID g를 갖는 스테이지 영역 a에서 디렉토리 d에 제출하는 제출모듈(1336)의 동작을 도시한 것이다. 제출동작은 작업영역의 콘텐츠를 스테이지 영역에 제출하는데 사용된다. 파일의 콘텐츠는 이의 이력 객체에 의해 정의되기 때문에, 파일의 이력객체는 실제로 스테이지 영역에 제출된다. 제출모듈(1336)은 도 26 및 27에 관하여 도시 및 기술한 방법에 따라 디렉토리 d의 완전한 경로명과 영역 a에서 기본명칭 이력객체 h를 계산함으로써 이력객체 h의 완전한 경로를 얻는다(2805). 제출모듈(1336)은 스테이지 영역에서 동일한 완전한 경로명을 갖는 대응하는 항목이 있는지 판정한다(2810). 이것은 스테이지 영역 내 또 다른 객체가 이력객체 h와 동일한 완전한 경로명을 갖는지 여부를 판정하기 위해서 디렉토리 d(도출 디렉토리 모듈(1326)를 사용하여)을 반복하여 읽음으로써 행해진다.
스테이지 영역에서 대응하는 항목이 없다면, 제출모듈(1336)은 단계 2805에서 계산된 디렉토리 경로가 스테이지 영역 존재하는지 여부를 확인한다(2830). 존재하지 않는다면, 디렉토리 경로가 생성되고(2835), 파일 f는 고정으로 표시된다(2840). 단계 2830 혹은 단계 2840 후에, 제출모듈(1336)은 부가 항목 모듈(1318)을 불러내어, 콘텐츠 f를 갖는 항목 n을 스테이지 영역 a에서 디렉토리 d에 부가한다(2845). 제출모듈(1336)은 엔트리(g, f)를 이력개체에 부가한다(2840).
제출모듈(1336)은 항목 f가 디렉토리인지 판정한다(2855). 아니라면, 제출과정은 완료된다. 항목 f가 디렉토리이면, 각각의 차일드-디렉토리 di에 대해서, 제출모듈(1336)은 작업영역에서 di에 연관된 이력객체에 엔트리(g, di)를 부가한다. 이 단계는 디렉토리가 스테이지 영역에 제출될 때, 이의 차일드 디렉토리들도 제출되게 한다.
단계 2810에서, 스테이지 영역에 대응하는 항목이 있다면, 제출모듈(1336)은 hs라 부를 대응하는 이력객체와 이력객체 h간에 상충이 있는지 판정(2815)하기 위해 상충 체크모듈(1338)을 호출한다. 이력객체 h 및 hs는 a) h 및 hs동일하거나 b) h가 hs로부터 도출되거나 c) hs가 h로부터 도출된다면 상충되지 않는다. h와 대응하는 이력객체 hs간에 상충이 없다면, 제출모듈(1336)은 단계 2840으로 간다. 그렇지 않다면 제출모듈(1336)은 기존의 파일이 덮여쓰여지게 하는 덮어쓰기 모듈이 유효한지 여부를 판정한다(2820). 그러하다면, 제출모듈(1336)은 단계 2840으로 간다. 그렇지 않다면, 제출은 상충때문에 되지 않는다.
도 29는 브랜치 b에서 영역 atarget에서의 상충에 대해 파일 freference에 대한 파일 ftarget을 체크하는 상충 체크 모듈(1338)이 동작을 도시한 것이다. 상충 체크 모듈(1338)은 브랜치 b에서 ftarget이 록되어 있는지 판정한다(2910). 브랜치 상의 단지 하나의 작업영역만이 파일을 스테이지 영역에 제출할 수 있다면 파일은 브랜치에서 록된다. 파일을 록시키는 것은 상충을 피하는 수단을 제공한다. ftarget이 브랜치 b에서 록되어 있다면, 상충 체크 모듈(1338)은 ftarget을 atarget보단 다른 영역이 소유하고 있는지 판정한다(2920). 그러하다면, 상충이 있으며 ftarget는 영역 atarget에 제출될 수 없다.
ftarget이 브랜치 b에서 록되어 있지 않거나 ftarget에 대한 록을 atarget이 소유되어 있다면, 상충 체크 모듈은 ftarget및 freference가 동일한 콘텐트를 가리키고 있는지(즉, ftarget및 freference가 동일한지?) 확인한다(2930). 이들이 동일한 콘텐트를 가리키고 있다면, 상충 체크 모듈(1338)은 상충이 없다는 것을 발견한다. 2개의 파일이 동일한 콘텐트를 갖고 있지 않으면, 상충 체크 모듈(1338)은 freference가 ftarget의 선조인지 여부(즉, 동일 명칭 선조, 선조로부터의 복제, 혹은 후술하는 바와 같이 선조로부터의 개명)를 판정한다(2940). freference가 선조이면, ftarget가 freference의 원하는 수정일 것이기 때문에 상충은 없다. 선조가 아니라면, 상충이 있다.
도 30a-b은 영역 areference에서 디렉토리 dreference에 대해 영역 atarget에서 디렉토리 dtarget를 비교하는 비교 디렉토리 모듈(1340)의 동작을 도시한 것이다. 비교를 행하기 위해서, 비교 디렉토리 모듈(1340)은 도 22에 관하여 도시 및 기술한 방법에 따라 영역 atarget에서 디렉토리 dtarget의 콘텐츠를 읽는다(3005). 상충 체크 모듈은 도 22에 관하여 도시 및 기술한 방법에 따라 영역 areference에서 디렉토리 dreference의 콘텐츠를 읽는다(3010).
비교 디렉토리 모듈(1340)은 디렉토리 dtarget내에 제 1 항목을 확인하여(3015) 디렉토리 dtarget에서 제 1 항목과 동일한 명칭을 갖는 디렉토리 dreference내 항목이 있는지 판정한다(3020). 없으면, 비교 디렉토리 모듈(1340)은 dtarget에 식별된 항목과 일치하는 dreference내에 항목이 없음을 보고하고(3045), 단계 3050으로 간다. 그렇지 않다면, 비교 디렉토리 모듈(1340)은 동일한 명칭을 갖는 2개의 항목이 동일한 콘텐츠를 갖고 있는지 판정한다(3025). 이러한 비교는 각 항목의 이력객체를 살펴보아 행해지며 영역 areference에서 dreference의 이력객체가 영역 atarget에서 dtarget의 이력객체와 동일한 콘텐츠를 가리킨다면, 디렉토리의 콘텐츠는 동일하다. 콘텐츠가 동일하다면, 비교 디렉토리 모듈(1340)은 항목들이 동일 명칭 및 콘텐츠를 갖고 있음을 보고하고(3030) 비교 디렉토리 모듈(1340)은 단계 3050으로 간다. 콘텐츠가 동일하지 않다면, 비교 디렉토리 모듈(1340)은 명칭들이 동일하고 콘텐츠는 동일하지 않다고 보고하며(3035), 비교 디렉토리 모듈(1340)은 단계 3050으로 간다.
단계 3050에서, 비교 디렉토리 모듈(1340)은 dtarget내에 또 다른 항목이 있는지 확인한다(3050). dtarget에 또 다른 항목이 있다면, 비교 디렉토리 모듈(1340)은 다음 항목을 확인하고(3053) 단계 3020으로 돌아간다. dtarget에 또 다른 항목이 없다면, 비교 디렉토리 모듈(1340)은 dreference내에 제 1 항목을 확인한다(3055). 비교 디렉토리 모듈(1340)은 확인된 항목이 dtarget내 항목과 동일한 명칭을 갖는지 판정한다(3060). 갖지 않는다면, 비교 디렉토리 모듈(1340)은 dtarget내의 확인된 항목이 dreference내의 어떠한 항목과도 일치하지 않은 것으로 보고하고(3065) 단계 3067로 간다. 확인된 항목이 dtarget내의 항목과 동일한 명칭을 갖는다면, 확인된 항목은 단계 3020에서 이미 발견되었으며, 따라서 비교 디렉토리 모듈(1340)은 단계 3067로 간다.
단계 3067에서, 비교 디렉토리 모듈(1340)은 디렉토리 dreference내에 또 다른 항목이 있는지 판정한다. dreference내에 더 이상의 항목이 없음에 응답하여, dtarget를 dreference에 비교하는 과정은 완료된다. 그렇지 않다면, 비교 디렉토리 모듈(1340)은 dreference내의 다음 항목을 얻고(3070) 단계 3060으로 돌아간다.
비교 파일 모듈(1341)은 파일들을 비교한다(디렉토리들을 비교하는 비교 디렉토디 모듈(1340)과는 반대임). 파일들은 이들이 스테이지 영역에 제출되었을 때 비교된다. 부가적으로, 웹사이트 개발자들은 이들의 각각의 작업영역들에서 파일들을 비교하고자 할 수 있다.
파일들을 비교하는 것은 파일의 선조들을 고찰하는 것을 포함한다. 파일이 가질 수 있는 3가지 유형의 선조는 동일 명칭 선조, 선조로부터의 복제, 및 선조로부터의 개명이다.
동일 명칭 선조는 파일 f와 동일한 명칭(즉, "f")을 갖는 f라 불리는 파일의 이전 버전으로, 동일 명칭 선조는 파일 f와 동일한 영역에 이전에 제출된 것이다. 파일의 "이전 파일"(예를 들면 도 12에서 필드(1240))은 파일의 동일 명칭 선조를 가리킨다.
f라고 부를 파일의 선조로부터의 복제는 파일 f에 복제된 콘텐츠를 갖는 파일이다. 파일에 대해 복제나 복귀(revert) 조작은 선조로부터 복제를 갖고 작업영역에서 파일을 생서할 수 있다. 이것은 조작이 기존 파일을 덮어쓰기할 경우 일어난다. 예를 들면 파일 e2가 스테이지 영역에서의 파일이라 하자. 파일 u를 파일 e2와 상충되는 작업영역에서의 파일이라고 하자. 파일 u가 이의 콘텐츠를 파일 e2의 콘텐츠의 복제로 대치함으로써 갱신되었다면, 이전의 파일 u는 갱신된 파일 u와 동일한 명칭의 선조이며, 파일 e2는 갱신된 파일 u의 선조로부터의 복제이다. 파일 e2는 또 다른 영역 혹은 브랜치로부터의 파일일 수 있다. 파일 e2는 파일 u의 버전 이력 내 파일 혹은 또 다른 브랜치 상의 또 다른 파일의 버전 이력 내 파일일 수 있다. 파일이 선조로부터의 복제를 갖는다면, 그 파일의 "이전 필드"(예를 들면 도 12에서 필드(1240))는 선조로부터의 복제, 및 동일 명칭의 선조를 가리킨다.
f라고 부를 파일의 선조로부터의 개명은 파일 f을 개명하게 된 파일이다. 파일이 선조로부터 개명을 갖는다면, 파일의 "이전 파일"은 선조로부터 개명, 및 동일 명칭 선조를 가리킨다.
도 31a-b는 디렉토리 dtarget내의 파일 Ftarget와 디렉토리 dreference내의 파일 Freference를 비교하는 비교 파일 모듈(1341)의 동작을 도시한 것이다. 비교 파일 모듈(1341)는 디렉토리 dtarget내의 Ftarget의 콘텐츠를 포함하는 ft라로 부를 파일을 참조한다(3110). Ftarget와 ft간 차는 Ftarget이 디렉토리 내 파일의 명칭이며 ft는 디렉토리 dtarget내의 Ftarget의 실제 콘텐츠이다. Ftarget와 ft간 차이는 도 12에 도시한 디렉토리 내 "m"명칭의 파일과 발생 G0에서 파일 "m"의 콘텐츠 "A"간 차와 같다.
비교 파일 모듈(1341)은 dreference내의 Freference의 콘텐츠를 포함하는 fr라 부를 파일을 참조한다(3120). 비교 모듈은 fr및 ft가 동일한지 여부를 판정한다(3130). 동일하다면, 비교 파일 모듈(1341)은 Freference및 Ftarget는 동일하다고 보고한다(3140).
fr및 ft가 동일하지 않다면, 비교 파일 모듈(1341)은 Freference이 Ftarget의 선조인지 판정한다(3145). 각 파일의 콘텐츠는 파일의 동일 명칭 선조(예를 들면, 이전 콘텐츠)에의 포인터("이전 필드" 내에)와, 파일이 선조로부터 복제 또는 선조로부터 개명을 갖는다면 그러한 선조에의 포인터를 포함함을 상기한다. 비교모듈은 fr를 찾아서 ft의 "이전 필드" 및 이의 선조들을 통해 역으로 간다. fr이 거슬러간 "이전 필드" 중 한 필드에서 나타나면, Freference는 Ftarget의 선조이며, 비교 파일 모듈(1341)은 Ftarget이 Freference의 수정임을 보고한다(3050).
Freference가 Ftarget의 선조가 아니면, 비교 파일 모듈(1341)은 Ftarget가 Freference의 선조인지 판정한다(3155). 구체적으로, 비교 모듈은 ft를 찾아서 fr의 "이전 필드" 및 이의 선조들을 통해 역으로 간다. ft이 거슬러간 "이전 필드" 중 한 필드에서 나타나면, 비교파일 모듈(1341)은 Freference이 Ftarget의 수정임을 보고한다(3160). 그렇지 않다면, 비교파일 모듈(1341)은 Ftarget와 Freference모두의 선조인 어떤 파일이 있는지 판정한다(3165). 어떤 공통의 파일이 있다면, 비교파일 모듈(1341)은 Ftarget와 Freference이 공통의 선조를 가짐을 보고하며(3170), 공통의 파일이 없다면 Ftarget은 Freference에 관계되어 있지 않은 것으로 보고한다(3175).
영역 삭제 모듈(1342)은 사용자 혹은 시스템 관리자(administrator)에 의해 더 이상 요구되지 않는다. 도 32은 영역 "a"을 삭제하기 위한 영역 삭제 모듈(1342)의 동작을 도시한 것이다. 영역 삭제 모듈은 영역 a에 대한 디렉토리 트리를 불러들이고(3210), 편의상 "c 노드"라고 부를 어떤 차일드없는 노드(즉, 디렉토리)를 찾는다(3230). 영역 삭제 모듈(1342)은 제거 항목 모듈(1328)을 호출하여 이의 패어런트 디렉토리(들)로부터 c 노드를 제거한다(3240). 영역 사제 모듈(1342)은 또한 제거 직접 참조 모듈(1324)를 호출하여 c 노드의 참조목록으로부터 패어런트 디렉토리에의 참조를 제거한다(3240). 영역 삭제 모듈(1342)은 이어서 참조 카운트 모듈(1320)을 호출하여 참조 카운트가 제로인지 판정하고(3260), 제로이면 c 노드에 연관된 물리적인 객체는 기억장치로부터 삭제된다(3270). 그렇지 않다면, c 노드에 연관된 물리적인 객체는 c 노드가 영역 a로부터 제거되었더라고 여전히 다른 영역들에 존재하기 때문에 기억장치로부터 삭제되지 않는다. 참조 카운트를 판정한 후에, 삭제 영역 모듈(1342)은 영역 내에 남아 있는 어떤 노드들이 있는지 판정한다(380). 그러하다면, 모듈(1342)은 단계 3230으로 복귀한다. 그렇지 않다면 영역 삭제 과정은 완료된다.
도 33a-b 및 34는 록 모듈(1346)의 동작을 도시한 것이다. 도 33a-b는 브랜치 b를 따라 영역에서 디렉토리 d 내의 항목 f에 관한 록을 생성하기 위한 록 모듈(1346)의 동작을 도시한 것이다. 이러한 록을 생성하기 위해서, 록 모듈(1346)은 영역 a에서 디렉토리 d 내의 항목 f의 완전한 경로명을 결정하고(3310) 이어서 어떤 다른 록이 동일한 완전한 경로명을 갖는지 여부를 확인한다(3320). 그러하다면, 록 모듈(1346)은 상충되는 록 때문에 록 생성 동작이 되지 않음을 보고한다(3250). 어떤 다른 록도 동일한 완전한 경로명을 갖지 않는다면, 록 모듈(1346)은 단계 3310에서 확인된 완전한 경로명을 포함하는 록을 생성하고(3230), 록의 소유자로서 영역 a을 갖는 록을 표시한다(3240).
도 34는 영역 a에서 디렉토리 d 내의 항목이 록되어 있는지 판정하는 록 모듈(1346)의 동작을 도시한 것이다. 록 모듈(1346)은 영역 a에서 디렉토리 d 내의 항목 f의 완전한 경로명을 확인하고(3410), 이어서 브랜치 b가 동일한 완전한 경로명의 록을 갖는지 판정한다(3420). 그렇지 않다면, 록 모듈은 항목 f가 록되어 있지 않은 것으로 보고한다(3430). 아니라면, 록 모듈은 항목 f가 록되어 있는 것으로 보고한다(3440).
웹사이트 개발 소프트웨어를 기술하였으므로, 본 발명에 따라 HTTP 프로토콜 가상화 모듈(137)("virtulaization module 137")을 기술하도록 하겠다.
각각의 영역은 HTTP 프로토콜 레벨에서 완전한 웹사이트인 것처럼 보인다. 각 영역에 대해서 별도의 웹 서버를 가질 필요없이 이를 달성하기 위해서, 가상화 모듈(137)은 단일의 웹 서버가 복수의 웹 서비들로서 보이게 할 수 있다. 이것은 각각의 영역이 HTTP 프로토콜 레벨에서 완전한 웹사이트가 되게 하면서도 전개 및 유지 비용을 크게 감소시킨다.
도 35는 개발 워크스테이션(110) 중 한 워크스테이션 상의 웹 브라우저, 가상화 모듈(137), 웹 서버(145)간 통신경로를 도시한 것이다. 개발 워크스테이션(110) 상의 웹 브라우저는 웹사이트 콘텐트에 대한 HTTP 요청 모두를 혹은 선택적으로(후술하는 링크 유형에 따라서) 가상화 모듈(137)에 보내게 한다. 필요하다면, 가상화 모듈(137)은 요청이 발원된 영역에(이 영역을 "가시화 영역"이라 칭함) 혹은 또 다른 원하는 장소(후술함)에 디렉토리 경로가 대응하도록 요청의 디렉토리 경로를 변경한다. 즉, 가상화 모듈(137)에 보내진 HTTP 요청들은 필요하다면 가시화 영역 혹은 또 다른 원하는 곳에 대응하는 파일 시스템으로 경로가 변경된다.
HTTP 요청을 처리한 후에, 가상화 모듈(137)은 HTTP 요청을 웹 서버(145)에 보내며, 이 서버는 요청된 문서를 요청에 의해 명시된 위치로부터 불러낸다. 이어서 웹 서버(145)는 요청된 문서(혹은 발견되지 않으면 에러 신호)를 가상화 모듈(137)로 다시 보내고, 이 모듈은 요청된 문서(혹은 에러 신호)를 다시 웹 브라우저로 보낸다.
가상화 모듈(137)은 맵핑 규칙을 사용해서 HTTP 요청을 변경할 것인지 그리고 변경방법을 결정한다. 맵핑 규칙은 한 표현을 또 다른 표현으로 맵핑한다. 맵핑 규칙은 동일한 기호로 분리된 양측으로 분류된다. 맵핑 규칙의 좌측은 정규표현이며, 일치될 가변패턴의 부분들을 정의한다. 맵핑 규칙의 정규표현은 수학 및 컴퓨터 사이언스 분야에서 정규표현의 정의가 명확한 규칙들에 따르며, 일 실시예에서, 맵핑 규칙에 사용된 정규표현은 정규표현이 UNIX 운영시스템(예를 들면, regex(5) 확장 정규표현)에 적용되는 바와 동일한 방식으로 적용된다.
맵핑 규칙의 우측은 치환표현(즉, 좌측의 정규표현에 치환되는 표현)이다. 치환표현에서, 심볼 $N은, 여기서 N은 "1", "2",...,"9", 정규표현 괄호 연산자()로 나타내는 좌측의 패턴의 제 1 10개의 부분을 나타낸다(예를 들면 $1은 좌측의 제 1 패넌, $2는 좌측의 제 2 패턴, 등등을 나타낸다).
HTTP 요청은 다음 순서로 3개의 부분으로 분할될 수 있다.
area prefix/document root prefix/name of requested file
모듈(137)은 문서 루트 프리픽스(prefix)와 요청의 영역 프리픽스를 변경함으로써 HTTP 요청 경로를 변경한다. 문서 루트 프리픽스는 "문서 루트"의 경로명이며, 여기서 문서 루트는 웹 서버의 소스 디렉토리이다. 문서 루트는 웹서버가 요청된 문서를 탐색하는(다른 것이 명시되지 않는 한) 파일 시스템 내 디렉토리이다. 문서 루트는 루트 디렉토리의 웹서버의 표기로 볼 수 있다.
영역의 최상위 디렉토리는 반드시 문서 루트일 필요는 없다. 개발자는 영역의 최상위 디렉토리가 웹서버의 문서 루트에 대응하게 영역을 설정할 수 있다. 웹 서버에 대한 실제 문서 루트는 최상위 영역 디렉토리 밑의 임의의 수의 디렉토리들일 수 있다.
영역에 대한 문서 루트는 특별한 맵핑 규칙에 의해 명시된다. 일 실시예에서, 각각의 브랜치는 한 세트의 맵펭 규칙을 가지며, 이 실시예에서, 특정 브랜치을 따른 각각의 영역은 특별한 '_docroot' 맵핑 규칙에 의해 명시된 바와 동일한 문서 루트를 갖는다.
특정 브랜치의 문서 루트에 대한 맵핑 규칙의 예는 다음과 같다.
_docroot=/directoryA/directorB
원래의 URL 요청이 GET/docoments/idex.html이면, 문서 루트 프리픽스는 원래 요청의 첫 번째 "/" 앞에 첨부될 것이다. 즉, 프리픽스 "/directoryA/directoryB"는 "/documents/index.html" 판에 첨부될 것이다.
무선 루트 프리픽스 대신 또 다른 프리픽스를 사용하고자 하는 상황이 있다. 이러한 상황은 개발자가 문서 루트 디렉토리 밖의 콘텐트 디렉토리, 소위 콘텐트 디렉토리 명칭들을 구성하거나, 영역 레벨에서 임의의 변환을 적용하는 경우를 포함한다. 이들 특별한 상황에 대한 맵핑 규칙들이 있으며, 요청이 이들 특별한 맵핑 규칙 중 하나와 일치한다면, 맵핑 규칙의 치환표현(우측)은 문서 루트 프리픽스 대신 요청에 첨부된 프리픽스이다. 예를 들면, 다음은 특정 브랜치에 대한 맵핑 규칙이라고 가정한다.
/Special(.*)=/Foo$1
원 요청이 GET/special/index.html이면, 프리픽스 "/Foo"은 "/index.html."에 부가된다.
영역 프리픽스는 문서 루트 프리픽스, 적용할 수 있다면 문서 루트 프리픽스를 대신하는 특별한 프리픽스 앞에 첨부된다. 영역 프리픽스는 원 요청과 함께 송신된 "쿠키"를 복호함으로써 도출된다. 쿠키는 웹 브라우저에 의해 저장되고 가상화 모듈(137)로 보내지는 소량의 불변의 데이터이다. 쿠키는 여러 가지 유형의 정보(예를 들면, 사용자 신원, 사용자 세션의 신원("세션 ID"), 포트 번호 등)을 포함할 수 있으며, 한 이러한 유형은 가시화 영역의 경로의 표시일 수 있다. 일 실시예에서, 쿠키는 실제 영역 프리픽스를 포함한다. 또 다른 실시예에서, 가상화 모듈은 또 다른 유형의 정보, 이를테면 세션 ID 혹은 포트번호를 쿠키로부터 추출하여, 영역 프리픽스들에 추출된 정보의 유형을 맵핑하는 외부 참조표 내의 영역 프리픽스를 참조한다.
문서 루트 프리픽스 예를 계속하기 위해서, 원 요청과 함께 송신된 쿠키로부터 도출된 영역 프리픽스가 "/iw-mount/default/main/workarea/joe"이면, 송신된 요청은 다음과 같이 보일 것이다.
GET/iw-mount/default/main/workarea/joe/directoryA/directoryB/documents
/index.html.
웹 브라우저가 모든 HTTP 요청을 가상화 모듈(137) 혹은 어떤 곳으로 보내는지 여부는 시스템에서 HTML 문서 내에 포함된 링크 유형에 달려있다. HTML 문서 내에 포함될 수 잇는 적어도 3가지 서로 다른 유형의 링크, 즉 상대링크, 절대링크, 완전히 자격을 갖춘 링크가 있다. 완전하게 자격을 갖춘 링크는 명백한 프로토콜 명세와 문서에 완전한 경로명이 수반된 명백한 호스트명을 포함하는 링크이다. 절대링크는 프로토콜 명세이나 호스트명를 포함하지 않고 문서에의 완전한 경로명을 포함하는 링크이다. 절대링크는 통상 처음의 슬래시 문자('/')로 시작한다. 상대링크는 절대링크와 유사하지만, 대신에 경로가 현재 문서의 링크에 상대적임을 표시하는 선도하는 슬래시 문자('/')로 특징화된다. 즉, 상태링크는 요청된 문서의 실제명을 제외하고 현재 문서의 동일한 완전한 경로명을 갖는다.
가상화 모듈(137)은 모든 3가지 유형의 링크를 처리할 수 있다. 시스템(100) 내에 저장된 HTML 콘텐트가 완전히 자격을 갖춘 링크들의 가상화를 요구한다면, 웹 브라우저는 가상화 모듈(137)에 모든 요청들을 보내도록 구성된다. 많은 공통의 웹 브라우저는 구성 설정을 갖고 이러한 특징을 지원한다. 일 실시예에 따라서, 웹사이트가 완전히 자격을 갖춘 링크들의 관리를 필요로 하지 않는다면, 웹 브라우저는 단지 절대 및 상태 HTML 링크들만을 가상화 모듈(137)로 전달한다. 웹 서버는 통상 가상화 모듈(137)보 자동적으로 보내질 절대링크 및 상대링크에 대한 특정한 구성을 전혀 필요로 하지 않는다.
도 36a-b는 절대 요청 및 상태요청을 처리하는 가상화 모듈(137)의 동작을 도시한 것이다. 가상화 모듈(137)은 개발 워크스테이션(110) 중 한 워크스테이션 상의 웹 브라우저로부터 HTTP요청을 받고(3610), 요청으로부터 균일 자원 탐색기(URL) 주소를 추출한다(3620). 가상화 모듈(137)은 또한 URL 주소와 함께 보내진 쿠키를 추출한다(3630).
가상화 모듈(137)은 요청이 절대요청인지 아니면 상태요청인지 판정한다(3640). 한 요청 실시예에서, 이들 요청들은 상태 HTML 요청이 가상화 모듈(137)에 의해 처리되지 전에(이것은 웹 브라우저에 의해 자동으로 행해진다) 이미 그에 첨부된 영역 프리픽스를 가질 것이며, 그러나 절대요청은 이것이 가상화 모듈(137)에 의해 처리되기 전에 그에 첨부된 영역 프리픽스를 갖지 않을 것이라는 사실에 의해 구별된다. 요청이 상태요청이면, 요청은 이미 올바른 파일 시스템 및 디렉토리들(즉, 파일 시스템 및 가시화 문서가 액세스되었던 디렉토리들)로 보내지고, 가상화 모듈(137)은 요청을 웹 서버로 보낸다(3690).
요청이 절대요청이면, 가상화 모듈(137)은 가시화 영역이 존재하는 브랜치에 대응하는 맵핑 규칙들을 찾고(3650) 적합한 프리픽스(맵핑 규칙(전술한 바와 같은)에 근거하여 문서 루트 프리픽스이거나 혹은 특별한 프리픽스)을 선택한다(3660). 가상화 모듈(137)은 선택된 프리픽스를 적합한 맵핑 규칙에 따라 원 요청 혹은 그의 일부에 첨부한다(3670).
가상화 모듈(137)은 쿠키로부터 영역 프리픽스를 추출 혹은 도출하며(전술한 바와 같이)(3680), 이를 단계 3670에서 첨부된 프리픽스 앞에 첨부한다. 요청 혹은 그의 일부의 경로는 이제 완성되고, 그러므로 모듈(137)은 수정된 요청을 웹 서버(145)로 보낸다(3690).
도 37은 완전히 자격을 갖춘 링크들을 처리하는 가상화 모듈(137)의 방법을 도시한 것이다. 가상화 모듈(137)은 개발 워크스테이션(110) 중 한 워크스테이션 상의 웹 브라우저 중 한 브라우저로부터 HTTP 요청을 받고(3710) 요청으로부터 URL 및 쿠키를 추출한다(3720).
이어서 가상화 모듈(137)은 완전히 자격을 갖춘 요청들에 대한 맵핑 규칙을 통해 탐색하여(3730), 요청이 맵핑 규칙의 정규표현과 일치하는지 여부를 판정한다. 일치하지 않으면, 요청은 그대로 웹서버로 보내진다(3780). 일치한다면, 가상화 모듈(137)은 맵핑 규칙에 따라 맵핑 규칙으로부터 나온 프리픽스를 요청 혹은 그의 일부에 첨부한다(3756).
가상화 모듈(137)은 쿠키로부터 영역 프리픽스를 추출 혹은 도출하고(전술한 바와 같이)(3760), 이를 단계 3750에서 첨부된 프리픽스 앞에 첨부시킨다(3770). 요청의 경로는 이제 완성되고 가상화 모듈(137)은 수정된 요청을 웹 서버(145)로 보낸다(3780).
가상화 모듈(137)은 외부 웹서버로부터 콘텐트를 동적으로 분할하게 한다. 경우에 따라선, 웹사이트는 시스템(100)에 의해 관리되지 않는 콘텐트를 포함할 수 있다. 경우에 따라선, 가상화 모듈(137)은 문서가 원래 탐색된 장소(예를 들면, 가시화 영역)에 없다면 문서요청을 동적으로 외부 웹서버로 경로를 변경할 수 있게 한다. 문서요청이 HTTP 에러 코드 '404 파일 찾을 수 없음'과 함께 돌아온다면, 가상화 모듈(137)은 맵핑 규칙을 탐색하고, 일치가 발견되면 맵핑 규칙에 따라 요청을 변경한다. 이어서 변경된 요청은 명시된 외부 목적지 웹서버로 보내진다.
가상화 모듈(137)은 또한 서로 다른 브랜치들로부터의 콘텐트의 동적 분할을 제공한다. 어떤 경우엔, 웹사이트 콘텐트는 개발의 서로 다른 브랜치들로 분리될 수 잇다. 이들 경우, 가상화 모듈(137)이 에러 코드 '404 파일 찾을 수 없음'을 받으면, 가상화 모듈(137)은 현존하는 문서 루트 프리픽스를 또 다른 브랜치의 문서 루트 프리픽스로 대치한다. 이어서, 변경된 요청은 웹서버(145)로 보내진다.
도 38은 동적인, 사이트 기반 혹은 브랜치 기반 분할을 수행하는 가상화 모듈의 동작을 도시한 것이다. 가상화 모듈(137)은 웹서버(145)로부터 HTTP 요청의 결과를 수신한다. 가상화 모듈은 요청된 문서가 발견되었는지 결과로부터 결정한다. 그러하다면, 가상화 모듈은 요청된 문서를, 가상화 모듈(137)에 요청을 원래 보냈던 웹 브라우저로 보낸다(3825). 문서가 발견되지 않는다면, 가상화 모듈은 웹 서버로 보내진 HTTP 요청 혹은 이의 일부가 규칙 중 어떤 규칙의 좌측과 일치하는지 여부를 판정하기(3840) 위해서 맵핑 규칙들을 탐색한다(3830). 그러하다면, 요청(3850)은 맵핑 규칙들에 따라 변경되고 적합한 웹서버로 보내진다(3860).
이 기술을 잘 아는 자들이 이해하는 바와 같이, 본 발명은 정신 혹은 이의 근본적인 특징에서 벗어나지 않고 다른 특정한 형태로 구현될 수 있다. 웹사이트 개발은 여기 개시된 발명들에 대한 많은 실제적인 응용 중 단지 하나이다. 여기 개시된 발명들에 대한 다른 응용들은 개발 소스 코드, 매체 파일(예를 들면, CD-ROM 멀티미디어), 매체 엔진, 등을 포함한다. 따라서, 본 발명의 개시된 바는 다음 청구범위에 설정된 본 발명의 범위를 예시하는 것이고 한정하는 것은 아니다.

Claims (6)

  1. 웹사이트 개발방법에 있어서,
    작업영역에서, 선택 객체를 편집하는 단계;
    상기 작업영역의 콘텐츠를 스테이지 영역에 제출하는 단계;
    상기 작업영역의 콘텐츠와 상기 스테이지 영역에 제출된 다른 콘텐츠를 통합하는 단계;
    상기 다른 콘텐츠가 상기 작업영역의 콘텐츠와 상충되는지 여부를 판정하는 단계; 및
    상기 다른 콘텐츠가 상기 작업영역의 콘텐트와 상충되지 않는 것에 응답하여, 상기 스테이지 영역의 콘텐츠를 웹사이트의 판(edition)으로 만드는 단계를 포함하는 웹사이트 개발방법.
  2. 파일관리 시스템에 있어서,
    사용자가 작업영역에서 파일들을 편집할 수 있게 하는 독출 및 기입 조작들을 구비한 파일 시스템인, 작업영역;
    독출 및 버전작업 조작을 구비하고 상기 작업영역의 콘텐츠를 수신하도록 된 파일 시스템인, 스테이지 영역; 및
    독출조작을 구비하고 상기 스테이지 영역의 콘텐츠를 수신하도록 된 파일 시스템인, 판 영역을 포함하는 파일관리 시스템.
  3. 제 2 항에 있어서, 복수의 작업영역을 더 포함하며, 상기 스테이지 영역은 2개 또는 그 이상의 복수의 작업영역의 콘텐츠를 받아 이들과 상충에 대해 체크하도록 된 파일관리 시스템.
  4. 복수의 파일 시스템을 구비한 시스템에서, 항목이 포함된 상기 파일 시스템들 각각에서 항목의 콘텐츠의 아이덴티를 유지하는 방법에 있어서,
    이력객체를 상기 항목에 연관시키는 단계; 및
    상기 항목이 포함된 각각의 파일 시스템에 대해, 상기 파일 시스템에서 상기 항목에 연관된 콘텐츠를 나타내는 상기 이력객체 내에 엔트리를 유지하는 단계를 포함하는 방법.
  5. 제 4 항에 있어서, 상기 복수의 파일 시스템들 중 한 시스템 내 상기 항목에 새로운 콘텐츠를 연관시키는 것에 응답하여, 상기 항목이 상기 새로운 콘텐츠를 갖는 것을 나타내도록 상기 파일 시스템에 대응하는 상기 이력객체 내에 엔트리를 변경하는 단계; 및
    상기 새로운 콘텐츠 내에 참조를 상기 이전의 콘텐츠에 부가하는 단계를 더 포함하는 방법.
  6. 제 5 항에 있어서, 상기 제 2 항목 내의 콘텐츠가 상기 항목의 이전 콘텐츠인지 여부를 판정함으로써 제 2 항목이 상기 항목과 상충되는지 여부를 판정하는 단계를 더 포함하는 방법.
KR1020007008540A 1998-02-04 1999-02-04 웹사이트 개발 시스템 및 방법 KR20010040666A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US7376698P 1998-02-04 1998-02-04
US09/244,333 1999-02-03
US09/244,333 US6505212B2 (en) 1998-02-04 1999-02-03 System and method for website development
US60/073,766 1999-02-03
PCT/US1999/002434 WO1999040509A2 (en) 1998-02-04 1999-02-04 System and method for website development

Publications (1)

Publication Number Publication Date
KR20010040666A true KR20010040666A (ko) 2001-05-15

Family

ID=26754864

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007008540A KR20010040666A (ko) 1998-02-04 1999-02-04 웹사이트 개발 시스템 및 방법

Country Status (14)

Country Link
US (1) US6505212B2 (ko)
EP (1) EP1053523B1 (ko)
JP (2) JP2002503000A (ko)
KR (1) KR20010040666A (ko)
CN (1) CN1318168A (ko)
AT (1) ATE223590T1 (ko)
AU (1) AU2583799A (ko)
BR (1) BR9908552A (ko)
CA (1) CA2319557A1 (ko)
DE (1) DE69902752T2 (ko)
DK (1) DK1053523T3 (ko)
ES (1) ES2183514T3 (ko)
PT (1) PT1053523E (ko)
WO (1) WO1999040509A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100452470B1 (ko) * 2002-03-04 2004-10-12 쉬프트정보통신 주식회사 인터넷 환경에서의 가우스 시스템 제어방법
KR100645965B1 (ko) * 2005-08-29 2006-11-14 삼성전자주식회사 호스트 장치 및 그의 데이터 관리방법

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5911145A (en) * 1996-07-29 1999-06-08 Rae Technology, Inc. Hierarchical structure editor for web sites
CA2692298C (en) * 1997-02-07 2014-10-28 About.Com, Inc. Collaborative internet data mining system
US7278098B1 (en) * 1997-04-09 2007-10-02 Adobe Systems Incorporated Method and apparatus for implementing web pages having smart tables
CN1176432C (zh) * 1999-07-28 2004-11-17 国际商业机器公司 提供本国语言查询服务的方法和系统
WO2001011486A2 (en) * 1999-08-05 2001-02-15 Oracle Corporation Internet file system
US8335775B1 (en) * 1999-08-05 2012-12-18 Oracle International Corporation Versioning in internet file system
US7779352B1 (en) * 1999-11-05 2010-08-17 John Underwood Method and apparatus for generating a website using a multi-dimensional description of the website
US7152207B1 (en) * 1999-11-05 2006-12-19 Decentrix Inc. Method and apparatus for providing conditional customization for generating a web site
US6701343B1 (en) * 1999-12-01 2004-03-02 Qwest Communications International, Inc. System and method for automated web site creation and access
US7107526B1 (en) * 2000-01-19 2006-09-12 Xerox Corporation Transparent injection of specific content into web pages viewed while browsing
US20010011275A1 (en) * 2000-01-31 2001-08-02 Benjamin Lin Distributive web page management system
AU2001250053A1 (en) * 2000-03-22 2001-10-03 Interwoven, Inc. Method and apparatus for automatically deploying data in a computer network
US20020035584A1 (en) * 2000-05-09 2002-03-21 Paul Scheier icFoundation web site development software and icFoundation biztalk server 2000 integration
JP2003533812A (ja) * 2000-05-17 2003-11-11 インターウォーヴェン インコーポレイテッド コンピュータ・ネットワークにおいてデータを自動的にディプロイし、および同時にコンピュータ・プログラム・スクリプトを実行するための方法および装置
US7054885B1 (en) * 2000-05-23 2006-05-30 Rockwell Collins, Inc. Method and system for managing the configuration of an evolving engineering design using an object-oriented database
US6873957B1 (en) * 2000-10-27 2005-03-29 Getthere, Inc. System and method for replicating web-sites
WO2002037273A2 (en) * 2000-10-31 2002-05-10 Loudcloud, Inc. Code deployment systems and methods
CN1582447A (zh) * 2001-03-14 2005-02-16 美国联合包裹服务公司 通过网络启动退货的系统和方法
US7200627B2 (en) * 2001-03-21 2007-04-03 Nokia Corporation Method and apparatus for generating a directory structure
US20030033378A1 (en) * 2001-05-18 2003-02-13 Fred Needham Method and apparatus for automatically creating and dynamically managing websites
US7325193B2 (en) * 2001-06-01 2008-01-29 International Business Machines Corporation Automated management of internet and/or web site content
US10115062B2 (en) 2001-07-13 2018-10-30 1175856 Ontario Ltd. System and method for facilitating development of customized website projects
US20030105758A1 (en) * 2001-12-05 2003-06-05 International Business Machines Corporation System and method for testing and promoting database update code
CA2365372A1 (en) * 2001-12-18 2003-06-18 Ibm Canada Limited-Ibm Canada Limitee Method and apparatus for editing a production data store by shadowing content
CN1307545C (zh) * 2002-12-24 2007-03-28 鸿富锦精密工业(深圳)有限公司 面向对象的商业网站架设系统
WO2004061613A2 (en) * 2002-12-30 2004-07-22 Freydl, Mark Web-site development tool
US7240077B1 (en) 2002-12-30 2007-07-03 Amazon.Com, Inc. Web site content change management
US9754038B2 (en) 2003-02-05 2017-09-05 Open Text Sa Ulc Individually deployable managed objects and system and method for managing the same
US7421418B2 (en) * 2003-02-19 2008-09-02 Nahava Inc. Method and apparatus for fundamental operations on token sequences: computing similarity, extracting term values, and searching efficiently
US7840614B2 (en) 2003-02-20 2010-11-23 Bea Systems, Inc. Virtual content repository application program interface
JP2004280283A (ja) * 2003-03-13 2004-10-07 Hitachi Ltd 分散ファイルシステム、分散ファイルシステムサーバ及び分散ファイルシステムへのアクセス方法
JP4320195B2 (ja) 2003-03-19 2009-08-26 株式会社日立製作所 ファイルストレージサービスシステム、ファイル管理装置、ファイル管理方法、id指定型nasサーバ、および、ファイル読出方法
US7373594B1 (en) 2003-04-30 2008-05-13 Amazon.Com, Inc. Managing the release of electronic content using a template without version logic
US8005925B1 (en) * 2003-10-17 2011-08-23 Adobe Systems Incorporated Live-server content staging
US7328217B2 (en) * 2003-11-26 2008-02-05 Symantec Operating Corporation System and method for detecting and storing file identity change information within a file system
JP4396242B2 (ja) * 2003-11-28 2010-01-13 富士ゼロックス株式会社 文書リンク構造情報作成装置及び方法
US20050149549A1 (en) * 2003-12-31 2005-07-07 Jos Jaspers Content management in web environments
US20050234921A1 (en) * 2004-02-18 2005-10-20 Raymond King System and method for automatic domain-name registration and web publishing
US20050228816A1 (en) * 2004-04-13 2005-10-13 Bea Systems, Inc. System and method for content type versions
US20050251503A1 (en) * 2004-04-13 2005-11-10 Bea Systems, Inc. System and method for content and schema versioning
US20060041558A1 (en) * 2004-04-13 2006-02-23 Mccauley Rodney System and method for content versioning
US20050256859A1 (en) * 2004-05-13 2005-11-17 Internation Business Machines Corporation System, application and method of providing application programs continued access to frozen file systems
US20060074904A1 (en) * 2004-09-30 2006-04-06 Mungara Ajay M Content delivery rendering engine
US7921076B2 (en) 2004-12-15 2011-04-05 Oracle International Corporation Performing an action in response to a file system event
US7627649B2 (en) * 2005-09-09 2009-12-01 At&T Intellectual Property I, L.P. Information submission tool for website development
US7970743B1 (en) 2005-09-15 2011-06-28 Emc Corporation Retention and disposition of stored content associated with multiple stored objects
US8949455B2 (en) 2005-11-21 2015-02-03 Oracle International Corporation Path-caching mechanism to improve performance of path-related operations in a repository
US7594082B1 (en) 2006-03-07 2009-09-22 Emc Corporation Resolving retention policy conflicts
US7814063B1 (en) 2006-03-07 2010-10-12 Emc Corporation Retention and disposition of components of a complex stored object
US7818300B1 (en) 2006-03-07 2010-10-19 Emc Corporation Consistent retention and disposition of managed content and associated metadata
US7849030B2 (en) * 2006-05-31 2010-12-07 Hartford Fire Insurance Company Method and system for classifying documents
US7801862B1 (en) * 2006-09-29 2010-09-21 Emc Corporation Retention of complex objects
US8972939B1 (en) * 2007-04-13 2015-03-03 United Services Automobile Association (Usaa) Systems and methods for processing and producing content for web sites
US7739547B2 (en) * 2007-06-07 2010-06-15 International Business Machines Corporation Failure recovery and error correction techniques for data loading in information warehouses
US8949564B2 (en) 2007-08-06 2015-02-03 Apple Inc. Staging electronic publications
EP2179375A1 (en) * 2007-08-24 2010-04-28 Opnet Technologies, Inc. Verifying data consistency among multiple structured files
US9258385B2 (en) * 2007-09-25 2016-02-09 Infineon Technologies Ag Method for loading a program module into a network device and network with network devices
JP2009187136A (ja) * 2008-02-04 2009-08-20 Fujitsu Ltd 電子ファイル管理装置および電子ファイル管理方法
CA2720897C (en) 2008-04-28 2015-06-30 Salesforce.Com, Inc. Object-oriented system for creating and managing websites and their content
US8806353B2 (en) * 2008-04-30 2014-08-12 Beyondvia Technologies Mobile electronic communications dialog using sequenced digital images
US8769423B2 (en) 2008-04-30 2014-07-01 Beyondvia Technologies Content distribution systems and methods using digital images
US8074176B2 (en) * 2008-04-30 2011-12-06 Beyondvia Technologies, Llc Electronic communications dialog using sequenced digital images stored in an image dictionary
US10304126B2 (en) 2008-04-30 2019-05-28 Beyondvia Technologies Visual communication systems and methods designing and building entire experiences
US9310980B2 (en) 2012-08-21 2016-04-12 Beyondvia Technologies Systems and methods for performance comparisons utilizing an infinite cylinder user interface
US9305026B2 (en) 2008-04-30 2016-04-05 Beyondvia Technologies Systems and methods for digital images utilizing an infinite cylinder user interface
US20110145728A1 (en) * 2009-12-16 2011-06-16 Monika Bishop Rich content manager (rcm)
US20110202384A1 (en) * 2010-02-17 2011-08-18 Rabstejnek Wayne S Enterprise Rendering Platform
US20120072449A1 (en) * 2010-09-17 2012-03-22 Microsoft Corporation Object instance versioning
US9223892B2 (en) 2010-09-30 2015-12-29 Salesforce.Com, Inc. Device abstraction for page generation
US9560130B2 (en) * 2010-09-30 2017-01-31 Microsoft Technology Licensing, Llc Presenting availability statuses of synchronized objects
US8935360B2 (en) 2010-12-03 2015-01-13 Salesforce.Com, Inc. Techniques for metadata-driven dynamic content serving
CN102541868A (zh) * 2010-12-15 2012-07-04 苏州荣盈科技有限公司 一种网站文件管理的操作方法
US8700985B2 (en) * 2011-06-20 2014-04-15 Google Inc. Collecting user feedback about web pages
US9819570B2 (en) * 2013-10-09 2017-11-14 International Business Machines Corporation Dynamic symbolic links for referencing in a file system
US9292482B1 (en) 2015-04-30 2016-03-22 Workiva Inc. System and method for convergent document collaboration
US10325014B2 (en) 2015-04-30 2019-06-18 Workiva Inc. System and method for convergent document collaboration
US20190129974A1 (en) * 2017-10-31 2019-05-02 Delta Pds., Ltd. Folder-based file management device and method
US11755825B2 (en) 2019-09-12 2023-09-12 Workiva Inc. Method, system, and computing device for facilitating private drafting
US11100281B1 (en) 2020-08-17 2021-08-24 Workiva Inc. System and method for maintaining links and revisions
US11443108B2 (en) 2020-08-17 2022-09-13 Workiva Inc. System and method for document management using branching
CN112363990A (zh) * 2020-11-09 2021-02-12 北京磨刀刻石科技有限公司 一种设计文件在线版本管理方法及装置
US11100277B1 (en) 2021-02-15 2021-08-24 Workiva Inc. Systems, methods, and computer-readable media for flow-through formatting for links
US11354362B1 (en) 2021-05-06 2022-06-07 Workiva Inc. System and method for copying linked documents
US11640495B1 (en) 2021-10-15 2023-05-02 Workiva Inc. Systems and methods for translation comments flowback

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0229232A2 (en) 1985-12-31 1987-07-22 Tektronix, Inc. File management system
US5220657A (en) * 1987-12-02 1993-06-15 Xerox Corporation Updating local copy of shared data in a collaborative system
US5008853A (en) * 1987-12-02 1991-04-16 Xerox Corporation Representation of collaborative multi-user activities relative to shared structured data objects in a networked workstation environment
JPH0540757A (ja) * 1991-01-28 1993-02-19 Fujitsu Ltd 文書処理装置
US5193180A (en) 1991-06-21 1993-03-09 Pure Software Inc. System for modifying relocatable object code files to monitor accesses to dynamically allocated memory
JPH0561657A (ja) * 1991-09-04 1993-03-12 Pfu Ltd プログラム編集方式
JPH0588867A (ja) * 1991-09-27 1993-04-09 Toshiba Corp ソフトウエア構成管理方式
US5515491A (en) * 1992-12-31 1996-05-07 International Business Machines Corporation Method and system for managing communications within a collaborative data processing system
US5649200A (en) 1993-01-08 1997-07-15 Atria Software, Inc. Dynamic rule-based version control system
US5574898A (en) 1993-01-08 1996-11-12 Atria Software, Inc. Dynamic software version auditor which monitors a process to provide a list of objects that are accessed
US5659747A (en) 1993-04-22 1997-08-19 Microsoft Corporation Multiple level undo/redo mechanism
JPH07182369A (ja) * 1993-12-24 1995-07-21 Matsushita Electric Ind Co Ltd 文書ファイル管理装置及び文書統合装置並びに文書管理システム
US5675802A (en) 1995-03-31 1997-10-07 Pure Atria Corporation Version control system for geographically distributed software development
JP2972548B2 (ja) * 1995-05-23 1999-11-08 東北日本電気ソフトウェア株式会社 ファイル管理方式
JPH09138793A (ja) * 1995-11-14 1997-05-27 Matsushita Electric Ind Co Ltd ハイパーテキスト作成装置
JPH09330211A (ja) * 1996-04-12 1997-12-22 Fujitsu Ltd ソフトウェア生産物の構成管理システムおよび分散共有管理システム
US6151609A (en) * 1996-08-16 2000-11-21 Electronic Data Systems Corporation Remote editor system
US6240444B1 (en) * 1996-09-27 2001-05-29 International Business Machines Corporation Internet web page sharing
US6233600B1 (en) * 1997-07-15 2001-05-15 Eroom Technology, Inc. Method and system for providing a networked collaborative work environment
US6230185B1 (en) * 1997-07-15 2001-05-08 Eroom Technology, Inc. Method and apparatus for facilitating communication between collaborators in a networked environment
US6240414B1 (en) * 1997-09-28 2001-05-29 Eisolutions, Inc. Method of resolving data conflicts in a shared data environment
US6018747A (en) * 1997-11-26 2000-01-25 International Business Machines Corporation Method for generating and reconstructing in-place delta files

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100452470B1 (ko) * 2002-03-04 2004-10-12 쉬프트정보통신 주식회사 인터넷 환경에서의 가우스 시스템 제어방법
KR100645965B1 (ko) * 2005-08-29 2006-11-14 삼성전자주식회사 호스트 장치 및 그의 데이터 관리방법

Also Published As

Publication number Publication date
ATE223590T1 (de) 2002-09-15
DE69902752D1 (de) 2002-10-10
AU2583799A (en) 1999-08-23
DK1053523T3 (da) 2003-01-06
JP2009009590A (ja) 2009-01-15
EP1053523A2 (en) 2000-11-22
US20020049697A1 (en) 2002-04-25
DE69902752T2 (de) 2003-06-05
CA2319557A1 (en) 1999-08-12
WO1999040509A2 (en) 1999-08-12
CN1318168A (zh) 2001-10-17
ES2183514T3 (es) 2003-03-16
PT1053523E (pt) 2003-01-31
WO1999040509A3 (en) 1999-11-25
JP2002503000A (ja) 2002-01-29
BR9908552A (pt) 2001-10-16
US6505212B2 (en) 2003-01-07
EP1053523B1 (en) 2002-09-04

Similar Documents

Publication Publication Date Title
EP1053523B1 (en) System and method for website development
US6792454B2 (en) System and method for website development
US20080005164A1 (en) System and method for website development involving journaling and parent maps replacement
US5778389A (en) Method and system for synchronizing computer file directories
US8015156B2 (en) Systems and methods for a snapshot of data
US7533136B2 (en) Efficient implementation of multiple work areas in a file system like repository that supports file versioning
US7788303B2 (en) Systems and methods for distributed system scanning
US7299450B2 (en) Undoing changes in a software configuration management system
US7152224B1 (en) Versioned project associations
US20070101256A1 (en) Perfect source control
US20070112960A1 (en) Systems and methods for removing duplicate search engine results
EP1422901A1 (en) Client driven synchronization of file and folder content in web publishing
JP3450786B2 (ja) 異なるデータファイルを調停する方法
EP1480130B1 (en) Method and apparatus for moving data between storage devices
JP4136267B2 (ja) 文書管理方法およびその方法を実施するためのプログラムを記憶した記憶媒体および文書管理装置
JPH0550774B2 (ko)
Sarin et al. A flexible algorithm for replicated directory management
EP1235146A2 (en) System and method for website development
MXPA00007625A (en) System and method for website development
JPH07271569A (ja) プログラム仕様書作成システム
US8452823B2 (en) Method for coordinating relationships between multiple physical entities
Hancock Tru64 Unix file system administration handbook
Avagyan et al. The CLAS Calibration Database
CN101142572A (zh) 涉及日志和父映象替换的网站开发

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid