首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么删除冲突文件会破坏项目?

为什么删除冲突文件会破坏项目?
EN

Stack Overflow用户
提问于 2014-08-16 01:19:40
回答 1查看 58关注 0票数 1

我已经有三次这种情况发生在我身上,我想尝试修复它,而不是删除项目和重新克隆它。参见,例如,[测试]误差2

我通过openssl-dev克隆了git clone git://git.openssl.org/openssl.git

今天,我做了一个git pull,由于文件冲突,它失败了。为了解决冲突,我执行了:

代码语言:javascript
复制
rm apps/Makefile
rm crypto/engine/Makefile
rm crypto/evp/Makefile
rm ssl/Makefile
rm test/Makefile

删除冲突后,git pull成功,我尝试构建。

现在,我迷路了。生成失败时使用重复的符号(如下所示)。如果我执行完整的清理和制作(dclean是OpenSSL的dist-clean版本),它就会失败:

代码语言:javascript
复制
make clean && make dclean && export KERNEL_BITS=64 && ./config && make

如果我加入一个依赖于它的产品,它就失败了:

代码语言:javascript
复制
make clean && make dclean && export KERNEL_BITS=64 && ./config && make depend && make

我想在清理之后可能会有一些目标文件,但是没有:

代码语言:javascript
复制
$ find . -iname *.o
$ 

如果我执行了一个新的克隆,那么一切都如预期的那样工作。

导致这个问题的git clonegit pull之间有什么区别?

或者git的问题是什么,我如何解决它?

代码语言:javascript
复制
openssl-git$ make clean && make dclean && export KERNEL_BITS=64 && \
    ./config && make depend && make
...
cc -I.. -I../include  -I../fips -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H 
-arch x86_64 -O3 -DL_ENDIAN -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT 
-DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM 
-DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM   -c -o heartbeat_test.o 
heartbeat_test.c

cc -I.. -I../include  -I../fips -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H 
-arch x86_64 -O3 -DL_ENDIAN -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT 
-DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM 
-DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM   -c -o testutil.o testutil.c

