小编neo*_*eye的帖子

git-diff忽略^ M.

在某个项目中,某些文件包含^ M作为换行符分隔符.分散这些文件显然是不可能的,因为git-diff认为它是整个文件只是一行.

如何与之前的版本区别开来?

有没有像"在分辨时将^ M视为换行符"的选项?

prompt> git-diff "HEAD^" -- MyFile.as 
diff --git a/myproject/MyFile.as b/myproject/MyFile.as
index be78321..a393ba3 100644
--- a/myproject/MyFile.cpp
+++ b/myproject/MyFile.cpp
@@ -1 +1 @@
-<U+FEFF>import flash.events.MouseEvent;^Mimport mx.controls.*;^Mimport mx.utils.Delegate
\ No newline at end of file
+<U+FEFF>import flash.events.MouseEvent;^Mimport mx.controls.*;^Mimport mx.utils.Delegate
\ No newline at end of file
prompt>
Run Code Online (Sandbox Code Playgroud)

更新:

现在我编写了一个脚本,检查最新的10个版本并将CR转换为LF.

require 'fileutils'

if ARGV.size != 3
  puts "a git-path must be provided"
  puts "a filename must be provided"
  puts "a result-dir must be provided"
  puts "example:"
  puts "ruby gitcrdiff.rb project/dir1/dir2/dir3/ …
Run Code Online (Sandbox Code Playgroud)

git diff newline git-diff

423
推荐指数
9
解决办法
27万
查看次数

git-checkout新名称下的旧文件修订版

main.cpp在编辑器中打开了文件" ".

我想main.cpp在编辑器中看到之前的修订版" ".

我现在这样做的方式是这样的.

close "main.cpp" in the editor

prompt> mv main.cpp tmp
prompt> git checkout HEAD^ main.cpp
prompt> mv main.cpp old_main.cpp
prompt> mv tmp main.cpp
prompt>

open "main.cpp" and "old_main.cpp" in the editor
Run Code Online (Sandbox Code Playgroud)

可以简化,所以我不必在编辑器中关闭"main.cpp"吗?

我希望的是一个git-checkout可以做到这一点的变体.


更新:我在mac osx 10.5.7上使用git

prompt> git --version
git version 1.6.0.4
prompt> 
Run Code Online (Sandbox Code Playgroud)

UPDATE2:JakubNarębski的回答是:

prompt> git show HEAD^:dir1/dir2/dir3/main.cpp > old_main.cpp
prompt>
Run Code Online (Sandbox Code Playgroud)

更新3:Karmi的答案,针对特定修订:

prompt> git show 4c274dd91dc:higgs/Higgs.xcodeproj/project.pbxproj > old_project.pbxproj
prompt> 
Run Code Online (Sandbox Code Playgroud)

git

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

撤消"git add <dir>"?

我使用命令"git add dir"错误地添加了文件.我还没有运行"git commit".有没有办法从提交中删除此目录及其中包含的所有内容?

我试过了git reset dir,但没用.显然git reset file是撤消它的方法.但是我有这么多文件,所以时间很少.

git git-reset

171
推荐指数
4
解决办法
6万
查看次数

git删除文件的最旧版本

我有一个33 MB的大文件,我想永久删除该文件的最旧版本,所以我只保留最新的X版本.怎么做?

我裸露的存储库因此而变得庞大.

我尝试了以下..但它完全删除了文件

git filter-branch --index-filter 'git rm --cached --ignore-unmatch big_manual.txt' HEAD
Run Code Online (Sandbox Code Playgroud)

为了识别我的存储库中的大文件,我使用了Aristotle Pagaltzis的git-large-blob.

git

20
推荐指数
2
解决办法
6305
查看次数

pragma pack(1)也不是__attribute __((aligned(1)))有效

我的代码过去常用,但现在结构大小突然是16个字节.它曾经是13个字节.我最近从Xcode 4.2升级到Xcode 4.3.1(4E1019).

#pragma pack(1)
struct ChunkStruct {
    uint32_t width;
    uint32_t height;
    uint8_t bit_depth;
    uint8_t color_type;
    uint8_t compression;
    uint8_t filter;
    uint8_t interlace;
};
#pragma pack()
STATIC_ASSERT(expected_13bytes, sizeof(struct ChunkStruct) == 13);
Run Code Online (Sandbox Code Playgroud)

我试过不成功的使用

#pragma pack(push, 1)
/* struct ChunkStruct { ... }; */
#pragma pack(pop)
Run Code Online (Sandbox Code Playgroud)

我也试过以下,但没有运气

