Джерри уже добавил файл array.c в хранилище. Том также проверяет последний код и начинает работать.
[tom@CentOS ~]$ svn co http://svn.server.com/svn/project_repo --username=tom
Выше команда даст следующий результат.
A project_repo/trunk A project_repo/trunk/array.c A project_repo/branches A project_repo/tags Checked out revision 2.
Но он обнаружил, что кто-то уже добавил код. Поэтому ему интересно, кто это сделал, и он проверяет сообщение в журнале, чтобы увидеть более подробную информацию, используя следующую команду:
[tom@CentOS trunk]$ svn log
Выше команда даст следующий результат.
------------------------------------------------------------------------ r2 | jerry | 2013-08-17 20:40:43 +0530 (Sat, 17 Aug 2013) | 1 line Initial commit ------------------------------------------------------------------------ r1 | jerry | 2013-08-04 23:43:08 +0530 (Sun, 04 Aug 2013) | 1 line Create trunk, branches, tags directory structure ------------------------------------------------------------------------
Когда Том наблюдает за кодом Джерри , он сразу замечает ошибку в этом. Джерри не проверял переполнение массива, которое могло вызвать серьезные проблемы. Поэтому Том решает исправить эту проблему. После модификации array.c будет выглядеть следующим образом.
#include <stdio.h> #define MAX 16 int main(void) { int i, n, arr[MAX]; printf("Enter the total number of elements: "); scanf("%d", &n); /* handle array overflow condition */ if (n > MAX) { fprintf(stderr, "Number of elements must be less than %d\n", MAX); return 1; } printf("Enter the elements\n"); for (i = 0; i < n; ++i) scanf("%d", &arr[i]); printf("Array has following elements\n"); for (i = 0; i < n; ++i) printf("|%d| ", arr[i]); printf("\n"); return 0; }
Том хочет использовать операцию статуса, чтобы увидеть ожидающий изменения список.
[tom@CentOS trunk]$ svn status M array.c
Файл array.c модифицируется, поэтому Subversion показывает букву M перед именем файла. Затем Том компилирует и тестирует свой код, и он работает нормально. Прежде чем вносить изменения, он хочет проверить его еще раз, просмотрев внесенные изменения.
[tom@CentOS trunk]$ svn diff Index: array.c =================================================================== --- array.c (revision 2) +++ array.c (working copy) @@ -9,6 +9,11 @@ printf("Enter the total number of elements: "); scanf("%d", &n); + if (n > MAX) { + fprintf(stderr, "Number of elements must be less than %d\n", MAX); + return 1; + } + printf("Enter the elements\n"); for (i = 0; i < n; ++i)
Том добавил несколько строк в файл array.c , поэтому Subversion показывает знак + перед новыми строками. Теперь он готов совершить свои изменения.
[tom@CentOS trunk]$ svn commit -m "Fix array overflow problem"
Приведенная выше команда даст следующий результат.
Sending trunk/array.c Transmitting file data . Committed revision 3.
Изменения Тома успешно переданы в хранилище.