Size: 2209
Comment: Add application to validate and create configuration files
|
Size: 3945
Comment: added branching idea; SSH key should be uploaded by user
|
Deletions are marked like this. | Additions are marked like this. |
Line 6: | Line 6: |
* let users create an account providing a name, an email account and the server would generate a ssh key that gets sent to the user after admin approval. * add the relevant bits to the ssh configuration file for registered users * allow the admin to select which repos can be accessed by each user or group of users by checking and unchecking boxes in a list of repos. * allow to create new branches from an existing one and let the admin choose which repos can be branched for each user or group of users. (a branch should be a clone from the master repo of the project, or any other specified repo) |
* let users create an account providing a name, an email account, and a public ssh key * after admin approval, add the relevant bits to the ssh configuration file for registered users * allow the admin to select which repos can be accessed by each user or group of users by checking and unchecking boxes in a list of repos * allow to create new branches from an existing one and let the admin choose which repos can be branched for each user or group of users (a branch should be a clone from the master repo of the project, or any other specified repo) * allow to create new (empty) repos |
Line 30: | Line 31: |
== Combine the advantages of named branches and clone branches == Named branches ("hg branch" command) have the following advantages: * easier to use: you only need to specify a name instead of a complete URL * simpler branch creation: no clone(s) on the server needed (and thus no need for shell access or special scripts) * easier branch hosting (the server does it all for you) * less transfer overhead (when pulling a branch and when pushing a merged repo) * all developers can follow all active branches very easily (only one pull for all branches) * branch switching is more space efficient than having multiple separate clones of each branch Clones have the following advantage: * simple and effective for working on small, independent changes in separate, local repos * small download * easy to learn concept for local changes The ideal solution would unify clones and named branches and combine the advantages of both systems. One possibility (but probably not very good) would be to have a shared top-level folder that stores all changesets of the reference repo. This top-level folder then contains subfolders for each checked-out branch and these subfolders only store the additional changesets for the top-level folder and the actual source files of the checked-out revision. For example: * /repos/hg - top-level folder for hg * /repos/hg/.hgshared - shared folder with all changesets of the reference repo and global settings (e.g. username, default URL, etc.) * /repos/hg/main - a working directory of a checked-out branch * /repos/hg/main/.hg - the branch settings and branch changesets which don't exist in the reference repo * /repos/hg/newfeature - another working directory * ... |
New ideas and suggestions
1. Web application to manage users and repos using hgwebdir and ssh authentication
It would be very useful having an app that would:
- allow a site admin to tweak the hgwebdir configuration
- let users create an account providing a name, an email account, and a public ssh key
- after admin approval, add the relevant bits to the ssh configuration file for registered users
- allow the admin to select which repos can be accessed by each user or group of users by checking and unchecking boxes in a list of repos
- allow to create new branches from an existing one and let the admin choose which repos can be branched for each user or group of users (a branch should be a clone from the master repo of the project, or any other specified repo)
- allow to create new (empty) repos
Please be sure to create a separate webapp for this so hgweb/hgwebdir would stay KISS. Some users (maybe most) will not want to use the web interface for managing repos... -- Radek Podgorny
2. Application to create, validate and initialize configuration files
It would be very useful having an app that would:
- creation of new hgrc files
- be used for the first-time initialization of hgrc files
- validate existing hgrc files
- tweak existing hgrc files to add/change options and activate/deactivate avaliable extensions
It could have:
- different standard modes to do partial configuration, such as a first-time minimal configuration, shared repo with allow-push configuration...
It should at least have a text interface (a simple one to do the first time configuration, as asking for username, email, editor...)
3. Greater flexibility for merge/export
Experience from several other systems suggests that the current approach to handling BinaryFiles is not adequate. mpm is absolutely right that the notion of a binary file is intrinsically confused. Unfortunately, that doesn't mean that we can avoid it. This needs some discussion, so I'm attempting to add a page for that: NewIdeas/FileTypes
4. User friendly off-line synch of distributed repos using "Bundle Digest"
see [http://www.selenic.com/mercurial/bts/issue392]
5. Combine the advantages of named branches and clone branches
Named branches ("hg branch" command) have the following advantages:
- easier to use: you only need to specify a name instead of a complete URL
- simpler branch creation: no clone(s) on the server needed (and thus no need for shell access or special scripts)
- easier branch hosting (the server does it all for you)
- less transfer overhead (when pulling a branch and when pushing a merged repo)
- all developers can follow all active branches very easily (only one pull for all branches)
- branch switching is more space efficient than having multiple separate clones of each branch
Clones have the following advantage:
- simple and effective for working on small, independent changes in separate, local repos
- small download
- easy to learn concept for local changes
The ideal solution would unify clones and named branches and combine the advantages of both systems.
One possibility (but probably not very good) would be to have a shared top-level folder that stores all changesets of the reference repo. This top-level folder then contains subfolders for each checked-out branch and these subfolders only store the additional changesets for the top-level folder and the actual source files of the checked-out revision. For example:
- /repos/hg - top-level folder for hg
- /repos/hg/.hgshared - shared folder with all changesets of the reference repo and global settings (e.g. username, default URL, etc.)
- /repos/hg/main - a working directory of a checked-out branch
- /repos/hg/main/.hg - the branch settings and branch changesets which don't exist in the reference repo
- /repos/hg/newfeature - another working directory
- ...