как проверить, соответствует ли содержимое файла тому же, что и ревизия на сервере, для JAVA API. Перед обновлением любого файла в хранилище perforce я хочу проверить, есть ли разница в содержании локального файла и файла депо. если нет никакой разницы, то игнорируйте, чтобы отправить этот файл.как взять diff двух версий файла дефолта perforce
ответ
Я думаю, что вы хотите getDiffFiles() метод:
В качестве альтернативы, для конкретной вещи вы находитесь делая (не отправляя неизменные файлы), просто используйте параметр отправки «leaveUnchanged», а не выполняйте ту же самую работу самостоятельно.
Мне нравится этот. Я попробую установить этот параметр «leaveUnchanged» –
Обратите внимание, что вы можете установить 'SubmitOptions' для каждой команды отправки отдельно или вы также можете установить' SubmitOptions' для всего своего рабочего пространства, а затем каждый подчиненный ведет себя таким образом , –
Да прост в использовании. Просто генерирует хеш MD5 исходного файла и перед обновлением снова генерирует хеш MD5 нового файла.
сравнить хэши обоих файлов. Если оба они одинаковы, то содержимое обоих файлов одинаково, а если нет, то они разные, и вы хорошо обновляете.
Вот это утилита для создания и проверки MD5 легко,
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);
}
}
}
}
Спасибо за ответ , Но не можем ли мы сделать то же самое с использованием Perforce JAVA API? –
Боюсь, вы не можете. Для этого вам нужно использовать стандартный JAVA api. –
Спасибо за ваш быстрый ответ –
- 1. Запуск diff из двух последних версий страницы
- 2. Perforce визуальный diff разветвленного файла (p4 diff2 с внешней diff)
- 3. Diff несколько файлов в perforce в диапазоне версий
- 4. Как восстановить perforce из файлов версий?
- 5. Восстановление Perforce из файлов версий
- 6. Может Perforce diff две версии файла с различными кодировками?
- 7. Как получить визуальный diff двух не последовательных версий файла с использованием Mercurial TortoiseHG?
- 8. diff двух файлов из двух разных каталогов
- 9. Объяснение английских версий Wikipedia diff
- 10. Создание diff на основе версий
- 11. Perforce: передача расширений файлов в команде «diff»
- 12. Diff против нескольких списков изменений с Perforce
- 13. Perforce - создать diff, включая добавленные файлы?
- 14. Почему Git diff из 2 версий одного файла пуст?
- 15. Perforce tkdiff
- 16. команда perforce, чтобы знать файлы без версий
- 17. Как выполнить команду perforce как «diff» в P4api.net?
- 18. Как обрабатывать изменения типа файла в Perforce?
- 19. perforce diff между 2 файлами в разных каталогах.
- 20. Настройка версий diff в обзоре кода github
- 21. diff: разрешение текстового файла
- 22. Как проверить, сколько данных было изменено без сохранения двух версий.
- 23. Сравнение двух номеров версий
- 24. Согласование двух версий строки
- 25. Node.js установка двух версий
- 26. Как я могу получить деталь diff (показать весь файл) из двух версий с помощью SharpSVN?
- 27. Git diff одного файла из двух ревизий в удаленном репозитории
- 28. diff на столбцах двух файлов в оболочке
- 29. Команда для получения svn diff текущего и предыдущего номеров версий
- 30. Hg: как получить diff двух разных файлов?
Возможный дубликат [Определить, хранятся ли два файла одного и того же контента] (http://stackoverflow.com/questions/27379059/determine-if-two-files-store-the-same-content) –