我们正在使用我们所有人都使用的单个远程存储库的模型.我们分支新功能并重新集成到主干分支.我们的工作流程是,当其他功能集成到主干中时,我们应该从主干集成到我们的工作分支.
因此,我们做的事情并不少见:
(branch) $ git commit -a -m"blah blah blah"
(branch) $ git fetch # origin/trunk is updated
(branch) $ git checkout trunk
(trunk) $ git pull # trunk is fast-forwarded to current version of origin/trunk.
(trunk) $ git checkout branch
(branch) $ git merge trunk
(branch) $ git push
Run Code Online (Sandbox Code Playgroud)
我不喜欢"git checkout trunk/git pull/git checkout branch"循环.它通常与Visual Studio合并,抱怨我的所有文件和项目都在磁盘上发生了变化,并且应该重新加载它们.两个结帐.而拉.合并.合并是不可避免的,但由于git如何工作,它应该能够在主干上进行快进,而不需要检查它.
但我不知道这个命令,而我的google-foo在这方面让我失望了.谁知道怎么样?
如何在Ruby中从内存中完全删除类?
我有两个我正在使用的文件:
# foo.rb
require 'expensive_library'
class Foo < ExpensiveLibrary::Plugin
...
end
Run Code Online (Sandbox Code Playgroud)
和:
# foo_tests.rb
require 'foo'
require 'test/unit'
class foo_tests < Test::Unit::TestCase
def test_foo_meets_spec_1
...
end
def test_foo_meets_deprecated_spec
...
end
end
Run Code Online (Sandbox Code Playgroud)
昂贵的图书馆很贵; 加载需要15秒以上.这在开发过程中反复运行测试的时间太长(测试套件的其余部分不到1秒).
我通过启动Pry并编写一个加载两个文件和调用的函数来解决昂贵库的加载时间问题Test::Unit:Autorunner.run
.在第一次测试中,这仍然有15秒的暂停,但后续测试运行每次不到1秒.
但是,有两个问题:
根据其他Stack Overflow问题(如" 如何在Ruby中取消定义类? "),我试过调用Object.constants.remove(:Foo)
和Object.constants.remove(:Foo_tests)
.我不再获得方法重新定义的错误,但现在自动运行器多次运行测试,包括删除测试.
我想要的是在不重新加载ExpensiveLibrary的情况下运行修改过的测试.取消定义测试类是我看到的方式,但我不知道如何.其他解决方案可能更好.