Tôi đã tạo một tập lệnh đơn giản để di chuyển kho SVN khá lớn. Thay vì sử dụng git svn clone
, tôi đang sử dụng git svn init
và git svn fetch
để tôi có thể chỉ định sửa đổi và tìm nạp nó theo từng đoạn. Nhiều hơn hoặc ít hơn, nó giống như thế này:Làm cách nào để tìm kiếm git-svn và giữ lại thư mục trống?
while [ "$CURRENT_REVISION" -lt "$MAX_REVISION" ]; do
END_REVISION=$((CURRENT_REVISION + 100))
if [ "$END_REVISION" -ge "$MAX_REVISION" ]
then
END_REVISION=$MAX_REVISION
fi
git svn fetch -r "$CURRENT_REVISION":"$END_REVISION" --authors-file="$AUTHORS_FILE"
#increasing the current and end revision
CURRENT_REVISION=$END_REVISION
END_REVISION=$((CURRENT_REVISION + 100))
done
Tuy nhiên, tôi hiểu rằng theo mặc định, hành vi tìm nạp/sao chép sẽ không giữ lại các thư mục trống. Vì vậy, tôi có thể cần phải tự kiểm tra trong những thư mục trống (* mà tôi đang cố gắng để tránh).
Có thông số --preserve-empty-dirs
trong git svn clone
nhưng không có trong git svn fetch
.
Có cách nào khác để giải quyết vấn đề này không?
CẬP NHẬT
Mặc dù nó không được đề cập trong các tài liệu chính thức mà chúng ta có thể sử dụng phím cấu hình cho lấy, nó được thực sự hoạt động
Có giải thích chi tiết bởi @Vampire liên quan đến này câu hỏi. Vì vậy, tôi sẽ đơn giản hóa điều này.
Sau khi thực hiện các kho init, tôi đã phải thay đổi cấu hình của chi nhánh từ xa của tôi:
git config svn-remote.<remote name>.preserve-empty-dirs "true"
git config svn-remote.<remote name>.placeholder-filename ".gitkeep"
Bạn có thể kiểm tra cấu hình bằng cách nhìn vào /.git/config. Chỉ cần tìm nạp bình thường và thư mục của bạn sẽ được giữ nguyên.
Bạn có sử dụng tính năng này cho chuyển đổi một lần hay bạn muốn sử dụng git-svn để sử dụng Git làm giao diện người dùng cho kho lưu trữ Subversion mà vẫn sẽ là nguồn chuẩn cho mã của bạn? – Vampire
Có, tôi có thể nói đó là chuyển đổi một lần. – alfonzjanfrithz