我对Mercurial相对较新,我的团队现在正在尝试将其作为Subversion的替代品.
如何将单个文件提交并推送到另一个存储库,同时保留我的工作目录中的其他修改未提交(或者至少不推送到其他存储库)?
这种情况发生在我们的数据库迁移中.我们希望将迁移提交到源代码控制,以便DBA可以在我们处理代码修改时查看和编辑它,以便与数据库迁移一起进行.这些变化还没有准备好,所以我们不想把它们全部推出去.
在颠覆中,我只是这样做:
svn add my_migration.sql
# commit only the migration, but not the other files I'm working on
svn commit -m "migration notes" my_mygration.sql
Run Code Online (Sandbox Code Playgroud)
并继续在当地工作.
这不适用于mercurial,因为当我将它推送到另一个存储库时,如果我没有删除它的更改,它希望我将它们拉下来,合并它们并将该合并提交到存储库.合并后提交不允许您省略文件,因此它会强制您提交本地存储库中的所有内容.
我能想到的最简单的事情是将文件提交到我的本地存储库,克隆我的本地存储库,从实际存储库中获取任何新的更改,合并它们并提交该合并,然后它们将我的更改推送出去.
hg add my_migration.sql
hg commit -m "migration notes" my_migration.sql
cd ..
hg clone project project-clone
cd project-clone
hg fetch http://hg/project
hg push http://hg/project
Run Code Online (Sandbox Code Playgroud)
这样可行,但感觉我错过了一些更简单的东西,某种方式告诉mercurial忽略我工作目录中已有的文件,只需进行合并并发送文件.我怀疑mercurial队列可以做到这一点,但我还没有完全搞定mq.
有没有办法忽略对mercurial提交中某些文件的更改?
我有一个特定的情况,我们有一个默认的oracle tnsnames.ora文件,指向127.0.0.1,但有些开发人员会修改它指向其他系统,但我们不想更改默认文件.
在subversion中,我简单地将它添加到ignore-on-commit更改列表中.有没有办法在mercurial这样做?
我正在使用ActionBarSherlock作为库.我们没有将ABS纳入我们的存储库,因此参与我们项目的每个人都必须单独下载和安装它.ActioBarSherlock是一个Android库项目,我通过在同一个Eclipse的工作区中打开它和我的项目来运行它(它们都没有被复制到工作区,它们都存在于另一个文件夹中)并project.properties通过以下方式将它添加到我的:
引用一个图书馆项目.
该引用路径是相对的,因为每个人都可能在不同的文件夹中有ABS,我们在Eclipse的project.properties文件中也有不同的路径android.library.reference.1.有没有办法在本地覆盖该库路径,以便我们可以project.properties在我们的仓库中,但Eclipse将在本地使用其他路径?目前,由于路径不同,每次从我们的仓库撤出后,我都必须手动修复该路径.
存在其他*.properties文件,但Eclipse忽略它们:
local.properties
可为构建系统定制的特定于计算机的属性.如果使用Ant构建项目,则它包含SDK安装的路径.由于文件的内容特定于SDK的本地安装,因此不应在源修订控制系统中维护local.properties.如果使用Eclipse,则不使用此文件.
ant.properties
构建系统的可自定义属性.您可以编辑此文件以覆盖Ant使用的默认构建设置,并提供密钥库和密钥别名的位置,以便构建工具在构建发布模式时可以对应用程序进行签名.此文件是项目的组成部分,因此请在源修订控制系统中进行维护.如果使用Eclipse,则不使用此文件.
我在 Eclipse 中有一个多模块 Maven Java (WAR) 项目。这取决于一堆其他 Java 项目。我们将 .settings 目录检查到源代码管理中,因为那里有许多手动建立的设置。
.settings 中的文件之一org.eclipse.wst.common.component也具有手动建立的设置。但是,Eclipse 会根据开发人员在 Eclipse 中打开的底层 JAR 项目不断修改该文件。我相信这样做是为了帮助完成这些工件的“工作区解析”。
然而,这种情况的结果是 Eclipse 不断地修改它org.eclipse.wst.common.component,开发人员不断地将它提交给源代码控制并相互争夺它。将这些文件排除在源代码控制之外是行不通的,因为其中有太多针对每个项目的手动调整。
我猜测 Eclipse 中有一个将项目设置和用户设置组合在一起的文件的设计缺陷!如果有人对如何更好地处理这个问题有任何见解,那就太好了。事实上,Eclipse-M2E 根本不适用于复杂项目的团队开发,除非每个开发人员都加载了完全相同的 Java 项目......
可能重复:
Mercurial:如何忽略对跟踪文件的更改
我在Mercurial存储库中有一个文件,我想作为示例配置文件,但在我开发它时,我想对它进行特定的更改,我不想跟踪,比如数据库密码.我尝试将该文件添加到.hgignore,但Mercurial仍然注意到修改.
我是否可以在Mercurial存储库中"跟踪"文件,但忽略该文件的未来本地更改而不将其从存储库本身中删除?