簡體   English   中英

p4命令等效於git / hg / bzr / svn status之類的命令是什么? (提示:不是“ p4狀態”)

[英]What is the p4 command equivalent to something like git/hg/bzr/svn status? (Hint: not `p4 status`)

問:其他版本控制工具的status命令的perforce等效項是什么?

例如git statushg statusbzr statussvn status (令人困惑的是,對於該版本控制系統, cvs update -nq是最接近的東西。)

提示:不是p4 status

首先, p4 status不會告訴您有關掛起的更改列表上的文件。 您需要為此p4 opened ,但是輸出格式完全不同。

其次, p4 status並不總是只讀狀態命令。 認為默認情況下,我最初發布該版本時所使用的perforce版本實際上會更改工作區的狀態-實際上會將本地更改添加到掛起的更改列表中。 但是我可能會忘記。 該公司使用了非常舊的perforce版本。 截至本次更新時,使用日期為2014/04/08的perforce客戶端版本,默認的p4 status行為為只讀,但是如果您不想進行更改,請注意不要使用-A選項。到工作區。

似乎需要將p4 statusp4 opened某種組合才能獲得其他VCS在單個命令中所做的最小工作。

詳情:

大多數版本控制系統都有一個可以快速告訴您工作區狀態的命令。 信息,例如:

  • 檢出哪些文件進行編輯(如果VCS使用檢出)
    • 哪些已檢出文件已在本地更改或刪除
  • 即使未簽出,仍更改了哪些文件
    • 例如,哪些文件可能具有要合並的更改
  • 可能是存儲庫中比工作空間中更新了哪些文件
    • 例如,您可能希望合並到工作區中的更改
  • 工作區中有哪些文件,但尚未受版本控制
    • 例如,您可能要添加到版本控制系統的文件
    • 或可能添加到您的.hgignore / .gitignore / ...忽略文件模式
  • 什么文件受版本控制但不在工作空間中
    • 例如,您可能要從版本控制系統中刪除哪些文件
    • 或您可能意外刪除了哪些文件

具體提供什么狀態信息取決於VCS。 例如,Perforce是基於結帳的,但是大多數現代版本控制工具不是。

但是...幾乎所有版本控制工具都有一個簡單的命令,可以告訴您這種狀態。

顯然,除了強制。

...我可能會繼續提供示例,說明單個命令中git / hg / bzr / svn的狀態,但是perforce似乎至少需要兩個命令才能提供。

我一直說我不喜歡回答自己的問題,但是我將在這里進行。 我歡迎任何想分享更好的解決方案和腳本的人。 我特別歡迎有人向我展示這是不必要的,Perforce實際上確實具有svn/git/hg/bzr status

--- + A: git/hg/bzr/svn status = p4 opened + p4 status

在perforce中,似乎至少需要兩個單獨的命令才能近似其他VCS工具使用單個命令執行的操作,以快速了解倉庫的工作區狀態:

p4 opened -有關在工作區中打開的文件的列表

p4 status -有關未簽入Perforce的文件列表。

** --- + OLD: p4 reconcile -n而不是p4 status **

在默認情況下,perforce的兩個舊版本都具有p4 status就像p4 reconcile一樣,對工作區進行更改(例如添加到工作區)。 否則在撰寫此頁面時我就被打破了。

新增: git/hg/bzr/svn status = p4 opened + p4 status **

新增: git/hg/bzr/svn status = p4 opened + p4 reconcile -n **

p4 reconcile -n列出未在perforce中打開但已對其進行本地更改的文件的列表。

p4 reconcile -n表示“不做任何更改。”

-n告訴和解不做任何更改。 不再需要-現在p4 status默認為只讀。

原來:p4 $ P4OPTS已打開p4 $ P4OPTS已協調-n | sed -e's /-/-同意:/'

--- +適用於別名或快速鍵入

我將這些合並如下:

p4 $P4OPTS opened
p4 $P4OPTS status | sed -e 's/ - / - RECONCILE TO MAKE: /'

sed部分可以更好地區分perforce已經打開的文件狀態和未在perforce下打開的文件狀態。 但是我注意到,當文件名稱中可能包含字符串“-”時,這是不安全的。

-+幻想

因為我經常需要本地路徑,所以我目前使用以下shell腳本my-p4-status給我更多類似於其他VCS的status command =所使用的內容。

下面的腳本使用舊的reconcile -n ,並且尚未更新為使用status

#!/bin/bash
# Perforce lacks a single command to tell you the status of a workspace,
# the equivalent of hg/bzr/git status.

# Warning: "p4 status" is not actually a read-only query!!!
# "p4 status" is more like "p4 reconcile" - it actually opens files to edit, add, or delete (-e -a -d)

# p4 opened only reports on the status of files currently opened by Perforce

# It is necessary to combine "p4 opened" and "p4 reconcile -n" to get a net overview.

# TBD: convert to local file path, rather than depot path.
# (Not a simple sed-xargs-p4_fstat pipeline)

P4OPTS=''
if [ "$1" == "-ztag" ] || [ "$1" == "-verbose" ]
then
   shift
   P4OPTS="-ztag"
fi

case $P4OPTS in
-ztag)
    p4 $P4OPTS opened
    p4 $P4OPTS reconcile -n
    ;;
*)
    echo '#### p4 opened - Perforce files already opened ###'
    p4 $P4OPTS opened
    echo '#### p4 reconcile -n --- local edits, not opened in Perforce.  Run p4 reconcile to actually open. ###'
    p4 $P4OPTS reconcile -n | sed -e 's/ - / - RECONCILE TO MAKE: /'
esac

--- +更好? 請分享!

如果有什么更好的,請分享。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM