我需要看看兩個目錄中包含不同版本的軟件源代碼之間發生了什麼變化。雖然我找到了獲取唯一.diff文件的方法,但是如何爲兩個目錄中的每個更改文件獲取不同的文件?我需要這個,因爲「主」大約是6MB,並且想要一些更方便的東西。比較兩個目錄與每個文件單獨的差異輸出
0
A
回答
0
如果你想比較源代碼,最好把它提交給源代碼程序作爲「svn」。
完成之後。做您上傳的代碼和管道DIFF它file.diff
svn diff --old svn:url1 --new svn:url2 > file.diff
1
我來解決這個問題了,所以我結束了一個shell腳本的一些線路。它有三個參數:輸出的源和目標目錄(用於diff)和目標文件夾(應該存在)。
這有點不好意思,但也許對某人有用。所以請小心使用,特別是如果您的路徑有特殊字符。
#!/bin/sh
DIFFARGS="-wb"
LANG=C
TARGET=$3
SRC=`echo $1 | sed -e 's/\//\\\\\\//g'`
DST=`echo $2 | sed -e 's/\//\\\\\\//g'`
if [ ! -d "$TARGET" ]; then
echo "'$TARGET' is not a directory." >&2
exit 1
fi
diff -rqN $DIFFARGS "$1" "$2" | sed "s/Files $SRC\/\(.*\?\) and $DST\/\(.*\?\) differ/\1/" | \
while read file
do
if [ ! -d "$TARGET/`dirname \"$file\"`" ]; then
mkdir -p "$TARGET/`dirname \"$file\"`"
fi
diff $DIFFARGS -N "$1/$file" "$2/$file" > "$TARGET"/"$file.diff"
done
0
bash for循環將適用於您。以下將使用C源代碼來區分兩個目錄,併爲每個文件生成一個單獨的diff。
for FILE in $(find <FIRST_DIR> -name '*.[ch]'); do DIFF=<DIFF_DIR>/$(echo $FILE | grep -o '[-_a-zA-Z0-9.]*$').diff; diff -u $FILE <SECOND_DIR>/$FILE > $DIFF; done
使用正確的補丁級別爲開頭的行+++
相關問題
- 1. 比較2個目錄,並顯示每個文件的差異
- 2. 比較兩個文本文件並找出差異
- 3. 比較兩個單獨的文檔VBA
- 4. 用文件比較兩個目錄,然後在另一個文件中給出結果差異。C#
- 5. 來自兩個不同目錄的兩個文件的差異
- 6. Git:比較兩個提交的差異
- 7. 比較兩個SQLite表的差異
- 8. 比較兩個表格的差異
- 9. 比較兩個查詢結果與輸出差分
- 10. 比較兩個表與輸出差分 - T-SQL
- 11. 差異文件只比較每行的前n個字符
- 12. 比較兩個表來檢查差異
- 13. 比較兩個NSDictionaries並查找差異
- 14. 比較兩個文本文件並僅保存第二個文件的差異
- 15. 比較兩個文件,並保存在Linux的差異
- 16. 比較兩個文件的內容,顯示差異
- 17. 比較兩個CSV文件的列並刪除差異
- 18. 比較兩個時間戳每分鐘的差異?
- 19. 如何比較兩個unix命令的輸出以找出差異?
- 20. 在Clojure中的兩個單獨目錄中列出文件
- 21. 如何比較兩個文件並提取差異?
- 22. 比較兩個xml文件並獲得差異
- 23. 比較兩個csv文件並發現差異
- 24. Python程序比較兩個文件以顯示差異
- 25. 如何比較兩個css文件並僅複製差異?
- 26. 兩個ArrayLists中的項目比較和返回差異
- 27. shell腳本比較兩個文件並將差異寫入第三個文件
- 28. 比較XML文件並生成僅包含差異的輸出
- 29. 的Python:比較兩個CSV文件,並打印出來,我需要比較兩個CSV文件,並打印出第三CSV文件的不同差異
- 30. Python 3.6:比較兩個大gzipped csv文件和獲取差異記錄
我使用Git這樣做是因爲我沒有SVN安裝。問題是我想要一種方法來爲每個不同的文件獲取一個.diff,而不是全局的.diff。無論如何,我會處理整個文件,因爲顯然沒有解決方案。 – LeoTh3o 2013-03-07 18:37:33