wie man überprüft, ob der Inhalt der Datei ist die gleiche wie die Revision in Server JAVA API. Bevor ich irgendeine Datei in das perforfet-Depot aktualisiere, möchte ich prüfen, ob es irgendeinen Unterschied im Inhalt der lokalen Datei und der Depot-Datei gibt. Wenn es keinen Unterschied gibt, dann ignoriere diese Datei.Wie man diff von zwei Versionen der Datei perforce depot
Antwort
Ich glaube, Sie die getDiffFiles wollen() -Methode:
Alternativ für die spezifische Sache, du bist Wenn Sie keine unveränderten Dateien senden, verwenden Sie einfach die Sendeoption "leaveUnchanged", anstatt die selbe Arbeit selbst auszuführen.
Ich mag dieses. Ich werde es versuchen, diese Option "leaveUnchanged" –
zu setzen Beachten Sie, dass Sie die "SubmitOptions" für jeden Übergeben Befehl einzeln festlegen können, oder Sie können auch die "SubmitOptions" für Ihren gesamten Arbeitsbereich festlegen, und dann jede Übergabe verhält sich so . –
Ja einfach zu tun. Nur generieren Sie einen MD5-Hash der ursprünglichen Datei und vor dem erneuten Update generieren Sie einen MD5-Hash der neuen Datei.
Jetzt vergleichen Sie die Hashes der beiden Dateien. Wenn beide gleich sind, dann sind die Inhalte beider Dateien gleich und wenn nicht, dann sind sie unterschiedlich und Sie können gut updaten. Hier
ist ein Dienstprogramm, zu generieren und überprüfen MD5 leicht,
public class MD5Utils {
private static final String TAG = "MD5";
public static boolean checkMD5(String md5, File updateFile) {
if (TextUtils.isEmpty(md5) || updateFile == null) {
Log.e(TAG, "MD5 string empty or updateFile null");
return false;
}
String calculatedDigest = calculateMD5(updateFile);
if (calculatedDigest == null) {
Log.e(TAG, "calculatedDigest null");
return false;
}
Log.v(TAG, "Calculated digest: " + calculatedDigest);
Log.v(TAG, "Provided digest: " + md5);
return calculatedDigest.equalsIgnoreCase(md5);
}
public static String calculateMD5(File updateFile) {
MessageDigest digest;
try {
digest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
Log.e(TAG, "Exception while getting digest", e);
return null;
}
InputStream is;
try {
is = new FileInputStream(updateFile);
} catch (FileNotFoundException e) {
Log.e(TAG, "Exception while getting FileInputStream", e);
return null;
}
byte[] buffer = new byte[8192];
int read;
try {
while ((read = is.read(buffer)) > 0) {
digest.update(buffer, 0, read);
}
byte[] md5sum = digest.digest();
BigInteger bigInt = new BigInteger(1, md5sum);
String output = bigInt.toString(16);
// Fill to 32 chars
output = String.format("%32s", output).replace(' ', '0');
return output;
} catch (IOException e) {
throw new RuntimeException("Unable to process file for MD5", e);
} finally {
try {
is.close();
} catch (IOException e) {
Log.e(TAG, "Exception on closing MD5 input stream", e);
}
}
}
}
Danke für die Antwort . Aber können wir nicht dasselbe mit der Perforce JAVA API tun? –
Ich fürchte, du kannst nicht. Sie müssen dafür die Standard-JAVA-APIs verwenden. –
Vielen Dank für Ihre schnelle Antwort –
- 1. Wie lösche ich eine Datei aus dem Perforce-Depot?
- 2. Perforce Hinzufügen eines Ordners zum Depot
- 3. wie man sich anmeldet und Datei mit der Befehlszeile perforce herunterlädt
- 4. Perforce visual diff einer verzweigten Datei (p4 diff2 mit externem diff)
- 5. Wie automatisch Diff zwischen API-Versionen generieren?
- 6. Perforce speichern eine lokale Kopie der geöffneten Datei
- 7. Perforce: Übergabe von Dateierweiterungen in einem "diff" -Befehl
- 8. Wiederherstellen von Perforce-Arbeitsbereich
- 9. Können Sie eine Datei in Perforce "ignorieren"?
- 10. Wie verschiebe ich Ordner zwischen Perforce "depots"
- 11. Perforce: Ändern des Textdateiformats durch Perforce
- 12. Wie finde ich Dateien in Perforce mit P4V?
- 13. Wie eine .diff Datei
- 14. Einzeldatei-Diff zwischen zwei Commits
- 15. Get visual diff von zwei Revisionen einer Datei
- 16. Perforce Dateispezifizierungsregex-Format
- 17. diff auf Spalten von zwei Dateien in der Shell
- 18. "Mehr als zwei Puffer im diff-Modus" - Wie schalte man diff auf den Puffern aus?
- 19. Mehrere Depot Fahrzeugplanung
- 20. Datei diff von großen Dateien
- 21. Wie lösche ich eine Datei aus dem Depot, aber lasse die lokale Kopie intakt?
- 22. Diff zwischen zwei Instanzen der gleichen Klasse
- 23. XML-Diff: Wie generiert man XML-Diff mit XSLT?
- 24. Perforce-Datei gesperrt durch departed Benutzer
- 25. Wie bestimmte Ordner mit der Befehlszeile in Perforce
- 26. Wie ein "sync" in Perforce P4V Client
- 27. Perforce - Generieren Sie ein Diff einschließlich hinzugefügter Dateien?
- 28. Anzeigen von Perforce-Änderungslisten seit der letzten Synchronisierung
- 29. Perforce: Verzweigung von einer bestimmten Änderungsliste notgedrungen
- 30. Kann ich ediff verwenden, wenn ich eine Datei und ein diff habe, anstatt zwei Versionen derselben Datei?
Mögliche Duplikate von [Ermitteln, ob zwei Dateien den gleichen Inhalt speichern] (http://stackoverflow.com/questions/27379059/determine-if-two-files-store-the-same-content) –