Hg grepを使用できますが、すべてのファイルの内容が検索されます。
削除されたファイルのファイル名を検索して1つを復元したい場合はどうなりますか?
Hg grep -I file-name-patternpatternを試しましたが、結果が返されないようです。
テンプレートは簡単です を使用:
$ hg log --template "{rev}: {file_dels}\n"
revsets を使用することもできます:
hg log -r "removes('**')"
(編集:二重*
- 1つがリポジトリのルートからの削除のみを検出 。)
Edit:Mathieu Longtinが示唆するように、これは templatedfa's answer toと組み合わせることができますリストされた各リビジョンが削除するwhichファイルを表示します。
hg log -r "removes('**')" --template "{rev}: {file_dels}\n"
これには、1行に1つのリビジョンをリストするという(マシンの読みやすさのための)メリットがありますが、%
削除リストの各アイテムをフォーマットするには:
hg log -r "removes('**')" --template "{rev}:\n{file_dels % '{file}\n'}\n"
他の答えを取り入れて改善しました。
「--no-merges」が追加されました。開発チームによる大規模なプロジェクトでは、多くのマージが行われます。 --no-mergerはログノイズを除外します。
removes("**")
をsort(removes("**"), -rev)
に変更します。 10万以上の変更セットを持つ大規模なプロジェクトの場合、これにより、最新のファイルが大幅に削除されます。これは、代わりにrev 0からの開始からtipからの開始に順序を逆にします。
{author}と{desc}を出力に追加しました。これにより、ログコメントを表示してファイルが削除された理由と、誰が削除したかがわかります。
だから私のユースケースでは、それはhg log --template "File(s) deleted in rev {rev}: {author} \n {desc}\n {file_dels % '\n {file}'}\n\n" -r 'sort(removes("**"), -rev)' --no-merges
でした
出力例:
File(s) deleted in rev 52363: Ansariel
STORM-2141: Fix various inventory floater related issues:
* Opening new inventory via Control-Shift-I shortcut uses legacy and potentinally dangerous code path
* Closing new inventory windows don't release memory
* During shutdown legacy and inoperable code for inventory window cleanup is called
* Remove old and unused inventory legacy code
indra/newview/llfloaterinventory.cpp
indra/newview/llfloaterinventory.h
File(s) deleted in rev 51951: Ansariel
Remove readme.md file - again...
README.md
File(s) deleted in rev 51856: Brad Payne (Vir Linden) <[email protected]>
SL-276 WIP - removed avatar_skeleton_spine_joints.xml
indra/newview/character/avatar_skeleton_spine_joints.xml
File(s) deleted in rev 51821: Brad Payne (Vir Linden) <[email protected]>
SL-276 WIP - removed avatar_XXX_orig.xml files.
indra/newview/character/avatar_lad_orig.xml
indra/newview/character/avatar_skeleton_orig.xml
効率的に削除した特定のファイルを検索し、結果を適切にフォーマットします。
hg log --template "File(s) deleted in rev {rev}: {file_dels % '\n {file}'}\n\n" -r 'removes("**/FileYouWantToFind.txt")'
出力例:
File(s) deleted in rev 33336:
class/WebEngineX/Database/RawSql.php
File(s) deleted in rev 34468:
class/PdoPlus/AccessDeniedException.php
class/PdoPlus/BulkInsert.php
class/PdoPlus/BulkInsertInfo.php
class/PdoPlus/CannotAddForeignKeyException.php
class/PdoPlus/DuplicateEntryException.php
class/PdoPlus/Escaper.php
class/PdoPlus/MsPdo.php
class/PdoPlus/MyPdo.php
class/PdoPlus/MyPdoException.php
class/PdoPlus/NoSuchTableException.php
class/PdoPlus/PdoPlus.php
class/PdoPlus/PdoPlusException.php
class/PdoPlus/PdoPlusStatement.php
class/PdoPlus/RawSql.php