git sparsecheckout-如何拉入不同的目录

git sparsecheckout-如何拉入不同的目录,git,git-submodules,git-subtree,sparse-checkout,pootle,Git,Git Submodules,Git Subtree,Sparse Checkout,Pootle,我使用pootle允许人们在PHP Yii项目中翻译.po文件 一旦翻译人员更新了.po文件,Pootle就可以拉和推翻译。 另外,我们有在网站上工作的开发人员,他们也可能会更新翻译文件以添加更多需要翻译的文本 Yii要求.po文件位于: yii项目/protected/messages/en_gb/messages.po Pootle要求目录结构为: pootle/yii项目/en_GB/messages.po 为了让pootle拉和推,需要将.git目录放在pootle/yii projec

我使用pootle允许人们在PHP Yii项目中翻译.po文件

一旦翻译人员更新了.po文件,Pootle就可以拉和推翻译。 另外,我们有在网站上工作的开发人员,他们也可能会更新翻译文件以添加更多需要翻译的文本

Yii要求.po文件位于:

yii项目/protected/messages/en_gb/messages.po

Pootle要求目录结构为:

pootle/yii项目/en_GB/messages.po

为了让pootle拉和推,需要将.git目录放在pootle/yii project/.git中

我尝试过使用git稀疏签出,但这会将文件拉到pootle/yii project/protected/messages/en_gb/messages.po中,不幸的是,pootle没有接收到这些文件

我不能在其他地方拉取存储库,然后再进行软链接,因为这样pootle将无法找到.git目录

我真正想做的是稀疏地签出一个目录,并将结果映射到另一个目录,即签出:

pootle/yii项目/受保护/消息/->pootle/yii项目

我不想使用git子树,因为我希望开发人员或翻译人员能够更新文件。我不想使用子模块,因为我不喜欢额外的拉开销,我们希望开发人员在一次提交(而不是主项目上的一次提交和子模块上的一次提交)中包含与新特性相关的所有更改


有什么建议吗?

我们无法找到使用git sparsecheckout的解决方案

相反,我们使用子模块

我们首先提取了yii project/protected/messages目录,并创建了一个名为yii project translations的新存储库

然后,我们将每个目录(包括翻译)小写,例如:

git mv en_GB en_gb
然后,我们将新存储库作为子模块重新包含到原始yii项目中:

cd yii-project/
git subtree split --prefix=protected/messages --branch=yii-project-translations
cd protected/
git rm -rf ./messages
mkdir messages
pushd messages
git init
git remote add origin git-server:yii-project-translations
git pull ../../ yii-project-translations
git push origin -u master
popd
并将此存储库克隆为pootle项目:

cd $POOTLE_HOME/translations/
git clone gitolite@git.algo.travel:yii-project-translations yii-project
最后,我们将pootle数据库中的几个表更新为小写目录名,这样所有内容都可以很好地结合在一起:

update pootle_app_language set code = lower(code);
update pootle_app_directory set pootle_path = lower(pootle_path);
update pootle_app_translationproject set real_path = lower(real_path), pootle_path = lower(pootle_path); 

@michal cihar-Weblate看起来很棒。如果我在狮子狗路径上有90%的距离之前遇到它,我会用它。谢谢

是否有可能将其中一个目录链接到另一个目录?@desert69-不幸的是,pootle需要将.git目录放在pootle/yii项目中,pootle才能获取它。如果我将PooTy/Yi项目软链接到YIProject /保护/消息/,PooToT将无法找到Git的Git DistoRy穷人支持和Pootle不同的工作流,这是我编写Weblate的原因之一,所以您可以考虑使用它。看见