Apache-2.2
將 Mercurial 使用者名替換為 Apache 認證的使用者名
我有一個 Debian 6 x64、python 2.6、Apache 2.2、Mercurial 1.8。Mercurial 通過 HTTPS 訪問,python 使用
mod_wsgi
,Apache 使用mod_authnz_external
.我需要的是替換使用者提供的 Mercurial 使用者名。因此,如果使用者將使用者名配置為“JD”,但使用使用者名“john.doe@company.com”登錄,我想在 Mercurial 送出歷史中查看“john.doe@company.com”。
你不能這樣做。您無法更改進入伺服器的變更集上的任何內容,您只能檢查它們(使用
pretxnchangegroup
hook)並在您不喜歡看到的內容時拒絕它們。您無法更改任何內容的原因是變更集 ID 取決於變更集中本身的所有資訊:使用者名、送出日期、送出消息、更改的文件、更改本身。如果您更改任何內容,那麼您也會更改變更集雜湊。
如果變更集已經被推送到其他地方,那麼更改變更集雜湊是不幸的——您最終會得到重複的變更集,因為您無法與客戶端溝通您已經更改了他的變更集。
你可能會說如果 Alice 在沒有真實姓名的情況下將變更集推送到伺服器是錯誤的,但它實際上是一個特性。使用分佈式版本控制系統,Alice 有可能直接從 Bob 那里拉取來審查他的更改。然後,她可能會在他的基礎上添加更多變更集並將整個內容推送到伺服器。因此,如果您阻止使用者推送除他們自己的變更集以外的任何內容,那麼您就阻止了這種直接協作。