背景:
少し前に、私の会社は独自のAtlassian製品をホストすることを決定し、独自にホストするBitbucketサーバーにソースコードがあります。現在、VM(Windows Server 2012)は崩壊しており、外部からビットバケットに到達できません。
しばらくの間、誰も私たちの製品を開発していないので、私たちがローカルに持っているコードが最新であるかどうかはわかりません。
問題:
Bitbucketサーバーを起動して実行することはできませんが、ソースコードの最新バージョンを入手する必要があります。
リモートデスクトップを使用してサーバーに接続しましたが、ファイルが見つからないようです。
質問
GITリポジトリのデフォルトの場所はどこですか? 「git」以外に検索できるフォルダがありますか?それで適切な場所に移動できますか?
[〜#〜] btw [〜#〜]
ホステッドサービスに移行しています...
すべての最高の/ Taher
コンテンツが保存されている場所を説明するこのドキュメントをお読みください。
https://confluence.atlassian.com/bitbucketserver/bitbucket-server-home-directory-776640890.html
Bitbucketホームディレクトリは、BitbucketServerデータが保存される場所です。
Gitコンテンツはdata
フォルダーに保存されます。各リポジトリのgestとid、およびそれぞれのデータは、このidフォルダーに保存されます。ベアリポジトリを含む各フォルダはbare
リポジトリであるため、コンテンツを表示することはできません。
コースにアクセスしたら、コンテンツを表示できるように、コースを別の場所に保存してからクローンを作成する必要があります。
完全な開示:私はAtlassianで働いており、Bitbucket Server/Bitbucket DataCenterのプレミアサポートエンジニアを2年間務めました。それは邪魔にならないように、それに取り掛かりましょう:
BitbucketServerリポジトリはディスクの$BITBUCKET_HOME/shared/data/repositories/<id>
に保存されます。ここで、<id>
は、データベースのrepositoryテーブルにあるリポジトリIDです。スラッグ「jira」とプロジェクトキー「ATLAS」を含むリポジトリがあるとします。 (スラッグは、git clone urlに表示されるURLセーフ名です。プロジェクトキーは、プロジェクト名の大文字の略語です。)リポジトリIDを見つけるには、次のデータベースクエリを実行します。
SELECT repository.id, repository.name, project.project_key
FROM repository
JOIN project ON project.id = repository.project_id
WHERE repository.slug = 'jira'
AND project.project_key = 'ATLAS';
IDが手元にあれば、上記のパスからリポジトリフォルダを見つけることができます。
何らかの理由でデータベースが利用できない場合は、別の方法があります。各リポジトリにはrepository-configファイルが含まれています。このファイルには、特にリポジトリとプロジェクト名が含まれています。その内容mightは次のようになります。
#>***********************************************
# THIS FILE IS MAINTAINED BY ATLASSIAN BITBUCKET
# IT CONTAINS NO USER-SERVICEABLE PARTS.
#>***********************************************
[bitbucket]
hierarchy = 8597e1f873a45c2b9d3f
project = ATLAS
repository = jira
興味のあるリポジトリを見つけるために、任意の数のbashワンライナーを使用できます。これは、リポジトリ名を検索するだけの、以前に使用した単純なリポジトリです。
find $BITBUCKET_HOME/shared/data/repositories -mindepth 2 -maxdepth 2 -type f -name repository-config -print0 | xargs -0 grep "repository = jira"
Windowsの場合、findstr
を他のWindowsコマンドラインユーティリティと組み合わせて使用すると、同様の効果が得られます。
Bitbucket Serverのリポジトリは、ベアリポジトリとして保存されます。先に進む前に、違いを理解することが重要です。
git clone <url>
を使用してリポジトリのクローンを作成するか、git init
を使用して新しいリポジトリを作成するときに表示される種類です。この種のリポジトリは、すべての実際のgitリポジトリデータを、すべての履歴、リビジョン、オブジェクトなどとともに、作業ディレクトリの。gitサブフォルダ内に保存します。この種のリポジトリには「作業ツリー」があります。これは基本的に、作業中のブランチのすべてのファイルが「チェックアウト」され、作業ディレクトリ内で利用できることを意味します。ローカルマシンのリポジトリでls .git
を実行すると、gitリポジトリの内部がどのように見えるかがわかります。ls
$BITBUCKET_HOME/shared/data/repositories
の下のフォルダー内にあると、ローカルリポジトリの。gitフォルダーに表示されたのと同じ種類のファイル/フォルダーが表示されます。Bitbucketがリポジトリを「ベア」として保存する理由は単純です。サーバー側で開発作業が行われていないため、作業を行うために特定のブランチや作業ツリーを「チェックアウト」する必要はありません。
現在、BitbucketServerのベアリポジトリでアクションを実行しようとすることは非常に危険です。サーバーメカニズム全体とその内部ビジネスロジックのすべてをバイパスしているため、試行すると問題が発生する可能性があります。最良のシナリオでは、Bitbucketのデータベースで考慮されていない変更を導入し、回復するのに多くの作業が必要になる不整合を作成する可能性があります。
あなたがしたいことはあなたがいつもするのと同じことです:それを複製してください! gitの素晴らしいところは、とても柔軟なことです。 URLからと同じように、ファイルパスからクローンをgitできます。ディスクをリモートでマウントするか、関連する<id>
リポジトリフォルダをローカルマシンにコピーすることにより、ワークステーションからベアリポジトリに直接アクセスする方法を見つけます。次に、クローンを作成します。 git clone $BITBUCKET_HOME/shared/data/repositories/<id> mylocalworkingcopy
は、ベアリポジトリをmylocalworkingcopyという名前の新しいフォルダーに複製し、デフォルトのブランチをチェックアウトします。ここで必要なことは何でもできます。
警告:しないでください変更をプッシュバックします。プッシュは機能しますが、変更をダミーコピーにプッシュするか、Bitbucketをバイパスして変更をサーバーに直接プッシュします。 Bitbucket Serverによって追跡されていないコミット、ブランチ、オブジェクトを導入します。これは私が上で言及した矛盾した状態です。それはあなたが回復できるものですが、それは首の痛みであり、避けるのが最善です。
Bitbucketは、参照によってファイルとして利用できないリポジトリを暗号化します。または、実際のファイルではありません。