小编idb*_*rii的帖子

如何在维护历史记录的同时将单个目录从git存储库移动到新存储库?

我继承了一个包含多个项目的git存储库.我想将存储库拆分为新的单个存储库,每个项目一个,然后让主存储库将项目作为子模块包含在内.如果可能的话,我想在保持各个项目的修订历史的同时完成所有这些工作.

我可以为每个项目克隆存储库并每次删除所有其他项目,但是有更好的方法可以避免在每个新项目存储库中都有克隆历史记录吗?

git git-submodules

109
推荐指数
1
解决办法
2万
查看次数

在C#中,为什么我不能在foreach循环中修改值类型实例的成员?

我知道值类型应该是不可变的,但这只是一个建议,而不是一个规则,对吧?那么为什么我不能做这样的事情:

struct MyStruct
{
    public string Name { get; set; }
}

 public class Program
{
    static void Main(string[] args)
    {
        MyStruct[] array = new MyStruct[] { new MyStruct { Name = "1" }, new MyStruct { Name = "2" } };
        foreach (var item in array)
        {
            item.Name = "3";
        }
        //for (int i = 0; i < array.Length; i++)
        //{
        //    array[i].Name = "3";
        //}

        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

代码中的foreach循环不会编译,而注释for循环工作正常.错误消息:

无法修改'item'的成员,因为它是'foreach迭代变量'

这是为什么?

c# foreach immutability value-type

62
推荐指数
3
解决办法
3万
查看次数

在Android设备上运行Robolectric测试的最佳方式

我有一个Robolectric测试项目设置,但我也想在我的设备上运行这些测试,以检查我是不是因为JVM与Dalvik的实现差异.

与robolectric测试不同,我不会经常运行这些测试.我担心的是,维护测试套件并没有付出太多努力,并且他们会验证实际的设备功能.

最好的方法是什么?


我目前得到的:

我的robolectric测试项目作为测试用例TestPackage.我用测试用例TestRoboOnAndroid创建了一个Android Test项目.它创建一个TestPackage并对TestPackage中的每个测试进行测试.

现在,每次我向我的robolectric套件添加测试时,我都需要手动将其添加到我的设备套件中.有没有办法用反射自动完成?

此外,Robolectric使用JUnit 4(默认情况下),Android使用JUnit 3.所以我必须使用JUnit 3样式编写所有的Robolectric测试(从而junit.framework不是导入org.junit).

junit android robolectric

19
推荐指数
2
解决办法
3578
查看次数

.NET中的Visual Studio观察窗口中有哪些特殊变量?

我昨天在.NET的VS.NET监视窗口中了解了$ exception.这显示了当前抛出的异常,并且在不需要找到小感叹号图标并将鼠标悬停在其上方时节省了大量时间.

观察窗口还有哪些其他特殊变量?

(注意:这个问题是关于.NET,而不是C++.)

.net debugging visual-studio

18
推荐指数
2
解决办法
3085
查看次数

什么是'Saff Squeeze'找到错误的方法?

我已阅读Kent Beck的原始博客帖子上的孔雀皇挤压方法.我还阅读了这篇InfoQ帖子,详细阐述了该主题,但未提供任何示例.

我知道它本质上是一种在不依赖调试器的情况下查找错误的方法.但是我发现Kent的例子并不那么明确.

更开明的人可以通过一个明确,具体的例子教育我如何使用这种方法吗?它有望成为研究该方法的其他人的学习资源.

language-agnostic debugging tdd unit-testing saff-squeeze

18
推荐指数
1
解决办法
3915
查看次数

除去Vim中的正则表达式匹配之外的所有内容

我的具体案例是一个包含大量文本和IPv4地址的文本文档.我想删除除IP地址以外的所有内容.

我可以:vglobal用来搜索([0-9]{1,3}\.){3}[0-9]{1,3}和删除没有IP地址的所有行,但之后我只知道如何搜索整行并选择匹配的文本.有没有更简单的方法.

简而言之,我正在寻找一种方法来执行以下操作而不使用外部程序(如grep):

grep --extended-regexp --only-matching --regexp="([0-9]{1,3}\.){3}[0-9]{1,3}"
Run Code Online (Sandbox Code Playgroud)

从vim调用grep可能需要调整我的正则表达式(例如:remove\v).使用vim的增量搜索向我显示我的模式是正确的,我也不想在grep中验证我的正则表达式.


编辑:感谢彼得,这是我现在使用的功能.(C是我在函数中常常使用的寄存器.)

"" Remove all text except what matches the current search result
"" The opposite of :%s///g (which clears all instances of the current search).
function! ClearAllButMatches()
    let old = @c
    let @c=""
    %s//\=setreg('C', submatch(0), 'l')/g
    %d _
    put c
    0d _
    let @c = old
endfunction
Run Code Online (Sandbox Code Playgroud)

Edit2:我把它作为一个接受范围的命令(但默认为整个文件).

"" Remove all text except what matches the current search result. Will put each
"" match on its …
Run Code Online (Sandbox Code Playgroud)

regex vim

15
推荐指数
4
解决办法
8616
查看次数

我的git别名存储在哪里?

我有一个我找不到的别名.打字git help subaddvim给我:

`git subaddvim' is aliased to `log HEAD'
Run Code Online (Sandbox Code Playgroud)

我想我的定义是这样的:

git config --local alias.subaddvim 'log HEAD'
Run Code Online (Sandbox Code Playgroud)

我看了看$repo_path/.gitconfig,~/.gitconfig,/etc/gitconfig,但他们都没有一个subaddvim条目.

我还能在哪里看?

git alias

15
推荐指数
2
解决办法
6762
查看次数

如何让vim记住过去的猛拉?(或者将YankRing配置为更少.)

当我在vim中删除某些内容时,它会被添加到编号的寄存器中.我猛拉的最后一项是在寄存器0中.我如何让vim自动记住最后10次猛拉?


我尝试过YankRing,但它改变了太多的vim行为.这个问题的另一种措辞是:我如何配置YankRing以便它只在粘贴后添加Ctrl-n/Ctrl-p行为(循环通过以前的yanks)?

我经常猛拉一个字,视觉选择另一个单词,粘贴,视觉选择另一个单词,粘贴.如果没有YankRing,最后一个粘贴会放置第一个选定的单词.使用YankRing,它再次粘贴相同的单词.(这只是一个例子.)

这是我的一些设置.正如您所看到的,我查看了YankRing文档以禁用尽可能多的选项以恢复正常的vim行为.

" Some settings to try to get yank ring to not mess with default vim
" functionality so much.
let g:yankring_manage_numbered_reg = 0
let g:yankring_clipboard_monitor = 0
let g:yankring_paste_check_default_buffer = 0

" Don't let yankring use f, t, /. It doesn't record them properly in macros
" and that's my most common use. Yankring also blocks macros of macros (it
" prompts for the macro register), but removing @ doesn't fix that :(
let …
Run Code Online (Sandbox Code Playgroud)

vim yank

11
推荐指数
2
解决办法
3187
查看次数

找到gitignore文件和行,导致git忽略一个文件

如何找到导致文件被git忽略的gitignore文件和行?

git

11
推荐指数
1
解决办法
1万
查看次数

在TortoiseSVN中应用补丁的空差异窗口

脚步:

  1. 使用TortoiseSVN的上下文菜单选择"Create Patch"
  2. 在另一台机器上执行相同操作但选择"Apply Patch"并选择步骤1中生成的文件.
  3. 将打开一个空白合并窗口.

它看起来像这样:

截图

补丁文件是有效的,我可以使用unix补丁成功应用它(有一些行结束修补).

我在Windows 10和TortoiseSVN/TortoiseMerge 1.9.5上

tortoisesvn tortoisemerge

11
推荐指数
1
解决办法
964
查看次数