2011-11-05 37 views
1

我在git倉庫的ant版本中發現了一個奇怪的行爲。這是我做的: 我在git倉庫中有兩個分支,「master」和「dev」,我在最終版本之前提交了所有更改。幾個提交後,我發現自己有這種情況:在git結帳後Ant編譯錯誤版本

*----*---------*-----* dev 
| |   | 
| (commit) (commit) 
master 

從Dev分支我建立一個罐子一個Ant腳本,然後我保存供以後。 然後,我結帳主,我做「合併開發」(與快進),我用相同的腳本再次構建jar文件。

如果我嘗試用winmerge比較兩個jar(一個由dev分支製作,一個來自「merged」master),我會找到一些具有不同內容的類文件。

我真的不明白髮生了什麼,不應該是兩個相同的罐子,因爲它們是從相同的來源構建的?我究竟做錯了什麼?

回答

1

根據這個問題

Is it possible for the same javac compiler to compile the same set of source files but produce class files of different checksums?

類文件的某些方面依賴於它的來源所編制的順序。

最重要的是:Winmerge會忽略jar文件中的不同時間戳嗎?

+0

謝謝您的回覆。 Winmerge提取兩個jar文件的內容,併成功識別類文件的不同時間戳。但是,不同的時間戳不會影響類文件之間的比較。這就是說,如果兩個類文件相等,但具有不同的時間戳,則它們被標記爲相同。 – DanyUP