( :; LIBDEPS="${LIBDEPS:--Wl,-search_paths_first ../libssl.a ../libcrypto.a  }"; 
LDCMD="${LDCMD:-cc}"; LDFLAGS="${LDFLAGS:--DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN 
-DHAVE_DLFCN_H -arch x86_64 -O3 -DL_ENDIAN -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT 
-DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM 
-DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM}"; LIBPATH=`for x in $LIBDEPS; do 
echo $x; done | sed -e 's/^ *-L//;t' -e d | uniq`; LIBPATH=`echo $LIBPATH | sed -e 's/ /:/g'`; 
LD_LIBRARY_PATH=$LIBPATH:$LD_LIBRARY_PATH ${LDCMD} ${LDFLAGS} -o ${APPNAME:=heartbeat_test} 
heartbeat_test.o testutil.o ${LIBDEPS} )

duplicate symbol _main in:
    heartbeat_test.o
    testutil.o

ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [link_app.] Error 1
make[1]: *** [heartbeat_test] Error 2
make: *** [build_tests] Error 1

因为这在过去已经发生过多次,我知道这不是一次性的问题。

我添加了openssl标记,因为它是项目,但我很确定根本的问题在于git。

我保存了项目,而不是删除它,所以我可以焦油和上传(如果需要的话)。

最后:

代码语言:javascript
复制
$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.8.5
BuildVersion:   12F45

下面,openssl-git是我的OpenSSL副本所在的位置。它有我的mods和微调。openssl-git-test是用于测试的新克隆。我在毕业前就开始做find . -name '*.save' -exec rm -rf {} \;了。

代码语言:javascript
复制
$ diff --brief -r openssl-git/ openssl-git-test/
Only in openssl-git/: .DS_Store
Only in openssl-git/.git: FETCH_HEAD
Only in openssl-git/.git: ORIG_HEAD
Files openssl-git/.git/index and openssl-git-test/.git/index differ
Files openssl-git/.git/logs/HEAD and openssl-git-test/.git/logs/HEAD differ
Files openssl-git/.git/logs/refs/heads/master and openssl-git-test/.git/logs/refs/heads/master differ
Files openssl-git/.git/logs/refs/remotes/origin/HEAD and openssl-git-test/.git/logs/refs/remotes/origin/HEAD differ
Only in openssl-git/.git/logs/refs/remotes/origin: OpenSSL_0_9_8-stable
Only in openssl-git/.git/logs/refs/remotes/origin: OpenSSL_1_0_0-stable
Only in openssl-git/.git/logs/refs/remotes/origin: OpenSSL_1_0_1-stable
Only in openssl-git/.git/logs/refs/remotes/origin: OpenSSL_1_0_2-stable
Only in openssl-git/.git/logs/refs/remotes/origin: master
Only in openssl-git/.git/objects: 00
Only in openssl-git/.git/objects: 02
Only in openssl-git/.git/objects: 05
Only in openssl-git/.git/objects: 07
Only in openssl-git/.git/objects: 08
Only in openssl-git/.git/objects: 09
Only in openssl-git/.git/objects: 0a
Only in openssl-git/.git/objects: 0e
Only in openssl-git/.git/objects: 0f
Only in openssl-git/.git/objects: 13
Only in openssl-git/.git/objects: 18
Only in openssl-git/.git/objects: 1b
Only in openssl-git/.git/objects: 1c
Only in openssl-git/.git/objects: 1d
Only in openssl-git/.git/objects: 23
Only in openssl-git/.git/objects: 24
Only in openssl-git/.git/objects: 25
Only in openssl-git/.git/objects: 28
Only in openssl-git/.git/objects: 2a
Only in openssl-git/.git/objects: 2c
Only in openssl-git/.git/objects: 36
Only in openssl-git/.git/objects: 37
Only in openssl-git/.git/objects: 38
Only in openssl-git/.git/objects: 3e
Only in openssl-git/.git/objects: 3f
Only in openssl-git/.git/objects: 42
Only in openssl-git/.git/objects: 44
Only in openssl-git/.git/objects: 4a
Only in openssl-git/.git/objects: 54
Only in openssl-git/.git/objects: 58
Only in openssl-git/.git/objects: 5c
Only in openssl-git/.git/objects: 5d
Only in openssl-git/.git/objects: 60
Only in openssl-git/.git/objects: 61
Only in openssl-git/.git/objects: 63
Only in openssl-git/.git/objects: 66
Only in openssl-git/.git/objects: 67
Only in openssl-git/.git/objects: 68
Only in openssl-git/.git/objects: 6e
Only in openssl-git/.git/objects: 6f
Only in openssl-git/.git/objects: 71
Only in openssl-git/.git/objects: 72
Only in openssl-git/.git/objects: 78
Only in openssl-git/.git/objects: 79
Only in openssl-git/.git/objects: 7b
Only in openssl-git/.git/objects: 80
Only in openssl-git/.git/objects: 82
Only in openssl-git/.git/objects: 84
Only in openssl-git/.git/objects: 87
Only in openssl-git/.git/objects: 88
Only in openssl-git/.git/objects: 8d
Only in openssl-git/.git/objects: 8e
Only in openssl-git/.git/objects: 99
Only in openssl-git/.git/objects: 9f
Only in openssl-git/.git/objects: a0
Only in openssl-git/.git/objects: a3
Only in openssl-git/.git/objects: a4
Only in openssl-git/.git/objects: a8
Only in openssl-git/.git/objects: a9
Only in openssl-git/.git/objects: ae
Only in openssl-git/.git/objects: af
Only in openssl-git/.git/objects: b2
Only in openssl-git/.git/objects: b5
Only in openssl-git/.git/objects: ba
Only in openssl-git/.git/objects: bc
Only in openssl-git/.git/objects: bd
Only in openssl-git/.git/objects: be
Only in openssl-git/.git/objects: c4
Only in openssl-git/.git/objects: c5
Only in openssl-git/.git/objects: c6
Only in openssl-git/.git/objects: d3
Only in openssl-git/.git/objects: d5
Only in openssl-git/.git/objects: d6
Only in openssl-git/.git/objects: d7
Only in openssl-git/.git/objects: da
Only in openssl-git/.git/objects: db
Only in openssl-git/.git/objects: de
Only in openssl-git/.git/objects: e0
Only in openssl-git/.git/objects: e3
Only in openssl-git/.git/objects: e7
Only in openssl-git/.git/objects: e8
Only in openssl-git/.git/objects: e9
Only in openssl-git/.git/objects: ed
Only in openssl-git/.git/objects: ef
Only in openssl-git/.git/objects: f2
Only in openssl-git/.git/objects: fa
Only in openssl-git/.git/objects: fb
Only in openssl-git/.git/objects: fc
Only in openssl-git/.git/objects/pack: pack-663dfba6981c559658fb9253e5456938cd330c97.idx
Only in openssl-git/.git/objects/pack: pack-663dfba6981c559658fb9253e5456938cd330c97.pack
Only in openssl-git-test/.git/objects/pack: pack-97e4b04a1ce519e33653e4f4ef941fed44f53332.idx
Only in openssl-git-test/.git/objects/pack: pack-97e4b04a1ce519e33653e4f4ef941fed44f53332.pack
Only in openssl-git/.git/objects/pack: pack-a5611b625ffa369803ca57e5d198864c4c3933a4.idx
Only in openssl-git/.git/objects/pack: pack-a5611b625ffa369803ca57e5d198864c4c3933a4.pack
Only in openssl-git/.git/objects/pack: pack-feccfacff9cc5bff523280a162d04c2c3813bba8.idx
Only in openssl-git/.git/objects/pack: pack-feccfacff9cc5bff523280a162d04c2c3813bba8.pack
Files openssl-git/.git/packed-refs and openssl-git-test/.git/packed-refs differ
Files openssl-git/.git/refs/heads/master and openssl-git-test/.git/refs/heads/master differ
Only in openssl-git/.git/refs/remotes/origin: OpenSSL_0_9_8-stable
Only in openssl-git/.git/refs/remotes/origin: OpenSSL_1_0_0-stable
Only in openssl-git/.git/refs/remotes/origin: OpenSSL_1_0_1-stable
Only in openssl-git/.git/refs/remotes/origin: OpenSSL_1_0_2-stable
Only in openssl-git/.git/refs/remotes/origin: master
Only in openssl-git/.git/refs/tags: OpenSSL_0_9_8zb
Only in openssl-git/.git/refs/tags: OpenSSL_1_0_0n
Only in openssl-git/.git/refs/tags: OpenSSL_1_0_1i
Files openssl-git/doc/apps/ciphers.pod and openssl-git-test/doc/apps/ciphers.pod differ
Files openssl-git/doc/apps/pkcs8.pod and openssl-git-test/doc/apps/pkcs8.pod differ
Only in openssl-git/engines: e_padlock-x86.s
Only in openssl-git/: s3_enc.c.diff
Files openssl-git/ssl/s3_clnt.c and openssl-git-test/ssl/s3_clnt.c differ
Files openssl-git/ssl/s3_enc.c and openssl-git-test/ssl/s3_enc.c differ
Files openssl-git/ssl/s3_lib.c and openssl-git-test/ssl/s3_lib.c differ
Files openssl-git/ssl/tls1.h and openssl-git-test/ssl/tls1.h differ
EN

回答 1

Stack Overflow用户

发布于 2014-08-24 13:45:20

这个问题在一个相关的问题中得到了回答:我能用git克隆后的文件吗?

问题是make dclean删除了test/目录(谢谢@hvd)。dclean是OpenSSL与distclean的等价物。不幸的是,这个项目充满了cruft,diffdclean之后几乎毫无用处(参见Bug #3492: maked洁净创建一个630K+ git)。

这个问题似乎与git无关。(虽然我承认我使用它的方式非常简单,而且许多人不同意这种简单)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25336115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档