如何设置git在每次提交到本地仓库后自动推送到远程仓库(包括自动提供我的密码)?
我总是发现checkin(commit)邮件非常有用,可以跟踪其他人在代码库/存储库中的工作.如何设置SVN以在每次提交时通过电子邮件发送通讯组列表?
我在Windows上运行客户端,在Linux上运行Apache Subversion服务器.以下针对各种平台的答案可能对其他人有用.
有没有办法通知人们某些文件的更改?具体来说,我想跟踪*.sql文件的更改,并通知我们的开发人员进行更改.如何配置post commit hooks以通知?
我有一个190 MB纯文本文件,我想在github上跟踪.
文本文件是我们的文本到语音引擎的代词词典文件.我们经常在文本文件中添加和修改行,并且差异相当小,因此在这个意义上它非常适合git.
但是,GitHub具有严格的100 MB文件大小限制.我已经尝试过GitHub大文件存储服务,但每次更改时都会上传整个190 MB文件的新版本 - 因此,如果我沿着这条路走下去,那么它将迅速增长到几千兆字节.
我想将文件保存为一个文件而不是拆分它,因为这是我们的工作流程当前的方式,并且需要一些编码才能允许多个文本文件作为我们工具中的输入/输出(并且我们没有太多的开发资源) .
我有一个想法是,也许可以设置一些预提交和提交后挂钩来自动拆分和连接大文件?这可能吗?
其他想法?
编辑:我知道StackOverflow上类似问题中描述的100 MB文件大小限制,但我不认为我的问题是重复的,因为我要求的是差异很小且频繁的特定情况(我'我没有尝试上传大型ZIP文件或任何东西).但是,我的理解是git-lfs仅适用于很少更改的文件,而普通的git非常适合我所描述的那种文件; 除了GitHub有文件大小限制.
更新:我昨天花了一些时间尝试创建一个小型跨平台程序,该程序使用git hooks将文件拆分并连接成较小的文件.它有点工作但不太令人满意.您需要将.gitignore排除大文本文件,这使得git不知道它是否已更改.拆分文件最初没有检测到git status
或git commit
导致与此SO问题中描述的相同问题,这非常烦人:预提交脚本创建mysqldump文件,但"没有提交(工作目录清理)"?
设置一个cron作业(linux)和计划任务(windows)以定期自动重新生成拆分文件可能会解决这个问题,但是自动设置并不容易,可能会导致用户计算机出现性能问题,而且不是很优雅解.可能还需要一些像动态修改.gitignore这样的hacky解决方案,并且绝不会得到实际文本文件的差异,只有分割文件(尽管这可能是可接受的,因为它们非常相似).
所以,睡着了,今天我觉得git hook方法毕竟不是一个好选择,因为它有太多的怪癖.正如@PyRulez所建议的那样,我想我不得不看看除GitHub之外的其他服务(不幸的是,因为我喜欢github).托管解决方案更可取,以避免必须管理我们自己的服务器.我也希望它能公开上市......
更新2:我已经看了一些GitHub的替代品,目前我倾向于使用GitLab.我已经联系了GitHub关于提高100MB限制的可能性的支持,但如果他们不这样做,我将只为这个特定项目切换到GitLab.
我正在使用Jekyll构建网站,它编译ERB,SASS和c.到纯HTML和CSS.
在大多数提交之后,我想编译站点并将编译后的版本提交到单独的存储库或分支中,以便可以将其推送到静态服务器.
最好的方法是什么?
我已经有了解决方案,但我希望有人可能会更优雅.
在SVN post提交挂钩中,如何获取执行提交的用户?
我正在尝试创建一个post-commit.bat脚本,以便每次有人提交时,工作副本会自动更新.这是我的post-commit.bat:
"C:\Program Files\TortoiseSVN\bin\svn.exe" update C:\Temp\PROD --non-interactive --trust-server-cert --username admin --password myPassword
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误消息:
svn: E230001: Unable to connect to a repository at URL
'https://svn.mydomain.com/svn/prod/trunk'
svn: E230001: Server SSL certificate untrusted
Run Code Online (Sandbox Code Playgroud)
看起来像--trust-server-cert选项由于某种原因被忽略.有趣的是,从cmd窗口调用批处理文件工作正常.
我在Windows Server 2008上使用Subversion Edge服务器和TortoiseSVN客户端.
任何人都有任何想法,我做错了什么?任何帮助,将不胜感激.
LEC
我正在用bash编写一个post-commit脚本,我想将消息传递给正在提交的客户端.然而
echo my message >&2
Run Code Online (Sandbox Code Playgroud)
并没有让它回到客户端.甚至可以使用post-commit钩子发回消息吗?
我正在尝试为我在服务器上设置的存储库创建一个非常简单的提交后挂钩.脚本如下:
REPOS="$1"
REV="$2"
cd /var/www/directory && svn update --username user --password pass
Run Code Online (Sandbox Code Playgroud)
当我从我的SVN客户端运行提交时,我收到以下错误:
post-commit hook failed (exit code 255) with no output.
Run Code Online (Sandbox Code Playgroud)
但是,当我使用sudo bash post-commit从cli运行我的post-commit钩子时,它会完美地执行.关于我做错了什么的任何想法?
我有一个post-commit钩子,可以完成ruby.它工作得很好,但在某些情况下,当我做一个rebase或者我做一个提交时,我想跳过代码执行--amend.
有人知道如何在这些情况下触发提交后挂钩或任何解决方法吗?
格雷格
post-commit-hook ×10
git ×5
svn ×5
githooks ×3
bash ×2
github ×2
post-commit ×2
command-line ×1
git-push ×1
hook ×1
large-files ×1
stderr ×1
svn-hooks ×1