我最近询问了Git中的关键字扩展,我愿意接受这个设计,不要在Git中真正支持这个想法.
无论好坏,我正在进行的项目需要SVN关键字扩展,如下所示:
svn propset svn:keywords "Id" expl3.dtx
Run Code Online (Sandbox Code Playgroud)
保持这个字符串是最新的:
$Id: expl3.dtx 803 2008-09-11 14:01:58Z will $
Run Code Online (Sandbox Code Playgroud)
但我非常想用Git来进行版本控制.不幸的是,根据文档,git-svn不支持这一点:
"除了svn:executable之外,我们忽略了所有SVN属性"
但是,通过一些前/后提交挂钩模拟这个关键字的东西似乎并不太棘手.我是第一个想要这个的人吗?有没有人有一些代码来做到这一点?
我曾经在Subversion/SVN下工作,并立即使用称为关键字替换的好功能.只需输入源文件即可:
/*
* $Author: ivanovpv $
* $Rev: 42 $
* $LastChangedDate: 2012-05-25 21:47:42 +0200 (Fri, 25 May 2012) $
*/
Run Code Online (Sandbox Code Playgroud)
每次Subversion都用实际的关键字替换关键字(Author,Rev,LastChangedDate).
前段时间我被迫转移到Git,只是想知道是否有类似Subversion在Git中的关键字替换?
浏览git文档时,我看不到任何类似于SVN的提交钩子或"propset"功能的东西,可以说,只要它提交到存储库,就可以更新文件中的版本号或版权声明.
git用户是否希望为这种功能编写外部脚本(这看起来似乎不可能)或者我只是错过了一些明显的东西?
编辑:为了清楚,我更感兴趣,例如,
svn propset svn:keywords "Author Date Id Revision" expl3.dtx
Run Code Online (Sandbox Code Playgroud)
这样的字符串:
$Id: expl3.dtx 780 2008-08-30 12:32:34Z morten $
Run Code Online (Sandbox Code Playgroud)
每当发生提交时,都会与相关信息保持同步.
我有一些文件vim.gitignore,SVN.gitignore和CVS.gitignore(在我的硬盘上传播).
我可以简单地将这些gitignore文件.gitignore包含在新Git项目的文件中吗?
编辑:我已经有一个全局忽略文件.
我只是想忽略不同类型项目中的不同文件,这可能吗?
我有一个GCC项目,并希望自动添加构建日期和修订号(从git)的定义到我的源.最好的方法是什么?
我的目标很简单,能够在启动时做这样的事情:
printf("Test app build on %s, revision %d", BUILD_DATE, REVISION)
Run Code Online (Sandbox Code Playgroud)
对于构建我使用make与简单的Makefile.inc,而不是autoconf或类似的东西.
可能吗?本git update-index --assume-unchanged是无解的,被忽略的文件已被跟踪.创建子模块.
例如
cat .customgitignore(1 | 2 | 3 ......)
i-do-not-need-this.extension
Run Code Online (Sandbox Code Playgroud)
猫.gitignore
basic-stuff.extension
<load> .customgitignore1
<load> .customgitignore2
<load> .customgitignore3
etc
Run Code Online (Sandbox Code Playgroud)
问题描述感兴趣的人.
我正在创建私人的配置回购.一个分支=一个配置.附加分支作为工作区.我根据需要将其他分支配置与工作空间合并.Branches-configs每个都有自己的.gitignore,只有在合并后才能应用.我试图在gitignore文件中省略冲突.
我有一个config.php假设在不同分支中的内容不同,例如testing和master.
我在另一个问题(防止合并来自Git的master中的文件)中询问如何防止此文件合并.
但我想知道,这是正确的方法吗?
我相信这是一个非常常见的用例,在不同的环境中有不同的配置文件,你想要跟踪配置,对吧?
我确定我的Git repo的两个分支应该只在一个文件中有所不同.确保这一点的最简单方法是完成所有工作branch1,并branch2在我切换到它时将其合并(包装到shell脚本中,因此每个交换机只需要一个命令).但是,有没有办法以更少的工作来做到这一点?
我有时使用Codeigniter,在我完成本地站点的开发之后,我需要将文件迁移到服务器./config/需要更改文件夹中的所有文件以匹配服务器设置.对这些更改进行完整的提交是不对的,我只是让Git完全忽略这些文件,还是有办法跟踪这些更改并在适当的时候将它们应用于Git?
我们的定制IDE输出XML文件,其编码使它们看起来像二进制文件.这些文件的差异和合并失败.
我们可以使用该tr命令创建这些文件的ASCII版本.我想进入一个状态,在这些文件提交之前总是自动转换为ascii.
我用Git拿起了我的版本控制副本,它全心全意警告我不要使用钩子,除非我真的需要.
我应该为此目的使用钩子吗?或者我可以做其他事情以确保文件在提交之前始终被转换?
Windows XP与msysgit 1.7.4
- = update = -
感谢大家的帮助和耐心.期待这个问题我尝试了以下,但它不起作用:
echo "*.xrp filter=xrp" > .git/info/attributes
git config --global filter.xrp.clean 'tr -cd '\''\11\12\15\40-\176'\'''
git config --global filter.xrp.smudge cat
git checkout --force
Run Code Online (Sandbox Code Playgroud)
此配置更改后,文件保持不变.即使我删除并重新结账.
tr配置为clean任务的命令确实可以单独工作.证明:
$ head -n 1 cashflow/repo/C_GMM_CashflowRepo.xrp
ÿþ< ! - - X M L R e p o s i t o r y f i l e 1 . 0 - - >
$ tr …Run Code Online (Sandbox Code Playgroud)