我们有多个开发人员在使用Entity Framework 5.0的项目上工作。 每个开发人员都使用他自己的本地SQL 2012数据库,以便在不妨碍其他人的情况下开发和testing。 起初,我们使用了自动迁移和基于代码的迁移的混合。 这根本不能很好地工作,所以我们决定禁用自动迁移,只允许基于代码。 我应该补充一点,我们再次启动一个干净的数据库,没有从所有的自动迁移中“损坏” _MigrationsHistory 。 所以现在的工作stream程是: 开发人员更改他的数据模型 add-migration <Name>并将其应用到他的数据库与update-database 。 检查数据模型更改和迁移到Git。 另一个开发人员将接收更改并将其应用于其数据库。 到目前为止,这工作得很好。 然而,在今天之前,通常只有我是使移民和其他人实行移民。 但是今天有三个开发者的迁移。 我只是把这些迁移,做了一个update-database ,这很好。 然而,我也对自己的datamodel进行了修改,所以在update-database的最后,它给了我一个警告,说明我还没有及时更新,所以我做了add-migration <my migration> 。 但是,当它支持迁移时,它给了我已经应用到数据库的所有迁移的变化。 所以:它试图删除已经被删除的列,尝试创build一个已经存在的表等。 怎么可能? 我的假设是,EF只会检查_MigrationsHistory表,并找出表中尚未出现哪些迁移,然后逐一应用名称中包含的时间戳。 但显然不是,因为即使当我撤消自己的变化,我有一个干净的环境,它仍然抱怨我的数据库不与模型同步。 但我只是把这些改变,并将其应用到我的数据库。 它是同步的。 我可以看到我刚刚在_MigrationsHistory表中应用的迁移。 我能想到的唯一的事情是我添加了一个属性到一个datamodel,不会导致数据库的变化(我添加了一个List<X> datamodel Y其中X是在一对多关系中的许多。这不会导致数据库更改,因为X已经有一个外键到Y)。 那可以吗? 如果是这样,这真的很脆弱,因为没有办法为此添加迁移,因为没有数据库更改,我不知道如何解决这个问题。 我不知道如何处理这个问题,因为我当然可以编辑它的脚手架,并删除已经应用到我的数据库的所有东西。 但是呢? 我检查了一下,然后其他一些开发者得到了同样的信息,即使在应用我的新变更之后,他的数据库也没有及时更新,脚手架自己的变化,得到同样的废话脚手架,编辑它,检查它,然后下一个开发人员得到它。 它变成了一个恶性循环,与我们使用自动迁移时所遇到的类似,我认为我们已经通过切换到仅基于代码的方式来解决这个问题。 现在我不能相信它做正确的事情,这是一个噩梦,这样的工作。 我也尝试过使用update-database -t:201211091112102_<migrationname>将我从同事那里获得的迁移一一添加,但无济于事。 它仍然给我错误的脚手架。 那么,我们在这里做错了什么,或者EF是不是为这样的协作而build? UPDATE 我创build了一个可重复的testing用例,但是为了模拟这个多用户/多数据库场景,这是一个漫长的舞蹈。 https://github.com/JulianR/EfMigrationsTest/ 有上述项目时重现的步骤(这些步骤也存在于代码中): 添加迁移Init 更新数据库(在数据库'TestDb') 将连接string更改为指向TestDb1 […]
我知道,在我现有的Emacs会话中调用(start-server)之后,我可以使用emacsclient -c (在同一台计算机上)创build连接到该服务器的新帧,以便每个由emacsclient创build的新帧都可以访问同一组共享状态(如缓冲区)。 我发现的大多数文档都关注“让我快速访问我的本地Emacs”用例,所以有两件事情我还没有看到任何细节: emacsclient -c可以访问由其他用户启动的Emacs服务器,还是硬连接来检测仅由我自己的用户启动的会话? Emacs服务器(直接或间接)是否支持远程连接? 也就是说,是否有一些方法来设置Emacs(可能涉及到SSH),允许在远程机器上调用emacsclient -c访问Emacs服务器的本地状态? (如果您还没有猜到,我最终想要做的就是将上述两种技术结合起来,以提供基本的协作编辑支持。) 这是一个现实世界的问题,所以这就是我正在处理的事情: Emacs已经有了必要的function(23.3.1,64位)。 我可以从标准Ubuntu版本库扩展到Emacs扩展,但我不想。 (我相信,我不相信Rudel ,)。 没有新用户或用户欺骗。 解决scheme应该与现有的一组用户帐户一起工作,并且用户不能假装是其他用户(例如通过su或ssh )。 如果它有什么区别,机器是在一个专用的局域网上,有OpenSSH客户端和服务器安装(和运行),所有用户可以连接到(他们自己的帐户)所有机器,但他们没有共享文件系统。 那么,有人知道Emacs服务器是否可以 向其他用户授予访问权限,或者 提供远程访问? 编辑 正如在rwb的回答中所评论的那样,很显然,通过运行emacsclient -c在本地打开的新窗口实际上是由远程 Emacs服务器进程创build的。 也就是说, emacsclient只是触发服务器中的相关行为。 这会导致一些显示设置不正确的问题,因为服务器通常不能访问本地桌面(见下文)。 但是,如果使用以下命令序列,则现在可以连接到远程Emacs会话: 在一个terminal中, 1.22.333.44是1.22.333.44的IP地址: ssh -t -X remotehost \ "emacs -nw –eval '(progn (setq server-host \"1.22.333.44\" server-use-tcp t) (server-start))'" 然后在另一个(在同一台机器上): scp remotehost:.emacs.d/server/server /tmp/server-file DISPLAY=localhost:10 emacsclient -c -f […]
我的开源Android应用程序已经完成了Android方式的国际化,并带有strings.xml文件。 社区有许多来自许多国家的人,他们愿意使用合作网站来提供/改进翻译。 有Launchpad,但它只支持gettext格式,所以我们将不得不使用脚本,不是很方便。 什么网站方便翻译开源Android应用程序? 任何人都必须能够在没有任何事先批准的情况下开始投稿。
背景 去年,我在一所大学的物理研究小组实习。 在这个小组中,我们主要使用LabVIEW编写程序来控制我们的设置,进行数据采集和分析数据。 对于前两个目的来说,这个工作相当不错,但对于数据分析来说,这是一个真正的痛苦。 最重要的是,每个人都是自学成才的,所以编写的代码通常是相当混乱的(难怪每个博士都决定从头开始重写所有的东西)。 由于IT部门严格的软件和networking规定,版本控制是未知的,不可能build立。 现在,事情确实出乎意料地好,但是自然科学的人们如何做他们的软件开发呢? 问题 一些具体问题: 你用什么语言/环境开发科学软件,尤其是数据分析? 什么库? (例如,你用什么绘图?) 是否有没有任何重要的编程背景的人的培训? 你有什么像版本控制和错误跟踪? 你会如何去努力创造一个体面的编程环境,而不是在个别科学家的方式上太多(特别是物理学家是固执的人!) 到目前为止的答案总结 (或者我的解释)到目前为止:( 2008-10-11) 似乎是使用最广泛的语言/软件包: LabVIEW的 python 与SciPy , NumPy , PyLab等(参见Brandon的答复下载和链接) C / C ++ MATLAB 几乎所有的受访者都使用版本控制; 错误跟踪和其他过程是非常不常见的。 软件木工课程是向科学家教授编程和开发技术的好方法。 如何改善事情? 不要强迫人们遵守严格的协议。 build立一个自己的环境,并向他人展示好处。 帮助他们开始使用版本控制,错误跟踪等。 回顾其他人的代码可以帮助,但请注意,不是每个人都可以欣赏这一点。
我正在Github上开发一些私人项目,并且我想每晚在我的部署服务器上添加cronjobs以从github中获取最新版本。 我目前正在通过在每个部署服务器上生成密钥对并将公钥作为“部署密钥”添加到github项目中来实现这一点。 但是,最近我发现这些部署密钥实际上具有写入项目的权限。 因此,每个服务器pipe理员都可能开始编辑。 此外,我可以将每个部署密钥添加到只有一个存储库,而我希望能够在同一个部署服务器上部署多个存储库。 有没有办法提供专用存储库的只读访问Github上的选定用户?