Archive for the ‘Python’ Category
Patch中的空文件
12月 14, 2011
留下评论
通过版本管理工具生成的patch中若包含空文件, 直接用patch在目标项目中去应用这个补丁,这个空文件不会被patch创建,这是因为patch会自动忽略掉补丁中的空文件。
例如,version0 和version1分别是同一个git项目的两个版本拷贝
$ ls version0/ 001.txt $ ls version1/ 001.txt 002.txt
version1比version0多了一个002.txt的空文件, 用git diff生成test.patch
$cat test.patch diff --git a/002.txt b/002.txt new file mode 100644 index 0000000..e69de29
然后再version01中用patch命令应用test.path,出现提示“Only garbage was found…”
$ patch -p1
解决方法: 利用版本管理工具去应用补丁, 比如git中,利用“git apply”去打补丁。
$ git apply ../test.patch
一般情况下,很少直接创建空文件并提交, 但是这种情况一般发生在python package中, python package需要在目录中有个__init__.py文件
__init__.py是个空文件, 在patch的时候,目标目录中并不会创建这个文件, 如果直接用patch命令,于是悲剧发生了…
Traceback (most recent call last): File "gyp/gyp", line 18, in sys.exit(gyp.main(sys.argv[1:])) File "gyp/pylib/gyp/__init__.py", line 436, in main options.circular_check) File "gyp/pylib/gyp/__init__.py", line 55, in Load generator = __import__(generator_name, globals(), locals(), generator_name) ImportError: No module named generator.make
另外一种解决方法 提交的__init__.py中插入一些空格字符或者注释,以避免上述情况的发生。