Changes between Version 5 and Version 6 of GitRepository
- Timestamp:
- 08/17/08 13:07:18 (5 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
GitRepository
v5 v6 1 = git =1 = Git = 2 2 3 3 [http://git.or.cz/ git] is a fast and popular revision control system. … … 9 9 == Importing into git branches == 10 10 11 The git target is serving as testbed for proper branch support in tailor. The relevant parts will be lifted into the generic classes as sees fit.11 The git target serves as a testbed for proper branch support in Tailor. The relevant parts will be lifted into the generic classes as appropriate. 12 12 13 13 === Branching approaches === 14 14 15 There are currently 2approaches to branch support in the git target. All of them use the '''branchpoint''' repositoy parameter to specify the point of the parent branch where the branch forked off.15 There are currently two approaches to branch support in the git target. All of them use the '''branchpoint''' repositoy parameter to specify the point of the parent branch where the branch forked off. 16 16 17 17 One repository per branch:: 18 This is the intuitive way of branching for many distributed SCM systems, and the only one for some of them (eg. darcs). It is however uncomfortable in several aspects: you need to fetch branches from several repositories (or create an additional one that does the merge), and does not really help when we'll want to implement merges, since usually the point to merge from won't be readily available, and the branch it belongs to will need to be known as well.18 This is the intuitive way of branching for many distributed SCM systems, and the only one for some of them (eg. darcs). It is however uncomfortable in several aspects: you need to fetch branches from several repositories (or create an additional one that does the merge), and it does not really help when we'll want to implement merges, since usually the point to merge from won't be readily available, and the branch it belongs to will need to be known as well. 19 19 20 20 This branching mode makes use of the '''parent-repo''' repository parameter. Initialization of the branch's repository is done as a shared clone (using '''git-clone -s'''), so the parent branch's revisions are not needlessly duplicated. … … 59 59 }}} 60 60 61 === Future develop ements ===61 === Future developments === 62 62 63 63 Map of source revisions to target revisions:: … … 65 65 66 66 Merge support:: 67 We need to be able to ask the source repository who the parent revisions for the considered revision are, since they are not necessarily just the previous revision from the branch (in fact, prcs even allows the previous revision on the branch to be completely unrelated). Then we'll be able to record merges in the target (if we can map those source revs to target revs).67 We need to be able to ask the source repository who the parent revisions for the considered revision are, since they are not necessarily just the previous revision from the branch (in fact, prcs even allows the previous revision on the branch to be completely unrelated). Then we'll be able to record merges in the target (if we can map those source revs to target revs). 68 68 69 69 Automatic determination of branchpoints:: 70 Some sources have knowledge about branchpoints (in cvs we'll have to guess, but that's cvs, we're used to that). Once we can map source revs, that will be trivial.70 Some sources have knowledge about branchpoints (in CVS we'll have to guess, but that's CVS, we're used to that). Once we can map source revs, that will be trivial. 71 71 72 72 Automatic determination of branches:: 73 In repositories with many branches it is awkward to list them all. Additionally, in SCMs handling history as a full-featured directed graph (eg. git), there are sometimes temporary branches that were merged into another one, and which stay reachable because of the merge, although they don't have a name. They can be numerous, and it would be silly to expect the user to huntthem all.73 In repositories with many branches it is awkward to list them all. Additionally, in SCMs handling history as a full-featured directed graph (eg. Git), there are sometimes temporary branches that were merged into others, and which stay reachable because of the merge, although they don't have a name. They can be numerous, and it would be silly to expect the user to hunt for them all. 74 74 75 Here I expect to define a branch as something that starts off a branchpoint or an initial commit, and extends up to a merge or a (label led) branch head.75 Here I expect to define a branch as something that starts off a branchpoint or an initial commit, and extends up to a merge or a (labeled) branch head. 76 76 77 Or maybe not: we may only need to query the source repo about (or explicit ely request) branch heads. Thenexploring history backwards will teach us about root commits, branchpoints, and mergepoints.77 Or maybe not: we may only need to query the source repo about (or explicitly request) branch heads. Then, exploring history backwards will teach us about root commits, branchpoints, and mergepoints. 78 78 79 79 Support for joint merges:: 80 That is, support for merges that join two histories that started as separate ones. Public examples in the git repository for git itself include merges of gitk and gitweb repositories.81 The automatic determination of branches will be sufficient for SCMs where such merges appear as such, and histories are already kept separated. In CVS, however, due to the lack of renaming capabilities, it can happen that joint merges are done by moving an external cvsmodule into the repository. Dealing with this requires being able to separate the history of a given subtree up to a given point which is to be considered the merge. Tricky.80 That is, support for merges that join two histories that started as separate ones. Public examples in the git repository for git itself include merges of GITK and Gitweb repositories. 81 The automatic determination of branches will be sufficient for SCMs where such merges appear as such, and histories are already kept separated. In CVS, however, due to the lack of renaming capabilities, it can happen that joint merges are done by moving an external CVS module into the repository. Dealing with this requires being able to separate the history of a given subtree up to a given point which is to be considered the merge. Tricky.
