2012-02-24 32 views
5

giả trong repo svn của tôi như sau:Làm thế nào để có một nhân vật không gian dấu trong các tác giả tập tin cho git svn

$ svn log --xml | grep author | sắp xếp -u | perl -pe 's /> < ./$1 = /. (.?)'

Output:

<author>ashfame</author> 
<author>clean</author> 
<author>clean </author> 
<author>rocketweb</author> 

Nhưng trong khi nhân bản repo nhập khẩu sử dụng git svn clone, nó tạm dừng ở giữa nói Author: clean not defined in /home/ashfame/fun/authors-transform.txt file

Lưu ý khoảng trống sau khi làm sạch, có nghĩa là người dùng thứ 3 "clean ".

Làm cách nào để định dạng tệp tác giả của mình để có khoảng trắng trong tên người dùng? nội dung hiện tại của tôi như sau:

ashfame = Ashfame <[email protected]> 
clean = Yogesh Tiwari <[email protected]> 
clean = Yogesh Tiwari <[email protected]> 
"clean\ " = Yogesh Tiwari <[email protected]> 
"clean " = Yogesh Tiwari <[email protected]> 
rocketweb = rocketweb <[email protected]> 
(no author) = Yogesh Tiwari <[email protected]> 
(no author) = no_author 

Thú vị khám phá: tôi đã cố gắng nhập khẩu các repo svn vào git mà không cần bất kỳ lập bản đồ sử dụng và tôi không thể nhìn thấy bất cứ điều gì liên quan tới "sạch" của người dùng, chỉ "sạch" tồn tại, vì vậy tôi đoán đây là một số trục trặc trên repo svn. Bất kỳ gợi ý về những gì có thể được thực hiện về nó?

+0

thay đổi tác giả "sạch" để "sạch" ** trong SVN **? –

+0

@LazyBadger Làm cách nào? – Ashfame

+0

@LazyBadger Và hơn nữa tôi sẽ phải làm một cái gì đó về không gian trong phương pháp đổi tên nó quá. Tốt hơn tôi chỉ cần bản đồ nó cho một cái gì đó hoặc bỏ qua tất cả cùng nhau. – Ashfame

Trả lời

2

Tôi không thể xác định được trục trặc là gì với repo SVN, vì vậy tôi chỉ cần nhập chúng mà không có bất kỳ tệp tác giả nào. Và sau đó tôi đổi tên thành dữ liệu tác giả cam kết sử dụng kịch bản này từ Github:

#!/bin/sh 

git filter-branch --env-filter ' 

an="$GIT_AUTHOR_NAME" 
am="$GIT_AUTHOR_EMAIL" 
cn="$GIT_COMMITTER_NAME" 
cm="$GIT_COMMITTER_EMAIL" 

if [ "$GIT_COMMITTER_EMAIL" = "[email protected]" ] 
then 
    cn="Your New Committer Name" 
    cm="Your New Committer Email" 
fi 
if [ "$GIT_AUTHOR_EMAIL" = "[email protected]" ] 
then 
    an="Your New Author Name" 
    am="Your New Author Email" 
fi 

export GIT_AUTHOR_NAME="$an" 
export GIT_AUTHOR_EMAIL="$am" 
export GIT_COMMITTER_NAME="$cn" 
export GIT_COMMITTER_EMAIL="$cm" 
' 

Lưu đoạn mã trên trong một tập tin với một tên nói change-commit-author-script.sh và đặt các tập tin trong thư mục gốc repo của bạn. Làm cho tệp thực thi theo chmod +x change-commit-author-script.sh và sau đó chạy bằng ./change-commit-author-script.sh

Và đừng quên chỉnh sửa tập lệnh để điền vào tên và giá trị email của bạn.

3

Có vấn đề tương tự với không gian trong authorname.

Giải quyết bằng cách sử dụng tùy chọn hỗ trợ tác giả, cho phép bạn sử dụng tập lệnh bash, tác vụ này sẽ biến đổi các tác giả không xác định.

#!/bin/bash 

if [ "$1" = "VisualSVN Server" ];then 
    echo "VirtualSVNServer <svn.localdomain>"; 
fi 
+0

Tùy chọn này được gọi là '--authors-prog' và không phải là' --author-prog'. – josch

0

Nếu, như tôi, bạn đã tạo ra một users.txt mà bạn muốn vượt qua như --authors-file chỉ để sau đó nhận ra rằng nó không hoạt động, đây là một kịch bản mà làm cho sử dụng hiện tại của bạn users.txt và cho phép một người làm cho tùy chỉnh bổ sung:

#!/bin/sh 

if [ -z ${GIT_SVN_USERS_TXT+x} ]; then 
    echo "the environment variable GIT_SVN_USERS_TXT must be set to the path of your users.txt" >&2 
    exit 1 
fi 

while read line; do 
    # remove largest suffix and trim whitespace 
    svn=$(echo ${line%%=*} | xargs) 
    # remove smallest prefix and trim whitespace 
    git=$(echo ${line#*=} | xargs) 
    if [ "$1" = "$svn" ]; then 
     echo "$git" 
     exit 0 
    fi 
done < "$GIT_SVN_USERS_TXT" 

if [ "$1" = "spaceatend " ]; then 
    echo "VirtualSVNServer <svn.localdomain>" 
    exit 0 
fi 

echo "Unable to find user $1" >&2 
exit 1 

Run nó như thế này:

GIT_SVN_USERS_TXT=/path/to/users.txt git svn clone --authors-prog=/path/to/script.sh --no-metadata ... 
Các vấn đề liên quan