我有一个正在使用的 git repo,其中包含需要符号链接到另一个文件夹内的文件和文件夹的文件和文件夹的文件和文件夹。所有符号链接都以文本形式引用在第二个项目文件夹中。我只是想知道如何浏览并自动设置所有符号链接。
示例结构
project1/
---- myfile.rb
---- myfolder/
project2/
---- myfile.rb
---- myfolder
并在文件中project2/myfile.rb它仅包含第一行的以下文本。
../project1/myfile.rb
和项目2/我的文件夹仅包含文本
../project1/myfolder
整个文件结构都会重复这一过程。另一个示例是
项目2/应用程序.rb有文本
../project2/app.rb
我在使用 Ubuntu,我认为有一种方法可以自动地浏览这些内容并设置符号链接,而不是手动查找每一个。
答案1
git 无法对符号链接进行版本控制,因此请考虑对符号链接进行版本控制,而不是对此类文件进行版本控制。此外,您可能还需要考虑 git 子模块,以便两个存储库之间存在实际关系。
如果我理解了你的问题/设置,这个可能会奏效。它会./project2
在行数为 1 的文件夹中搜索(递归)文件,并将每个文件替换为指向其中命名的文件的链接(假设目标存在)。
#!/bin/bash
for file in $(find project2/ -type f )
do
linecount=$(wc -l $file | awk '{print $1}')
if [ $linecount -eq 1 ]; then
target=$(cat $file)
relTarget=$(dirname $file)/$target
if [ -f $relTarget ] || [ -d $relTarget ]; then
rm $file
ln -s $target $file
fi
fi
done
答案2
从目录内运行以下命令project2
:
for file in *; do
link="$(cat "$file")"
rm "$file"
ln -s "$link" "$file"
done
这不是递归的,所以它不会查看子目录。