繁体   English   中英

clearcase:在所有视图中仅备份修改后的检出元素

[英]clearcase: Backup for only modified checked-out elements in all views

对我们来说,对所有视图中修改后的检出元素进行常规的高效率备份将是一件好事,因为每日备份策略中无法包含大量已定义的动态/快照视图。

以下ksh代码接近于动态视图所需的内容,但它简单地假定config-spec文件中该视图的第一行始终始终首先选择检出的元素(* element * CHECKEDOUT *)。 一般来说,它不能很好地工作。

对于视图中的每个版本控制文件,我们希望将其与为该视图选择的VOB中最后一个对应的版本控制元素不同时才将其添加到备份列表中。 (仅在视图中已开发)。

[该解决方案也必须对快照视图有效]

for CHECKEDOUT_FILE_IN_THE_VIEW in $( /usr/atria/bin/cleartool lsco -cview -avobs -short  )
do

  VERSIONED_FILE_NAME=$( /usr/atria/bin/cleartool describe -short ${CHECKEDOUT_FILE_IN_THE_VIEW} \
                        | sed -e's/CHECKEDOUT/LATEST/' )

    if [ -f ${VERSIONED_FILE_NAME} ]; then

       if [ -f ${CHECKEDOUT_FILE_IN_THE_VIEW} ]; then

        diff -b ${CHECKEDOUT_FILE_IN_THE_VIEW}  ${VERSIONED_FILE_NAME} > /dev/null

        if [ $? -ne 0 ]; then

           ##-- The checked-out file in the view is different from the corresponding
           ##-- versioned element in the VOB. So it has to be added to the backup list.

           echo "${VERSIONED_FILE_NAME}" >> ${F_LOG}
        fi
       fi
    fi

 done

有任何想法吗) ?。 TIA。 哈维尔C.

坦白地说,对于动态视图,一种更简单的备份策略是仅压缩和备份与所述动态视图关联的视图存储(在' cleartool endivew -server aDynViewTag ):

  • 所有签出的文件和私有文件都存储在视图存储中(仅用于动态视图)
  • 但它不会考虑已签出的文件(与版本对应的文件相比),但尚未进行任何修改。

如果您需要动态视图和快照视图的通用解决方案,则可以参考:
' 如何使用ClearCase cleartool查找所有检出的文件? ”(您正在使用的“ cleartool lsco ”),但是您无需计算最新版本即可创建基于系统的差异。
您可以简单地:

cleartool diff -pred ${CHECKEDOUT_FILE_IN_THE_VIEW}

如果检出的版本与其先前版本之间存在任何修改,它将返回一些内容(对于快照或动态视图中的版本)。
参见cleartool diff

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM