問題タブ [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 同期
perforce リポジトリをミラーリングしようとしていますが、git-p4 はメイン ブランチで十分に機能します。に電話するだけgit-p4 rebase
です。また、別のブランチをミラーリングしようとしていますが、そう簡単にはうまくいきません。a を実行できると思ったのですが、git-p4 rebase --branch=p4/whatever //open/branches/whatever
これらrebase
のタグを無視しているように見えます。sync
代わりに a を実行すると、次のエラー メッセージが表示されます。fast-import failed: warning: Not updating refs/heads/p4/whatever (new tip 14f7e14e5079bb730363440901adee102e5f04c9 does not contain 0ca89b0333f408367e3676720b109a08cc40b3ae)
私の最初のインポートは @all との同期でした。更新できないのはなぜですか、それともこれを行うための別の/より良い方法はありますか?
git - gitからPERFORCEへの移行
チームとソースをgitからPerforceに移行するタスクがあり、gitの履歴をp4に移動する方法についてのアイデアを探しています。
マスターブランチのみを移動させていただきます。しかし、それでも問題があります。
私は素晴らしいgit-p4ツールを使用しています。p4ワークスペースに宛先領域を作成し、それを使用git p4 clone //depot/StuffFromGit
してgit-p4で追跡を開始します。gitリポジトリのすべての変更をgit-p4クローンに移植します。そうgit p4 submit
すれば、すべての変更がp4にプッシュされます。
gitの履歴が次のようになり、素晴らしく線形になると、うまく機能します。
問題は、プロジェクトに複数の人が取り組んでいることにあります。彼らはマスターに取り組んでいますが、それでも分割してマージするブランチを作成します。それでも、git-p4はこれを勇敢に処理します:
git p4はOKをトラバースし、ABCDEを順番にコミットします(またはABDCE、どちらかの人の履歴を最初に)。
問題は、たとえば、CとDの両方が同じファイルを変更し、Eが真の正直なマージである場合に発生します。git p4 rebase
ここで失敗します。コミットを巻き戻しますが、再生中に最初にCを適用し、次にDを試行して競合を見つけます。その後、マージを要求して停止します。ええと、Eにはマージが含まれていますが、手動でマージするように求められています。「gitp4submit」も同様の方法で失敗しますが、マージ前の変更を拒否するのはp4だけです。
だから今私は立ち往生しています。gitの履歴をサニタイズする方法や、git-p4にそれを理解させる方法はありますか?マージが行われているのでイライラします。
私が持っていた考え:
- git filter-branchを使用して、競合するファイルに関するすべての言及を削除します。多くのファイル変更が欠落していますが、履歴コメントが表示されます。履歴に約3000のコミットがあるので、キー(ビジー)ファイルの履歴をすべて削除することになります。フィルタされたファイルのインポートの最後に、HEADの最後のコミットを実行して、不足しているファイルを追加し直します。
- 履歴をダンプし、HEADのp4コミットを1回実行します(単純ですが悲しい)。
- p4に移行しないでください:私はそのアイデアを可能な限り長く取り組んできました。
どれも本当に素晴らしいものではありません。'gtp4rebase'または'gitp4 submit'を動作させる方法に関するアイデアはありますか?
windows - git-p4 クローン リポジトリにファイル名の大文字と小文字が混在しています -- 修正方法は?
git-p4 を使用して大きなリポジトリをインポートしたところ、奇妙な大文字と小文字が混在するファイル名がいくつかあることがわかりました。
そして、次のような他のファイル:
等々。git-p4 は fast-import を使用するため、これらはこの方法でリポジトリに入力されます。これにより、Git は不思議なことに、追跡されていないディレクトリがあり、追跡されていないわけではなく、新しいファイルがないと主張します。この質問を読んで発見しました:
特にslayerIQの答えは、問題のディレクトリの名前を変更して一致するケースを持つことで修正できるということです。実際、ファイルに単一のケース形式しかないいくつかのケースでは、これで修正されました。しかし、上で述べたような混乱したものについては、何もしません。この種のリストは、このケースに関する私の疑いを裏付けています。
履歴の書き換えを使用して修正することを検討しましたが、それは非常に重いようで、必要がない限り、そこに行くのを少しためらっています (ツリーは ~25K ファイルです)。一方、私はクリーンなツリーで「git status」を実行し、約 35 の「追跡されていない」パスのリストを取得します。だから、それはちょっと受け入れられない。
必要に応じて git-p4 のクローンを最初から作成することもできますが、大文字と小文字が混在するパスは Perforce 自体から来ていると思われます。SmartGit にはツリーに関するこの問題はなく、正確なツリーを新しいレポにコピーしても問題なく動作します (正しく追加されているため)。
続行する方法についてのアイデアはありますか?
ありがとう :)
git - `git-p4 clone` が失敗する「新しいヒント ... が含まれていません ...」
Windows p4クライアントを使用してWindowsで実行しており、Cygwin経由でgitをインストールしています。p4 クライアントは、その構文がプラットフォーム間でどのように規則的であるかを宣伝しているので、それはばかげているはずです。
そのため、に行くとgit-p4 clone --verbose //depot/path/to/source
、リポジトリ内のすべてのファイルがチェックアウトされているかのように一覧表示され、その後、
例外: 高速インポートに失敗しました: 警告: refs/remotes/p4/master を更新していません (新しいヒント cd601b92da8625c90af05685e450e55b6d19c9e9 には 3a512c9408e3cbeef 94c78dfd7115f81e4a6fd0d が含まれていません)
そして、「git-fast-import statistics」の大きなブロックで締めくくります。エラーを見る: 新しいヒント? は?それを含む必要があるのは何ですか?
私が残したのは、数メガの .git リポジトリです (完全なソース ツリーよりもはるかに小さい)。何か案は?
git - git-p4 インポート ツリーにはサブディレクトリ .git が含まれます
当社は Perfoce を使用してプロジェクトを管理しており、git-p4 を使用してローカル側の Perforce リポジトリを同期しています。ただし、P4 リポジトリでは、多くのモジュールと結合され、一部のモジュールの .git フォルダーが含まれる場合があります。誰かがローカルで git を使用し、.git/ を Perforce に配置します:(
git-p4 clone で P4 を複製すると、常にいくつかのファイルが削除されたと表示されます。
「git filter-branch」を使用してこれらのファイルを削除しようとしましたが、ダーティな作業ディレクトリでの使用は禁止されています。
この問題を解決するにはどうすればよいですか? 以前の回避策では、これらの .git フォルダーを Perforce ツールで削除してから、プロジェクト全体を再度複製しました。
git - リモート コミットに P4 を使用しているときに、ローカル コミット用に Git を設定するにはどうすればよいですか?
私が働いている場所では Perforce 環境を使用していますが、機能が完成してテストの準備が整うまでチェックインすることはできません。変更のバージョン管理なしで 1 週間に 50 個以上のファイルをチェックアウトしたことがあるため、ローカル コミットを実行できる必要があります。
Git は私の目的に合っていますが、他の環境と最適に統合するために Git を設定する方法がわかりません。
私の目標は次のとおりです。
- 機能に取り組んでいるとき、Perforce を完全に無視して、好きなだけ編集およびコミットできるようにしたいと考えています (Git で)。
- 機能を提出する前に、P4V または P4Win にアクセスしてファイルを比較し、すべてが最新であることを確認する必要があります。テスト後、すべての変更を 1 つのコミットにまとめたいと考えています。
ローカル ワークスペースのルート ディレクトリに git リポジトリを作成するとうまくいくようですが、いくつか問題があります...
- このリポジトリには大量のファイルがあり、少なくとも最初のコミットでは git がクロールしています。
- Perforce から「最新のものを取得」したときに、git リポジトリを簡単に更新できるようにする必要があります。
- 編集する前に Perforce ですべてのファイルをチェックアウトする必要はありません。また、チェックアウトされていない書き込み可能なファイルであるため、Perforce で強制的に同期する必要もありません。
誰でもこれについてのヒントを教えてもらえますか? Perforceリポジトリにはバージョン管理が不要な部分がたくさんあるため、gitリポジトリのサイズを潜在的に縮小する方法として、gitのサブモジュールを検討してきました。
python - Windows で git-p4 を使用してインポートできない
git-p4 python スクリプトを使用して、p4 デポ パスを git にインポートしようとしています。環境 (git 1.7.1、python 2.7、Windwos XP、p4 環境変数) を構成した後、git-p4 スクリプトを実行して、次の出力を取得しようとしました。
ここで何が起こっているか知っている人はいますか?332行目にあるgitコマンド(git rev-parse origin)をコマンドラインシェルから実行しようとすると、コマンドは正しく実行されます。
ありがとう。
更新:スクリプトは、exec ファイルが実行パスにないプロセスを起動できないようです。Windows上のPythonの初期化の問題だと思います...
git - Perforceファイル「.perforce」の目的は何ですか?
Perforce構成ファイルの目的は何.perforce
ですか? その内容を示すサンプル ファイルはどこにありますか?
Git-p4 の使用法はこのファイルを参照していますが、ワークスペースにもホーム ディレクトリにもこのファイルがなく、他の Perforce ドキュメントでこのファイルが言及されているのを見たことがありません。のコンテキスト以外に目的はありますgit-p4
か? Windows 環境と Unix 環境の両方に適用されますか?
git - git-p4 を使用して perforce クライアントの git clone をセットアップする
複数の perforce パスをローカル クライアントにマップする perforce クライアントがあります。これらの perforce パスは、ライブラリとメイン コード ライン用です。
git-p4 を使用してクライアント全体のクローンを別のディレクトリにセットアップするにはどうすればよいですか?
私が見たところ、git-p4 は特定のデポ パスのみを複製できます。クライアント全体のクローンを作成したいと考えています。perforce クライアントが test_client であるとします。私はやりたい:
または、すべてのディレクトリをこの別の git ディレクトリに取り込む同様のもの。
git - git-p4 送信の失敗
git-p4 を使用して git をローカルで操作し、変更を perforce サーバーに送信しようとしています。私が失敗している変更をサーバーに送信することです。
クライアントにすべてのライブラリ依存関係が含まれるようにクライアントをセットアップしました (「git-p4 を使用して perforce クライアントの git clone をセットアップする」の推奨事項に従ってください) 。
ただし、メインのライン ソースについては、ワークスペース ディレクトリで次のことを行っています。
これにより、ワークスペースに my_project ディレクトリが作成され、データが取り込まれます。
src のコードがライブラリを参照できるようにします。
問題は、git-p4 rebase を実行すると、次のエラーが発生することです。
git-p4 submit を実行すると (単一の変更を行って git commit -a -m "test" を実行した後):
.....
それは永遠にかかります (サーバーにすべての変更セットを要求していますか??)、エラーで失敗します: Traceback (most recent call last):
git config を使用して git-p4 オプションを設定していないことに注意してください ( https://git.wiki.kernel.org/index.php/Git-p4_Usageのウィキでは、が必要です)。