問題タブ [git-p4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - git-p4: 致命的: git は git-p4 のサポートなしでビルドされました (NO_PYTHON=1)
Linux コンピューターで git p4 を使用しようとしています。しかし、何らかの理由で git-p4 に問題があるようです。git p4 コマンドを実行すると、次のようになります。
このメッセージが表示される理由は何ですか? とにかく私はそれを修正することができますか?
カーネル バージョン 3.11.0 の Ubuntu ディストリビューションを使用しています。
前もって感謝します。
git - git p4 clone が @rev,#head のすべてのファイルを取得しない
p4 リポジトリは長い歴史を持つ巨大なリポジトリであり、@all はオプションではないため、途中からクローンを作成しようとしています。
問題は、いくつかのファイルが作業コピーから欠落していることです。これらのファイルは、リビジョンを開始する前に追加されたためです。
#head を直接使用しても、この問題は発生しません (例: git p4 clone //depot)。
たとえば、//depot/misc/file.txt の下にリビジョン 123456 に追加されたファイルがあります。最新のリビジョンは 400000 です。
「git p4 clone //depot」を実行すると、#head からすべてのファイルが取得されます (「git p4 clone //depot@all」には、明らかにファイルとすべての履歴が含まれます)。
「git p4 clone //depot@250000,#head」を実行すると、//depot/misc/file.txt が取得されません。
それを機能させるにはどうすればよいですか?
ありがとう。
git - git-p4 を使用してブランチをインポートする - 作業ツリーにない不明なリビジョンまたはパス
Perforce から Git に移行しようとしています。私たちの開発は次のように構成されています。
バージョン 1.3.0 が作成され、開発され、製品にリリースされます。開発は継続され、バージョン 1.3.1 が分岐して開発されています。
現在、昇順で作成された多数のバージョンがあります。私の仕事は、これらのバージョンを連続したブランチとしてインポートすることです。つまり、ブランチ 1.3.1 は 1.3.0 から出てきます。ブランチ 1.4.0 はブランチ 1.3.1 などから出てきます...
次の一連のコマンドを使用しています。
最終的な branchList 構成は次のようになります。
上記のコマンドを実行すると、エラーが発生します。
ただし、私の branchList 構成が次のようになっている場合:
インポートは完全に成功していますが、ブランチ履歴が正しく反映されていません。
ここで何が問題なのですか?
git - デポに変更が加えられると、git p4 rebase が失敗する
最近、仕事中のメインの c# プロジェクト用に git p4 クローンをセットアップしました。私は次のことをしています:
- git checkout -b newbranch
- git p4 rebase (ブランチがデポで最新であることを確認してください)
- 変更を加える
- git commit -a
- さらに変更を加える
- git commit -a
- ファイルを p4 デポにプッシュする準備ができました
この時点で、ブランチを開始してからプロジェクトのディポ パスに変更がなければ、
- git p4 リベース
- git p4 送信
そして、すべてがうまくいきます。ただし、デポに変更があった場合、「git p4 rebase」を実行すると、デポ内のものを適用し、コミットを再適用しようとすると、「ローカルの変更が上書きされる」というエラーが発生します。マージによって」。次に、既にコミットしたすべてのファイルを一覧表示し、それらをコミットするか隠しておく必要があることを通知します。奇妙なことに、「git status」を実行すると、ファイルがまったく表示されません。ここで何が起こっているのですか?
それを機能させるために私が理解できた唯一のことは、次のことを行うことです:
- git rebase -i HEAD~{前回のデポ変更以降のコミット数}
- git スタッシュ
- git p4 リベース
- git stash ポップ
- git p4 送信
しかし、私はそれの大ファンでもありません。なぜなら、私のコミット履歴が失われているからです - 私は 1 つの怪物コミットになってしまうだけです。p4 デポに関する限り、これはそれほど悪くはありませんが (最終的にはそれが必要です)、それでもローカルの Git コミットを表示したいと考えています。そうしないと、Git を使用する価値が大幅に失われます。
Git は、最終的なエラーをスローする前にいくつかの空白の警告も表示することに注意してください。
git - git-p4 サブミットが「パスがクライアントのルートの下にありません」というエラーで失敗する
http://answers.perforce.com/articles/KB_Article/Git-P4で説明されているように、git-p4 を介して perforce リポジトリの git ミラーを構成し、しばらくの間正常に動作しました。perforce の変更を git に取得することができました。 git の変更を perforce に送信します。その後、突然git p4 submit
コマンドが機能しなくなりました。実行すると、エラーが発生します。
詳細モードで実行すると、p4 -c <client name> -G opened ...
コマンドが失敗し、次の出力が表示されます。
まあ、それは確かに下ではありません/path/to/git-p4-area
が、それは以前は問題ではありませんでした. git p4 rebase
こちらも問題なく走れます。Path is not under client's root
エラーを修正するにはどうすればよいですか?
アップデート
ブライアンの回答のおかげで解決できました。私が得たエラーは正しかったことがわかりました。実際にファイルを強制的に開いていました。p4 revert ...
内部のコマンドで元に戻しましたが、正常に動作するように/path/to/git-p4-area
なりましたgit p4 submit
。
git-p4 を使用する場合、perforce ワークスペース内のファイルを変更せず、代わりに git リポジトリで作業し、git-p4 は git コミットを perforce の変更に、またはその逆に変換するため、エラーは私を混乱させました。perforce チケットが最後の送信操作の途中で期限切れになったことが判明しました (チケットは 12 時間ごとに期限切れになります)。そのため、いくつかのファイルが perforce ワークスペースで開かれたままになっていました。最善の解決策は、12 時間以内に働くことです...
git-p4 - `git-p4 sync` は `p4 sync` のように指定されたタイムスタンプまでのファイルのみを取得できますか?
Perforce から Git に 500 以上のプロジェクトをインポートする必要があり、すべてが相互に関連しています。そのためには、世界を「凍結」し、すべてのプロジェクトを同時にインポートする必要があります。私が書いたスクリプトは約 2 日間実行されます。つまり、開発者はこの 2 日間で変更を送信でき、インポート済みのプロジェクトが破損する可能性があります。
p4 sync //depot/path/to/project/...@$timestamp
$timestamp までのコミット/提出を含むプロジェクトをインポートすることを知っています。git p4 sync //path/to/projects
そのオプションはありますか?ドキュメントには、タイムスタンプでのインポートについてはまったく言及されていません。
github - git ハブ リポジトリと perforce デポのマージ
プロジェクトAがあります。プロジェクトAは、github(ビジネス上の決定)だけでなく、perforceでもあります。それらは両方とも同期していません。git-p4 ツールhttp://git-scm.com/docs/git-p4を使用して、git の変更を perforce に送信できることがわかりました。問題は、それが言う最初の指示です:
git p4 clone //デポ/パス/プロジェクト
このコマンドは、git ハブに新しいリポジトリを作成します。私はそれを望んでいません。既存の perforce デポを既存の github リポジトリに接続してから、ファイルを github から perforce に同期させたいと考えています。出来ますか?
git - git-p4 リポジトリのクローンを作成することは可能ですか?
git clone
既存のレポジトリにできるgit p4
のでgit p4
、新しいレポジトリに流用できますか?
ユースケースは次のとおりです。デスクトップ PC に perforce から複製された完全なリポジトリ ( git p4 clone <somepath>@all
) があり、p4 サーバーに触れずにそれをラップトップに複製したい (リンクが非常に遅くて遅延がある)、変更を perforce にコミットできるようにする必要があります。理想的にはgit clone --depth
、ラップトップのディスク使用量を削減するためにスパース クローンを使用することは素晴らしいことです。
git - リポジトリにプッシュした新しいブランチの remotes/origin/HEAD --> origin/master がない理由
git ブランチを作成し、オリジン マスターにプッシュしました。今私がするとき、それは私にgit branch --all
表示されませんremotes/origin/HEAD --> origin/master
。ただし、すべての git 操作を実行できます。
- これは期待されていますか?
- このエントリがある/ないの背後にあるロジックは何ですか?
編集:
私が実際に行ったことには混乱があるようです。p4 からレポをインポートしました シーケンスは次のとおりです。
そして、 git branch --all を実行すると、その特定のエントリが表示されません:
** 2 番目の編集:**
同じブランチを複製するとgit branch --all
、remotes/origin/HEAD --> origin/master
. 予想されるクローン作成後の出力は次のとおりです
だから今、私はさらに混乱しています:)
git - 個別の Perforce ブランチを単一の Git リポジトリに移行する
プロジェクトを Perforce から Git に移行しようとしています。
Perforceプロジェクトが次のようになるという珍しいシナリオがあります(少なくとも、リモートで同様のことを尋ねる人は見つかりませんでした)。
MAIN を Git に移行しようとしています。MAIN は OTHER より前に開始され、まだ存在しています。OTHER は、Perforce の「移動/名前変更」操作を実行することにより、特定の時点で MAIN にマージされました。
Perforce で OTHER から取得した MAIN 内のファイルの履歴を調べると、移動前に発生した変更を含む完全な履歴が表示されます。
しかし、MAIN を Git に移行したとき (git-p4 clone を使用)、OTHER から取得したすべてのファイルの履歴は、ファイルが移動したとき (上記の X) に開始されます。
当然の疑問は、OTHER で行われたリビジョンを含め、完全な履歴を Git に移行するにはどうすればよいかということです。