Unix 如何在Clearcase中合并两个目录? 1目录有2个文件:test1.c,test2.c 2目录有0个文件

Unix 如何在Clearcase中合并两个目录? 1目录有2个文件:test1.c,test2.c 2目录有0个文件,unix,version-control,clearcase,Unix,Version Control,Clearcase,如何使用“merge”(合并)仅将test1.c复制到第二个目录中。首先,目录必须相同,位于两个不同的分支中(或者在这种情况下,您不会谈论合并,只需复制文件) 其次,如果您在两个分支之间的两个版本的上述目录之间合并该目录,您将得到test1.c和test2.c。。。空。 这是因为合并一个文件夹是不够的:只更新文件列表,而不更新该文件夹中文件的内容 递归合并(文件夹和其中的所有内容)最简单的方法是使用命令(对于ClearCase 7.x,在ClearTeam 8.x之前)。 见“” 合并始终在目标

如何使用“merge”(合并)仅将
test1.c
复制到第二个目录中。

首先,目录必须相同,位于两个不同的分支中(或者在这种情况下,您不会谈论合并,只需复制文件)

其次,如果您在两个分支之间的两个版本的上述目录之间合并该目录,您将得到
test1.c
test2.c
。。。空。
这是因为合并一个文件夹是不够的:只更新文件列表,而不更新该文件夹中文件的内容

递归合并(文件夹和其中的所有内容)最简单的方法是使用命令(对于ClearCase 7.x,在ClearTeam 8.x之前)。
见“”

合并始终在目标视图中执行,因此转到在右侧目标分支中选择文件夹的视图(该文件夹目前仍然为空):

注意:如果是,则必须在启动合并之前


在完成合并之前(即在签入所有内容之前),您将能够删除(
cleartool rmname test2.c
)您不想要的文件。

下面是一个在linux(bash)中合并2个目录的快速而肮脏的解决方案

merge.sh:

#!/bin/bash

# params
source="$1"
target="$2"

# prog
IFS="
"
if [[ ! -d $source ]]; then
  echo "sourcedir not exists!"
  exit 1
fi

[[ ! -d $target ]] && mkdir -p $target

cutlength=${#source}

for o in `find $source -type d`; do
  dir="${o:$cutlength}"
  newdir="$target$dir"
  [[ ! -d "$newdir" ]] && mkdir -p ${newdir}
done

for o in `find $source -type f`; do
  file="${o:$cutlength}"
  newfile="$target$file"
  [[ ! -f "$newfile" ]] && cp ${o} ${newfile}
done

我写它只是为了把两个目录合并在一起,而且效果很好。它真的很脏而且几乎没有安全代码。所以请小心复制粘贴

非常感谢。但通过这种方式,我在第二个分支中得到了两个文件。我只需要一个文件。@user3616393您可以在合并完成之前删除它。请参阅我编辑的答案。@VonC您所说的…/sourceBranch是什么意思/LATEST@yanivx带有三个点的语法表示:“
../subbranch
”后面跟有
/subbranch
的任何分支。您可以看到它在中使用。
#!/bin/bash

# params
source="$1"
target="$2"

# prog
IFS="
"
if [[ ! -d $source ]]; then
  echo "sourcedir not exists!"
  exit 1
fi

[[ ! -d $target ]] && mkdir -p $target

cutlength=${#source}

for o in `find $source -type d`; do
  dir="${o:$cutlength}"
  newdir="$target$dir"
  [[ ! -d "$newdir" ]] && mkdir -p ${newdir}
done

for o in `find $source -type f`; do
  file="${o:$cutlength}"
  newfile="$target$file"
  [[ ! -f "$newfile" ]] && cp ${o} ${newfile}
done