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

时间:2018-04-23 16:20:52

标签: git windows-server-2012 bitbucket-server

背景

前段时间我的公司决定托管我们自己的Atlassian产品,我们的源代码位于我们自己托管的Bitbucket服务器上。现在我们的VM(Windows Server 2012)正在崩溃,我们无法从外部到达bitbucket。

由于我们的产品暂时没有开发,我们不确定我们本地的代码是否是最新的。

问题:

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

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

问题

GIT回购的默认位置是什么? 是否有一个文件夹,除了" git"我可以搜索到那应该让我到正确的地方?

顺便说一句

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

一切顺利 /塔希尔

3 个答案:

答案 0 :(得分:4)

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

找到您的存储库

Bitbucket Server存储库存储在$BITBUCKET_HOME/shared/data/repositories/<id>的磁盘上,其中<id>是数据库中存储库表中的存储库ID。假设你有一个包含slug“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';

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

如果由于某种原因,您的数据库不可用,还有另一种方法。每个存储库都包含一个 repository-config 文件,其中包含存储库和项目名称。它的内容可能看起来像这样:

#>***********************************************
# 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创建新存储库时看到的类型。这种repo存储所有实际的git存储库数据,包含工作目录中 .git 子文件夹中的所有历史记录,修订版本,对象等。这种存储库有一个“工作树”,这基本上意味着它包含你正在处理的任何分支中的所有文件“签出”并在工作目录中可用。在本地计算机上的仓库中运行ls .git,您将看到git仓库内部的内容。
  • 裸存储库没有工作树,也没有签出文件。您通常会在 .git 文件夹中看到的内容存在于裸仓库的顶层。在ls下的任意文件夹中$BITBUCKET_HOME/shared/data/repositories,您会看到在本地回购的 .git 文件夹中看到的相同类型的文件/文件夹。

Bitbucket将repos存储为“裸”的原因很简单:服务器端没有进行任何开发工作,所以不需要“检查”特定的分支或工作树来完成工作。

现在,尝试在Bitbucket Server中的裸存储库上执行任何操作非常非常危险。你绕过整个服务器机制,它的所有内部业务逻辑,如果你尝试,你可能会破坏一些东西。最好的情况是你可以引入Bitbucket数据库中没有考虑到的变化,并创建不一致的东西,这将是很多工作要从中恢复。

你想做的事情与你经常做的一样:克隆它!关于git的好处是它非常灵活。你可以从URL中git克隆文件路径。通过远程安装磁盘,或者只需将相关的<id> repo文件夹复制到本地计算机,即可直接从工作站访问裸存储库。然后克隆它! git clone $BITBUCKET_HOME/shared/data/repositories/<id> mylocalworkingcopy会将您的裸仓库克隆到名为 mylocalworkingcopy 的新文件夹中,并检出默认分支。你可以做任何你需要做的事情。

警告:推送您的更改。推送工作,但要么您将更改推送到虚拟副本,要么您将直接将更改推送到服务器,绕过Bitbucket,并引入提交,分支和非对象正在被Bitbucket Server跟踪。这是我上面提到的不一致状态。这是你可以恢复的东西,但它是颈部疼痛,最好避免。

答案 1 :(得分:0)

Bitbucket通过浏览加密您的repos,它们不能作为文件提供。或者它们不是真实的文件。

答案 2 :(得分:0)

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

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

  

Bitbucket主目录是存储Bitbucket Server数据的地方。

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

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