用符號連結取代引用的文件

用符號連結取代引用的文件

我正在使用一個 git 儲存庫,其中包含需要符號連結到另一個資料夾內的文件和資料夾的文件和資料夾。所有符號連結都在第二個項目資料夾中被引用為文字。我只是想知道如何完成並自動設定所有符號連結。

結構範例

project1/

---- myfile.rb

---- myfolder/

project2/

---- myfile.rb

---- myfolder


並在文件中專案2/myfile.rb它只包含第 1 行的以下文字。

../project1/myfile.rb

項目2/我的資料夾僅包含文本

../project1/myfolder

這在整個文件結構中重複出現。另一個例子是

項目2/app.rb有文字

../project2/app.rb

我在 Ubuntu 上,認為有一種方法可以自動檢查這些並設置符號鏈接,而不是手動查找每個符號鏈接。

答案1

git 無法對符號連結進行版本控制,因此請考慮對符號連結而非此類檔案進行版本控制。另外,您可能需要考慮 git 子模組,以便兩個儲存庫之間存在實際關係。

如果我的問題/設定正確,這可能會成功。它在行數為 1 的資料夾中(遞歸地)搜尋文件./project2,並用指向其中指定文件的連結替換每個文件(假設目標存在)。

#!/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

這不是遞歸的,因此它不會查看子目錄。

相關內容