我在本地repo中添加了一些更改並運行svn diff
,但diff
輸出爲空。 但svn status
將我的文件標記爲已修改。這是文件是外部項目,我怎麼能用這個命令使用diff
命令?svn diff不顯示修改的外部文件
5
A
回答
3
這裏是the manual報價:
除了svn籤,SVN更新,SVN切換和SVN出口命令,它實際上管理脫節(或斷開)子目錄外部檢查被檢出,svn狀態命令也識別外部定義。它爲不相交的外部子目錄顯示狀態碼X,然後遞歸到這些子目錄中以顯示外部項目本身的狀態。您可以將--ignore-externals選項傳遞給任何這些子命令以禁用外部定義處理。
可以從上面推論出只有上述命令支持外部。
我不知道爲什麼會這樣,但我的直覺是設計正確並且在功能列表上並不高。
1
你需要使用外部程序來完成它。我寫了這個腳本,似乎很好地完成了這項工作。
<?php
passthru('svn diff');
exec('svn propget svn:externals',$externals);
foreach($externals as $line) {
list($local, $path) = explode(' ',$line);
passthru('svn diff '.$local);
}
?>
1
這是合乎邏輯的,因爲原因是SVN狀態表示相對於軀幹的最後修訂狀態。這意味着您的本地沒有更新到中繼線上的最後一個修訂版本。通過採取SVN信息,你會看到
Path: /home/....
Working Copy Root Path: /home/trunk
URL: https://svn.***.**/trunk
Repository Root: https://svn.***.**/
Repository UUID:
Revision: **LAST_UPDATED_REVISION_Nr**
然而,SVN DIFF顯示您LAST_UPDATED_REVISION_Nr本地文件和文件情況之間的差異。爲了看到關於區別的最後修訂主幹:
svn diff -rHEAD address_of_your_file
1
您可以使用此外殼一行代碼:
svn st -q | grep '^[AM]' | cut -c9- | xargs svn diff
說明:
svn st -q
需要輸出SVN狀態沒有額外的行(「安靜」)。grep '^[AM]'
過濾器添加和修改的文件。cut -c9-
將元數據剪掉並進一步傳遞路徑。xargs svn diff
爲每個文件運行svn diff
。
相關問題
- 1. tortoisegit diff顯示未修改的文件
- 2. SVN post-commit hook修改外部文件
- 3. 顯示整個文件的Git diff命令被修改,而不是顯示修改過的小部分代碼
- 4. SVN顯示未修改的文件作爲修改
- 5. 包含所有修改文件的Svn diff補丁
- 6. 可以強制svn diff顯示svn cp'd文件嗎?
- 7. SVN外部文件夾和文件顯示爲「非版本化」
- 8. 無法通過Phabricator的結帳文件顯示SVN diff
- 9. gvim中的外部修改文件
- 10. SVN狀態顯示文件以降序排列(修改日期)
- 11. Intellij,SVN插件顯示lats修改日期,作者和修訂
- 12. 在diff文件中處理修改
- 13. SVN顯示diff命令混淆
- 14. SVN - 顯示文件
- 15. TortoiseSVN標識修改後的文件 - 爲什麼svn diff報告沒有區別?
- 16. Xcode提交窗口 - 顯示unix-diff-like diff(不顯示整個文件)
- 17. 爲什麼'svn diff --diff-cmd = diff'輸出內部diff格式?
- 18. 如何讓svn diff顯示遠程更改?
- 19. SVN修訂版包含外部文件夾的最新更改數
- 20. Github上提交,DIFF不顯示改變
- 21. SVN DIFF用戶改變
- 22. SVN外部文件/文件夾
- 23. git Status在新的和修改部分中顯示文件
- 24. svn日誌不顯示所有修訂
- 25. BASH:顯示修改日期的最後修改文件
- 26. 批處理文件中的svn diff
- 27. 如何在svn diff中顯示SVN複製/重命名操作?
- 28. Perforce:如何列出更改的文件,如P4V「Diff Against」顯示?
- 29. git status顯示修改後的文件,但git diff沒有顯示任何內容
- 30. 顯示最後修改時間文件