seyz / baboon Goto Github PK
View Code? Open in Web Editor NEWDetect source code merge conflicts in realtime. Simply get rid of merge hells.
Home Page: http://baboon-project.org
Detect source code merge conflicts in realtime. Simply get rid of merge hells.
Home Page: http://baboon-project.org
aaa.txt
aaa.txt
aaa.txt
is not deleted server-side.What do you think about that @raphdg ?
When a file is deleted, a diff must be generated with minus on all lines in order to detect conflict.
Need to use os.path.abspath
Baboon should only watched the files that doesn't match the patterns in the .hgignore file
User a creates the new file aaa.py
.
User b also creates the new file aaa.py
.
If the aaa.py
file is not staged, no conflict is detected.
Use a pubsub message to warn if there's a conflict or not.
The stanza will be something like that :
<type>conflict</type>
<from>[email protected]</from>
<to>[email protected]</to>
<diff>..................</diff>
The diff can be useful later. The type can be useful to detect if it's a regular diff message (type diff ?) or a conflict message.
For example, when the ssh key is not present (without passphrase).
Create a setup.json in order to install easily baboon and all its dependencies.
When a new file is created on the watch project :
Avoid to detect a conflict when it's the same change. Verify that git/mercurial/svn/cvs/... don't detect a conflict in this case.
It will be cool to have some colors in the console logs.
I think that diff_match_patch is not adapted for the patch feature. It will be better to remove this dependency and to use the standard difflib library of python and create a difflib parser.
During the first stanza sent for the rsync task, the node is given according to the config entry in the configuration file without any server-side verification (if the user is a subscriber on this node). It means that if the user changes the
value of the config entry to any node, the user will write the change in the directory of the chosen project.
Print a log message (or something other later) when a user is connected. Same thing when the user is disconnected.
The xmpp presence can be useful for this task.
$ baboon start
'The project synapse-agent is not yet initialized. Please, run baboon init synapse-agent <git-url>
.'
Split stanza ?
I create a project foo
with --nosave option.
So, my configuration file has no foo
entry. Great.
I delete my foo
project and I have this stacktrace:
Deletion in progress...
The project foo is successfuly deleted.
Traceback (most recent call last):
File "bin/baboon", line 9, in <module>
Main()
File "/home/seyz/workspace/external/baboon/baboon/main.py", line 29, in __init__
getattr(commands, self.which)()
File "/home/seyz/workspace/external/baboon/baboon/commands/commands.py", line 125, in delete
del config['projects'][project]
KeyError: 'foo'
During the initialization (or when you create a new file in the watched directory), the hidden files need to be ignore by default. The user can remove the ignore "flag" to watch the files he wants.
We need to test if Baboon works well on OSX.
It causes baboon to crash.
Threading sync issue.
Baboon needs to handle the sigint signal for a clean close.
~/projects/internal/baboon (master *) $ python bin/baboon create techta --path /tmp
Creation in progress...
Traceback (most recent call last):
File "bin/baboon", line 7, in <module>
Main()
File "/home/raph/projects/internal/baboon/baboon/main.py", line 30, in __init__
getattr(commands, self.which)()
File "/home/raph/projects/internal/baboon/baboon/commands/commands.py", line 84, in create
with AdminTransport(logger_enabled=False) as transport:
File "/home/raph/projects/internal/baboon/baboon/transport.py", line 53, in __enter__
self.open()
File "/home/raph/projects/internal/baboon/baboon/transport.py", line 69, in open
self.process(block=block)
File "/home/raph/projects/external/SleekXMPP/sleekxmpp/basexmpp.py", line 191, in process
self.plugin[name].post_init()
File "/home/raph/projects/external/SleekXMPP/sleekxmpp/plugins/xep_0004/dataforms.py", line 50, in post_init
self.xmpp.plugin['xep_0030'].add_feature('jabber:x:data')
KeyError: 'xep_0030'
2012/09/28 18:10:52 INFO Bye ! (MainThread/sigint_handler:166)
Exception TypeError: "'NoneType' object is not callable" in <bound method DbfilenameShelf.__del__ of {'db/migrate/20111011195702_share_anything.rb': 1348848651.511066, 'app/assets/images/branding/asterisk_white.png': 1348848651.511066, 'spec/shared_behaviors/stream.rb': 1348848651.511066, 'app/assets/images/buttons/[email protected]': 1348848651.511066, 'features/step_definitions/uri-step.rb': 1348848651.511066, 'app/views/conversations/_conversation.haml': 1348848651.511066, 'app/models/relayable_retraction.rb': 1348848651.511066, 'app/controllers/services_controller.rb': 1348848651.511066, 'app/assets/templates/flow_tpl.jst.hbs': 1348848651.511066, 'spec/helper_methods.rb': 1348848651.511066, 'app/views/notifier/comment_on_post.markerb': 1348848651.511066, 'app/assets/images/social_media_logos/tumblr-48x48.png': 1348848651.511066, 'config/locales/diaspora/lt.yml': 1348848651.511066, 'db/migrate/20110603212633_likes_dependent_delete.rb': 1348848651.511066, 'app/assets/javascripts/app/views/post-viewer/new_comment.js': 1348848651.511066, 'config/initializers/cors.rb': 1348848651.511066, 'app/assets/images/img/glyphicons-halflings-red.png': 1348848651.511066, 'spec/lib/stream/person_spec.rb': 1348848651.511066, 'app/models/notifications/comment_on_post.rb': 1348848651.511066, 'features/conversations.feature': 1348848651.511066, 'app/presenters/post_presenter.rb': 1348848651.511066, 'app/assets/images/static-loader.png': 1348848651.511066, 'config/locales/diaspora/nb.yml': 1348848651.511066, 'app/assets/images/icons/search_grey.png': 1348848651.511066, 'lib/salmon/salmon.rb': 1348848651.511066, 'config/locales/devise/devise.fr.yml': 1348848651.511066, 'app/views/comments/index.mobile.haml': 1348848651.511066, 'app/assets/javascripts/app/views.js': 1348848651.511066, 'app/models/user/querying.rb': 1348848651.511066,
It takes 10 min for 3500 files that don't even need to be synced.
Need to find the bottleneck.
Git and Hg is currently supported. It will be cool to have a Svn support too.
How to manage the first rsync ?
We need to deal with pending subscription.
How to notify a project owner there's an new pending subscription ?
How to retrieve the list (xep 0050 normally) ?
etc.
What about detection conflict when you add/remove some spaces (e.g. at the end of the line) ?
Need a trim or not ?
Consider spaces like another letters or not ?
Fixed error like that:
Conflict detected with [email protected].
> error: cannot apply binary patch to 'public/apple-touch-icon.png' without full index line
To reproduce the bug, remove a binary file.
Baboon should only watched the files that doesn't match the patterns in the .gitignore file
We need to test if baboon works on Windows.
Baboon uses watchdog but it seems the windows support is not very good. Is it enough for our use cases ?
I have the following configuration file:
[server]
max_stanza_size = 65535
pubsub = pubsub.baboon-project.org
streamer = streamer.baboon-project.org
server = [email protected]/baboond
[user]
passwd = secret
jid = [email protected]
[cortex-web]
scm = git
path = /home/seyz/workspace/internal/cortex-web
# Example of project definition
#[awesome_project] # The project name on the baboon server
#path = /pathto/project # The project path of your system
#scm = git # The source code manager you use for this project
#enable = 1 # You want baboon to actually watch this project
I replaced 'server' entry by 'master' for testing and:
(baboon)seyz@dogwood ~/workspace/external/baboon (master) $ python bin/baboon register marci --nosave
Password:
Confirm password:
Registration in progress...
Traceback (most recent call last):
File "bin/baboon", line 9, in <module>
Main()
File "/home/seyz/workspace/external/baboon/baboon/main.py", line 29, in __init__
getattr(commands, self.which)()
File "/home/seyz/workspace/external/baboon/baboon/commands/commands.py", line 43, in register
transport = RegisterTransport(callback=_on_action_finished)
File "/home/seyz/workspace/external/baboon/baboon/transport.py", line 426, in __init__
super(RegisterTransport, self).__init__()
File "/home/seyz/workspace/external/baboon/baboon/transport.py", line 45, in __init__
self.server_addr = config['server']['master']
KeyError: 'master'
Need to find an equivalent.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.