struct ChunkStruct {
    uint32_t width;
    uint32_t height;
    uint8_t bit_depth;
    uint8_t color_type;
    uint8_t compression;
    uint8_t filter;
    uint8_t interlace;
} __attribute__ ((aligned (1)));
Run Code Online (Sandbox Code Playgroud)

如何用Xcode 4.3.1打包结构?

pragma llvm pack xcode4

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

iOS模拟器 - 如何将默认模拟器设为iPhone

我下载了iOS 4.2版本的最新XCode.当我在模拟器中测试任何应用程序时,默认情况下它在ipad模拟器中运行.如何让我的模拟器默认为iPhone.

iphone ipad ios ios-simulator

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

如何在真正的Android设备上部署Titanium应用程序?

我想知道如何从TitaniumStudio部署到真正的Android设备.我有一个在模拟器中工作的钛应用程序.但我对如何让它在真实设备上运行毫无头绪.

我知道如何使用Xcode将我的钛应用程序部署到我的iPhone上.

我也安装了Eclipse,并设法将简单的HelloWorld.app部署到真正的Android设备上.


更新:我刚刚了解到可以使用命令行完成部署.

[ 12:49:59 ~ ] $ adb install /Users/johndoe/git/helloworld/build/android/bin/app.apk
772 KB/s (2035982 bytes in 2.573s)
        pkg: /data/local/tmp/app.apk
Success
[ 12:50:54 ~ ] $
Run Code Online (Sandbox Code Playgroud)

有没有办法在TitaniumStudio中部署?

eclipse android titanium

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

踩踏时从方法"返回"?

我想退出我正在逐步完成的当前方法.

-(void)helloWorld {
    NSLog(@"Hello");
    // I would like to return here, so that "World" isn't printed.
    NSLog(@"World");  
}
Run Code Online (Sandbox Code Playgroud)

我试过以下,但没有运气.

(lldb) expr return
<no result>
Run Code Online (Sandbox Code Playgroud)

这可能与lldb?

xcode objective-c lldb

12
推荐指数
2
解决办法
2485
查看次数

流程重新父母:控制谁是新父母

新父母总是"初始化"还是有某种方法来控制谁成为新的父母

维基百科似乎表明它总是"初始化".我真的希望事实并非如此.我尝试过setpgid和setsid所能想到的一切,但没有运气.现在,我看到这篇维基百科文章,我需要建议.

在类Unix操作系统中,任何孤立的进程都将立即被特殊的init系统进程采用.此操作称为重新父级并自动发生.尽管从技术上讲,该进程将"init"进程作为其父进程,但它仍称为孤立进程,因为最初创建它的进程不再存在. 取自维基百科

我问的原因是因为我正在制作一个运行许多工作流程的Mac应用程序.我希望这些工作进程在任务管理器的进程层次结构中显示为主进程的子进程.一些工作者作为不同的用户运行,并且在Mac OS XI上需要分叉两次以将权限传递给子进程.因为我"双叉"工作人员目前作为守护人员运行,当与任务管理员一起查看时,我看到工作人员正在将"init"作为他们的父进程.

unix fork process orphan process-reaper

8
推荐指数
2
解决办法
3330
查看次数

使用特定语言环境(en_US 或无)运行单元测试

有没有办法在运行单元测试时强制使用特定的语言环境?

例如。始终使用 en_US 或强制无语言环境,以便不加载任何 .lproj 文件。

我的单元测试对设置应用程序(在 iOS 模拟器中)中当前选择的语言很敏感。最好我希望我的单元测试对语言不敏感。

下面是我的单元测试代码,显示了问题

@interface MYGalleryTests : SenTestCase
@end
@implementation MYGalleryTests
-(void)test0 {
    // This test doesn't work. 
    // I get 'No pictures' when locale is en_US
    // I get 'Ingen billeder' when locale is da_DK
    NSString* actual = [MYGallery emptyMessage];
    NSString* expected = @"EMPTY_MESSAGE"; 
    STAssertEqualObjects(actual, expected, nil);
}
@end


@interface MYGallery : NSObject
+(NSString*)emptyMessage;
@end
@implementation MYGallery
+(NSString*)emptyMessage {
    return NSLocalizedStringFromTable(@"EMPTY_MESSAGE", @"Gallery", @"Message shown when gallery is empty");
}
@end


en.lproj/Gallery.strings
/* Message …
Run Code Online (Sandbox Code Playgroud)

cocoa nslocalizedstring ios nslocale sentestingkit

6
推荐指数
2
解决办法
5874
查看次数