背景
前段时间我的公司决定托管我们自己的Atlassian产品,我们的源代码位于我们自己托管的Bitbucket服务器上。现在我们的VM(Windows Server 2012)正在崩溃,我们无法从外部到达bitbucket。
由于我们的产品暂时没有开发,我们不确定我们本地的代码是否是最新的。
问题:
我们需要获取最新版本的源代码,即使我们无法启动并运行bitbucket服务器。
我已使用远程桌面连接到服务器,但似乎无法找到这些文件。
问题
GIT回购的默认位置是什么? 是否有一个文件夹,除了" git"我可以搜索到那应该让我到正确的地方?
顺便说一句
我们正在转向托管服务......
一切顺利 /塔希尔
答案 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仓库内部的内容。 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
存储库,因此您将无法查看内容。
一旦您获得了课程的访问权限,您必须将其存储在其他地方,然后克隆它以便能够查看内容。