1.Content and File Mangement(wikis)

主要讨论文件管理和版本控制,以cvs,svn和git为主,wikis的文件管理模式为补充

2.版本控制要解决的问题:

  - Access control

  - concurrent access

  - update conflict

  - error handling

  - remote editing

  - versioning

  - recovery of old version

  - time-dependent publication

3. Revision control systems

  software for management and monitoring document and software revision. Primarily concerned with recovery of former revisions, storing, versioning and locking of project files or directories.

  修复管理系统负责管理文档和软件的修订。主要关注于恢复历史版本,保存,版本控制以及对项目文件和文档的访问控制。主要有CVS,SVN,Git为版本

4. Categories of Revision Control Systems

  - Local Version Control

  - Centralized Version Control Systems

  - Decentralized Version Control Systems

   首先就结构上而言,local version control顾名思义就是local version database,Centralized version control systems就是有个central version database server 提供中心化的版本控制,参与者只能导出version; decentralized version control systems 就是去中心化的版本控制,提供版本交换。

5. CVS(concurrent versions system)

  - 结构上CVS是中心化的版本控制,centralized version control.

  - component:

    - repository (仓库):

      - central storage for all raw files which are under RC

       (首先中心仓库管理所有raw files )

      - each raw file is converted to a history file(*,v) that contains recovery        information and the concurrent revision

       (所有raw files 被转换成历史版本,携带了历史恢复信息和当前版本)

      - Provides a "CVSROOT" directory containing additional meta-information

      (提供了CVSROOT包含了meta-information)

    - Sandbox(沙箱):

      - a working directory containing specific checked-out revisions

      (一个工作目录包含特别的检出版本)

      - a sandbox is created by the "cvs checkout" command, thereby specific revisions        of raw files are created with the help of the history files

      (工作目录是由checkout命令,因此特定的检出文件在历史文件下被创造)

 

      - every directory in a CVS-Sandbox has a "CVS" directory, which contains        management files providing e.g. information about current revision number or        checked-out time 

(每个文件夹在工作目录下都有一个cvs文件夹,包含了管理文件提供了当前修订版本,检出时间)

  - selected mechanism

    - versioning(分配版本号当有改动,历史文档的存在可以有利于客户端检出各种版本,入和出)

       - Allocation of revision numbers for every modification of a source file which is         registered in the repository by the "cvs commit" command

       - due to the history information containing in history files all revisions are         available and accessible, thereby clients can load various revisions from the         repository(via "cvs checkout" or "cvs export" methods - same effect like         checkout but no mangament files are created)

    - merging (冲突出现需要手动处理)

       - is a mechanism for joining two different revisions of the same file(if the same         line are edited a conflict occurs that has to be solved by the developers         manually)

       - The "cvs update" proofs whether new revisions exist in the repository and, if         this is the case, tries to merge these different revisions.

    - tagging

        - provides a possiblity for creating a kind of symbolic linkage of various files          and their revisions

        - it is necessary to create a tag(e.g. release_1_0) on a particular revision of a          file

        - it is possible to checkout concrete tagged revisions annotated(注解)by          these meaningful tags

        - each tag is unique within a history file

    - locking 

        - cvs provides a way to set an explicit commit lock on a revision and while          the commit lock is active other users are not able to commit a revision of          the particular file

    - branching 

        - cvs tag -b branch1

        - cvs update -j (merge branch and master)

  - central shortcomings:

    - not support directory versioning,

    - commit is not atomic: is run for every file separately and when there is conflict       regarding one file, other files are commited beside the file contianing the conflict,       so inconsistent repository state 

    - No self-defined properties(metadata information)

    - management of tags and branches is difficult and resource intensive 

    - no efficient storing of binary files

 

5. SVN subversion system

  to solve shortcomings of cvs

  - tags and branches

    - realised by copying the revisions to an extra folder

      - the "svn copy" method does not copy the files physically to a folder- reference        to the original data is created

      - files and dictories can be copied

      - if a copy is modified, only the differences are stored.

6. Git

  - decentralized version control system

  - optimized for nonlinear development and branching

  - Typical variants of version control systems realise versions by tracking changes to an    original version of each file

  - create with every commit a new snapshot of the versioned files: and use SHA! hash of     concatenated hashes of versioned files are used as identifiers

  - link to previous file, if files are not changed, a link to previous file is stored

  - Branching

    - a branch in git is a reference to a snapshot

    - every branch has a name. The main branch is named "master". One brach is always     the active one = marked by the head reference

    -git branch bugfix

    - git checkout bugfix(bugfix is activated)

    - git commit (commit changes to active branch)

  -merging

    - merging is done into the active branch:

    - git checkout master

    - git commit 

    - git merge bugfix (merge bugfix into active branch)

  - remote branches

    contains remote canonical project repository

    - git clone user@somedomain.com/repo.git

    local repository, two branching

    - origin/master  and the master branch are pointing to the origin's master branch

    - git fetch

    changes done by others in the remote repository can be transferred to the local     repository via the Git command "fetch"

  - distributed workflows

    - git enables distributed software development workflows with several hierarchical      levels

7. Content

  - content basically consists out of three components:

    - structure information

      - defines the composition, sequence and encapsulation of raw data

    - data raw

      - composed according to the structure

    - layout information 

      - formal specification for presentation on a potential output medium

  - content lifecycle - cms functionalities

    - creation(authoring, authentication, check-in/check-out, WYSIWYG, Multi-user     ability)

    - Organissation(user management, workflow/quality protection, page integrity/link     management, log functionality)

    - publishing(presentation, personalisartion, multi-channel-output, portal function)

    - archiving(retrieval, backup/rollback,version management)

    - content phase: deals with collection, creation and editing or the content

    - organisation phase: deal with quality check and clearing of the content for       publication

    - publication phase: deals with publication of the content in intra- or internet

    - archiving phase: after removing the content from the network, content can be stored      in the content repository for documentation purpose or future usage

 

    

  -example for a widespread CMS: TYPO3

    - for configuration of TYPO3 TypoScript is used 

      - TypoScript is a declarative language

      - conversion of typoscript into html by php logic

      - area of application:

        - designing+integration of templates(front-end = publish web site)

          -pure ts-template

          - html-template +TS

        - configuration of the back-end(administration + content mangement area)

          - user/user group properties(User TSConfig)

          - page properties(page TSConfig)

    - separation of structure, layout and raw data  

      - PAGE object builds a framework for embedding further content

      - content object array is created and put to position 20 of the page

      - COA is wrapped into HTML table row elements

      - Abbreviatory syntax for assigning values to positions

      - After creating an image object a file is associated with it

 

8. Wikis

  - software systems that allow users to easily generated, interconnect, edit pages and that   can be used to create collaborative web site

  - support basic features of CMS

    - separation of structure, layout and raw data

    - integrated editing functionality

    - version management, history mechanism, retrieval of former versions

  - provide often special wiki syntax for formatting purposes and link creation

  - can be used as a means for group communication

  - various wiki engines available

  - semantic wikis

   - enable encoding of semantic data within regular wiki pages

   - provide possiblities to annotate pages with meaningful relations to other pages and     with attributes

   - data can be used for semantic search (inline querying tools are available)

   - provide RDF export functionality

  "subject"+"predicate"+"object"