none
[openafs-wiki.git] / AFSLore / OpenAFSCVSToGitConversion.mdwn
1 # <a name="Git Plan:"></a> Git Plan:
2
3 ## <a name="Set up base Repo"></a> Set up base Repo
4
5 ### <a name="Prep:"></a> Prep:
6
7 ### <a name="Process:"></a> Process:
8
9 #### <a name="(commit 1) Start from IBM 1.0 +"></a><a name="(commit 1) Start from IBM 1.0 + "></a> (commit 1) Start from IBM 1.0 + 3.6 docs
10
11 [
12
13 - (in a tmp directory) cvs -d:pserver:anonymous@cvs.openafs.org:/cvs -z5 export -ropenafs-stable-1\_1\_0 openafs/doc
14 - Make and change to git\_base directory
15 - untar openafs-1.0-src.tar.gz
16 - move tmp ´doc´ folder into git\_base
17 - untar initial-commit-postapply.tar
18 - git init
19 - git add .
20 - git commit -m "Initial IBM source code import\\rDelta initial-20001103" --author="Transarc &lt;afs@transarc.com&gt;"
21
22 ]
23
24 #### <a name="(commit 2) Apply license changes"></a> (commit 2) Apply license changes
25
26 [
27
28 - Apply 2.patch
29 - Cleanup: rm .rej &amp; .orig
30 - untar 2-postapply.tar
31 - git commit -m "" --author="Transarc &lt;afs@transarc.com&gt;"
32
33 ]
34
35 ### <a name="Patch Fixup"></a> Patch Fixup
36
37 - Original codebase had bit errors; tarball used for git base does not have them, remove (most of) these fixes from patchsets
38
39 ]
40
41 ### <a name="Repo Fixup"></a> Repo Fixup
42
43 [
44
45 - Resolve issues into commit 3
46   - Part of the doc tree was not in the initial import
47   - README files were missing
48   - IBM tree has munged tags; cvsps output does not...
49     - Check in IBM tree to CVS, export -kk and use resulting diff -R to make all Revisions in the tree unmunged
50 - Store commit 3 diff
51 - Stash commit 2
52 - Reset to commit 1
53 - Apply commit 3 diff
54 - Amend commit 1
55 - Reapply commit 2
56
57 ]
58
59 ### <a name="Issues:"></a> Issues:
60
61 license changes won´t apply cleanly as initial was from RCS and CVS munged rev vars on checkout
62
63 ## <a name="Automate patch - branches"></a> Automate patch -&gt; branches
64
65 ### <a name="Prep:"></a> Prep:
66
67 ### <a name="Process:"></a> Process:
68
69 - Clone base repo (git clone git\_base git\_working)
70 - Starting with 3.patch
71 - Loop:
72   - Create branch with patch/delta name (git checkout -b)
73   - Apply patch (git apply --index)
74   - Commit (-m ´Apply patch X´)
75
76 ### <a name="Issues:"></a> Issues:
77
78 ## <a name="Handle binaries"></a> Handle binaries
79
80 ### <a name="Prep:"></a> Prep:
81
82 - Find a list of binaries in cvs, search for '^expand\\w+@b|o@'
83
84 ### <a name="Process:"></a> Process:
85
86 - Loop:
87   - For patch X
88   - Parse file list from patch X
89   - If patch has binary files, git check out branch X
90   - For each binary file, CVS check out listed revision over existing file
91   - Commit (-m ´Adding binaries´)
92
93 ## <a name="Merge branches into master branc"></a> Merge branches into master branch
94
95 ### <a name="Prep:"></a> Prep:
96
97 - Parse patches to make X.msg &amp; X.author
98
99 ### <a name="Process:"></a> Process:
100
101 - Loop:
102   - Merge branch X into master (git merge --squash)
103   - Commit with message &amp; author for patch X (git commit)
104   - ! On failure... stop, and allow for reset
105 - Push master to origin/master
106
107 ## <a name="Validate and release"></a> Validate and release
108
109 - Check that checkout of master matches cvs HEAD
110
111 ## <a name="Handle tags"></a> Handle tags
112
113 - Determine tag-&gt;delta relationship
114
115 -- [[MichaelMeffie]] - 28 Oct 2008