bitbucket服务器在哪里存储存储库?

Tah*_*erg 5 git bitbucket-server windows-server-2012

背景:

不久前,我公司决定托管自己的Atlassian产品,并且我们将源代码存储在我们自己托管的Bitbucket服务器上。现在我们的VM(Windows Server 2012)崩溃了,我们无法从外部访问bitbucket。

由于没有人对我们的产品进行过一段时间的开发,因此我们不确定我们在本地拥有的代码是否是最新的。

问题:

即使我们无法启动Bitbucket服务器并运行它,我们也需要获取源代码的最新版本。

我已使用远程桌面连接到服务器,但似乎找不到文件。

GIT仓库的默认位置是什么?除了“ git”以外,还有其他我可以搜索的文件夹可以带我到正确的位置吗?

BTW

我们正在转向托管服务...

祝一切顺利

dav*_*ing 6

完全披露:我为Atlassian工作,并且是Bitbucket Server / Bitbucket数据中心的首席支持工程师两年。顺便说一句,让我们开始吧:

查找您的存储库

Bitbucket Server存储库存储在磁盘上的位置$BITBUCKET_HOME/shared/data/repositories/<id><id>该存储库ID是在数据库的存储库表中找到的存储库ID 。假设您有一个存储库,其中包含“ jira”和项目关键字“ ATLAS”。(slug是您在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';
Run Code Online (Sandbox Code Playgroud)

有了ID,您可以从上面的路径中找到存储库文件夹。

如果由于某种原因您的数据库不可用,则有另一种方法。每个存储库都包含一个存储库配置文件,其中除其他外,还包含存储库和项目名称。其内容可能如下所示:

#>***********************************************
# THIS FILE IS MAINTAINED BY ATLASSIAN BITBUCKET
# IT CONTAINS NO USER-SERVICEABLE PARTS.
#>***********************************************
[bitbucket]
    hierarchy = 8597e1f873a45c2b9d3f
    project = ATLAS
    repository = jira
Run Code Online (Sandbox Code Playgroud)

您可以使用任意数量的bash单行代码找到您感兴趣的存储库。这是我之前使用过的简单存储库,仅搜索存储库名称:

find $BITBUCKET_HOME/shared/data/repositories -mindepth 2 -maxdepth 2 -type f -name repository-config -print0 | xargs -0 grep "repository = jira"
Run Code Online (Sandbox Code Playgroud)

对于Windows,您可以findstr与其他Windows命令行实用程序结合使用以达到类似的效果。

使用仓库

Bitbucket Server中的存储库存储为裸存储库。在继续之前,重要的是要了解不同之处:

  • “普通”非裸存储库是您使用复制克隆存储库git clone <url>或使用创建新存储库时看到的那种git init。这种仓库在工作目录的.git子文件夹中存储了所有实际的git仓库数据以及所有历史记录,修订版,对象等。这种存储库有一个“工作树”,这基本上意味着它具有您正在“检出”的任何分支中的所有文件,并且在您的工作目录中可用。ls .git在本地计算机上的存储库中运行,您将看到git存储库内部的外观。
  • 裸存储库没有工作树,也没有检出文件。您通常会在.git文件夹中看到的内容位于裸存储库的顶层。ls在下面的任何文件夹中$BITBUCKET_HOME/shared/data/repositories,您将看到与本地存储库的.git文件夹中相同的文件/文件夹。

Bitbucket将存储库存储为“裸露”的原因很简单:无需在服务器端完成开发工作,因此无需“签出”特定分支或工作树即可进行工作。

现在,在Bitbucket Server的裸存储库上尝试执行任何操作非常非常危险。您将绕过整个服务器机制及其所有内部业务逻辑,并且如果尝试尝试,很可能会破坏事情。最好的情况是,您可以引入Bitbucket数据库中未考虑的更改,并创建不一致之处,需要大量工作来恢复。

您想要做的就是您将永远做的一件事:克隆它!git的伟大之处在于它是如此灵活。您可以从文件路径进行git clone,也可以从URL进行git clone。通过远程安装磁盘或简单地将相关的<id>repo文件夹复制到本地计算机,找到一种直接从工作站访问裸存储库的方法。然后克隆它!git clone $BITBUCKET_HOME/shared/data/repositories/<id> mylocalworkingcopy会将您的裸仓库克隆到名为mylocalworkingcopy的新文件夹中,并签出默认分支。您可以在这里做任何事情。

警告:请勿撤消更改。推送起作用,但是您要么将更改推送到虚拟副本,要么将更改直接推送到服务器,绕过Bitbucket,并引入Bitbucket Server不会跟踪的提交,分支和对象。这是我上面所指的不一致状态。您可以从中恢复过来,但是这是脖子上的疼痛,最好避免。


Cod*_*ard 1

阅读此文档,其中将描述内容的存储位置。

https://confluence.atlassian.com/bitbucketserver/bitbucket-server-home-directory-776640890.html

Bitbucket 主目录是存储 Bitbucket 服务器数据的位置。

git 内容存储在该data文件夹中。每个存储库的 gest 和 id 以及每一个的数据都存储在这个 id 文件夹中。每个文件夹包含裸存储库是一个bare存储库,因此您将无法查看内容。

一旦您获得了课程的访问权限,您必须将其存储在其他位置,然后克隆它以便能够查看内容。