在我的git存储库中,我有一个文件workflow.vsd
,表示在Microsoft Visio中创建的图表。
由于并非我们团队中的每个人都安装了Visio,因此更改workflow.vsd
的任何人都必须生成通讯员workflow.png
。
问题在于,人们经常提交新版本的vsd
文件而忘记提交png
,使图像过时。
只有在同一提交哈希下添加workflow.vsd
和workflow.png
时,git是否有某种方式允许提交?
换句话说,我只想提交Visio项目,并且只有在提交png时才提交:
git add workflow.vsd worflow.png
git commit
这应该会失败:
git add workflow.vsd
git commit
答案 0 :(得分:2)
你想要查看提交钩子--Git允许访问进程的几个点,其中一个点是预先提交的,你可以在其中注入一些代码。
您将能够检查那些带有某些内容的文件
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<ul id="primary-menu">
<li class="menu-item-has-children">
<a href="http://example.org">Click me</a>
</li>
</ul>
</body>
。
然后你也可以检查git status -s | grep "workflow.vsd"
并在它不存在时失败,或者运行一个自动生成png
的脚本,如escitalopram建议的那样。
答案 1 :(得分:1)
我建议不要使用该设置。不应要求用户将生成的内容放入版本控制中。在编程中,我们有构建工具来自动生成来自»源文件«的派生文件,例如vsd。也许你可以查看Makefiles或Maven或你认为合适的任何构建工具(虽然我不知道是否有一个工具可以从vsds制作png)。
如果你必须在版本控制中使用png,那么绕过它的另一种方式是commit hook,可以是»git服务器«或本地存储库。不过,您需要一个可以自动生成png的工具。
如果您还没有该工具,您仍然可以编写一个提交钩子,以编程方式检查两个文件是否都已更改,并在必要时拒绝提交。