我一直在想是否有一个很好的"git export"解决方案,它创建了一个没有.git存储库目录的树的副本.我知道至少有三种方法:
git clone然后删除.git存储库目录.git checkout-index 提到这个功能,但开头是"只需将所需的树读入索引...",我不完全确定如何做.git-export是第三方脚本,基本上git clone进入临时位置,然后rsync --exclude='.git'进入最终目的地.这些解决方案都没有让我感到满意.最接近的一个svn export选项可能是选项1,因为这两个都要求目标目录首先为空.但是假设我可以弄清楚将树读入索引意味着什么,选项2似乎更好.
我经常使用git stash并git stash pop保存和恢复工作树中的更改.昨天我的工作树上有一些变化,我已经藏起来了,然后我对工作树做了更多改动.我想回去查看昨天发生的变化,但git stash pop似乎删除了对相关提交的所有引用.
我知道如果我使用git stash那么.git/refs/stash包含用于创建存储的提交的引用.而.git/logs/refs/stash包含整个存储.但那些参考文献已经消失了git stash pop.我知道提交仍然在我的存储库中,但我不知道它是什么.
有没有一种简单的方法来恢复昨天的隐藏提交引用?
请注意,这对我来说并不重要,因为我有每日备份,可以回到昨天的工作树来获取我的更改.我问,因为必须有一个更简单的方法!
为什么以下在Python中出现意外行为?
>>> a = 256
>>> b = 256
>>> a is b
True # This is an expected result
>>> a = 257
>>> b = 257
>>> a is b
False # What happened here? Why is this False?
>>> 257 is 257
True # Yet the literal numbers compare properly
Run Code Online (Sandbox Code Playgroud)
我使用的是Python 2.5.2.尝试一些不同版本的Python,似乎Python 2.3.3显示了99到100之间的上述行为.
基于以上所述,我可以假设Python在内部实现,使得"小"整数以不同于大整数的方式存储,is运算符可以区分.为什么泄漏抽象?当我不知道它们是否是数字时,比较两个任意对象以查看它们是否相同的更好的方法是什么?
自从当前分支分支以来,在分支上获取提交日志的最佳方法是什么?我目前的解决方案是:
git log $(git merge-base HEAD branch)..branch
Run Code Online (Sandbox Code Playgroud)
git-diff的文档表明它git diff A...B等同于git diff $(git-merge-base A B) B.另一方面,git-rev-parse的文档表明它r1...r2被定义为r1 r2 --not $(git merge-base --all r1 r2).
为什么这些不同?请注意,这git diff HEAD...branch给了我想要的差异,但相应的git log命令给了我更多的东西.
在图片中,假设:
x---y---z---branch
/
---a---b---c---d---e---HEAD
我想得到一个包含提交x,y,z的日志.
git diff HEAD...branch 给出了这些提交git log HEAD...branch给出x,y,z,c,d,e.给定绝对或相对路径(在类Unix系统中),我想在解析任何中间符号链接后确定目标的完整路径.奖励积分也可以同时解析〜用户名表示法.
如果目标是目录,则可以将chdir()放入目录然后调用getcwd(),但我真的想从shell脚本而不是编写C帮助程序.不幸的是,shell倾向于试图隐藏用户的符号链接(这是OS X上的bash):
$ ls -ld foo bar
drwxr-xr-x 2 greg greg 68 Aug 11 22:36 bar
lrwxr-xr-x 1 greg greg 3 Aug 11 22:36 foo -> bar
$ cd foo
$ pwd
/Users/greg/tmp/foo
$
Run Code Online (Sandbox Code Playgroud)
我想要的是一个函数resolve(),这样当从上例中的tmp目录执行时,解析("foo")=="/ Users/greg/tmp/bar".
我需要在我的html页面上插入Omega(Ω).我正在使用其HTML转义代码来执行此操作,因此我可以编写Ω并获取Ω.当我将它放入HTML元素时,这一切都很好; 但是,当我尝试将它放入我的JS时,例如var Omega = Ω,它将该代码解析为JS并且整个事情都不起作用.有谁知道如何去做?
Gzip格式文件(gzip例如,使用程序创建)使用"deflate"压缩算法,该算法与zlib使用的压缩算法相同.但是,当使用zlib来膨胀gzip压缩文件时,库会返回一个Z_DATA_ERROR.
如何使用zlib解压缩gzip文件?
我对于提出这个问题犹豫不决,因为好像很多人都有类似的问题,但我找不到任何可以解决我的特定实例的解决方案.
我开发了一个Android应用程序(链接到实际的应用程序)并将其上传到Play商店.Play商店说
"This app is incompatible with your XT Mobile Network HTC HTC Wildfire S A510b."
当然这是我开发应用程序的手机,所以它应该是兼容的.有些人用其他设备说它报告兼容,有些人说它报告不兼容,但我发现没有趋势.(显然我不太了解Android设备的人.)
我尝试过以下方法:
res/raw按照此答案的建议将大型文件移出目录.那里唯一的文件是一个~700 kB的文本文件,但我把它移到assets/了没有明显变化的地方.
添加以下两个功能断言:
<uses-feature android:name="android.hardware.faketouch" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
Run Code Online (Sandbox Code Playgroud)
我想我的手机可能并没有声称支持通常的android.hardware.touchscreen功能,但是再一次,没有明显的变化.
将APK上传到Play商店时,它报告为活动的唯一过滤器就是该android.hardware.faketouch功能.
以下是输出aapt dump badging bin/NZSLDict-release.apk:
package: name='com.hewgill.android.nzsldict' versionCode='3' versionName='1.0.2'
sdkVersion:'4'
targetSdkVersion:'4'
uses-feature:'android.hardware.faketouch'
uses-feature-not-required:'android.hardware.touchscreen'
application-label:'NZSL Dictionary'
application-icon-160:'res/drawable/icon.png'
application: label='NZSL Dictionary' icon='res/drawable/icon.png'
launchable-activity: name='com.hewgill.android.nzsldict.NZSLDictionary' label='NZSL Dictionary' icon=''
main
other-activities
supports-screens: 'small' 'normal' 'large'
supports-any-density: 'true'
locales: …Run Code Online (Sandbox Code Playgroud) 什么是什么时候没有必要检查空?
我最近一直在研究的许多继承代码都有空检查令人作呕.Null检查普通函数,对表示非空返回的API调用进行空检查等.在某些情况下,空检查是合理的,但在许多地方,null不是合理的期望.
我听过很多论点,从"你不能相信其他代码"到"总是防守程序"到"直到语言保证我的非空值,我总会检查." 我当然同意这些原则中的许多原则,但我发现过多的空值检查会导致其他通常违反这些原则的问题.顽强的空检查真的值得吗?
通常,我观察到过多的空检查代码实际上质量较差,而不是质量较高.许多代码似乎都专注于空检查,开发人员已经忽略了其他重要的特性,例如可读性,正确性或异常处理.特别是,我看到很多代码忽略了std :: bad_alloc异常,但对a进行了空检查new.
在C++中,由于解除引用空指针的不可预测行为,我在某种程度上理解这一点; 在Java,C#,Python等中更优雅地处理null dereference.我刚刚看到了警惕的空检查的不良例子,还是真的有什么东西可以解决这个问题?
这个问题旨在与语言无关,尽管我主要对C++,Java和C#感兴趣.
我见过的一些空检查的例子似乎过多,包括:
这个例子似乎是非标准编译器的原因,因为C++规范说失败的新抛出异常.除非您明确支持不合规的编译器,否则这有意义吗?这确实让任何意义的,如Java或C#(甚至C++/CLR)托管语言?
try {
MyObject* obj = new MyObject();
if(obj!=NULL) {
//do something
} else {
//??? most code I see has log-it and move on
//or it repeats what's in the exception handler
}
} catch(std::bad_alloc) {
//Do something? normally--this code is wrong as it allocates
//more memory and will likely fail, such as writing to a log file.
} …Run Code Online (Sandbox Code Playgroud) 在Python 2中设置默认输出编码是一个众所周知的习惯用法:
sys.stdout = codecs.getwriter("utf-8")(sys.stdout)
Run Code Online (Sandbox Code Playgroud)
这将sys.stdout对象包装在编解码器编写器中,该编解码器编写器以UTF-8编码输出.
但是,这种技术在Python 3中不起作用,因为sys.stdout.write()期望a str,但是编码的结果是bytes,并且当codecs尝试将编码的字节写入原始时发生错误sys.stdout.
在Python 3中执行此操作的正确方法是什么?
git ×3
python ×2
unicode ×2
android ×1
bash ×1
branch ×1
c# ×1
c++ ×1
export ×1
git-archive ×1
git-stash ×1
google-play ×1
gzip ×1
html ×1
identity ×1
inflate ×1
int ×1
java ×1
javascript ×1
operators ×1
python-3.x ×1
recovery ×1
scripting ×1
shell ×1
stdout ×1
svn-export ×1
symlink ×1
zlib ×1